.\" 2005-12-13, mtk, Substantial rewrite of strerror_r() description
.\" Addition of extra material on portability and standards.
.\"
-.TH STRERROR 3 2015-03-02 "" "Linux Programmer's Manual"
+.TH STRERROR 3 2017-09-15 "" "Linux Programmer's Manual"
.SH NAME
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
.ad l
-.sp
+.PP
.BR strerror_r ():
.RS 4
The XSI-compliant version is provided if:
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.
.I buf
of length
.IR buflen .
-
+.PP
The GNU-specific
.BR strerror_r ()
returns a pointer to a string containing the error message.
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.
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
.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).
.BR strerror_l ()
T} Thread safety MT-Safe
.TE
-.SH VERSIONS
-The
-.BR strerror_l ()
-function first appeared in glibc 2.6.
.SH CONFORMING TO
.BR strerror ()
is specified by POSIX.1-2001, POSIX.1-2008, C89, and C99.
.BR strerror_r ()
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
.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),