Loading

NOM

       fmtmsg - Afficher des messages d’erreur formatés

SYNOPSIS

       #include <fmtmsg.h>

       int fmtmsg(long classification, const char *label,
                  int severity, const char *text,
                  const char *action, const char *tag);

       Cette  fonction  affiche  un message décrit par ses arguments sur le(s)
       périphérique(s) spécifié(s) par le paramètre classification.  Pour  les
       messages   écrits   sur   stderr,  le  format  dépend  de  la  variable
       d’environnement MSGVERB.

       Le paramètre label identifie la source du message. La chaîne doit  être
       composée  en deux parties, séparées par le caractère deux-points « : »,
       où la première partie ne comporte pas  plus  de  10  caractères  et  la
       seconde, pas plus de 14.

       Le paramètre text décrit la condition de l’erreur.

       Le   paramètre  action  décrit  les  étapes  possibles  pour  récupérer
       l’erreur. Si elle est affichée, elle sera préfixée par «TO FIX: ».

       Le paramètre tag est une référence à la documentation en ligne où  l’on
       pourra trouver plus d’informations. Il devrait contenir la valeur label
       et un numéro d’identification unique.

   Paramètres factices
       Chacun des paramètres peut avoir  une  valeur  factice.  La  valeur  de
       classification factice MM_NULLMC (0L) ne spécifie aucune sortie, ainsi,
       rien n’est affiché. La valeur de sévérité factice NO_SEV  (0)  signifie
       qu’aucune  sévérité  n’est fournie. Les valeurs MM_NULLLBL, MM_NULLTXT,
       MM_NULLACT, MM_NULLTAG sont des synonymes de ((char *)  0),  la  chaîne
       vide, et MM_NULLSEV est un synonyme de NO_SEV.

   Le paramètre classification
       Le  paramètre  classification est la somme de valeurs décrivant 4 types
       d’informations.

       La première valeur définit le canal de sortie.

       MM_PRINT    Sortie sur stderr.

       MM_CONSOLE  Sortie sur la console du système.

       MM_PRINT | MM_CONSOLE
                   Sortie sur les deux.

       La deuxième valeur est la source de l’erreur :

       MM_HARD     Une erreur matérielle est survenue.

       MM_FIRM     Une erreur micro-logicielle (« firmware ») est survenue.

       MM_SOFT     Une erreur logicielle est survenue.

       La troisième valeur encode le détecteur du problème :

       MM_APPL     L’erreur a été détectée par une application.

       MM_UTIL     L’erreur a été détectée par un utilitaire.

       MM_OPSYS    L’erreur a été détectée par le système d’exploitation.

       La quatrième valeur indique la gravité de l’incident :

       MM_RECOVER  L’erreur est récupérable.

       MM_NRECOV   L’erreur n’est pas récupérable.

   Le paramètre « severity »
       Le paramètre severity peut prendre l’une des valeurs suivantes :

       MM_NOSEV    Aucune sévérité ne sera affichée.

       MM_HALT     Cette valeur est affichée en tant que HALT.

       MM_ERROR    Cette valeur est affichée en tant que ERROR.

       MM_WARNING  Cette valeur est affichée en tant que WARNING.

       MM_INFO     Cette valeur est affichée en tant que INFO.

       Les  valeurs  numériques  sont  comprises  entre  0  et   4.   Utiliser
       addseverity(3)  ou  la  variable  d’environnement SEV_LEVEL vous permet
       d’ajouter plus de niveaux et d’afficher des messages.

VALEUR RENVOYÉE

       La fonction peut retourner 4 valeurs :

       MM_OK       Tout c’est bien passé.

       MM_NOTOK    Échec complet.

       MM_NOMSG    Erreur lors de l’écriture sur stderr.

       MM_NOCON    Erreur lors de l’écriture sur la console.

ENVIRONNEMENT

       La variable d’environnement MSGVERB  (« verbosité  du  message »)  peut
       être utilisée pour supprimer des parties de la sortie vers stderr (cela
       n’a pas d’influence sur la  sortie  vers  la  console).  Lorsque  cette
       variable  est  définie,  non  vide  et que c’est une liste de mots clés
       valides séparés par le caractère deux-points,  seules  les  parties  du
       message  correspondant  à ces mots clés seront affichées. Les mots-clés
       valides sont « label », «severity », « text », « action » et « tag ».

       La  variable  d’environnement  SEV_LEVEL  peut   être   utilisée   afin
       d’introduire  de  nouveaux  niveaux  de sévérité. Par défaut, seuls les
       cinq niveaux de sévérité décrits précédemment sont  disponibles.  Toute
       autre  valeur numérique fera que la fonction fmtmsg() n’affichera rien.
       Si l’utilisateur positionne SEV_LEVEL avec un format comme

              SEV_LEVEL=[description[:description[:...]]]

       dans l’environnement du processus avant le premier appel à fmtmsg(), où
       chaque description est de la forme

              sévérité, niveau, chaîne

       alors fmtmsg() acceptera également les valeurs indiquées pour le niveau
       (en plus des niveaux standard [0, 4]), et utilisera la chaîne  indiquée
       lorsqu’un tel niveau surviendra.

       La  partie  « sévérité » n’est pas utilisée par fmtmsg() mais elle doit
       être présente. La partie « niveau » est la représentation  alphabétique
       d’un  nombre.  La  valeur  numérique  doit  être  un nombre strictement
       supérieur à 4. Cette  valeur  doit  être  utilisée  dans  le  paramètre
       « sévérité »  de  fmtmsg() pour sélectionner cette classe. Il n’est pas
       possible de surcharger les classes prédéfinies.  La  partie  « chaîne »
       est  la  chaîne qui sera affichée lorsqu’un message de cette classe est
       traité par fmtmsg().

VERSIONS

       fmtmsg() est fournie par la glibc depuis la version 2.1.

CONFORMITÉ

       Les fonctions fmtmsg(), addseverity(3), les  variables  d’environnement
       MSGVERB  et  SEV_LEVEL proviennent de System V. La fonction fmtmsg() et
       la variable d’environnement MSGVERB sont décrites dans POSIX.1-2001.

NOTES

       Les pages de manuel System V et Unixware disent que ces  fonctions  ont
       été  remplacées  par  « pfmt()  et addsev() » ou par « pfmt(), vpfmt(),
       lfmt(), et vlfmt() », et seront supprimées par la suite.

EXEMPLE

       #include <stdio.h>
       #include <stdlib.h>
       #include <fmtmsg.h>

       int
       main(void)
       {
           long class = MM_PRINT | MM_SOFT | MM_OPSYS | MM_RECOVER;
           int err;

           err = fmtmsg(class, "util-linux:mount", MM_ERROR,
                       "unknown mount option", "See mount(8).",
                       "util-linux:mount:017");
           switch (err) {
           case MM_OK:
               break;
           case MM_NOTOK:
               printf("Nothing printed\n");
               break;
           case MM_NOMSG:
               printf("Nothing printed to stderr\n");
               break;
           case MM_NOCON:
               printf("No console output\n");
               break;
           default:
               printf("Unknown error from fmtmsg()\n");
           }
           exit(EXIT_SUCCESS);
       }

       La sortie devrait être :

           util-linux:mount: ERROR: unknown mount option
           TO FIX: See mount(8).  util-linux:mount:017

       et après

           MSGVERB=text:action; export MSGVERB

       la sortie devient :

           unknown mount option
           TO FIX: See mount(8).

VOIR AUSSI

       addseverity(3), perror(3)

COLOPHON

       Cette page fait partie de  la  publication  3.23  du  projet  man-pages
       Linux.  Une description du projet et des instructions pour signaler des
       anomalies      peuvent      être       trouvées       à       l’adresse
       http://www.kernel.org/doc/man-pages/.

TRADUCTION

       Cette  page  de  manuel  a été traduite et mise à jour par Alain Portal
       <aportal AT  univ-montp2  DOT  fr>  entre  2004  et  2006,  et  mise  à
       disposition sur http://manpagesfr.free.fr/.

       Les mises à jour et corrections de la version présente dans Debian sont
       directement gérées par Florentin Duneau <fduneau@gmail.com> et l’équipe
       francophone de traduction de Debian.

       Veuillez   signaler   toute   erreur   de   traduction  en  écrivant  à
       <debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le
       paquet manpages-fr.

       Vous  pouvez  toujours avoir accès à la version anglaise de ce document
       en utilisant la commande « man -L C <section> <page_de_man> ».

                                 14 juin 2008