fmtmsg(3) Library Functions Manual fmtmsg(3) NOM fmtmsg - Afficher des messages d'erreur formates BIBLIOTHEQUE Bibliotheque C standard (libc, -lc) SYNOPSIS #include int fmtmsg(long classification, const char *etiquette, int severite, const char *texte, const char *action, const char *ancre); DESCRIPTION Cette fonction affiche un message decrit par ses arguments sur le(s) peripherique(s) specifie(s) par le parametre classification. Pour les messages ecrits sur stderr, le format depend de la variable d'environnement MSGVERB. Le parametre etiquette identifie la source du message. La chaine doit etre composee de deux parties separees par le caractere deux-points << : >>, ou la premiere partie ne comporte pas plus de 10 caracteres et la seconde, pas plus de 14. Le parametre texte decrit la condition de l'erreur. Le parametre action decrit les etapes possibles pour echapper a l'erreur. Si elle est affichee, elle sera prefixee par <>. Le parametre ancre est une reference a la documentation en ligne ou l'on pourra trouver plus d'informations. Il devrait contenir la valeur etiquette et un numero d'identification unique. Parametres factices Chacun des parametres peut avoir une valeur factice. La valeur de classification factice MM_NULLMC (0L) ne specifie aucune sortie, ainsi, rien n'est affiche. La valeur de severite factice NO_SEV (0) signifie qu'aucune severite n'est fournie. Les valeurs MM_NULLLBL, MM_NULLTXT, MM_NULLACT et MM_NULLTAG sont des synonymes de ((char *) 0), la chaine vide et MM_NULLSEV sont un synonyme de NO_SEV. Le parametre classification Le parametre classification est la somme des valeurs decrivant 4 types d'informations. La premiere valeur definit le canal de sortie. MM_PRINT Sortie sur stderr. MM_CONSOLE Sortie sur la console du systeme. MM_PRINT | MM_CONSOLE Sortie sur les deux. La deuxieme valeur est la source de l'erreur : MM_HARD Une erreur materielle est survenue. MM_FIRM Une erreur de micrologiciel (<< firmware >>) est survenue. MM_SOFT Une erreur logicielle est survenue. La troisieme valeur encode le detecteur du probleme : MM_APPL L'erreur a ete detectee par une application. MM_UTIL L'erreur a ete detectee par un utilitaire. MM_OPSYS L'erreur a ete detectee par le systeme d'exploitation. La quatrieme valeur indique la gravite de l'incident : MM_RECOVER L'erreur est recuperable. MM_NRECOV L'erreur n'est pas recuperable. Le parametre severite Le parametre severite peut prendre l'une des valeurs suivantes : MM_NOSEV Aucune severite ne sera affichee. MM_HALT Cette valeur est affichee en tant que HALT. MM_ERROR Cette valeur est affichee en tant que ERROR. MM_WARNING Cette valeur est affichee en tant que WARNING. MM_INFO Cette valeur est affichee en tant que INFO. Les valeurs numeriques sont comprises entre 0 et 4. L'utilisation de addseverity(3) ou de la variable d'environnement SEV_LEVEL vous permet d'ajouter plus de niveaux et d'afficher plus de messages. VALEUR RENVOYEE La fonction peut retourner quatre valeurs : MM_OK Tout s'est bien passe. MM_NOTOK Echec complet. MM_NOMSG Erreur lors de l'ecriture sur stderr. MM_NOCON Erreur lors de l'ecriture sur la console. ENVIRONNEMENT La variable d'environnement MSGVERB (<< verbosite du message >>) peut etre utilisee 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 definie, qu'elle est non vide et qu'elle est une liste de mots cles autorises separes par le caractere deux-points, seules les parties du message correspondant a ces mots cles seront affichees. Les mots-cles autorises sont << label >> pour l'etiquette, << severity >> pour la severite, << text >> pour le texte, << action >> et << tag >> pour l'ancre. La variable d'environnement SEV_LEVEL peut etre utilisee afin d'introduire de nouveaux niveaux de severite. Par defaut, seuls les cinq niveaux de severite decrits precedemment sont disponibles. Toute autre valeur numerique 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 a fmtmsg() ou chaque description est de la forme severite, niveau, chaine alors fmtmsg() acceptera egalement les valeurs indiquees pour le niveau (en plus des niveaux standard 0-4), et utilisera la chaine indiquee lorsqu'un tel niveau surviendra. La partie << severite >> n'est pas utilisee par fmtmsg() mais elle doit etre presente. La partie << niveau >> est la representation alphabetique d'un nombre. La valeur numerique doit etre un nombre strictement superieur a 4. Cette valeur doit etre utilisee dans le parametre << severite >> de fmtmsg() pour selectionner cette classe. Il n'est pas possible de surcharger les classes predefinies. La partie << chaine >> est la chaine qui sera affichee lorsqu'un message de cette classe est traite par fmtmsg(). ATTRIBUTS Pour une explication des termes utilises dans cette section, consulter attributes(7). +----------+--------------------------+--------------------------------+ |Interface | Attribut | Valeur | +----------+--------------------------+--------------------------------+ |fmtmsg() | Securite des threads | glibc >= 2.16: MT-Safe; | | | | glibc < 2.16: MT-Unsafe | +----------+--------------------------+--------------------------------+ Avant la glibc 2.16, la fonction fmtmsg() utilisait une variable statique non protegee, et n'etait donc pas sure dans un contexte multithread. Depuis glibc 2.16, la fonction fmtmsg() utilise un verrou de protection de la variable statique, donc elle est sure dans un contexte multithread. STANDARDS fmtmsg() MSGVERB POSIX.1-2008. HISTORIQUE fmtmsg() System V. POSIX.1-2001 and POSIX.1-2008. glibc 2.1. MSGVERB System V. POSIX.1-2001 and POSIX.1-2008. SEV_LEVEL System V. Les pages de manuel System V et UnixWare disent que ces fonctions ont ete remplacees par << pfmt() >> et << addsev() >> ou par << pfmt() >>, << vpfmt() >>, << lfmt() >> et << vlfmt() >> et seront supprimees par la suite. EXEMPLES #include #include #include int main(void) { long class = MM_PRINT | MM_SOFT | MM_OPSYS | MM_RECOVER; int err; err = fmtmsg(class, "util-linux : mount", MM_ERROR, "option de montage inconnue", "Consultez mount(8).", "util-linux : mount : 017"); switch (err) { case MM_OK: break; case MM_NOTOK: printf("Rien a afficher\n"); break; case MM_NOMSG: printf("Rien a afficher sur stderr\n"); break; case MM_NOCON: printf("Pas de sortie sur la console\n"); break; default: printf("Erreur inconnue de fmtmsg()\n"); } exit(EXIT_SUCCESS); } La sortie devrait etre : util-linux : mount : ERROR : option de montage inconnue TO FIX : consultez mount(8). util-linux : mount : 017 et apres MSGVERB=text:action; export MSGVERB la sortie devient : option de montage inconnue TO FIX : consultez mount(8). VOIR AUSSI addseverity(3), perror(3) TRADUCTION La traduction francaise de cette page de manuel a ete creee par Christophe Blaess , Stephan Rafin , Thierry Vignaud , Francois Micaux, Alain Portal , Jean-Philippe Guerard , Jean-Luc Coulon (f5ibh) , Julien Cristau , Thomas Huriaux , Nicolas Francois , Florentin Duneau , Simon Paillard , Denis Barbier , David Prevot , Frederic Hantrais et Gregoire Scano Cette traduction est une documentation libre ; veuillez vous reporter a la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITE LEGALE. Si vous decouvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message a . Pages du manuel de Linux 6.06 31 octobre 2023 fmtmsg(3)