* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*/
-/* $Id: strerror.c,v 1.4 1997/12/30 05:24:24 jrj Exp $ */
+/* $Id: strerror.c,v 1.7 2006/05/25 01:47:12 johnfranks Exp $ */
#include "amanda.h"
+#define UPREFIX "Unknown error: %u"
+
/*
* Return the error message corresponding to some error number.
*/
char *
strerror(e)
- int e;
+ int e;
{
- extern int sys_nerr;
- extern char *sys_errlist[];
- char number[NUM_STR_SIZE];
- static char *unknown = NULL;
+ extern int sys_nerr;
+ extern char *sys_errlist[];
+ unsigned int errnum;
+ static char buf[NUM_STR_SIZE + SIZEOF(UPREFIX) + 1];
+
+ errnum = e; /* convert to unsigned */
- if ((unsigned)e < sys_nerr)
- return sys_errlist[e];
- ap_snprintf(number, sizeof(number), "%d", e);
- unknown = newstralloc2(unknown, "Unknown error: ", number);
- return unknown;
+ if (errnum < sys_nerr)
+ return (sys_errlist[errnum]);
+ snprintf(buf, SIZEOF(buf), UPREFIX, errnum);
+ return (buf);
}