cinap_lenrekadd hg and python4bb9e2215 years agoHistory
788 lines · 23.2 KB · C
RawDownload
 /* Errno module */ #include "Python.h" /* Windows socket errors (WSA*)  */#ifdef MS_WINDOWS#include <winsock.h>#endif /* * Pull in the system error definitions */  static PyMethodDef errno_methods[] = {	{NULL,	      	NULL}}; /* Helper function doing the dictionary inserting */ static void_inscode(PyObject *d, PyObject *de, char *name, int code){	PyObject *u = PyString_FromString(name);	PyObject *v = PyInt_FromLong((long) code); 	/* Don't bother checking for errors; they'll be caught at the end	 * of the module initialization function by the caller of	 * initerrno().	 */	if (u && v) {		/* insert in modules dict */		PyDict_SetItem(d, u, v);		/* insert in errorcode dict */		PyDict_SetItem(de, v, u);	}	Py_XDECREF(u);	Py_XDECREF(v);} PyDoc_STRVAR(errno__doc__,"This module makes available standard errno system symbols.\n\\n\The value of each symbol is the corresponding integer value,\n\e.g., on most systems, errno.ENOENT equals the integer 2.\n\\n\The dictionary errno.errorcode maps numeric codes to symbol names,\n\e.g., errno.errorcode[2] could be the string 'ENOENT'.\n\\n\Symbols that are not relevant to the underlying system are not defined.\n\\n\To map error codes to error messages, use the function os.strerror(),\n\e.g. os.strerror(2) could return 'No such file or directory'."); PyMODINIT_FUNCiniterrno(void){	PyObject *m, *d, *de;	m = Py_InitModule3("errno", errno_methods, errno__doc__);	if (m == NULL)		return;	d = PyModule_GetDict(m);	de = PyDict_New();	if (!d || !de || PyDict_SetItemString(d, "errorcode", de) < 0)		return; /* Macro so I don't have to edit each and every line below... */#define inscode(d, ds, de, name, code, comment) _inscode(d, de, name, code) 	/*	 * The names and comments are borrowed from linux/include/errno.h,	 * which should be pretty all-inclusive	 */  #ifdef ENODEV	inscode(d, ds, de, "ENODEV", ENODEV, "No such device");#endif#ifdef ENOCSI	inscode(d, ds, de, "ENOCSI", ENOCSI, "No CSI structure available");#endif#ifdef EHOSTUNREACH	inscode(d, ds, de, "EHOSTUNREACH", EHOSTUNREACH, "No route to host");#else#ifdef WSAEHOSTUNREACH	inscode(d, ds, de, "EHOSTUNREACH", WSAEHOSTUNREACH, "No route to host");#endif#endif#ifdef ENOMSG	inscode(d, ds, de, "ENOMSG", ENOMSG, "No message of desired type");#endif#ifdef EUCLEAN	inscode(d, ds, de, "EUCLEAN", EUCLEAN, "Structure needs cleaning");#endif#ifdef EL2NSYNC	inscode(d, ds, de, "EL2NSYNC", EL2NSYNC, "Level 2 not synchronized");#endif#ifdef EL2HLT	inscode(d, ds, de, "EL2HLT", EL2HLT, "Level 2 halted");#endif#ifdef ENODATA	inscode(d, ds, de, "ENODATA", ENODATA, "No data available");#endif#ifdef ENOTBLK	inscode(d, ds, de, "ENOTBLK", ENOTBLK, "Block device required");#endif#ifdef ENOSYS	inscode(d, ds, de, "ENOSYS", ENOSYS, "Function not implemented");#endif#ifdef EPIPE	inscode(d, ds, de, "EPIPE", EPIPE, "Broken pipe");#endif#ifdef EINVAL	inscode(d, ds, de, "EINVAL", EINVAL, "Invalid argument");#else#ifdef WSAEINVAL	inscode(d, ds, de, "EINVAL", WSAEINVAL, "Invalid argument");#endif#endif#ifdef EOVERFLOW	inscode(d, ds, de, "EOVERFLOW", EOVERFLOW, "Value too large for defined data type");#endif#ifdef EADV	inscode(d, ds, de, "EADV", EADV, "Advertise error");#endif#ifdef EINTR	inscode(d, ds, de, "EINTR", EINTR, "Interrupted system call");#else#ifdef WSAEINTR	inscode(d, ds, de, "EINTR", WSAEINTR, "Interrupted system call");#endif#endif#ifdef EUSERS	inscode(d, ds, de, "EUSERS", EUSERS, "Too many users");#else#ifdef WSAEUSERS	inscode(d, ds, de, "EUSERS", WSAEUSERS, "Too many users");#endif#endif#ifdef ENOTEMPTY	inscode(d, ds, de, "ENOTEMPTY", ENOTEMPTY, "Directory not empty");#else#ifdef WSAENOTEMPTY	inscode(d, ds, de, "ENOTEMPTY", WSAENOTEMPTY, "Directory not empty");#endif#endif#ifdef ENOBUFS	inscode(d, ds, de, "ENOBUFS", ENOBUFS, "No buffer space available");#else#ifdef WSAENOBUFS	inscode(d, ds, de, "ENOBUFS", WSAENOBUFS, "No buffer space available");#endif#endif#ifdef EPROTO	inscode(d, ds, de, "EPROTO", EPROTO, "Protocol error");#endif#ifdef EREMOTE	inscode(d, ds, de, "EREMOTE", EREMOTE, "Object is remote");#else#ifdef WSAEREMOTE	inscode(d, ds, de, "EREMOTE", WSAEREMOTE, "Object is remote");#endif#endif#ifdef ENAVAIL	inscode(d, ds, de, "ENAVAIL", ENAVAIL, "No XENIX semaphores available");#endif#ifdef ECHILD	inscode(d, ds, de, "ECHILD", ECHILD, "No child processes");#endif#ifdef ELOOP	inscode(d, ds, de, "ELOOP", ELOOP, "Too many symbolic links encountered");#else#ifdef WSAELOOP	inscode(d, ds, de, "ELOOP", WSAELOOP, "Too many symbolic links encountered");#endif#endif#ifdef EXDEV	inscode(d, ds, de, "EXDEV", EXDEV, "Cross-device link");#endif#ifdef E2BIG	inscode(d, ds, de, "E2BIG", E2BIG, "Arg list too long");#endif#ifdef ESRCH	inscode(d, ds, de, "ESRCH", ESRCH, "No such process");#endif#ifdef EMSGSIZE	inscode(d, ds, de, "EMSGSIZE", EMSGSIZE, "Message too long");#else#ifdef WSAEMSGSIZE	inscode(d, ds, de, "EMSGSIZE", WSAEMSGSIZE, "Message too long");#endif#endif#ifdef EAFNOSUPPORT	inscode(d, ds, de, "EAFNOSUPPORT", EAFNOSUPPORT, "Address family not supported by protocol");#else#ifdef WSAEAFNOSUPPORT	inscode(d, ds, de, "EAFNOSUPPORT", WSAEAFNOSUPPORT, "Address family not supported by protocol");#endif#endif#ifdef EBADR	inscode(d, ds, de, "EBADR", EBADR, "Invalid request descriptor");#endif#ifdef EHOSTDOWN	inscode(d, ds, de, "EHOSTDOWN", EHOSTDOWN, "Host is down");#else#ifdef WSAEHOSTDOWN	inscode(d, ds, de, "EHOSTDOWN", WSAEHOSTDOWN, "Host is down");#endif#endif#ifdef EPFNOSUPPORT	inscode(d, ds, de, "EPFNOSUPPORT", EPFNOSUPPORT, "Protocol family not supported");#else#ifdef WSAEPFNOSUPPORT	inscode(d, ds, de, "EPFNOSUPPORT", WSAEPFNOSUPPORT, "Protocol family not supported");#endif#endif#ifdef ENOPROTOOPT	inscode(d, ds, de, "ENOPROTOOPT", ENOPROTOOPT, "Protocol not available");#else#ifdef WSAENOPROTOOPT	inscode(d, ds, de, "ENOPROTOOPT", WSAENOPROTOOPT, "Protocol not available");#endif#endif#ifdef EBUSY	inscode(d, ds, de, "EBUSY", EBUSY, "Device or resource busy");#endif#ifdef EWOULDBLOCK	inscode(d, ds, de, "EWOULDBLOCK", EWOULDBLOCK, "Operation would block");#else#ifdef WSAEWOULDBLOCK	inscode(d, ds, de, "EWOULDBLOCK", WSAEWOULDBLOCK, "Operation would block");#endif#endif#ifdef EBADFD	inscode(d, ds, de, "EBADFD", EBADFD, "File descriptor in bad state");#endif#ifdef EDOTDOT	inscode(d, ds, de, "EDOTDOT", EDOTDOT, "RFS specific error");#endif#ifdef EISCONN	inscode(d, ds, de, "EISCONN", EISCONN, "Transport endpoint is already connected");#else#ifdef WSAEISCONN	inscode(d, ds, de, "EISCONN", WSAEISCONN, "Transport endpoint is already connected");#endif#endif#ifdef ENOANO	inscode(d, ds, de, "ENOANO", ENOANO, "No anode");#endif#ifdef ESHUTDOWN	inscode(d, ds, de, "ESHUTDOWN", ESHUTDOWN, "Cannot send after transport endpoint shutdown");#else#ifdef WSAESHUTDOWN	inscode(d, ds, de, "ESHUTDOWN", WSAESHUTDOWN, "Cannot send after transport endpoint shutdown");#endif#endif#ifdef ECHRNG	inscode(d, ds, de, "ECHRNG", ECHRNG, "Channel number out of range");#endif#ifdef ELIBBAD	inscode(d, ds, de, "ELIBBAD", ELIBBAD, "Accessing a corrupted shared library");#endif#ifdef ENONET	inscode(d, ds, de, "ENONET", ENONET, "Machine is not on the network");#endif#ifdef EBADE	inscode(d, ds, de, "EBADE", EBADE, "Invalid exchange");#endif#ifdef EBADF	inscode(d, ds, de, "EBADF", EBADF, "Bad file number");#else#ifdef WSAEBADF	inscode(d, ds, de, "EBADF", WSAEBADF, "Bad file number");#endif#endif#ifdef EMULTIHOP	inscode(d, ds, de, "EMULTIHOP", EMULTIHOP, "Multihop attempted");#endif#ifdef EIO	inscode(d, ds, de, "EIO", EIO, "I/O error");#endif#ifdef EUNATCH	inscode(d, ds, de, "EUNATCH", EUNATCH, "Protocol driver not attached");#endif#ifdef EPROTOTYPE	inscode(d, ds, de, "EPROTOTYPE", EPROTOTYPE, "Protocol wrong type for socket");#else#ifdef WSAEPROTOTYPE	inscode(d, ds, de, "EPROTOTYPE", WSAEPROTOTYPE, "Protocol wrong type for socket");#endif#endif#ifdef ENOSPC	inscode(d, ds, de, "ENOSPC", ENOSPC, "No space left on device");#endif#ifdef ENOEXEC	inscode(d, ds, de, "ENOEXEC", ENOEXEC, "Exec format error");#endif#ifdef EALREADY	inscode(d, ds, de, "EALREADY", EALREADY, "Operation already in progress");#else#ifdef WSAEALREADY	inscode(d, ds, de, "EALREADY", WSAEALREADY, "Operation already in progress");#endif#endif#ifdef ENETDOWN	inscode(d, ds, de, "ENETDOWN", ENETDOWN, "Network is down");#else#ifdef WSAENETDOWN	inscode(d, ds, de, "ENETDOWN", WSAENETDOWN, "Network is down");#endif#endif#ifdef ENOTNAM	inscode(d, ds, de, "ENOTNAM", ENOTNAM, "Not a XENIX named type file");#endif#ifdef EACCES	inscode(d, ds, de, "EACCES", EACCES, "Permission denied");#else#ifdef WSAEACCES	inscode(d, ds, de, "EACCES", WSAEACCES, "Permission denied");#endif#endif#ifdef ELNRNG	inscode(d, ds, de, "ELNRNG", ELNRNG, "Link number out of range");#endif#ifdef EILSEQ	inscode(d, ds, de, "EILSEQ", EILSEQ, "Illegal byte sequence");#endif#ifdef ENOTDIR	inscode(d, ds, de, "ENOTDIR", ENOTDIR, "Not a directory");#endif#ifdef ENOTUNIQ	inscode(d, ds, de, "ENOTUNIQ", ENOTUNIQ, "Name not unique on network");#endif#ifdef EPERM	inscode(d, ds, de, "EPERM", EPERM, "Operation not permitted");#endif#ifdef EDOM	inscode(d, ds, de, "EDOM", EDOM, "Math argument out of domain of func");#endif#ifdef EXFULL	inscode(d, ds, de, "EXFULL", EXFULL, "Exchange full");#endif#ifdef ECONNREFUSED	inscode(d, ds, de, "ECONNREFUSED", ECONNREFUSED, "Connection refused");#else#ifdef WSAECONNREFUSED	inscode(d, ds, de, "ECONNREFUSED", WSAECONNREFUSED, "Connection refused");#endif#endif#ifdef EISDIR	inscode(d, ds, de, "EISDIR", EISDIR, "Is a directory");#endif#ifdef EPROTONOSUPPORT	inscode(d, ds, de, "EPROTONOSUPPORT", EPROTONOSUPPORT, "Protocol not supported");#else#ifdef WSAEPROTONOSUPPORT	inscode(d, ds, de, "EPROTONOSUPPORT", WSAEPROTONOSUPPORT, "Protocol not supported");#endif#endif#ifdef EROFS	inscode(d, ds, de, "EROFS", EROFS, "Read-only file system");#endif#ifdef EADDRNOTAVAIL	inscode(d, ds, de, "EADDRNOTAVAIL", EADDRNOTAVAIL, "Cannot assign requested address");#else#ifdef WSAEADDRNOTAVAIL	inscode(d, ds, de, "EADDRNOTAVAIL", WSAEADDRNOTAVAIL, "Cannot assign requested address");#endif#endif#ifdef EIDRM	inscode(d, ds, de, "EIDRM", EIDRM, "Identifier removed");#endif#ifdef ECOMM	inscode(d, ds, de, "ECOMM", ECOMM, "Communication error on send");#endif#ifdef ESRMNT	inscode(d, ds, de, "ESRMNT", ESRMNT, "Srmount error");#endif#ifdef EREMOTEIO	inscode(d, ds, de, "EREMOTEIO", EREMOTEIO, "Remote I/O error");#endif#ifdef EL3RST	inscode(d, ds, de, "EL3RST", EL3RST, "Level 3 reset");#endif#ifdef EBADMSG	inscode(d, ds, de, "EBADMSG", EBADMSG, "Not a data message");#endif#ifdef ENFILE	inscode(d, ds, de, "ENFILE", ENFILE, "File table overflow");#endif#ifdef ELIBMAX	inscode(d, ds, de, "ELIBMAX", ELIBMAX, "Attempting to link in too many shared libraries");#endif#ifdef ESPIPE	inscode(d, ds, de, "ESPIPE", ESPIPE, "Illegal seek");#endif#ifdef ENOLINK	inscode(d, ds, de, "ENOLINK", ENOLINK, "Link has been severed");#endif#ifdef ENETRESET	inscode(d, ds, de, "ENETRESET", ENETRESET, "Network dropped connection because of reset");#else#ifdef WSAENETRESET	inscode(d, ds, de, "ENETRESET", WSAENETRESET, "Network dropped connection because of reset");#endif#endif#ifdef ETIMEDOUT	inscode(d, ds, de, "ETIMEDOUT", ETIMEDOUT, "Connection timed out");#else#ifdef WSAETIMEDOUT	inscode(d, ds, de, "ETIMEDOUT", WSAETIMEDOUT, "Connection timed out");#endif#endif#ifdef ENOENT	inscode(d, ds, de, "ENOENT", ENOENT, "No such file or directory");#endif#ifdef EEXIST	inscode(d, ds, de, "EEXIST", EEXIST, "File exists");#endif#ifdef EDQUOT	inscode(d, ds, de, "EDQUOT", EDQUOT, "Quota exceeded");#else#ifdef WSAEDQUOT	inscode(d, ds, de, "EDQUOT", WSAEDQUOT, "Quota exceeded");#endif#endif#ifdef ENOSTR	inscode(d, ds, de, "ENOSTR", ENOSTR, "Device not a stream");#endif#ifdef EBADSLT	inscode(d, ds, de, "EBADSLT", EBADSLT, "Invalid slot");#endif#ifdef EBADRQC	inscode(d, ds, de, "EBADRQC", EBADRQC, "Invalid request code");#endif#ifdef ELIBACC	inscode(d, ds, de, "ELIBACC", ELIBACC, "Can not access a needed shared library");#endif#ifdef EFAULT	inscode(d, ds, de, "EFAULT", EFAULT, "Bad address");#else#ifdef WSAEFAULT	inscode(d, ds, de, "EFAULT", WSAEFAULT, "Bad address");#endif#endif#ifdef EFBIG	inscode(d, ds, de, "EFBIG", EFBIG, "File too large");#endif#ifdef EDEADLK	inscode(d, ds, de, "EDEADLK", EDEADLK, "Resource deadlock would occur");#endif#ifdef ENOTCONN	inscode(d, ds, de, "ENOTCONN", ENOTCONN, "Transport endpoint is not connected");#else#ifdef WSAENOTCONN	inscode(d, ds, de, "ENOTCONN", WSAENOTCONN, "Transport endpoint is not connected");#endif#endif#ifdef EDESTADDRREQ	inscode(d, ds, de, "EDESTADDRREQ", EDESTADDRREQ, "Destination address required");#else#ifdef WSAEDESTADDRREQ	inscode(d, ds, de, "EDESTADDRREQ", WSAEDESTADDRREQ, "Destination address required");#endif#endif#ifdef ELIBSCN	inscode(d, ds, de, "ELIBSCN", ELIBSCN, ".lib section in a.out corrupted");#endif#ifdef ENOLCK	inscode(d, ds, de, "ENOLCK", ENOLCK, "No record locks available");#endif#ifdef EISNAM	inscode(d, ds, de, "EISNAM", EISNAM, "Is a named type file");#endif#ifdef ECONNABORTED	inscode(d, ds, de, "ECONNABORTED", ECONNABORTED, "Software caused connection abort");#else#ifdef WSAECONNABORTED	inscode(d, ds, de, "ECONNABORTED", WSAECONNABORTED, "Software caused connection abort");#endif#endif#ifdef ENETUNREACH	inscode(d, ds, de, "ENETUNREACH", ENETUNREACH, "Network is unreachable");#else#ifdef WSAENETUNREACH	inscode(d, ds, de, "ENETUNREACH", WSAENETUNREACH, "Network is unreachable");#endif#endif#ifdef ESTALE	inscode(d, ds, de, "ESTALE", ESTALE, "Stale NFS file handle");#else#ifdef WSAESTALE	inscode(d, ds, de, "ESTALE", WSAESTALE, "Stale NFS file handle");#endif#endif#ifdef ENOSR	inscode(d, ds, de, "ENOSR", ENOSR, "Out of streams resources");#endif#ifdef ENOMEM	inscode(d, ds, de, "ENOMEM", ENOMEM, "Out of memory");#endif

Lines 1–500 of 788.