#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;
}