strerror_r
—convert error number to string and copy to buffer#include <string.h> #ifdef _GNU_SOURCE char *strerror_r(int errnum, char *buffer, size_t n); #else int strerror_r(int errnum, char *buffer, size_t n); #endif
Description
strerror_r
converts the error number errnum into a
string and copies the result into the supplied buffer for
a length up to n, including the NUL terminator. The value of
errnum is usually a copy of errno
. If errnum
is not a known
error number, the result is the empty string.
See strerror
for how strings are mapped to errnum
.
Returns
errnum
was not
recognized, and ERANGE if n was too small. The variant chosen
depends on macros that you define before inclusion of string.h
.
Portability
strerror_r
with a char * result is a GNU extension.
strerror_r
with an int result is required by POSIX 2001.
This function is compliant only if _user_strerror
is not provided,
or if it is thread-safe and uses separate storage according to whether
the second argument of that function is non-zero. For more details
on _user_strerror
, see the strerror
documentation.
POSIX states that the contents of buf are unspecified on error, although this implementation guarantees a NUL-terminated string for all except n of 0.
POSIX recommends that unknown errnum result in a message including
that value, however it is not a requirement and this implementation
provides only an empty string (unless you provide _user_strerror
).
POSIX also recommends that unknown errnum fail with EINVAL even
when providing such a message, however it is not a requirement and
this implementation will return success if _user_strerror
provided
a non-empty alternate string without assigning into its third argument.
strerror_r
requires no supporting OS subroutines.