1
0
mirror of https://git.savannah.gnu.org/git/gnulib.git synced 2025-09-02 15:41:25 +03:00
Files
gnulib/doc/posix-functions/strerror.texi
Eric Blake 79d4e75d8e strerror_r-posix: fix on MacOS
MacOS X 10.5 strerror(0) is "Unknown error: 0", which is not distinguished
from "Unknown error: -1" for out-of-range.  Worse, strerror_r(0,,)
is "Undefined error: 0", although strerror_r for all other out-of-range
values matches strerror.

* m4/strerror.m4 (gl_FUNC_STRERROR): Flush out MacOS bug.
* m4/strerror_r.m4 (gl_FUNC_STRERROR_R_WORKS): Likewise, and fix
logic bug.
* lib/strerror_r.c (strerror_r): Fix the bug.
* lib/strerror.c (strerror): Likewise.
* doc/posix-functions/strerror_r.texi (strerror_r): Document the
problem.
* doc/posix-functions/strerror.texi (strerror): Likewise.
* doc/posix-functions/perror.texi (perror): Likewise.
* tests/test-strerror.c (main): Enhance test.
* tests/test-strerror_r.c (main): Likewise.

Signed-off-by: Eric Blake <eblake@redhat.com>
2011-06-08 06:50:35 -06:00

34 lines
1.1 KiB
Plaintext

@node strerror
@section @code{strerror}
@findex strerror
POSIX specification:@* @url{http://www.opengroup.org/onlinepubs/9699919799/functions/strerror.html}
Gnulib module: strerror
Portability problems fixed by Gnulib:
@itemize
@item
This function does not support the error values that are specified by POSIX
but not defined by the system, on some platforms:
OpenBSD 4.0, OSF/1 5.1, NonStop Kernel, Cygwin 1.5.x, mingw.
@item
This function reports failure for @code{strerror(0)} (by setting
@code{errno} or using a string similar to out-of-range values),
although POSIX requires this to leave @code{errno} unchanged and
report success, on some platforms:
FreeBSD 8.2, MacOS X 10.5.
@item
This function fails to return a string for out-of-range integers on
some platforms:
HP-UX 11, IRIX 6.5, Solaris 8.
(Some return NULL which is a POSIX violation, others return the empty
string which is valid but not as useful); this can still cause bugs
because most programs call @code{strerror} without setting and testing
@code{errno}.)
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@end itemize