]> git.ipfire.org Git - thirdparty/man-pages.git/blobdiff - man3/fmtmsg.3
err.3: EXAMPLES: use EXIT_FAILURE rather than 1 as exit status
[thirdparty/man-pages.git] / man3 / fmtmsg.3
index 79c4e24e847bfba15d95f22b9f1962fb4c156291..4bd04a00656558e66302fabf29010c37bbcf6420 100644 (file)
@@ -1,59 +1,63 @@
 .\"  Copyright 2002 walter harms (walter.harms@informatik.uni-oldenburg.de)
-.\"  Distributed under GPL
+.\"
+.\" %%%LICENSE_START(GPL_NOVERSION_ONELINE)
+.\" Distributed under GPL
+.\" %%%LICENSE_END
+.\"
 .\"  adapted glibc info page
-.\"  
+.\"
 .\"  This should run as 'Guru Meditation' (amiga joke :)
-.\"  The function is quite complex an deserves an example
+.\"  The function is quite complex and deserves an example
 .\"
 .\"  Polished, aeb, 2003-11-01
-.TH fmtmsg 3 2003-11-01 "" "Linux Programmer's Manual"
+.TH FMTMSG 3 2017-09-15 "" "Linux Programmer's Manual"
 .SH NAME
 fmtmsg \- print formatted error messages
 .SH SYNOPSIS
 .nf
-.sp
 .B #include <fmtmsg.h>
-.sp
+.PP
 .BI "int fmtmsg(long " classification ", const char *" label ,
-.br
 .BI "           int " severity ", const char *" text ,
-.br
 .BI "           const char *" action ", const char *" tag );
-.sp
 .fi
 .SH DESCRIPTION
-This function displays a message described by its parameters on the device(s)
+This function displays a message described by its arguments on the device(s)
 specified in the
 .I classification
-parameter. For messages written to
+argument.
+For messages written to
 .IR stderr ,
 the format depends on the
 .B MSGVERB
 environment variable.
-.LP
+.PP
 The
 .I label
-parameter identifies the source of the message.  The string must consist
+argument identifies the source of the message.
+The string must consist
 of two colon separated parts where the first part has not more
-than 10 and the second part not more than 14 characters.  
-.LP
+than 10 and the second part not more than 14 characters.
+.PP
 The
 .I text
-parameter describes the condition of the error.
-.LP
+argument describes the condition of the error.
+.PP
 The
 .I action
-parameter describes possible steps to recover from the error.
+argument describes possible steps to recover from the error.
 If it is printed, it is prefixed by "TO FIX: ".
-.LP
+.PP
 The
 .I tag
-parameter is a reference to the online documentation where more
-information can be found.  It should contain the
+argument is a reference to the online documentation where more
+information can be found.
+It should contain the
 .I label
 value and a unique identification number.
-.SS "Dummy parameters"
-Each of the parameters can have a dummy value. The dummy classification value
+.SS Dummy arguments
+Each of the arguments can have a dummy value.
+The dummy classification value
 .B MM_NULLMC
 (0L) does not specify any output, so nothing is printed.
 The dummy severity value
@@ -63,17 +67,18 @@ The values
 .BR MM_NULLLBL ,
 .BR MM_NULLTXT ,
 .BR MM_NULLACT ,
-.BR MM_NULLTAG
-are synonyms for ((char *) 0), the empty string, and
+.B MM_NULLTAG
+are synonyms for
+.IR "((char\ *)\ 0)" ,
+the empty string, and
 .B MM_NULLSEV
 is a synonym for
 .BR NO_SEV .
-.SS "The classification parameter"
-The 
-.I classification 
-parameter is the sum of values describing 4 types of information.
-.br 
-.sp
+.SS The classification argument
+The
+.I classification
+argument is the sum of values describing 4 types of information.
+.PP
 The first value defines the output channel.
 .TP 12n
 .B MM_PRINT
@@ -114,11 +119,11 @@ The fourth value shows the severity of the incident:
 It is a recoverable error.
 .TP
 .B MM_NRECOV
-It is a non-recoverable error.
-.SS "The severity parameter"
-The 
-.I severity 
-parameter can take one of the following values:
+It is a nonrecoverable error.
+.SS The severity argument
+The
+.I severity
+argument can take one of the following values:
 .TP 12n
 .B MM_NOSEV
 No severity is printed.
@@ -135,13 +140,29 @@ This value is printed as WARNING.
 .B MM_INFO
 This value is printed as INFO.
 .PP
-The numeric values are between 0 and 4. Using 
-.BR addseverity ()
+The numeric values are between 0 and 4.
+Using
+.BR addseverity (3)
 or the environment variable
 .B SEV_LEVEL
 you can add more levels and strings to print.
+.SH RETURN VALUE
+The function can return 4 values:
+.TP 12n
+.B MM_OK
+Everything went smooth.
+.TP
+.B MM_NOTOK
+Complete failure.
+.TP
+.B MM_NOMSG
+Error writing to
+.IR stderr .
+.TP
+.B MM_NOCON
+Error writing to the console.
 .SH ENVIRONMENT
-The environment variable 
+The environment variable
 .B MSGVERB
 ("message verbosity") can be used to suppress parts of
 the output to
@@ -156,117 +177,155 @@ The environment variable
 .B SEV_LEVEL
 can be used to introduce new severity levels.
 By default, only the five severity levels described
-above are available.  Any other numeric value would make fmtmsg() print
-nothing.
-If the user puts 
+above are available.
+Any other numeric value would make
+.BR fmtmsg ()
+print nothing.
+If the user puts
 .B SEV_LEVEL
 with a format like
-.sp
+.PP
 .RS
 SEV_LEVEL=[description[:description[:...]]]
 .RE
-.sp
-in the environment of the process before the first call to fmtmsg(),
+.PP
+in the environment of the process before the first call to
+.BR fmtmsg (),
 where each description is of the form
-.sp
+.PP
 .RS
 severity-keyword,level,printstring
 .RE
-.sp
+.PP
 then
-.IR fmtmsg ()
+.BR fmtmsg ()
 will also accept the indicated values for the level (in addition to
-the standard levels 0-4), and use the indicated printstring when
+the standard levels 0\(en4), and use the indicated printstring when
 such a level occurs.
-.LP
+.PP
 The severity-keyword part is not used by
-.IR fmtmsg ()
-but it has to be present.  
-The level part is a string representation of a number.  
+.BR fmtmsg ()
+but it has to be present.
+The level part is a string representation of a number.
 The numeric value must be a number greater than 4.
-This value must be used in the severity parameter of 
-.IR fmtmsg ()
-to select this class.  It is not possible to overwrite
-any of the predefined classes.  The printstring
+This value must be used in the severity argument of
+.BR fmtmsg ()
+to select this class.
+It is not possible to overwrite
+any of the predefined classes.
+The printstring
 is the string printed when a message of this class is processed by
-.IR fmtmsg ().
-.SH "RETURN VALUES"
-The function can return 4 values:
-.TP 12n
-.B MM_OK
-Everything went smooth.
-.TP
-.B MM_NOTOK
-Complete failure.
-.TP
-.B MM_NOMSG
-Error writing to
-.IR stderr .
-.TP
-.B MM_NOCON
-Error writing to the console.
-.SH "CONFORMING TO"
+.BR fmtmsg ().
+.SH VERSIONS
+.BR fmtmsg ()
+is provided in glibc since version 2.1.
+.SH ATTRIBUTES
+For an explanation of the terms used in this section, see
+.BR attributes (7).
+.TS
+allbox;
+lb lb lbw23
+l l l.
+Interface      Attribute       Value
+T{
+.BR fmtmsg ()
+T}     Thread safety   T{
+glibc >= 2.16: MT-Safe
+.br
+glibc < 2.16: MT-Unsafe
+T}
+.TE
+.PP
+Before glibc 2.16, the
+.BR fmtmsg ()
+function uses a static variable that is not protected,
+so it is not thread-safe.
+.PP
+Since glibc 2.16,
+.\" Modified in commit 7724defcf8873116fe4efab256596861eef21a94
+the
+.BR fmtmsg ()
+function uses a lock to protect the static variable, so it is thread-safe.
+.SH CONFORMING TO
 The functions
-.IR fmtmsg ()
+.BR fmtmsg ()
 and
-.IR addseverity (),
+.BR addseverity (3),
 and environment variables
 .B MSGVERB
 and
 .B SEV_LEVEL
-come from System V (XPG4-UNIX).
+come from System V.
+.PP
 The function
-.IR fmtmsg ()
+.BR fmtmsg ()
 and the environment variable
 .B MSGVERB
-are described in POSIX 1003.1-2001.
+are described in POSIX.1-2001 and POSIX.1-2008.
 .SH NOTES
-System V and Unixware man pages tell us that these functions
+System V and UnixWare man pages tell us that these functions
 have been replaced by "pfmt() and addsev()" or by "pfmt(),
 vpfmt(), lfmt(), and vlfmt()", and will be removed later.
-.SH EXAMPLE
-.nf
+.SH EXAMPLES
+.EX
 #include <stdio.h>
+#include <stdlib.h>
 #include <fmtmsg.h>
 
-int main() {
-  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) {
+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;
+        break;
     case MM_NOTOK:
-      printf("Nothing printed\en");
-      break;
+        printf("Nothing printed\en");
+        break;
     case MM_NOMSG:
-      printf("Nothing printed to stderr\en");
-      break;
+        printf("Nothing printed to stderr\en");
+        break;
     case MM_NOCON:
-      printf("No console output\en");
-      break;
+        printf("No console output\en");
+        break;
     default:
-      printf("Unknown error from fmtmsg()\en");
-  }
-  return 0;
+        printf("Unknown error from fmtmsg()\en");
+    }
+    exit(EXIT_SUCCESS);
 }
-.fi
+.EE
 .PP
 The output should be:
-.nf
-  util-linux:mount: ERROR: unknown mount option
-  TO FIX: See mount(8).  util-linux:mount:017
-.fi
+.PP
+.in +4n
+.EX
+util\-linux:mount: ERROR: unknown mount option
+TO FIX: See mount(8).  util\-linux:mount:017
+.EE
+.in
+.PP
 and after
-.nf
-  MSGVERB=text:action; export MSGVERB
-.fi
+.PP
+.in +4n
+.EX
+MSGVERB=text:action; export MSGVERB
+.EE
+.in
+.PP
 the output becomes:
-.nf
-  unknown mount option
-  TO FIX: See mount(8).
-.fi
-.SH "SEE ALSO"
+.PP
+.in +4n
+.EX
+unknown mount option
+TO FIX: See mount(8).
+.EE
+.in
+.PP
+.SH SEE ALSO
 .BR addseverity (3),
 .BR perror (3)