diff options
author | Paul Smith <psmith@gnu.org> | 2022-06-26 16:49:52 -0400 |
---|---|---|
committer | Paul Smith <psmith@gnu.org> | 2022-07-09 10:46:47 -0400 |
commit | 9992cb0b8334f48fbac3d7267198453d822a4bf8 (patch) | |
tree | 275c7c3d4aacfa0ef8747e7ecb92bfe558e19491 | |
parent | 0cbee1b475710a247c20d772699f10cf9d2badc9 (diff) | |
download | make-git-9992cb0b8334f48fbac3d7267198453d822a4bf8.tar.gz |
bootstrap: Remove strerror()
* bootstrap.conf: Remove strerror module
* configure.ac: Add a check for strerror
* src/misc.c: Add a default strerror() if not found
-rw-r--r-- | bootstrap.conf | 1 | ||||
-rw-r--r-- | configure.ac | 2 | ||||
-rw-r--r-- | src/misc.c | 119 |
3 files changed, 120 insertions, 2 deletions
diff --git a/bootstrap.conf b/bootstrap.conf index 2543748b..066c9e1b 100644 --- a/bootstrap.conf +++ b/bootstrap.conf @@ -57,5 +57,4 @@ fdl findprog-in getloadavg host-cpu-c-abi -strerror make-glob" diff --git a/configure.ac b/configure.ac index bb2eb331..e0b7d060 100644 --- a/configure.ac +++ b/configure.ac @@ -136,7 +136,7 @@ AS_IF([test "$ac_cv_func_gettimeofday" = yes], AC_CHECK_FUNCS([strtoll strdup strndup memrchr mempcpy umask mkstemp mktemp \ fdopen dup dup2 getcwd realpath sigsetmask sigaction \ getgroups seteuid setegid setlinebuf setreuid setregid \ - getrlimit setrlimit setvbuf pipe strsignal \ + getrlimit setrlimit setvbuf pipe strerror strsignal \ lstat readlink atexit isatty ttyname pselect posix_spawn \ posix_spawnattr_setsigmask]) @@ -891,3 +891,122 @@ mempcpy (void *dest, const void *src, size_t n) # define QUAD 1 # include <strtol.c> #endif + +#if !HAVE_STRERROR +char * +strerror (int errnum) +{ + static char msg[256]; + +#define SETMSG(_e, _m) case _e: strcpy(msg, _m); break + + switch (errnum) + { +#ifdef EPERM + SETMSG (EPERM , "Operation not permitted"); +#endif +#ifdef ENOENT + SETMSG (ENOENT , "No such file or directory"); +#endif +#ifdef ESRCH + SETMSG (ESRCH , "No such process"); +#endif +#ifdef EINTR + SETMSG (EINTR , "Interrupted system call"); +#endif +#ifdef EIO + SETMSG (EIO , "I/O error"); +#endif +#ifdef ENXIO + SETMSG (ENXIO , "No such device or address"); +#endif +#ifdef E2BIG + SETMSG (E2BIG , "Argument list too long"); +#endif +#ifdef ENOEXEC + SETMSG (ENOEXEC, "Exec format error"); +#endif +#ifdef EBADF + SETMSG (EBADF , "Bad file number"); +#endif +#ifdef ECHILD + SETMSG (ECHILD , "No child processes"); +#endif +#ifdef EAGAIN + SETMSG (EAGAIN , "Try again"); +#endif +#ifdef ENOMEM + SETMSG (ENOMEM , "Out of memory"); +#endif +#ifdef EACCES + SETMSG (EACCES , "Permission denied"); +#endif +#ifdef EFAULT + SETMSG (EFAULT , "Bad address"); +#endif +#ifdef ENOTBLK + SETMSG (ENOTBLK, "Block device required"); +#endif +#ifdef EBUSY + SETMSG (EBUSY , "Device or resource busy"); +#endif +#ifdef EEXIST + SETMSG (EEXIST , "File exists"); +#endif +#ifdef EXDEV + SETMSG (EXDEV , "Cross-device link"); +#endif +#ifdef ENODEV + SETMSG (ENODEV , "No such device"); +#endif +#ifdef ENOTDIR + SETMSG (ENOTDIR, "Not a directory"); +#endif +#ifdef EISDIR + SETMSG (EISDIR , "Is a directory"); +#endif +#ifdef EINVAL + SETMSG (EINVAL , "Invalid argument"); +#endif +#ifdef ENFILE + SETMSG (ENFILE , "File table overflow"); +#endif +#ifdef EMFILE + SETMSG (EMFILE , "Too many open files"); +#endif +#ifdef ENOTTY + SETMSG (ENOTTY , "Not a typewriter"); +#endif +#ifdef ETXTBSY + SETMSG (ETXTBSY, "Text file busy"); +#endif +#ifdef EFBIG + SETMSG (EFBIG , "File too large"); +#endif +#ifdef ENOSPC + SETMSG (ENOSPC , "No space left on device"); +#endif +#ifdef ESPIPE + SETMSG (ESPIPE , "Illegal seek"); +#endif +#ifdef EROFS + SETMSG (EROFS , "Read-only file system"); +#endif +#ifdef EMLINK + SETMSG (EMLINK , "Too many links"); +#endif +#ifdef EPIPE + SETMSG (EPIPE , "Broken pipe"); +#endif +#ifdef EDOM + SETMSG (EDOM , "Math argument out of domain of func"); +#endif +#ifdef ERANGE + SETMSG (ERANGE , "Math result not representable"); +#endif + default: sprintf (msg, "Unknown error %d", errnum); break; + } + + return msg; +} +#endif |