Convert an error number into an error message (reentrant)
#include <string.h> int strerror_r( int errnum, char *strerrbuf, size_t buflen );
libc
Use the -l c option to qcc to link against this library. This library is usually included automatically.
The strerror_r() function maps the error number contained in errnum to an error message, which it stores in the buffer that strerrbuf points to.
#include <stdio.h> #include <string.h> #include <errno.h> #include <stdlib.h> #define MSG_LEN 100 int main( void ) { FILE *fp; char msg_buff[MSG_LEN]; int error_num; fp = fopen( "file.name", "r" ); if( fp == NULL ) { error_num = strerror_r ( errno, msg_buff, MSG_LEN); switch (error_num) { case 0: printf( "Unable to open file: %s\n", msg_buff); break; case EINVAL: printf ( "strerror_r() failed: invalid error code, %d\n", error_num); break; case ERANGE: printf ( "strerror_r() failed: buffer too small: %d\n", MSG_LEN); break; } } return EXIT_SUCCESS; }
Safety: | |
---|---|
Cancellation point | No |
Interrupt handler | No |
Signal handler | Yes |
Thread | Yes |
errno, perror(), stderr, strerror()