summaryrefslogtreecommitdiff
path: root/libc/string
diff options
context:
space:
mode:
Diffstat (limited to 'libc/string')
-rw-r--r--libc/string/Makefile2
-rw-r--r--libc/string/strsignal.c11
-rw-r--r--libc/string/sys_errlist.c140
3 files changed, 147 insertions, 6 deletions
diff --git a/libc/string/Makefile b/libc/string/Makefile
index 39d9f0b5d..107b787ef 100644
--- a/libc/string/Makefile
+++ b/libc/string/Makefile
@@ -34,7 +34,7 @@ MOBJ1=index.o rindex.o
CSRC=strpbrk.c strsep.c strstr.c strtok.c strcspn.c config.c strspn.c \
strcasecmp.c strncasecmp.c strerror.c bcopy.c bzero.c bcmp.c \
- strsignal.c
+ strsignal.c sys_errlist.c
COBJS=$(patsubst %.c,%.o, $(CSRC))
OBJS=$(MOBJ) $(MOBJ1) $(COBJS)
diff --git a/libc/string/strsignal.c b/libc/string/strsignal.c
index ff4f69923..83a862bfb 100644
--- a/libc/string/strsignal.c
+++ b/libc/string/strsignal.c
@@ -8,7 +8,7 @@
#include <malloc.h>
#include <signal.h>
-const char *const sys_siglist[NSIG] = {
+const char *const sys_siglist[] = {
"Unknown signal",
"Hangup",
"Interrupt",
@@ -32,20 +32,21 @@ const char *const sys_siglist[NSIG] = {
"Stopped",
"Stopped (tty input)",
"Stopped (tty output)",
- "Possible I/O",
+ "Urgent condition",
"CPU time limit exceeded",
"File size limit exceeded",
"Virtual time alarm",
"Profile signal",
"Window size changed",
- "File lock lost",
+ "Possible I/O",
"Power failure",
- "Unused signal"
+ "Unused signal",
+ NULL
};
/********************** Function strsignal ************************************/
-char *strsignal (int sig)
+char *strsignal(int sig)
{
static char retbuf[80];
diff --git a/libc/string/sys_errlist.c b/libc/string/sys_errlist.c
new file mode 100644
index 000000000..c92302fce
--- /dev/null
+++ b/libc/string/sys_errlist.c
@@ -0,0 +1,140 @@
+#include <stddef.h>
+#if 0
+#include <errno.h>
+#endif
+
+/* This is a list of all known signal numbers. */
+
+const char * const sys_errlist[] = {
+ "Success", /* 0 */
+ "Operation not permitted", /* EPERM */
+ "No such file or directory", /* ENOENT */
+ "No such process", /* ESRCH */
+ "Interrupted system call", /* EINTR */
+ "I/O error", /* EIO */
+ "No such device or address", /* ENXIO */
+ "Arg list too long", /* E2BIG */
+ "Exec format error", /* ENOEXEC */
+ "Bad file number", /* EBADF */
+ "No child processes", /* ECHILD */
+ "Try again", /* EAGAIN */
+ "Out of memory", /* ENOMEM */
+ "Permission denied", /* EACCES */
+ "Bad address", /* EFAULT */
+ "Block device required", /* ENOTBLK */
+ "Device or resource busy", /* EBUSY */
+ "File exists", /* EEXIST */
+ "Cross-device link", /* EXDEV */
+ "No such device", /* ENODEV */
+ "Not a directory", /* ENOTDIR */
+ "Is a directory", /* EISDIR */
+ "Invalid argument", /* EINVAL */
+ "File table overflow", /* ENFILE */
+ "Too many open files", /* EMFILE */
+ "Not a typewriter", /* ENOTTY */
+ "Text file busy", /* ETXTBSY */
+ "File too large", /* EFBIG */
+ "No space left on device", /* ENOSPC */
+ "Illegal seek", /* ESPIPE */
+ "Read-only file system", /* EROFS */
+ "Too many links", /* EMLINK */
+ "Broken pipe", /* EPIPE */
+ "Math argument out of domain of func", /* EDOM */
+ "Math result not representable", /* ERANGE */
+ "Resource deadlock would occur", /* EDEADLK */
+ "File name too long", /* ENAMETOOLONG */
+ "No record locks available", /* ENOLCK */
+ "Function not implemented", /* ENOSYS */
+ "Directory not empty", /* ENOTEMPTY */
+ "Too many symbolic links encountered", /* ELOOP */
+ "Operation would block", /* EWOULDBLOCK */
+ "No message of desired type", /* ENOMSG */
+ "Identifier removed", /* EIDRM */
+ "Channel number out of range", /* ECHRNG */
+ "Level 2 not synchronized", /* EL2NSYNC */
+ "Level 3 halted", /* EL3HLT */
+ "Level 3 reset", /* EL3RST */
+ "Link number out of range", /* ELNRNG */
+ "Protocol driver not attached", /* EUNATCH */
+ "No CSI structure available", /* ENOCSI */
+ "Level 2 halted", /* EL2HLT */
+ "Invalid exchange", /* EBADE */
+ "Invalid request descriptor", /* EBADR */
+ "Exchange full", /* EXFULL */
+ "No anode", /* ENOANO */
+ "Invalid request code", /* EBADRQC */
+ "Invalid slot", /* EBADSLT */
+ "File locking deadlock error", /* EDEADLOCK */
+ "Bad font file format", /* EBFONT */
+ "Device not a stream", /* ENOSTR */
+ "No data available", /* ENODATA */
+ "Timer expired", /* ETIME */
+ "Out of streams resources", /* ENOSR */
+ "Machine is not on the network", /* ENONET */
+ "Package not installed", /* ENOPKG */
+ "Object is remote", /* EREMOTE */
+ "Link has been severed", /* ENOLINK */
+ "Advertise error", /* EADV */
+ "Srmount error", /* ESRMNT */
+ "Communication error on send", /* ECOMM */
+ "Protocol error", /* EPROTO */
+ "Multihop attempted", /* EMULTIHOP */
+ "RFS specific error", /* EDOTDOT */
+ "Not a data message", /* EBADMSG */
+ "Value too large for defined data type", /* EOVERFLOW */
+ "Name not unique on network", /* ENOTUNIQ */
+ "File descriptor in bad state", /* EBADFD */
+ "Remote address changed", /* EREMCHG */
+ "Can not access a needed shared library", /* ELIBACC */
+ "Accessing a corrupted shared library", /* ELIBBAD */
+ ".lib section in a.out corrupted", /* ELIBSCN */
+ "Attempting to link in too many shared libraries", /* ELIBMAX */
+ "Cannot exec a shared library directly", /* ELIBEXEC */
+ "Illegal byte sequence", /* EILSEQ */
+ "Interrupted system call should be restarted", /* ERESTART */
+ "Streams pipe error", /* ESTRPIPE */
+ "Too many users", /* EUSERS */
+ "Socket operation on non-socket", /* ENOTSOCK */
+ "Destination address required", /* EDESTADDRREQ */
+ "Message too long", /* EMSGSIZE */
+ "Protocol wrong type for socket", /* EPROTOTYPE */
+ "Protocol not available", /* ENOPROTOOPT */
+ "Protocol not supported", /* EPROTONOSUPPORT */
+ "Socket type not supported", /* ESOCKTNOSUPPORT */
+ "Operation not supported on transport endpoint", /* EOPNOTSUPP */
+ "Protocol family not supported", /* EPFNOSUPPORT */
+ "Address family not supported by protocol", /* EAFNOSUPPORT */
+ "Address already in use", /* EADDRINUSE */
+ "Cannot assign requested address", /* EADDRNOTAVAIL */
+ "Network is down", /* ENETDOWN */
+ "Network is unreachable", /* ENETUNREACH */
+ "Network dropped connection because of reset", /* ENETRESET */
+ "Software caused connection abort", /* ECONNABORTED */
+ "Connection reset by peer", /* ECONNRESET */
+ "No buffer space available", /* ENOBUFS */
+ "Transport endpoint is already connected", /* EISCONN */
+ "Transport endpoint is not connected", /* ENOTCONN */
+ "Cannot send after transport endpoint shutdown", /* ESHUTDOWN */
+ "Too many references: cannot splice", /* ETOOMANYREFS */
+ "Connection timed out", /* ETIMEDOUT */
+ "Connection refused", /* ECONNREFUSED */
+ "Host is down", /* EHOSTDOWN */
+ "No route to host", /* EHOSTUNREACH */
+ "Operation already in progress", /* EALREADY */
+ "Operation now in progress", /* EINPROGRESS */
+ "Stale NFS file handle", /* ESTALE */
+ "Structure needs cleaning", /* EUCLEAN */
+ "Not a XENIX named type file", /* ENOTNAM */
+ "No XENIX semaphores available", /* ENAVAIL */
+ "Is a named type file", /* EISNAM */
+ "Remote I/O error", /* EREMOTEIO */
+ "Quota exceeded", /* EDQUOT */
+ "No medium found", /* ENOMEDIUM */
+ "Wrong medium type", /* EMEDIUMTYPE */
+ NULL
+};
+
+
+#define NR_ERRORS ((sizeof (sys_errlist))/(sizeof(char *))-1)
+
+const int sys_nerr = NR_ERRORS;