# affiche vers la sortie d'erreur et sort avec code de retour de
# la derniere commande executé.
error(){
    # sauvegarde de $? pour renvoyer l'erreur commise avant l'appel de 
    # cette fonction.
    err=$?
    #printf "$@" >&2
    echo "$@"
	exit $err
}


# affiche le message passé en paramètre vers la sortie d'erreur
infouser(){
    #printf "$@" >&2
    echo "$@"
}


##
# Cette fonction teste la cohérence de l'arborescence
# c'est à dire que le nombre de fichiers téléchargés et 
# transformé doit être égale dans chaque répertoire de l'arborescence 
# pour un même usage 
#
# RETOUR :
#        - 0 Système de fichier cohérent
#        - 1 Système de fichier incohérent
##
test_coherence_corpus(){
# Compter le nombre de page déjà aspiré pour vérifier la cohérence
# du système.
    nbPageAsp=`ls -1 $repPageAsp|wc -l`
    nbPageLynx=`ls -1 $repPageLynx|wc -l`
    nbPageContexte=`ls -1 $repPageContexte|wc -l`
    
    #echo "nbPage $nbPageAsp $nbPageLynx $nbPageContexte"
# On n'a pas le nombre de page dans chaque répertoire : état incohérent.
    
    if [ "$nbPageAsp" -ne "$nbPageLynx" ] || [ "$nbPageAsp" -ne "$nbPageContexte" ]
	then
	return 1; #echec
    else
	return 0; #succes
    fi
}


## Concatenation
#
# Cette fonction constitue un nouveau fichier d'URL à partir d'un fichier URL
# et d'une page html correspondate déjà existante. Les URLs ajoutées sont celles
# qui ne sont pas présente dans la page HTML. Aucune URL de la page html n'est 
# supprimée. Cela permet de relancer le programme avec le même fichier URL mais 
# où des téléchargements ont échouées. Ou d'ajouter de nouvelles URLs dans un 
# fichier d'URL
# 
# RETOUR :
#        - 0 si la préparation de la concatenation a réussi
#        - 1 Echec
# TOUTES LES VARIABLES sont GLOBALES !!!
# 
# Voir http://abs.traduc.org/abs-4.1-fr/ch19.html 
# Exemple 19.1. Rediriger stdin en utilisant exec
##

concatenation(){
# Il faut lire le fichier existant et le recopier, mais ne 
# pas fermer ni le tableau, ni la page c'est à dire lire tout
# sauf la ligne </table></body></html>.
# On passe par un fichier intermédiaire.
# recherche inversé de grep

if grep -v "</table></body></html>" $ficHtml > $ficHtml.grep
    then
    # grep a trouvé quelque chose
    mv $ficHtml.grep $ficHtml || return 1		
    
    # Les noms variable des fichiers devront commencer après cela.
    # on ajoute à la suite.
    # Toute les variables sont globales, partagé avec le script appelant.
    nbPageHtml=$nbPageAsp
    
# Il faut enlever les URLs déjà téléchargées et récupérer les 
# précédents échecs.
# Lecture ligne à ligne du fichier, et si l'URL et présente dans 
# la page html alors on ne la garde pas.
#cat < $RfichierUrl | while true
    exec 25<&0         # Lie le descripteur de fichier #6 avec stdin.
                          # Sauvegarde stdin.
    #echo "RficUrl : $RfichierUrl.diff"
    if [ -f $RfichierUrl.diff ]
	then 
	rm -f $RfichierUrl.diff || return $?
    fi
    
    touch $RfichierUrl.diff || return $?
        
    exec < $RfichierUrl  # remplace STDIN par ce fichier
    while true
      do
      read line
      # S'il n'y a plus de ligne.
      if [ "$line" == "" ]; then break; fi
      
      if grep $line $ficHtml
	  then
	  # Il y a une URL en moins a télécharger car elle existe déjà.
	  let nbPageATelecharger=nbPageATelecharger-1
      else
	  # Cette ligne sera à télécharger
	  echo $line >> "$RfichierUrl.diff"
      fi
    done
    exec 0<&25 25<&-
#  Maintenant, restaure stdin à partir de fd #25, où il a été sauvegardé,
#+ et ferme fd #25 ( 25<&- ) afin qu'il soit libre pour d'autres processus.
#
# <&25 25<&-    fonctionne aussi.
    # Les URL à traiter sont celle de .diff
    RfichierUrl=$RfichierUrl.diff
    nbUrl=$nbPageATelecharger
    return 0
else
    return 1
fi

}


# Création du début de la page html dont le début du tableau 
#
echo_header(){
titre=$1
files=$2
echo "<head>"  >> $files
echo "<title>Projet Encadré : $titre réalisé par AB & CJ </title>" >> $files
   echo "<meta name=\"author\" content=\"Christian Jean et Arianna Bisazza\" />" >> $files;
   echo "<meta http-equiv=\"Content-Type\" content=\"text/html;charset=UTF-8\" />" >> $files;
   echo "<meta http-equiv=\"Content-Language\" content=\"fr\" />">> $files;
   echo "<meta name=\"keywords\" lang=\"fr\" content=\"tal taln barrage INALCO ILPGA\" />" >> $files;
   echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"../../DOCUMENTATION/site/styles.css\" />" >> $files;
   echo "</head>" >> $files; 
}