summaryrefslogtreecommitdiffstats
path: root/compat/error.c
diff options
context:
space:
mode:
Diffstat (limited to 'compat/error.c')
-rw-r--r--compat/error.c156
1 files changed, 156 insertions, 0 deletions
diff --git a/compat/error.c b/compat/error.c
index 53d1727..da6ff4d 100644
--- a/compat/error.c
+++ b/compat/error.c
@@ -53,6 +53,147 @@
#include "headers.h"
#include "util.h"
+/*---------------------------------------------------------------
+ * Linux errors per [root@fedora iperf-2.1.9-rc2]# uname -r
+ * 5.11.12-300.fc34.x86_64
+ *
+ * [root@fedora iperf-2.1.9-rc2]# errno -l
+ * EPERM 1 Operation not permitted
+ * ENOENT 2 No such file or directory
+ * ESRCH 3 No such process
+ * EINTR 4 Interrupted system call
+ * EIO 5 Input/output error
+ * ENXIO 6 No such device or address
+ * E2BIG 7 Argument list too long
+ * ENOEXEC 8 Exec format error
+ * EBADF 9 Bad file descriptor
+ * ECHILD 10 No child processes
+ * EAGAIN 11 Resource temporarily unavailable
+ * ENOMEM 12 Cannot allocate memory
+ * EACCES 13 Permission denied
+ * EFAULT 14 Bad address
+ * ENOTBLK 15 Block device required
+ * EBUSY 16 Device or resource busy
+ * EEXIST 17 File exists
+ * EXDEV 18 Invalid cross-device link
+ * ENODEV 19 No such device
+ * ENOTDIR 20 Not a directory
+ * EISDIR 21 Is a directory
+ * EINVAL 22 Invalid argument
+ * ENFILE 23 Too many open files in system
+ * EMFILE 24 Too many open files
+ * ENOTTY 25 Inappropriate ioctl for device
+ * ETXTBSY 26 Text file busy
+ * EFBIG 27 File too large
+ * ENOSPC 28 No space left on device
+ * ESPIPE 29 Illegal seek
+ * EROFS 30 Read-only file system
+ * EMLINK 31 Too many links
+ * EPIPE 32 Broken pipe
+ * EDOM 33 Numerical argument out of domain
+ * ERANGE 34 Numerical result out of range
+ * EDEADLK 35 Resource deadlock avoided
+ * ENAMETOOLONG 36 File name too long
+ * ENOLCK 37 No locks available
+ * ENOSYS 38 Function not implemented
+ * ENOTEMPTY 39 Directory not empty
+ * ELOOP 40 Too many levels of symbolic links
+ * EWOULDBLOCK 11 Resource temporarily unavailable
+ * ENOMSG 42 No message of desired type
+ * EIDRM 43 Identifier removed
+ * ECHRNG 44 Channel number out of range
+ * EL2NSYNC 45 Level 2 not synchronized
+ * EL3HLT 46 Level 3 halted
+ * EL3RST 47 Level 3 reset
+ * ELNRNG 48 Link number out of range
+ * EUNATCH 49 Protocol driver not attached
+ * ENOCSI 50 No CSI structure available
+ * EL2HLT 51 Level 2 halted
+ * EBADE 52 Invalid exchange
+ * EBADR 53 Invalid request descriptor
+ * EXFULL 54 Exchange full
+ * ENOANO 55 No anode
+ * EBADRQC 56 Invalid request code
+ * EBADSLT 57 Invalid slot
+ * EDEADLOCK 35 Resource deadlock avoided
+ * EBFONT 59 Bad font file format
+ * ENOSTR 60 Device not a stream
+ * ENODATA 61 No data available
+ * ETIME 62 Timer expired
+ * ENOSR 63 Out of streams resources
+ * ENONET 64 Machine is not on the network
+ * ENOPKG 65 Package not installed
+ * EREMOTE 66 Object is remote
+ * ENOLINK 67 Link has been severed
+ * EADV 68 Advertise error
+ * ESRMNT 69 Srmount error
+ * ECOMM 70 Communication error on send
+ * EPROTO 71 Protocol error
+ * EMULTIHOP 72 Multihop attempted
+ * EDOTDOT 73 RFS specific error
+ * EBADMSG 74 Bad message
+ * EOVERFLOW 75 Value too large for defined data type
+ * ENOTUNIQ 76 Name not unique on network
+ * EBADFD 77 File descriptor in bad state
+ * EREMCHG 78 Remote address changed
+ * ELIBACC 79 Can not access a needed shared library
+ * ELIBBAD 80 Accessing a corrupted shared library
+ * ELIBSCN 81 .lib section in a.out corrupted
+ * ELIBMAX 82 Attempting to link in too many shared libraries
+ * ELIBEXEC 83 Cannot exec a shared library directly
+ * EILSEQ 84 Invalid or incomplete multibyte or wide character
+ * ERESTART 85 Interrupted system call should be restarted
+ * ESTRPIPE 86 Streams pipe error
+ * EUSERS 87 Too many users
+ * ENOTSOCK 88 Socket operation on non-socket
+ * EDESTADDRREQ 89 Destination address required
+ * EMSGSIZE 90 Message too long
+ * EPROTOTYPE 91 Protocol wrong type for socket
+ * ENOPROTOOPT 92 Protocol not available
+ * EPROTONOSUPPORT 93 Protocol not supported
+ * ESOCKTNOSUPPORT 94 Socket type not supported
+ * EOPNOTSUPP 95 Operation not supported
+ * EPFNOSUPPORT 96 Protocol family not supported
+ * EAFNOSUPPORT 97 Address family not supported by protocol
+ * EADDRINUSE 98 Address already in use
+ * EADDRNOTAVAIL 99 Cannot assign requested address
+ * ENETDOWN 100 Network is down
+ * ENETUNREACH 101 Network is unreachable
+ * ENETRESET 102 Network dropped connection on reset
+ * ECONNABORTED 103 Software caused connection abort
+ * ECONNRESET 104 Connection reset by peer
+ * ENOBUFS 105 No buffer space available
+ * EISCONN 106 Transport endpoint is already connected
+ * ENOTCONN 107 Transport endpoint is not connected
+ * ESHUTDOWN 108 Cannot send after transport endpoint shutdown
+ * ETOOMANYREFS 109 Too many references: cannot splice
+ * ETIMEDOUT 110 Connection timed out
+ * ECONNREFUSED 111 Connection refused
+ * EHOSTDOWN 112 Host is down
+ * EHOSTUNREACH 113 No route to host
+ * EALREADY 114 Operation already in progress
+ * EINPROGRESS 115 Operation now in progress
+ * ESTALE 116 Stale file handle
+ * EUCLEAN 117 Structure needs cleaning
+ * ENOTNAM 118 Not a XENIX named type file
+ * ENAVAIL 119 No XENIX semaphores available
+ * EISNAM 120 Is a named type file
+ * EREMOTEIO 121 Remote I/O error
+ * EDQUOT 122 Disk quota exceeded
+ * ENOMEDIUM 123 No medium found
+ * EMEDIUMTYPE 124 Wrong medium type
+ * ECANCELED 125 Operation canceled
+ * ENOKEY 126 Required key not available
+ * EKEYEXPIRED 127 Key has expired
+ * EKEYREVOKED 128 Key has been revoked
+ * EKEYREJECTED 129 Key was rejected by service
+ * EOWNERDEAD 130 Owner died
+ * ENOTRECOVERABLE 131 State not recoverable
+ * ERFKILL 132 Operation not possible due to RF-kill
+ * EHWPOISON 133 Memory page has hardware error
+ * ENOTSUP 95 Operation not supported
+ * ------------------------------------------------------------------- */
+
#ifdef __cplusplus
extern "C" {
#endif
@@ -205,6 +346,21 @@ void warn_errno( const char *inMessage, const char *inFile, int inLine ) {
#endif
} /* end warn_errno */
+int errno_decode (char *text, size_t len) {
+ int my_err;
+ const char* my_str;
+ /* get platform's errno and error message */
+#ifdef WIN32
+ my_err = WSAGetLastError();
+ my_str = winsock_strerror( my_err );
+#else
+ my_err = errno;
+ my_str = strerror( my_err );
+#endif
+ strncpy(text, my_str, len);
+ return my_err;
+}
+
#ifdef __cplusplus
} /* end extern "C" */
#endif