#include #include #include #include #include "perror.h" char * perrorstr(char * msg) { static char * err = NULL; static int errsize = 0; static int newsize; int theerrno = errno; newsize = strlen(msg) + strlen(strerror(theerrno)) + 5; if (!errsize) { errsize = newsize; err = malloc(errsize); } else if (errsize < newsize) { free(err); errsize = newsize; err = malloc(errsize); } sprintf(err, "%s: %s", msg, strerror(theerrno)); return err; }