Commande "stat" : erreurs dans le fichier de traduction FR

La version française de La commande “stat” me retourne :

le nombre d’inodes libres au lieu du nom de fichier donné en argument,
et ajoute : \n" à la fin de certaines lignes.
Il y a même un espace en trop au début de la ligne Blocs : total ...

michel@debG53SW:~$ stat -f /
  Fichier : "786666"
       ID : fa7bfdebb2360572 Longueur nom : 255     Type : ext2/ext3\n"
Taille bloc : 4096       Taille de bloc fondamentale : 4096\n"
 Blocs : total : 3688171    libre : 493980     disponible : 306627\n"
Inodes : total : 938400     libre : 786666
michel@debG53SW:~$ 

Alors que:

michel@debG53SW:~$ malang=$LANG; LANG=C; stat -f /; LANG=$malang
  File: "/"
    ID: fa7bfdebb2360572 Namelen: 255     Type: ext2/ext3
Block size: 4096       Fundamental block size: 4096
Blocks: Total: 3688171    Free: 493980     Available: 306627
Inodes: Total: 938400     Free: 786666
michel@debG53SW:~$ 

Si je ne suis pas le seul à qui cela arrive, il doit sans doute s’agir d’un bug.
Pour info :

root@debG53SW:~# file /usr/bin/stat
/usr/bin/stat: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.26, BuildID[sha1]=0xde054621e1db9888cb636c0b5c6e5474c58a8fa6, stripped
root@debG53SW:~# 

S’il s’agit bien d’un “bug”, j’aimerai bien apprendre à signaler un bug,
alors, si quelqu’un pouvait me guider dans cette démarche.

Merci.

EDIT: Il doit peut être s’agir d’erreurs dans les fichiers “.po” “.mo” correspondants…

bonjour,
pour / et /home j’ai ceci:

root@alpha30:~# stat -f /home
  Fichier : « /home »
 Identif. : a7059fc35735fc68 Longueur du nom : 255     Type : ext2/ext3
Taille de bloc : 4096       Taille de bloc fondamentale : 4096
 Blocs : total : 237230373  libre : 120621379  disponible : 108564995
Inœuds : total : 60268544   libre : 58921863
root@alpha30:~# stat -f /    
  Fichier : « / »
 Identif. : a7059fc35735fc68 Longueur du nom : 255     Type : ext2/ext3
Taille de bloc : 4096       Taille de bloc fondamentale : 4096
 Blocs : total : 237230373  libre : 120621378  disponible : 108564994
Inœuds : total : 60268544   libre : 58921863
root@alpha30:~# 

les résultats sont identiques, peut-être que cela vient du file system unique + le swap
A+
JB1

Comme ton répertoire “/home” est sur le même système de fichier que la racine de ton système, et donc dans la même partition,
les résultats sont identiques, ce qui est bien normal.


Je remarque dans ton retour de commande, que :
Inodes est traduit par Inœuds,
l’espace avant Blocs : est toujours présent,
par contre, les \n n’y sont plus.

Peut-être ne s’agit-il pas de la même version du programme “stat” et/ou du fichier “mo” de traduction.

/usr/bin/stat provient de l’installation de coreutils.

packages.debian.org/fr/wheezy/coreutils

Les traductions françaises doivent donc se trouver dans
/usr/share/locale/fr/LC_MESSAGES/coreutils.mo

Extraire les messages pour obtenir un fichier *.po éditable (et grep-able) grâce à gettext:

$ msgunfmt /usr/share/locale/fr/LC_MESSAGES/coreutils.mo -o coreutils-fr.po

Ouvrir le fichier *.po obtenu au moyen d’un éditeur afin de voir s’il n’y aurait pas d’erreurs flagrantes visibles* comme des guillemets ouverts non refermés.

  • Visibles : S’appuyer sur la coloration syntaxique pour repérer les erreurs éventuelles. Par exemple, vim avec :syntax on
    Vim offre également la possibilité de rechercher les couples () “”…

Salut,

stat au sens biblique, est un utilitaire.

  • edit *

Doublon.

J’ai installé le paquetage gettext.
J’ai “dé-formaté” le contenu du fichier .mo :
textmsgunfmt /usr/share/locale/fr/LC_MESSAGES/coreutils.mo -o coreutils-fr-avant.po
J’ai recherché la chaîne de caractères Taille de bloc fondamentale
Puis voilà ce qu’il y avait… avant (à partir de la ligne 4481):

michel@debG53SW:~$ cat coreutils-extrait-4481-avant.po 
msgid ""
"  File: \"%n\"\n"
"    ID: %-8i Namelen: %-7l Type: %T\n"
"Block size: %-10s Fundamental block size: %S\n"
"Blocks: Total: %-10b Free: %-10f Available: %a\n"
"Inodes: Total: %-10c Free: %d\n"
msgstr ""
"  Fichier : \"%d\"\n"
"       ID : %-8i Longueur nom : %-7l Type : %T\\n\"\n"
"Taille bloc : %-10s Taille de bloc fondamentale : %S\\n\"\n"
" Blocs : total : %-10b libre : %-10f disponible : %a\\n\"\n"
"Inodes : total : %-10c libre : %d\n"
michel@debG53SW:~$ 

Et voilà avec quoi je compte remplacer cet extrait :

michel@debG53SW:~$ cat coreutils-extrait-corrigé-4481.po
msgid ""
"  File: \"%n\"\n"
"    ID: %-8i Namelen: %-7l Type: %T\n"
"Block size: %-10s Fundamental block size: %S\n"
"Blocks: Total: %-10b Free: %-10f Available: %a\n"
"Inodes: Total: %-10c Free: %d\n"
msgstr ""
"  Fichier : \"%n\"\n"
"       ID : %-8i Longueur nom : %-7l Type : %T\n"
"Taille bloc : %-10s Taille de bloc fondamentale : %S\n"
" Blocs : Total : %-10b Libre : %-10f Disponible : %a\n"
"Inœuds : Total : %-10c Libre : %d\n"
michel@debG53SW:~$ 

Je vais re-formater le fichier modifié pour tester ça, (plus tard, cause occupé…)
mais je comprends mieux maintenant pourquoi le nombre d’inodes libres remplaçait le nom du fichier en paramètre…

EDIT: Je laisse l’espace avant Blocs, histoire de pouvoir faire une recherche de texte sur la sortie de cette commande.
Finalement, il ne s’agit pas vraiment d’un bug, mais des erreurs dans le formatage de la traduction,
Je modifie donc le titre de ce fil…


EDIT 2:
Dans l’en-tête du fichier que j’ai dé-formaté, je peux lire:

"Project-Id-Version: coreutils-8.13\n"
"Report-Msgid-Bugs-To: bug-coreutils@gnu.org\n"
"POT-Creation-Date: 2011-09-08 17:09+0200\n"
"PO-Revision-Date: 2011-09-10 01:09+0200\n"

Mais à l’adresse http://translationproject.org/PO-files/fr/coreutils-8.22-pre4.fr.po
Il y a :

"Project-Id-Version: coreutils-8.22-pre4\n"
"Report-Msgid-Bugs-To: bug-coreutils@gnu.org\n"
"POT-Creation-Date: 2013-12-09 14:43+0000\n"
"PO-Revision-Date: 2013-12-09 15:43-0400\n"

Et plus loin dans ce même fichier :

#. TRANSLATORS: This string uses format specifiers from
#. 'stat --help' with --file-system, and NOT from printf.
#: src/stat.c:1271
msgid ""
"  File: \"%n\"\n"
"    ID: %-8i Namelen: %-7l Type: %T\n"
"Block size: %-10s Fundamental block size: %S\n"
"Blocks: Total: %-10b Free: %-10f Available: %a\n"
"Inodes: Total: %-10c Free: %d\n"
msgstr ""
"  Fichier : « %n »\n"
" Identif. : %-8i Longueur du nom : %-7l Type : %T\n"
"Taille de bloc : %-10s Taille de bloc fondamentale : %S\n"
" Blocs : total : %-10b libre : %-10f disponible : %a\n"
"Inœuds : total : %-10c libre : %d\n"

Les erreurs constatées ont donc bien étés corrigées dans la nouvelle version,
mais avec debian “whezzy”, c’est encore l’ancienne version qui est utilisée.


Voilà ce que ça donne avant :

michel@debG53SW:~# stat -f  /
  Fichier : "788098"
       ID : fa7bfdebb2360572 Longueur nom : 255     Type : ext2/ext3\n"
Taille bloc : 4096       Taille de bloc fondamentale : 4096\n"
 Blocs : total : 3688171    libre : 895139     disponible : 707786\n"
Inodes : total : 938400     libre : 788098

Après avoir corrigé le .po Je créé le .mo :

michel@debG53SW:~# msgfmt coreutils-fr-après.po -o coreutils-fr-après.mo

Je sauvegarde l’original (au cas où…)

michel@debG53SW:~# cp /usr/share/locale/fr/LC_MESSAGES/coreutils.mo .

Je met en place le nouveau .mo :

michel@debG53SW:~# cp coreutils-fr-après.mo /usr/share/locale/fr/LC_MESSAGES/coreutils.mo

Je vérifie :

michel@debG53SW:~$ stat -f  /
  Fichier : "/"
       ID : fa7bfdebb2360572 Longueur nom : 255     Type : ext2/ext3
Taille bloc : 4096       Taille de bloc fondamentale : 4096
 Blocs : Total : 3688171    Libre : 895120     Disponible : 707767
Inœuds : Total : 938400     Libre : 788096
michel@debG53SW:~$ 

Et enfin, je remercie jb1, etxeberrizahar, BelZéButh
pour l’aide qu’ils m’ont apportée dans ce fil.


Une dernière question toutefois :
Est-ce bien nécessaire de déranger celui qui est chargé de la traduction française de ce paquetage,
étant donné qu’il a déjà corrigé tout ça dans la nouvelle version ?