+++ /dev/null
-#include <xerrno.h>\r
-\r typedef struct s_entry \r {
- \rconst char *name;
- \r int code;
- \r unsigned kind:1; /* if 1 it's an error of the application else assume it's a system error */
- \r const char *string;
-\r \r} entry_t;
-\r\r\rstatic const \r entry_t err[] = \r{ \r\r
-#ifdef E2BIG\r
- {"E2BIG", E2BIG, 0, "argument list too long"}, \r
-#endif /* \r */
- \r
-#ifdef EACCES\r
- {"EACCES", EACCES, 0, "permission denied"}, \r
-#endif /* \r */
- \r
-#ifdef EADDRINUSE\r
- {"EADDRINUSE", EADDRINUSE, 0, "address in use"}, \r
-#endif /* \r */
- \r
-#ifdef EADDRNOTAVAIL\r
- {"EADDRNOTAVAIL", EADDRNOTAVAIL, 0, "address not available"}, \r
-#endif /* \r */
- \r
-#ifdef EAFNOSUPPORT\r
- {"EAFNOSUPPORT", EAFNOSUPPORT, 0, "address family not supported"}, \r
-#endif /* \r */
- \r
-#ifdef EAGAIN\r
- {"EAGAIN", EAGAIN, 0, "resource unavailable, try again"}, \r
-#endif /* \r */
- \r
-#ifdef EALREADY\r
- {"EALREADY", EALREADY, 0, "connection already in progress"}, \r
-#endif /* \r */
- \r
-#ifdef EBADF\r
- {"EBADF", EBADF, 0, "bad file descriptor"}, \r
-#endif /* \r */
- \r
-#ifdef EBADMSG\r
- {"EBADMSG", EBADMSG, 0, "bad message"}, \r
-#endif /* \r */
- \r
-#ifdef EBUSY\r
- {"EBUSY", EBUSY, 0, "device or resource busy"}, \r
-#endif /* \r */
- \r
-#ifdef ECANCELED\r
- {"ECANCELED", ECANCELED, 0, "operation canceled"}, \r
-#endif /* \r */
- \r
-#ifdef ECHILD\r
- {"ECHILD", ECHILD, 0, "no child processes"}, \r
-#endif /* \r */
- \r
-#ifdef ECONNABORTED\r
- {"ECONNABORTED", ECONNABORTED, 0, "connection aborted"}, \r
-#endif /* \r */
- \r
-#ifdef ECONNREFUSED\r
- {"ECONNREFUSED", ECONNREFUSED, 0, "connection refused"}, \r
-#endif /* \r */
- \r
-#ifdef ECONNRESET\r
- {"ECONNRESET", ECONNRESET, 0, "connection reset"}, \r
-#endif /* \r */
- \r
-#ifdef EDEADLK\r
- {"EDEADLK", EDEADLK, 0, "resource deadlock would occur"}, \r
-#endif /* \r */
- \r
-#ifdef EDESTADDRREQ\r
- {"EDESTADDRREQ", EDESTADDRREQ, 0, "destination address required"}, \r
-#endif /* \r */
- \r
-#ifdef EDOM\r
- {"EDOM", EDOM, 0, "mathematics argument out of domain of function"}, \r
-#endif /* \r */
- \r
-#ifdef EEXIST\r
- {"EEXIST", EEXIST, 0, "file exists"}, \r
-#endif /* \r */
- \r
-#ifdef EFAULT\r
- {"EFAULT", EFAULT, 0, "bad address"}, \r
-#endif /* \r */
- \r
-#ifdef EFBIG\r
- {"EFBIG", EFBIG, 0, "file too large"}, \r
-#endif /* \r */
- \r
-#ifdef EHOSTUNREACH\r
- {"EHOSTUNREACH", EHOSTUNREACH, 0, "host is unreachable"}, \r
-#endif /* \r */
- \r
-#ifdef EIDRM\r
- {"EIDRM", EIDRM, 0, "identifier removed"}, \r
-#endif /* \r */
- \r
-#ifdef EILSEQ\r
- {"EILSEQ", EILSEQ, 0, "illegal byte sequence"}, \r
-#endif /* \r */
- \r
-#ifdef EINPROGRESS\r
- {"EINPROGRESS", EINPROGRESS, 0, "operation in progress"}, \r
-#endif /* \r */
- \r
-#ifdef EINTR\r
- {"EINTR", EINTR, 0, "interrupted function"}, \r
-#endif /* \r */
- \r
-#ifdef EINVAL\r
- {"EINVAL", EINVAL, 0, "invalid argument"}, \r
-#endif /* \r */
- \r
-#ifdef EIO\r
- {"EIO", EIO, 0, "I/O error"}, \r
-#endif /* \r */
- \r
-#ifdef EISCONN\r
- {"EISCONN", EISCONN, 0, "socket is connected"}, \r
-#endif /* \r */
- \r
-#ifdef EISDIR\r
- {"EISDIR", EISDIR, 0, "is a directory"}, \r
-#endif /* \r */
- \r
-#ifdef ELOOP\r
- {"ELOOP", ELOOP, 0, "too many levels of symbolic links"}, \r
-#endif /* \r */
- \r
-#ifdef EMFILE\r
- {"EMFILE", EMFILE, 0, "too many open files"}, \r
-#endif /* \r */
- \r
-#ifdef EMLINK\r
- {"EMLINK", EMLINK, 0, "too many links"}, \r
-#endif /* \r */
- \r
-#ifdef EMSGSIZE\r
- {"EMSGSIZE", EMSGSIZE, 0, "message too large"}, \r
-#endif /* \r */
- \r
-#ifdef ENAMETOOLONG\r
- {"ENAMETOOLONG", ENAMETOOLONG, 0, "filename too long"}, \r
-#endif /* \r */
- \r
-#ifdef ENETDOWN\r
- {"ENETDOWN", ENETDOWN, 0, "network is down"}, \r
-#endif /* \r */
- \r
-#ifdef ENETRESET\r
- {"ENETRESET", ENETRESET, 0, "connection aborted by network"}, \r
-#endif /* \r */
- \r
-#ifdef ENETUNREACH\r
- {"ENETUNREACH", ENETUNREACH, 0, "network unreachable"}, \r
-#endif /* \r */
- \r
-#ifdef ENFILE\r
- {"ENFILE", ENFILE, 0, "too many files open in system"}, \r
-#endif /* \r */
- \r
-#ifdef ENOBUFS\r
- {"ENOBUFS", ENOBUFS, 0, "no buffer space available"}, \r
-#endif /* \r */
- \r
-#ifdef ENODATA\r
- {"ENODATA", ENODATA, 0,
- "no message is available on the STREAM head read queue"}, \r
-#endif /* \r */
- \r
-#ifdef ENODEV\r
- {"ENODEV", ENODEV, 0, "no such device"}, \r
-#endif /* \r */
- \r
-#ifdef ENOENT\r
- {"ENOENT", ENOENT, 0, "no such file or directory"}, \r
-#endif /* \r */
- \r
-#ifdef ENOEXEC\r
- {"ENOEXEC", ENOEXEC, 0, "executable file format error"}, \r
-#endif /* \r */
- \r
-#ifdef ENOLCK\r
- {"ENOLCK", ENOLCK, 0, "no locks available"}, \r
-#endif /* \r */
- \r
-#ifdef ENOMEM\r
- {"ENOMEM", ENOMEM, 0, "not enough space"}, \r
-#endif /* \r */
- \r
-#ifdef ENOMSG\r
- {"ENOMSG", ENOMSG, 0, "no message of the desired type"}, \r
-#endif /* \r */
- \r
-#ifdef ENOPROTOOPT\r
- {"ENOPROTOOPT", ENOPROTOOPT, 0, "protocol not available"}, \r
-#endif /* \r */
- \r
-#ifdef ENOSPC\r
- {"ENOSPC", ENOSPC, 0, "no space left on device"}, \r
-#endif /* \r */
- \r
-#ifdef ENOSR\r
- {"ENOSR", ENOSR, 0, "no stream resources"}, \r
-#endif /* \r */
- \r
-#ifdef ENOSTR\r
- {"ENOSTR", ENOSTR, 0, "not a stream"}, \r
-#endif /* \r */
- \r
-#ifdef ENOSYS\r
- {"ENOSYS", ENOSYS, 0, "function not supported"}, \r
-#endif /* \r */
- \r
-#ifdef ENOTCONN\r
- {"ENOTCONN", ENOTCONN, 0, "the socket is not connected"}, \r
-#endif /* \r */
- \r
-#ifdef ENOTDIR\r
- {"ENOTDIR", ENOTDIR, 0, "not a directory"}, \r
-#endif /* \r */
- \r
-#ifdef ENOTEMPTY\r
- {"ENOTEMPTY", ENOTEMPTY, 0, "directory not empty"}, \r
-#endif /* \r */
- \r
-#ifdef ENOTSOCK\r
- {"ENOTSOCK", ENOTSOCK, 0, "not a socket"}, \r
-#endif /* \r */
- \r
-#ifdef ENOTSUP\r
- {"ENOTSUP", ENOTSUP, 0, "not supported"}, \r
-#endif /* \r */
- \r
-#ifdef ENOTTY\r
- {"ENOTTY", ENOTTY, 0, "inappropriate I/O control operation"}, \r
-#endif /* \r */
- \r
-#ifdef ENXIO\r
- {"ENXIO", ENXIO, 0, "no such device or address"}, \r
-#endif /* \r */
- \r
-#ifdef EOPNOTSUPP\r
- {"EOPNOTSUPP", EOPNOTSUPP, 0, "operation not supported on socket"}, \r
-#endif /* \r */
- \r
-#ifdef EOVERFLOW\r
- {"EOVERFLOW", EOVERFLOW, 0, "value too large to be stored in data type"}, \r
-#endif /* \r */
- \r
-#ifdef EPERM\r
- {"EPERM", EPERM, 0, "operation not permitted"}, \r
-#endif /* \r */
- \r
-#ifdef EPIPE\r
- {"EPIPE", EPIPE, 0, "broken pipe"}, \r
-#endif /* \r */
- \r
-#ifdef EPROTO\r
- {"EPROTO", EPROTO, 0, "protocol error"}, \r
-#endif /* \r */
- \r
-#ifdef EPROTONOSUPPORT\r
- {"EPROTONOSUPPORT", EPROTONOSUPPORT, 0, "protocol not supported"}, \r
-#endif /* \r */
- \r
-#ifdef EPROTOTYPE\r
- {"EPROTOTYPE", EPROTOTYPE, 0, "protocol wrong type for socket"}, \r
-#endif /* \r */
- \r
-#ifdef ERANGE\r
- {"ERANGE", ERANGE, 0, "result too large"}, \r
-#endif /* \r */
- \r
-#ifdef EROFS\r
- {"EROFS", EROFS, 0, "read-only file system"}, \r
-#endif /* \r */
- \r
-#ifdef ESPIPE\r
- {"ESPIPE", ESPIPE, 0, "invalid seek"}, \r
-#endif /* \r */
- \r
-#ifdef ESRCH\r
- {"ESRCH", ESRCH, 0, "no such process"}, \r
-#endif /* \r */
- \r
-#ifdef ETIME\r
- {"ETIME", ETIME, 0, "stream ioctl() timeout"}, \r
-#endif /* \r */
- \r
-#ifdef ETIMEDOUT\r
- {"ETIMEDOUT", ETIMEDOUT, 0, "connection timed out"}, \r
-#endif /* \r */
- \r
-#ifdef ETXTBSY\r
- {"ETXTBSY", ETXTBSY, 0, "text file busy"}, \r
-#endif /* \r */
- \r
-#ifdef EWOULDBLOCK\r
- {"EWOULDBLOCK", EWOULDBLOCK, 0, "operation would block"}, \r
-#endif /* \r */
- \r
-#ifdef EXDEV\r
- {"EXDEV", EXDEV, 0, "cross-device link"}, \r
-#endif /* \r */
- \r
- {"ECMDTIMEDOUT", ECMDTIMEDOUT, 1, "command timed out"}, \r\r
- {"ECMDNOTFOUND", ECMDNOTFOUND, 1, "command not found"}, \r\r
- {"EEXITCODENOTMATCH", EEXITCODENOTMATCH, 1, "exit code mismatch"}, \r\r
- {"EOUTPUTNOTMATCH", EOUTPUTNOTMATCH, 1, "output mismatch"}, \r\r
- {"ESIGNOTMATCH", ESIGNOTMATCH, 1, "signal mismatch"}, \r\r
- {"EUNXPSIG", EUNXPSIG, 1, "unexpected signal caught"}, \r\r
- {"ESIGNOTRECEIPT", ESIGNOTRECEIVED, 1,
- "expected signal not receipt"}, \r\r{"EPROCCMDLINE", EPROCCMDLINE, 1,
- "command line processing failed"},
- \r\r{"ENOARG", ENOARG, 1, "none optional argument not specified"},
- \r\r{"ENOTPOSITIVENUM", ENOTPOSITIVENUM, 1,
- "argument option not strictly positive"}, \r\r{"ESYNTAX", ESYNTAX,
- 1, "syntax error"},
- \r\r{"ELEADTIME", ELEADTIME, 1, "timed out"}, \r\r{"EREADMENOTFOUND",
- EREADMENOTFOUND, 1,
- "unable to locate the README.txt file"},
- \r\r{"EINCLUDENOTFOUND", EINCLUDENOTFOUND, 1,
- "include file not found"}, \r\r{"ESUFFIXTOOLONG", ESUFFIXTOOLONG, 1,
- "suffix too long"},
- \r\r{"EINVCMDLINE", EINVCMDLINE, 1, "invalid command line"},
- \r\r{"unkwown", -1, 0, "unknown"} \r
-};
-
-\r\r
-#include <stdio.h>\r
- \r
-#ifdef _XBT_WIN32\r
-static char *\r w32error_to_string(DWORD errcode) \r
-{
- \rstatic char buffer[128];
- \r\r
- /*\r
- * Special code for winsock error handling.\r
- */ \r
- if (errcode > WSABASEERR)
- \r {
- \rHMODULE hModule = GetModuleHandle("wsock32");
- \r\rif (hModule)
- \r {
- \rFormatMessage(FORMAT_MESSAGE_FROM_HMODULE, hModule, errcode,
- LANG_NEUTRAL, buffer, 128, NULL);
- \rFreeLibrary(hModule);
- \r}
- \r}
- \r
- else
- \r {
- \r
- /*\r
- * Default system message handling\r
- */ \r
- FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, NULL, errcode,
- LANG_NEUTRAL, buffer, 128, NULL);
- \r}
- \r\rreturn buffer;
-\r}
-
-\r
-#endif /* \r */
-\rconst char *\r error_to_string(int errcode, int kind) \r
-{
- \rint i;
- \r\rfor (i = 0; err[i].code != -1; i++)
- \rif (err[i].code == errcode && err[i].kind == kind)
- \rreturn err[i].string;
- \r\r
-#ifdef _XBT_WIN32\r
- \r
- /* assume it's a W32 error */ \r
- return w32error_to_string((DWORD) errcode);
- \r
-#else /* \r */
- return "unknow error";
- \r
-#endif /* \r */
-\r}
-
-\r\rconst char *\r error_get_at(int pos, int *code) \r
-{
- \rif (pos < 0 || (pos > (sizeof(err) / sizeof(entry_t)) - 2))
- \r {
- \rerrno = ERANGE;
- \rreturn NULL;
- \r}
- \r\r*code = err[pos].code;
- \rreturn err[pos].name;
-\r}
-
-\r\r