c/string/byte/strerror

@1@ Returns a pointer to the textual description of the system error code, identical to the description that would be printed by perror. @@ is usually acquired from the  variable, however the function accepts any value of type. The contents of the string are locale-specific. @@ The returned string must not be modified by the program, but may be overwritten by a subsequent call to the function. is not required to be thread-safe. Implementations may be returning different pointers to static read-only string literals or may be returning the same pointer over and over, pointing at a static buffer in which strerror places the string. @2@ Same as, except that the message is copied into user-provided storage. No more than bytes are written, the buffer is always null-terminated. If the message had to be truncated to fit the buffer and is greater than 3, then only  bytes are written, and the characters  are appended before the null terminator. In addition, the following errors are detected at runtime and call the currently installed constraint handler function:
 * is a null pointer
 * is zero or greater than rsize_max

@@The behavior is undefined if writing to occurs past the end of the array, which can happen when the size of the buffer pointed to by  is less than the number of characters in the error message which in turn is less than. @3@ Computes the length of the untruncated locale-specific error message that would write if it were called with. The length does not include the null terminator.

Return value
@1@ Pointer to a null-terminated byte string corresponding to the errno error code. @2@ Zero if the entire message was successfully stored in, non-zero otherwise. @3@ Length (not including the null terminator) of the message that would return