]> git.ipfire.org Git - thirdparty/man-pages.git/blobdiff - man3/fmtmsg.3
dlopen.3: srcfix: add URL relevant for BUGS
[thirdparty/man-pages.git] / man3 / fmtmsg.3
index 62c8d81738690db409dab7b28568d74cf832948a..c4b4901e47cafca2f89e6d3857f7c0bf773b85e4 100644 (file)
@@ -1,22 +1,24 @@
 .\"  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 and deserves an example
 .\"
 .\"  Polished, aeb, 2003-11-01
-.TH FMTMSG 3 2008-06-14 "" "Linux Programmer's Manual"
+.TH FMTMSG 3 2017-09-15 "" "Linux Programmer's Manual"
 .SH NAME
 fmtmsg \- print formatted error messages
 .SH SYNOPSIS
 .nf
 .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 );
 .fi
 .SH DESCRIPTION
@@ -29,23 +31,23 @@ For messages written to
 the format depends on the
 .B MSGVERB
 environment variable.
-.LP
+.PP
 The
 .I label
 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
+.PP
 The
 .I text
 argument describes the condition of the error.
-.LP
+.PP
 The
 .I action
 argument describes possible steps to recover from the error.
 If it is printed, it is prefixed by "TO FIX: ".
-.LP
+.PP
 The
 .I tag
 argument is a reference to the online documentation where more
@@ -53,7 +55,7 @@ information can be found.
 It should contain the
 .I label
 value and a unique identification number.
-.SS "Dummy arguments"
+.SS Dummy arguments
 Each of the arguments can have a dummy value.
 The dummy classification value
 .B MM_NULLMC
@@ -67,17 +69,16 @@ The values
 .BR MM_NULLACT ,
 .B MM_NULLTAG
 are synonyms for
-.IR "((char *) 0)" ,
+.IR "((char\ *)\ 0)" ,
 the empty string, and
 .B MM_NULLSEV
 is a synonym for
 .BR NO_SEV .
-.SS "The classification argument"
+.SS The classification argument
 The
 .I classification
 argument is the sum of values describing 4 types of information.
-.br
-.sp
+.PP
 The first value defines the output channel.
 .TP 12n
 .B MM_PRINT
@@ -119,7 +120,7 @@ It is a recoverable error.
 .TP
 .B MM_NRECOV
 It is a nonrecoverable error.
-.SS "The severity argument"
+.SS The severity argument
 The
 .I severity
 argument can take one of the following values:
@@ -145,7 +146,7 @@ Using
 or the environment variable
 .B SEV_LEVEL
 you can add more levels and strings to print.
-.SH "RETURN VALUE"
+.SH RETURN VALUE
 The function can return 4 values:
 .TP 12n
 .B MM_OK
@@ -183,25 +184,25 @@ print nothing.
 If the user puts
 .B SEV_LEVEL
 with a format like
-.sp
+.PP
 .RS
 SEV_LEVEL=[description[:description[:...]]]
 .RE
-.sp
+.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
 .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
 .BR fmtmsg ()
 but it has to be present.
@@ -218,7 +219,34 @@ is the string printed when a message of this class is processed by
 .SH VERSIONS
 .BR fmtmsg ()
 is provided in glibc since version 2.1.
-.SH "CONFORMING TO"
+.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
 .BR fmtmsg ()
 and
@@ -228,17 +256,18 @@ and environment variables
 and
 .B SEV_LEVEL
 come from System V.
+.PP
 The function
 .BR fmtmsg ()
 and the environment variable
 .B MSGVERB
-are described in POSIX.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
+.EX
 #include <stdio.h>
 #include <stdlib.h>
 #include <fmtmsg.h>
@@ -269,27 +298,34 @@ main(void)
     }
     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)