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);
DESCRIPTION
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
then fmtmsg() will also accept the indicated values for the level (in addition to the standard levels 0–4), and use the indicated printstring when such a level occurs.
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.
ATTRIBUTS
Pour une explication des termes utilisés dans cette section, consulter attributes(7).
Avant glibc 2.16, la fonction fmtmsg() utilisait une variable statique non protégée, et n’était donc pas sûre dans un contexte multithread.
Depuis glibc 2.16, la fonction fmtmsg() utilise un verrou de protection de la variable statique, donc elle est sûre dans un contexte multithread.
CONFORMITÉ
The functions fmtmsg() and addseverity(3), and environment variables MSGVERB and SEV_LEVEL come from System V.
The function fmtmsg() and the environment variable MSGVERB are described in POSIX.1-2001 and POSIX.1-2008.
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.
EXEMPLES
#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
COLOPHON
Cette page fait partie de la publication 5.07 du projet man-pages Linux. Une description du projet et des instructions pour signaler des anomalies et la dernière version de cette page, peuvent être trouvées à l’adresse https://www.kernel.org/doc/man-pages/.
TRADUCTION
La traduction française de cette page de manuel a été créée par Christophe Blaess <https://www.blaess.fr/christophe/>, Stéphan Rafin <stephan.rafin [AT] laposte.net>, Thierry Vignaud <tvignaud [AT] mandriva.com>, François Micaux, Alain Portal <aportal [AT] univ-montp2.fr>, Jean-Philippe Guérard <fevrier [AT] tigreraye.org>, Jean-Luc Coulon (f5ibh) <jean-luc.coulon [AT] wanadoo.fr>, Julien Cristau <jcristau [AT] debian.org>, Thomas Huriaux <thomas.huriaux [AT] gmail.com>, Nicolas François <nicolas.francois [AT] centraliens.net>, Florentin Duneau <fduneau [AT] gmail.com>, Simon Paillard <simon.paillard [AT] resel.fr>, Denis Barbier <barbier [AT] debian.org>, David Prévot <david [AT] tilapin.org> et Frédéric Hantrais <fhantrais [AT] gmail.com>
Cette traduction est une documentation libre ; veuillez vous reporter à la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il n’y a aucune RESPONSABILITÉ LÉGALE.
Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à <debian-l10n-french [AT] lists.org>.