#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#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;
}