#!/bin/bash # Recréation des man en ISOLatin1 dans /tmp/man/man[1-9] # Ce script prend en paramètre facultatif le chemin où chercher les man # Initialisation des variables et des fichiers de travail DirMan="$1" ; [ -z "$DirMan" ] && DirMan="/usr/share/man/fr" Tmp="/tmp/utf8" ; Log="${Tmp}.log" ; Err="${Tmp}.err" ; Nok="${Tmp}.nok" rm -rf $Tmp $Log $Err $Nok /tmp/man 2>/dev/null # Scan des répertoires du man demandé for Man in 1 2 3 4 5 6 7 8 9 ; do echo "Analyse des fichiers de ${DirMan}/man${Man} en cours" if [ -d ${DirMan}/man${Man} ] ; then cd ${DirMan}/man${Man} for File in `ls *.bz2 2>/dev/null` ; do # Création de la liste des fichiers contenant des caractères UTF8 [ ! -z "$File" -a ! -L "$File" ] && { cat $File | bunzip2 -c | grep -l -H --label=$File "é" >> $Tmp ; } done else echo "Aucun fichier à analyser" fi echo "Conversion des fichiers de ${DirMan}/man${Man} en cours" | tee -a $Log if [ -s $Tmp ] ; then # Création de la hiérarchie du man mkdirhier /tmp/man/man${Man} while read File ; do # Ecriture du fichier à convertir dans le log echo -e "Fichier $File \t\c" >> $Log cat $File | bunzip2 -c | iconv -f UTF8 -t LATIN1 2> $Nok | \ bzip2 -c > /tmp/man/man${Man}/${File} # Test des erreurs de conversion (on les place en fin de ligne) [ -s $Nok ] && cat $Nok >> $Log || echo >> $Log rm -f $Nok 2>/dev/null done < $Tmp else echo "Aucun fichier à convertir" fi # Suppression du fichier pour le man suivant rm -f $Tmp $Nok 2>/dev/null done # Recherche des erreurs de conversion grep -i "illégale" $Log > $Err 2>/dev/null if [ -s $Err ] ; then echo -e "\nIl y a eu des erreurs durant la conversion,\nla liste des fichiers erronés est dans $Err" echo -e "Les fichiers traduits en cause sont à supprimer car ils sont incomplets" else rm -f $Err 2>/dev/null fi echo -e "\nLes fichiers convertis sont à placer dans $DirMan et le man correspondant" echo -e "La liste des fichiers convertis est dans $Log\n"