The Open Group Base Specifications Issue 6
IEEE Std 1003.1, 2004 Edition
Copyright © 2001-2004 The IEEE and The Open Group, All Rights reserved.

#### NAME

> strerror, strerror_r - get error message string

#### SYNOPSIS

> ``#include <string.h>
> char *strerror(int` errnum`);
> ``

> ``[TSF] int strerror_r(int` errnum`, char *`strerrbuf`, size_t` buflen`);``
> `
> `

#### DESCRIPTION

> For strerror(): [CX] The functionality described on this reference page is aligned with the ISO C standard. Any conflict between the requirements described here and the ISO C standard is unintentional. This volume of IEEE Std 1003.1-2001 defers to the ISO C standard.

> The strerror() function shall map the error number in errnum to a locale-dependent error message string and shall return a pointer to it. Typically, the values for errnum come from errno, but strerror() shall map any value of type int to a message.

> The string pointed to shall not be modified by the application, but may be overwritten by a subsequent call to strerror() [CX] or perror().

> [CX] The contents of the error message strings returned by strerror() should be determined by the setting of the LC_MESSAGES category in the current locale.

> The implementation shall behave as if no function defined in this volume of IEEE Std 1003.1-2001 calls strerror().

> [CX] The strerror() function shall not change the setting of errno if successful.

> Since no return value is reserved to indicate an error, an application wishing to check for error situations should set errno to 0, then call strerror(), then check errno.

> The strerror() function need not be reentrant. A function that is not required to be reentrant is not required to be thread-safe.

> [TSF] The strerror_r() function shall map the error number in errnum to a locale-dependent error message string and shall return the string in the buffer pointed to by strerrbuf, with length buflen.

#### RETURN VALUE

> Upon successful completion, strerror() shall return a pointer to the generated message string. On error errno may be set, but no return value is reserved to indicate an error.

> [TSF] Upon successful completion, strerror_r() shall return 0. Otherwise, an error number shall be returned to indicate the error.

#### ERRORS

> These functions may fail if:

> [EINVAL]
>   The value of errnum is not a valid error number.

> The strerror_r() function may fail if:

> [ERANGE]
>   [TSF] Insufficient storage was supplied via strerrbuf and buflen to contain the generated message string.

The following sections are informative.

#### EXAMPLES

> None.

#### APPLICATION USAGE

> None.

#### RATIONALE

> None.

#### FUTURE DIRECTIONS

> None.

#### SEE ALSO

> perror(), the Base Definitions volume of IEEE Std 1003.1-2001, <string.h>

#### CHANGE HISTORY

> First released in Issue 3.

#### Issue 5

> The DESCRIPTION is updated to indicate that errno is not changed if the function is successful.

> A note indicating that this function need not be reentrant is added to the DESCRIPTION.

#### Issue 6

> Extensions beyond the ISO C standard are marked.

> The following new requirements on POSIX implementations derive from alignment with the Single UNIX Specification:

> - In the RETURN VALUE section, the fact that errno may be set is added.

> - The [EINVAL] optional error condition is added.

> The DESCRIPTION is updated to avoid use of the term "must" for application requirements.

> The strerror_r() function is added in response to IEEE PASC Interpretation 1003.1c #39.

> The strerror_r() function is marked as part of the Thread-Safe Functions option.

End of informative text.

UNIX ® is a registered Trademark of The Open Group.
POSIX ® is a registered Trademark of The IEEE.
[ Main Index | XBD | XCU | XSH | XRAT ]