2 @section @code{strerror_r}
5 POSIX specification:@* @url{https://pubs.opengroup.org/onlinepubs/9699919799/functions/strerror_r.html}
10 @url{https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-strerror-r.html}
12 @url{https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib---xpg-strerror-r.html}
15 Gnulib module: strerror_r-posix
17 Portability problems fixed by Gnulib:
20 This function is missing on some platforms:
21 NetBSD 3.0, Minix 3.1.8, HP-UX 11.23, IRIX 6.5, Solaris 9, mingw, MSVC 14.
23 glibc, Cygwin, and Android have an incompatible version of this function.
24 The POSIX compliant code
26 char *s = (strerror_r (err, buf, buflen) == 0 ? buf : NULL);
28 is essentially equivalent to this code using the glibc function:
30 char *s = strerror_r (err, buf, buflen);
33 This function clobbers the @code{strerror} buffer on some platforms:
36 This function is sometimes not declared in @code{<string.h>} on some platforms:
39 The third argument is of type @code{int} instead of @code{size_t} on some
43 When this function fails, it returns @minus{}1 and sets @code{errno}, instead of
44 returning the error number, on some platforms:
45 glibc 2.12 with @code{-D_POSIX_C_SOURCE=200112L}, AIX 6.1.
47 When this function fails, it corrupts @code{errno}, on some platforms:
50 This function does not support many error values defined in @code{<errno.h>} on
54 This function does not support the error values that are specified by POSIX
55 but not defined by the system, on some platforms:
56 OpenBSD 4.0, NonStop Kernel, Cygwin 1.5.x.
58 This function reports failure for @code{strerror_r(0, buf, len)},
59 although POSIX requires this to succeed, on some platforms:
62 This function produces a different string for @code{0} than
63 @code{strerror} on some platforms:
66 This function always fails when the third argument is less than 80 on some
70 When the buffer is too small and the value is in range, this function
71 does not fail, but instead truncates the result and returns 0 on some
75 When the value is not in range or the buffer is too small, this
76 function fails to leave a NUL-terminated string in the buffer on some
78 glibc 2.13, FreeBSD 8.2, Solaris 10.
80 When the value is out of range but the buffer is too small, this
81 function does not always return the longest possible string on some
86 Portability problems not fixed by Gnulib: