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