28 lines
596 B
Diff
28 lines
596 B
Diff
|
--- percent_m.c
|
||
|
+++ percent_m.c
|
||
|
@@ -13,7 +13,7 @@
|
||
|
#include <string.h>
|
||
|
|
||
|
extern int errno;
|
||
|
-#ifndef SYS_ERRLIST_DEFINED
|
||
|
+#if !defined(SYS_ERRLIST_DEFINED) && !defined(HAVE_STRERROR)
|
||
|
extern char *sys_errlist[];
|
||
|
extern int sys_nerr;
|
||
|
#endif
|
||
|
@@ -29,11 +29,15 @@
|
||
|
|
||
|
while (*bp = *cp)
|
||
|
if (*cp == '%' && cp[1] == 'm') {
|
||
|
+#ifdef HAVE_STRERROR
|
||
|
+ strcpy(bp, strerror(errno));
|
||
|
+#else
|
||
|
if (errno < sys_nerr && errno > 0) {
|
||
|
strcpy(bp, sys_errlist[errno]);
|
||
|
} else {
|
||
|
sprintf(bp, "Unknown error %d", errno);
|
||
|
}
|
||
|
+#endif
|
||
|
bp += strlen(bp);
|
||
|
cp += 2;
|
||
|
} else {
|