]> git.ipfire.org Git - thirdparty/man-pages.git/blobdiff - man3/strerror.3
fuse.4: ffix
[thirdparty/man-pages.git] / man3 / strerror.3
index 33f5bc39eefbb0d05932f4d208fa4e922edf35e3..39de2c49932da5775d928521316f3cbe098efeb8 100644 (file)
@@ -1,6 +1,7 @@
 .\" Copyright (C) 1993 David Metcalfe (david@prism.demon.co.uk)
-.\" and Copyright (C) 2005, Michael Kerrisk <mtk.manpages@gmail.com>
+.\" and Copyright (C) 2005, 2014 Michael Kerrisk <mtk.manpages@gmail.com>
 .\"
+.\" %%%LICENSE_START(VERBATIM)
 .\" Permission is granted to make and distribute verbatim copies of this
 .\" manual provided the copyright notice and this permission notice are
 .\" preserved on all copies.
@@ -20,6 +21,7 @@
 .\"
 .\" Formatted or processed versions of this manual, if unaccompanied by
 .\" the source, must acknowledge the copyright and authors of this work.
+.\" %%%LICENSE_END
 .\"
 .\" References consulted:
 .\"     Linux libc source code
 .\" 2005-12-13, mtk, Substantial rewrite of strerror_r() description
 .\"         Addition of extra material on portability and standards.
 .\"
-.TH STRERROR 3  2012-04-22 "" "Linux Programmer's Manual"
+.TH STRERROR 3  2017-09-15 "" "Linux Programmer's Manual"
 .SH NAME
-strerror, strerror_r \- return string describing error number
+strerror, strerror_r, strerror_l \- return string describing error number
 .SH SYNOPSIS
 .nf
 .B #include <string.h>
-.sp
+.PP
 .BI "char *strerror(int " errnum );
-.sp
+.PP
 .BI "int strerror_r(int " errnum ", char *" buf ", size_t " buflen );
             /* XSI-compliant */
-.sp
+.PP
 .BI "char *strerror_r(int " errnum ", char *" buf ", size_t " buflen );
             /* GNU-specific */
+.PP
+.BI "char *strerror_l(int " errnum ", locale_t " locale );
 .fi
-.sp
+.PP
 .in -4n
 Feature Test Macro Requirements for glibc (see
 .BR feature_test_macros (7)):
 .in
-.sp
-The XSI-compliant version of
-.BR strerror_r ()
-is provided if:
+.ad l
+.PP
+.BR strerror_r ():
+.RS 4
+The XSI-compliant version is provided if:
 .br
-(_POSIX_C_SOURCE\ >=\ 200112L || _XOPEN_SOURCE\ >=\ 600) && !\ _GNU_SOURCE
+(_POSIX_C_SOURCE\ >=\ 200112L) && ! \ _GNU_SOURCE
 .br
 Otherwise, the GNU-specific version is provided.
+.RE
+.ad
 .SH DESCRIPTION
 The
 .BR strerror ()
@@ -75,14 +82,17 @@ part of the current locale to select the appropriate language.
 .I errnum
 is
 .BR EINVAL ,
-the returned description will "Invalid argument".)
+the returned description will be "Invalid argument".)
 This string must not be modified by the application, but may be
 modified by a subsequent call to
-.BR strerror ().
-No library function, including
+.BR strerror ()
+or
+.BR strerror_l ().
+No other library function, including
 .BR perror (3),
 will modify this string.
-
+.\"
+.SS strerror_r()
 The
 .BR strerror_r ()
 function is similar to
@@ -98,12 +108,12 @@ settings shown in the SYNOPSIS;
 otherwise the GNU-specific version is provided.
 If no feature test macros are explicitly defined,
 then (since glibc 2.4)
-.B _POSIX_SOURCE
+.B _POSIX_C_SOURCE
 is defined by default with the value
 200112L, so that the XSI-compliant version of
 .BR strerror_r ()
 is provided by default.
-
+.PP
 The XSI-compliant
 .BR strerror_r ()
 is preferred for portable applications.
@@ -111,7 +121,7 @@ It returns the error string in the user-supplied buffer
 .I buf
 of length
 .IR buflen .
-
+.PP
 The GNU-specific
 .BR strerror_r ()
 returns a pointer to a string containing the error message.
@@ -130,18 +140,46 @@ bytes are stored (the string may be truncated if
 is too small and
 .I errnum
 is unknown).
-The string always includes a terminating null byte.
+The string always includes a terminating null byte (\(aq\\0\(aq).
+.\"
+.SS strerror_l()
+.BR strerror_l ()
+is like
+.BR strerror (),
+but maps
+.I errnum
+to a locale-dependent error message in the locale specified by
+.IR locale .
+The behavior of
+.BR strerror_l ()
+is undefined if
+.I locale
+is the special locale object
+.BR LC_GLOBAL_LOCALE
+or is not a valid locale object handle.
 .SH RETURN VALUE
 The
-.BR strerror ()
+.BR strerror (),
+.BR strerror_l (),
 and the GNU-specific
 .BR strerror_r ()
 functions return
 the appropriate error description string,
 or an "Unknown error nnn" message if the error number is unknown.
-
+.PP
+The XSI-compliant
+.BR strerror_r ()
+function returns 0 on success.
+On error,
+a (positive) error number is returned (since glibc 2.13),
+or \-1 is returned and
+.I errno
+is set to indicate the error (glibc versions before 2.13).
+.PP
 POSIX.1-2001 and POSIX.1-2008 require that a successful call to
 .BR strerror ()
+or
+.BR strerror_l ()
 shall leave
 .I errno
 unchanged, and note that,
@@ -152,15 +190,6 @@ to zero before the call,
 and then check
 .I errno
 after the call.
-
-The XSI-compliant
-.BR strerror_r ()
-function returns 0 on success.
-On error,
-a (positive) error number is returned (since glibc 2.13),
-or \-1 is returned and
-.I errno
-is set to indicate the error (glibc versions before 2.13).
 .SH ERRORS
 .TP
 .B EINVAL
@@ -170,16 +199,44 @@ is not a valid error number.
 .TP
 .B ERANGE
 Insufficient storage was supplied to contain the error description string.
+.SH VERSIONS
+The
+.BR strerror_l ()
+function first appeared in glibc 2.6.
+.SH ATTRIBUTES
+For an explanation of the terms used in this section, see
+.BR attributes (7).
+.TS
+allbox;
+lbw14 lb lb
+l l l.
+Interface      Attribute       Value
+T{
+.BR strerror ()
+T}     Thread safety   MT-Unsafe race:strerror
+T{
+.BR strerror_r (),
+.br
+.BR strerror_l ()
+T}     Thread safety   MT-Safe
+.TE
 .SH CONFORMING TO
 .BR strerror ()
-is specified by POSIX.1-2001, C89, C99.
+is specified by POSIX.1-2001, POSIX.1-2008, C89, and C99.
 .BR strerror_r ()
-is specified by POSIX.1-2001.
-
+is specified by POSIX.1-2001 and POSIX.1-2008.
+.\" FIXME . for later review when Issue 8 is one day released...
+.\" A future POSIX.1 may remove strerror_r()
+.\" http://austingroupbugs.net/tag_view_page.php?tag_id=8
+.\" http://austingroupbugs.net/view.php?id=508
+.PP
+.BR strerror_l ()
+is specified in POSIX.1-2008.
+.PP
 The GNU-specific
 .BR strerror_r ()
 function is a nonstandard extension.
-
+.PP
 POSIX.1-2001 permits
 .BR strerror ()
 to set
@@ -199,9 +256,19 @@ to
 .B EINVAL
 if the error number is unknown.
 C99 and POSIX.1-2008 require the return value to be non-NULL.
+.SH NOTES
+The GNU C Library uses a buffer of 1024 characters for
+.BR strerror ().
+This buffer size therefore should be sufficient to avoid an
+.B ERANGE
+error when calling
+.BR strerror_r ()
+and
+.BR strerror_l ().
 .SH SEE ALSO
 .BR err (3),
 .BR errno (3),
 .BR error (3),
 .BR perror (3),
-.BR strsignal (3)
+.BR strsignal (3),
+.BR locale (7)