Home | History | Annotate | Download | only in Modules
      1 
      2 /* Errno module */
      3 
      4 #include "Python.h"
      5 
      6 /* Windows socket errors (WSA*)  */
      7 #ifdef MS_WINDOWS
      8 #define WIN32_LEAN_AND_MEAN
      9 #include <windows.h>
     10 /* The following constants were added to errno.h in VS2010 but have
     11    preferred WSA equivalents. */
     12 #undef EADDRINUSE
     13 #undef EADDRNOTAVAIL
     14 #undef EAFNOSUPPORT
     15 #undef EALREADY
     16 #undef ECONNABORTED
     17 #undef ECONNREFUSED
     18 #undef ECONNRESET
     19 #undef EDESTADDRREQ
     20 #undef EHOSTUNREACH
     21 #undef EINPROGRESS
     22 #undef EISCONN
     23 #undef ELOOP
     24 #undef EMSGSIZE
     25 #undef ENETDOWN
     26 #undef ENETRESET
     27 #undef ENETUNREACH
     28 #undef ENOBUFS
     29 #undef ENOPROTOOPT
     30 #undef ENOTCONN
     31 #undef ENOTSOCK
     32 #undef EOPNOTSUPP
     33 #undef EPROTONOSUPPORT
     34 #undef EPROTOTYPE
     35 #undef ETIMEDOUT
     36 #undef EWOULDBLOCK
     37 #endif
     38 
     39 /*
     40  * Pull in the system error definitions
     41  */
     42 
     43 static PyMethodDef errno_methods[] = {
     44     {NULL,              NULL}
     45 };
     46 
     47 /* Helper function doing the dictionary inserting */
     48 
     49 static void
     50 _inscode(PyObject *d, PyObject *de, const char *name, int code)
     51 {
     52     PyObject *u = PyUnicode_FromString(name);
     53     PyObject *v = PyLong_FromLong((long) code);
     54 
     55     /* Don't bother checking for errors; they'll be caught at the end
     56      * of the module initialization function by the caller of
     57      * initerrno().
     58      */
     59     if (u && v) {
     60         /* insert in modules dict */
     61         PyDict_SetItem(d, u, v);
     62         /* insert in errorcode dict */
     63         PyDict_SetItem(de, v, u);
     64     }
     65     Py_XDECREF(u);
     66     Py_XDECREF(v);
     67 }
     68 
     69 PyDoc_STRVAR(errno__doc__,
     70 "This module makes available standard errno system symbols.\n\
     71 \n\
     72 The value of each symbol is the corresponding integer value,\n\
     73 e.g., on most systems, errno.ENOENT equals the integer 2.\n\
     74 \n\
     75 The dictionary errno.errorcode maps numeric codes to symbol names,\n\
     76 e.g., errno.errorcode[2] could be the string 'ENOENT'.\n\
     77 \n\
     78 Symbols that are not relevant to the underlying system are not defined.\n\
     79 \n\
     80 To map error codes to error messages, use the function os.strerror(),\n\
     81 e.g. os.strerror(2) could return 'No such file or directory'.");
     82 
     83 static struct PyModuleDef errnomodule = {
     84     PyModuleDef_HEAD_INIT,
     85     "errno",
     86     errno__doc__,
     87     -1,
     88     errno_methods,
     89     NULL,
     90     NULL,
     91     NULL,
     92     NULL
     93 };
     94 
     95 PyMODINIT_FUNC
     96 PyInit_errno(void)
     97 {
     98     PyObject *m, *d, *de;
     99     m = PyModule_Create(&errnomodule);
    100     if (m == NULL)
    101         return NULL;
    102     d = PyModule_GetDict(m);
    103     de = PyDict_New();
    104     if (!d || !de || PyDict_SetItemString(d, "errorcode", de) < 0)
    105         return NULL;
    106 
    107 /* Macro so I don't have to edit each and every line below... */
    108 #define inscode(d, ds, de, name, code, comment) _inscode(d, de, name, code)
    109 
    110     /*
    111      * The names and comments are borrowed from linux/include/errno.h,
    112      * which should be pretty all-inclusive.  However, the Solaris specific
    113      * names and comments are borrowed from sys/errno.h in Solaris.
    114      * MacOSX specific names and comments are borrowed from sys/errno.h in
    115      * MacOSX.
    116      */
    117 
    118 #ifdef ENODEV
    119     inscode(d, ds, de, "ENODEV", ENODEV, "No such device");
    120 #endif
    121 #ifdef ENOCSI
    122     inscode(d, ds, de, "ENOCSI", ENOCSI, "No CSI structure available");
    123 #endif
    124 #ifdef EHOSTUNREACH
    125     inscode(d, ds, de, "EHOSTUNREACH", EHOSTUNREACH, "No route to host");
    126 #else
    127 #ifdef WSAEHOSTUNREACH
    128     inscode(d, ds, de, "EHOSTUNREACH", WSAEHOSTUNREACH, "No route to host");
    129 #endif
    130 #endif
    131 #ifdef ENOMSG
    132     inscode(d, ds, de, "ENOMSG", ENOMSG, "No message of desired type");
    133 #endif
    134 #ifdef EUCLEAN
    135     inscode(d, ds, de, "EUCLEAN", EUCLEAN, "Structure needs cleaning");
    136 #endif
    137 #ifdef EL2NSYNC
    138     inscode(d, ds, de, "EL2NSYNC", EL2NSYNC, "Level 2 not synchronized");
    139 #endif
    140 #ifdef EL2HLT
    141     inscode(d, ds, de, "EL2HLT", EL2HLT, "Level 2 halted");
    142 #endif
    143 #ifdef ENODATA
    144     inscode(d, ds, de, "ENODATA", ENODATA, "No data available");
    145 #endif
    146 #ifdef ENOTBLK
    147     inscode(d, ds, de, "ENOTBLK", ENOTBLK, "Block device required");
    148 #endif
    149 #ifdef ENOSYS
    150     inscode(d, ds, de, "ENOSYS", ENOSYS, "Function not implemented");
    151 #endif
    152 #ifdef EPIPE
    153     inscode(d, ds, de, "EPIPE", EPIPE, "Broken pipe");
    154 #endif
    155 #ifdef EINVAL
    156     inscode(d, ds, de, "EINVAL", EINVAL, "Invalid argument");
    157 #else
    158 #ifdef WSAEINVAL
    159     inscode(d, ds, de, "EINVAL", WSAEINVAL, "Invalid argument");
    160 #endif
    161 #endif
    162 #ifdef EOVERFLOW
    163     inscode(d, ds, de, "EOVERFLOW", EOVERFLOW, "Value too large for defined data type");
    164 #endif
    165 #ifdef EADV
    166     inscode(d, ds, de, "EADV", EADV, "Advertise error");
    167 #endif
    168 #ifdef EINTR
    169     inscode(d, ds, de, "EINTR", EINTR, "Interrupted system call");
    170 #else
    171 #ifdef WSAEINTR
    172     inscode(d, ds, de, "EINTR", WSAEINTR, "Interrupted system call");
    173 #endif
    174 #endif
    175 #ifdef EUSERS
    176     inscode(d, ds, de, "EUSERS", EUSERS, "Too many users");
    177 #else
    178 #ifdef WSAEUSERS
    179     inscode(d, ds, de, "EUSERS", WSAEUSERS, "Too many users");
    180 #endif
    181 #endif
    182 #ifdef ENOTEMPTY
    183     inscode(d, ds, de, "ENOTEMPTY", ENOTEMPTY, "Directory not empty");
    184 #else
    185 #ifdef WSAENOTEMPTY
    186     inscode(d, ds, de, "ENOTEMPTY", WSAENOTEMPTY, "Directory not empty");
    187 #endif
    188 #endif
    189 #ifdef ENOBUFS
    190     inscode(d, ds, de, "ENOBUFS", ENOBUFS, "No buffer space available");
    191 #else
    192 #ifdef WSAENOBUFS
    193     inscode(d, ds, de, "ENOBUFS", WSAENOBUFS, "No buffer space available");
    194 #endif
    195 #endif
    196 #ifdef EPROTO
    197     inscode(d, ds, de, "EPROTO", EPROTO, "Protocol error");
    198 #endif
    199 #ifdef EREMOTE
    200     inscode(d, ds, de, "EREMOTE", EREMOTE, "Object is remote");
    201 #else
    202 #ifdef WSAEREMOTE
    203     inscode(d, ds, de, "EREMOTE", WSAEREMOTE, "Object is remote");
    204 #endif
    205 #endif
    206 #ifdef ENAVAIL
    207     inscode(d, ds, de, "ENAVAIL", ENAVAIL, "No XENIX semaphores available");
    208 #endif
    209 #ifdef ECHILD
    210     inscode(d, ds, de, "ECHILD", ECHILD, "No child processes");
    211 #endif
    212 #ifdef ELOOP
    213     inscode(d, ds, de, "ELOOP", ELOOP, "Too many symbolic links encountered");
    214 #else
    215 #ifdef WSAELOOP
    216     inscode(d, ds, de, "ELOOP", WSAELOOP, "Too many symbolic links encountered");
    217 #endif
    218 #endif
    219 #ifdef EXDEV
    220     inscode(d, ds, de, "EXDEV", EXDEV, "Cross-device link");
    221 #endif
    222 #ifdef E2BIG
    223     inscode(d, ds, de, "E2BIG", E2BIG, "Arg list too long");
    224 #endif
    225 #ifdef ESRCH
    226     inscode(d, ds, de, "ESRCH", ESRCH, "No such process");
    227 #endif
    228 #ifdef EMSGSIZE
    229     inscode(d, ds, de, "EMSGSIZE", EMSGSIZE, "Message too long");
    230 #else
    231 #ifdef WSAEMSGSIZE
    232     inscode(d, ds, de, "EMSGSIZE", WSAEMSGSIZE, "Message too long");
    233 #endif
    234 #endif
    235 #ifdef EAFNOSUPPORT
    236     inscode(d, ds, de, "EAFNOSUPPORT", EAFNOSUPPORT, "Address family not supported by protocol");
    237 #else
    238 #ifdef WSAEAFNOSUPPORT
    239     inscode(d, ds, de, "EAFNOSUPPORT", WSAEAFNOSUPPORT, "Address family not supported by protocol");
    240 #endif
    241 #endif
    242 #ifdef EBADR
    243     inscode(d, ds, de, "EBADR", EBADR, "Invalid request descriptor");
    244 #endif
    245 #ifdef EHOSTDOWN
    246     inscode(d, ds, de, "EHOSTDOWN", EHOSTDOWN, "Host is down");
    247 #else
    248 #ifdef WSAEHOSTDOWN
    249     inscode(d, ds, de, "EHOSTDOWN", WSAEHOSTDOWN, "Host is down");
    250 #endif
    251 #endif
    252 #ifdef EPFNOSUPPORT
    253     inscode(d, ds, de, "EPFNOSUPPORT", EPFNOSUPPORT, "Protocol family not supported");
    254 #else
    255 #ifdef WSAEPFNOSUPPORT
    256     inscode(d, ds, de, "EPFNOSUPPORT", WSAEPFNOSUPPORT, "Protocol family not supported");
    257 #endif
    258 #endif
    259 #ifdef ENOPROTOOPT
    260     inscode(d, ds, de, "ENOPROTOOPT", ENOPROTOOPT, "Protocol not available");
    261 #else
    262 #ifdef WSAENOPROTOOPT
    263     inscode(d, ds, de, "ENOPROTOOPT", WSAENOPROTOOPT, "Protocol not available");
    264 #endif
    265 #endif
    266 #ifdef EBUSY
    267     inscode(d, ds, de, "EBUSY", EBUSY, "Device or resource busy");
    268 #endif
    269 #ifdef EWOULDBLOCK
    270     inscode(d, ds, de, "EWOULDBLOCK", EWOULDBLOCK, "Operation would block");
    271 #else
    272 #ifdef WSAEWOULDBLOCK
    273     inscode(d, ds, de, "EWOULDBLOCK", WSAEWOULDBLOCK, "Operation would block");
    274 #endif
    275 #endif
    276 #ifdef EBADFD
    277     inscode(d, ds, de, "EBADFD", EBADFD, "File descriptor in bad state");
    278 #endif
    279 #ifdef EDOTDOT
    280     inscode(d, ds, de, "EDOTDOT", EDOTDOT, "RFS specific error");
    281 #endif
    282 #ifdef EISCONN
    283     inscode(d, ds, de, "EISCONN", EISCONN, "Transport endpoint is already connected");
    284 #else
    285 #ifdef WSAEISCONN
    286     inscode(d, ds, de, "EISCONN", WSAEISCONN, "Transport endpoint is already connected");
    287 #endif
    288 #endif
    289 #ifdef ENOANO
    290     inscode(d, ds, de, "ENOANO", ENOANO, "No anode");
    291 #endif
    292 #ifdef ESHUTDOWN
    293     inscode(d, ds, de, "ESHUTDOWN", ESHUTDOWN, "Cannot send after transport endpoint shutdown");
    294 #else
    295 #ifdef WSAESHUTDOWN
    296     inscode(d, ds, de, "ESHUTDOWN", WSAESHUTDOWN, "Cannot send after transport endpoint shutdown");
    297 #endif
    298 #endif
    299 #ifdef ECHRNG
    300     inscode(d, ds, de, "ECHRNG", ECHRNG, "Channel number out of range");
    301 #endif
    302 #ifdef ELIBBAD
    303     inscode(d, ds, de, "ELIBBAD", ELIBBAD, "Accessing a corrupted shared library");
    304 #endif
    305 #ifdef ENONET
    306     inscode(d, ds, de, "ENONET", ENONET, "Machine is not on the network");
    307 #endif
    308 #ifdef EBADE
    309     inscode(d, ds, de, "EBADE", EBADE, "Invalid exchange");
    310 #endif
    311 #ifdef EBADF
    312     inscode(d, ds, de, "EBADF", EBADF, "Bad file number");
    313 #else
    314 #ifdef WSAEBADF
    315     inscode(d, ds, de, "EBADF", WSAEBADF, "Bad file number");
    316 #endif
    317 #endif
    318 #ifdef EMULTIHOP
    319     inscode(d, ds, de, "EMULTIHOP", EMULTIHOP, "Multihop attempted");
    320 #endif
    321 #ifdef EIO
    322     inscode(d, ds, de, "EIO", EIO, "I/O error");
    323 #endif
    324 #ifdef EUNATCH
    325     inscode(d, ds, de, "EUNATCH", EUNATCH, "Protocol driver not attached");
    326 #endif
    327 #ifdef EPROTOTYPE
    328     inscode(d, ds, de, "EPROTOTYPE", EPROTOTYPE, "Protocol wrong type for socket");
    329 #else
    330 #ifdef WSAEPROTOTYPE
    331     inscode(d, ds, de, "EPROTOTYPE", WSAEPROTOTYPE, "Protocol wrong type for socket");
    332 #endif
    333 #endif
    334 #ifdef ENOSPC
    335     inscode(d, ds, de, "ENOSPC", ENOSPC, "No space left on device");
    336 #endif
    337 #ifdef ENOEXEC
    338     inscode(d, ds, de, "ENOEXEC", ENOEXEC, "Exec format error");
    339 #endif
    340 #ifdef EALREADY
    341     inscode(d, ds, de, "EALREADY", EALREADY, "Operation already in progress");
    342 #else
    343 #ifdef WSAEALREADY
    344     inscode(d, ds, de, "EALREADY", WSAEALREADY, "Operation already in progress");
    345 #endif
    346 #endif
    347 #ifdef ENETDOWN
    348     inscode(d, ds, de, "ENETDOWN", ENETDOWN, "Network is down");
    349 #else
    350 #ifdef WSAENETDOWN
    351     inscode(d, ds, de, "ENETDOWN", WSAENETDOWN, "Network is down");
    352 #endif
    353 #endif
    354 #ifdef ENOTNAM
    355     inscode(d, ds, de, "ENOTNAM", ENOTNAM, "Not a XENIX named type file");
    356 #endif
    357 #ifdef EACCES
    358     inscode(d, ds, de, "EACCES", EACCES, "Permission denied");
    359 #else
    360 #ifdef WSAEACCES
    361     inscode(d, ds, de, "EACCES", WSAEACCES, "Permission denied");
    362 #endif
    363 #endif
    364 #ifdef ELNRNG
    365     inscode(d, ds, de, "ELNRNG", ELNRNG, "Link number out of range");
    366 #endif
    367 #ifdef EILSEQ
    368     inscode(d, ds, de, "EILSEQ", EILSEQ, "Illegal byte sequence");
    369 #endif
    370 #ifdef ENOTDIR
    371     inscode(d, ds, de, "ENOTDIR", ENOTDIR, "Not a directory");
    372 #endif
    373 #ifdef ENOTUNIQ
    374     inscode(d, ds, de, "ENOTUNIQ", ENOTUNIQ, "Name not unique on network");
    375 #endif
    376 #ifdef EPERM
    377     inscode(d, ds, de, "EPERM", EPERM, "Operation not permitted");
    378 #endif
    379 #ifdef EDOM
    380     inscode(d, ds, de, "EDOM", EDOM, "Math argument out of domain of func");
    381 #endif
    382 #ifdef EXFULL
    383     inscode(d, ds, de, "EXFULL", EXFULL, "Exchange full");
    384 #endif
    385 #ifdef ECONNREFUSED
    386     inscode(d, ds, de, "ECONNREFUSED", ECONNREFUSED, "Connection refused");
    387 #else
    388 #ifdef WSAECONNREFUSED
    389     inscode(d, ds, de, "ECONNREFUSED", WSAECONNREFUSED, "Connection refused");
    390 #endif
    391 #endif
    392 #ifdef EISDIR
    393     inscode(d, ds, de, "EISDIR", EISDIR, "Is a directory");
    394 #endif
    395 #ifdef EPROTONOSUPPORT
    396     inscode(d, ds, de, "EPROTONOSUPPORT", EPROTONOSUPPORT, "Protocol not supported");
    397 #else
    398 #ifdef WSAEPROTONOSUPPORT
    399     inscode(d, ds, de, "EPROTONOSUPPORT", WSAEPROTONOSUPPORT, "Protocol not supported");
    400 #endif
    401 #endif
    402 #ifdef EROFS
    403     inscode(d, ds, de, "EROFS", EROFS, "Read-only file system");
    404 #endif
    405 #ifdef EADDRNOTAVAIL
    406     inscode(d, ds, de, "EADDRNOTAVAIL", EADDRNOTAVAIL, "Cannot assign requested address");
    407 #else
    408 #ifdef WSAEADDRNOTAVAIL
    409     inscode(d, ds, de, "EADDRNOTAVAIL", WSAEADDRNOTAVAIL, "Cannot assign requested address");
    410 #endif
    411 #endif
    412 #ifdef EIDRM
    413     inscode(d, ds, de, "EIDRM", EIDRM, "Identifier removed");
    414 #endif
    415 #ifdef ECOMM
    416     inscode(d, ds, de, "ECOMM", ECOMM, "Communication error on send");
    417 #endif
    418 #ifdef ESRMNT
    419     inscode(d, ds, de, "ESRMNT", ESRMNT, "Srmount error");
    420 #endif
    421 #ifdef EREMOTEIO
    422     inscode(d, ds, de, "EREMOTEIO", EREMOTEIO, "Remote I/O error");
    423 #endif
    424 #ifdef EL3RST
    425     inscode(d, ds, de, "EL3RST", EL3RST, "Level 3 reset");
    426 #endif
    427 #ifdef EBADMSG
    428     inscode(d, ds, de, "EBADMSG", EBADMSG, "Not a data message");
    429 #endif
    430 #ifdef ENFILE
    431     inscode(d, ds, de, "ENFILE", ENFILE, "File table overflow");
    432 #endif
    433 #ifdef ELIBMAX
    434     inscode(d, ds, de, "ELIBMAX", ELIBMAX, "Attempting to link in too many shared libraries");
    435 #endif
    436 #ifdef ESPIPE
    437     inscode(d, ds, de, "ESPIPE", ESPIPE, "Illegal seek");
    438 #endif
    439 #ifdef ENOLINK
    440     inscode(d, ds, de, "ENOLINK", ENOLINK, "Link has been severed");
    441 #endif
    442 #ifdef ENETRESET
    443     inscode(d, ds, de, "ENETRESET", ENETRESET, "Network dropped connection because of reset");
    444 #else
    445 #ifdef WSAENETRESET
    446     inscode(d, ds, de, "ENETRESET", WSAENETRESET, "Network dropped connection because of reset");
    447 #endif
    448 #endif
    449 #ifdef ETIMEDOUT
    450     inscode(d, ds, de, "ETIMEDOUT", ETIMEDOUT, "Connection timed out");
    451 #else
    452 #ifdef WSAETIMEDOUT
    453     inscode(d, ds, de, "ETIMEDOUT", WSAETIMEDOUT, "Connection timed out");
    454 #endif
    455 #endif
    456 #ifdef ENOENT
    457     inscode(d, ds, de, "ENOENT", ENOENT, "No such file or directory");
    458 #endif
    459 #ifdef EEXIST
    460     inscode(d, ds, de, "EEXIST", EEXIST, "File exists");
    461 #endif
    462 #ifdef EDQUOT
    463     inscode(d, ds, de, "EDQUOT", EDQUOT, "Quota exceeded");
    464 #else
    465 #ifdef WSAEDQUOT
    466     inscode(d, ds, de, "EDQUOT", WSAEDQUOT, "Quota exceeded");
    467 #endif
    468 #endif
    469 #ifdef ENOSTR
    470     inscode(d, ds, de, "ENOSTR", ENOSTR, "Device not a stream");
    471 #endif
    472 #ifdef EBADSLT
    473     inscode(d, ds, de, "EBADSLT", EBADSLT, "Invalid slot");
    474 #endif
    475 #ifdef EBADRQC
    476     inscode(d, ds, de, "EBADRQC", EBADRQC, "Invalid request code");
    477 #endif
    478 #ifdef ELIBACC
    479     inscode(d, ds, de, "ELIBACC", ELIBACC, "Can not access a needed shared library");
    480 #endif
    481 #ifdef EFAULT
    482     inscode(d, ds, de, "EFAULT", EFAULT, "Bad address");
    483 #else
    484 #ifdef WSAEFAULT
    485     inscode(d, ds, de, "EFAULT", WSAEFAULT, "Bad address");
    486 #endif
    487 #endif
    488 #ifdef EFBIG
    489     inscode(d, ds, de, "EFBIG", EFBIG, "File too large");
    490 #endif
    491 #ifdef EDEADLK
    492     inscode(d, ds, de, "EDEADLK", EDEADLK, "Resource deadlock would occur");
    493 #endif
    494 #ifdef ENOTCONN
    495     inscode(d, ds, de, "ENOTCONN", ENOTCONN, "Transport endpoint is not connected");
    496 #else
    497 #ifdef WSAENOTCONN
    498     inscode(d, ds, de, "ENOTCONN", WSAENOTCONN, "Transport endpoint is not connected");
    499 #endif
    500 #endif
    501 #ifdef EDESTADDRREQ
    502     inscode(d, ds, de, "EDESTADDRREQ", EDESTADDRREQ, "Destination address required");
    503 #else
    504 #ifdef WSAEDESTADDRREQ
    505     inscode(d, ds, de, "EDESTADDRREQ", WSAEDESTADDRREQ, "Destination address required");
    506 #endif
    507 #endif
    508 #ifdef ELIBSCN
    509     inscode(d, ds, de, "ELIBSCN", ELIBSCN, ".lib section in a.out corrupted");
    510 #endif
    511 #ifdef ENOLCK
    512     inscode(d, ds, de, "ENOLCK", ENOLCK, "No record locks available");
    513 #endif
    514 #ifdef EISNAM
    515     inscode(d, ds, de, "EISNAM", EISNAM, "Is a named type file");
    516 #endif
    517 #ifdef ECONNABORTED
    518     inscode(d, ds, de, "ECONNABORTED", ECONNABORTED, "Software caused connection abort");
    519 #else
    520 #ifdef WSAECONNABORTED
    521     inscode(d, ds, de, "ECONNABORTED", WSAECONNABORTED, "Software caused connection abort");
    522 #endif
    523 #endif
    524 #ifdef ENETUNREACH
    525     inscode(d, ds, de, "ENETUNREACH", ENETUNREACH, "Network is unreachable");
    526 #else
    527 #ifdef WSAENETUNREACH
    528     inscode(d, ds, de, "ENETUNREACH", WSAENETUNREACH, "Network is unreachable");
    529 #endif
    530 #endif
    531 #ifdef ESTALE
    532     inscode(d, ds, de, "ESTALE", ESTALE, "Stale NFS file handle");
    533 #else
    534 #ifdef WSAESTALE
    535     inscode(d, ds, de, "ESTALE", WSAESTALE, "Stale NFS file handle");
    536 #endif
    537 #endif
    538 #ifdef ENOSR
    539     inscode(d, ds, de, "ENOSR", ENOSR, "Out of streams resources");
    540 #endif
    541 #ifdef ENOMEM
    542     inscode(d, ds, de, "ENOMEM", ENOMEM, "Out of memory");
    543 #endif
    544 #ifdef ENOTSOCK
    545     inscode(d, ds, de, "ENOTSOCK", ENOTSOCK, "Socket operation on non-socket");
    546 #else
    547 #ifdef WSAENOTSOCK
    548     inscode(d, ds, de, "ENOTSOCK", WSAENOTSOCK, "Socket operation on non-socket");
    549 #endif
    550 #endif
    551 #ifdef ESTRPIPE
    552     inscode(d, ds, de, "ESTRPIPE", ESTRPIPE, "Streams pipe error");
    553 #endif
    554 #ifdef EMLINK
    555     inscode(d, ds, de, "EMLINK", EMLINK, "Too many links");
    556 #endif
    557 #ifdef ERANGE
    558     inscode(d, ds, de, "ERANGE", ERANGE, "Math result not representable");
    559 #endif
    560 #ifdef ELIBEXEC
    561     inscode(d, ds, de, "ELIBEXEC", ELIBEXEC, "Cannot exec a shared library directly");
    562 #endif
    563 #ifdef EL3HLT
    564     inscode(d, ds, de, "EL3HLT", EL3HLT, "Level 3 halted");
    565 #endif
    566 #ifdef ECONNRESET
    567     inscode(d, ds, de, "ECONNRESET", ECONNRESET, "Connection reset by peer");
    568 #else
    569 #ifdef WSAECONNRESET
    570     inscode(d, ds, de, "ECONNRESET", WSAECONNRESET, "Connection reset by peer");
    571 #endif
    572 #endif
    573 #ifdef EADDRINUSE
    574     inscode(d, ds, de, "EADDRINUSE", EADDRINUSE, "Address already in use");
    575 #else
    576 #ifdef WSAEADDRINUSE
    577     inscode(d, ds, de, "EADDRINUSE", WSAEADDRINUSE, "Address already in use");
    578 #endif
    579 #endif
    580 #ifdef EOPNOTSUPP
    581     inscode(d, ds, de, "EOPNOTSUPP", EOPNOTSUPP, "Operation not supported on transport endpoint");
    582 #else
    583 #ifdef WSAEOPNOTSUPP
    584     inscode(d, ds, de, "EOPNOTSUPP", WSAEOPNOTSUPP, "Operation not supported on transport endpoint");
    585 #endif
    586 #endif
    587 #ifdef EREMCHG
    588     inscode(d, ds, de, "EREMCHG", EREMCHG, "Remote address changed");
    589 #endif
    590 #ifdef EAGAIN
    591     inscode(d, ds, de, "EAGAIN", EAGAIN, "Try again");
    592 #endif
    593 #ifdef ENAMETOOLONG
    594     inscode(d, ds, de, "ENAMETOOLONG", ENAMETOOLONG, "File name too long");
    595 #else
    596 #ifdef WSAENAMETOOLONG
    597     inscode(d, ds, de, "ENAMETOOLONG", WSAENAMETOOLONG, "File name too long");
    598 #endif
    599 #endif
    600 #ifdef ENOTTY
    601     inscode(d, ds, de, "ENOTTY", ENOTTY, "Not a typewriter");
    602 #endif
    603 #ifdef ERESTART
    604     inscode(d, ds, de, "ERESTART", ERESTART, "Interrupted system call should be restarted");
    605 #endif
    606 #ifdef ESOCKTNOSUPPORT
    607     inscode(d, ds, de, "ESOCKTNOSUPPORT", ESOCKTNOSUPPORT, "Socket type not supported");
    608 #else
    609 #ifdef WSAESOCKTNOSUPPORT
    610     inscode(d, ds, de, "ESOCKTNOSUPPORT", WSAESOCKTNOSUPPORT, "Socket type not supported");
    611 #endif
    612 #endif
    613 #ifdef ETIME
    614     inscode(d, ds, de, "ETIME", ETIME, "Timer expired");
    615 #endif
    616 #ifdef EBFONT
    617     inscode(d, ds, de, "EBFONT", EBFONT, "Bad font file format");
    618 #endif
    619 #ifdef EDEADLOCK
    620     inscode(d, ds, de, "EDEADLOCK", EDEADLOCK, "Error EDEADLOCK");
    621 #endif
    622 #ifdef ETOOMANYREFS
    623     inscode(d, ds, de, "ETOOMANYREFS", ETOOMANYREFS, "Too many references: cannot splice");
    624 #else
    625 #ifdef WSAETOOMANYREFS
    626     inscode(d, ds, de, "ETOOMANYREFS", WSAETOOMANYREFS, "Too many references: cannot splice");
    627 #endif
    628 #endif
    629 #ifdef EMFILE
    630     inscode(d, ds, de, "EMFILE", EMFILE, "Too many open files");
    631 #else
    632 #ifdef WSAEMFILE
    633     inscode(d, ds, de, "EMFILE", WSAEMFILE, "Too many open files");
    634 #endif
    635 #endif
    636 #ifdef ETXTBSY
    637     inscode(d, ds, de, "ETXTBSY", ETXTBSY, "Text file busy");
    638 #endif
    639 #ifdef EINPROGRESS
    640     inscode(d, ds, de, "EINPROGRESS", EINPROGRESS, "Operation now in progress");
    641 #else
    642 #ifdef WSAEINPROGRESS
    643     inscode(d, ds, de, "EINPROGRESS", WSAEINPROGRESS, "Operation now in progress");
    644 #endif
    645 #endif
    646 #ifdef ENXIO
    647     inscode(d, ds, de, "ENXIO", ENXIO, "No such device or address");
    648 #endif
    649 #ifdef ENOPKG
    650     inscode(d, ds, de, "ENOPKG", ENOPKG, "Package not installed");
    651 #endif
    652 #ifdef WSASY
    653     inscode(d, ds, de, "WSASY", WSASY, "Error WSASY");
    654 #endif
    655 #ifdef WSAEHOSTDOWN
    656     inscode(d, ds, de, "WSAEHOSTDOWN", WSAEHOSTDOWN, "Host is down");
    657 #endif
    658 #ifdef WSAENETDOWN
    659     inscode(d, ds, de, "WSAENETDOWN", WSAENETDOWN, "Network is down");
    660 #endif
    661 #ifdef WSAENOTSOCK
    662     inscode(d, ds, de, "WSAENOTSOCK", WSAENOTSOCK, "Socket operation on non-socket");
    663 #endif
    664 #ifdef WSAEHOSTUNREACH
    665     inscode(d, ds, de, "WSAEHOSTUNREACH", WSAEHOSTUNREACH, "No route to host");
    666 #endif
    667 #ifdef WSAELOOP
    668     inscode(d, ds, de, "WSAELOOP", WSAELOOP, "Too many symbolic links encountered");
    669 #endif
    670 #ifdef WSAEMFILE
    671     inscode(d, ds, de, "WSAEMFILE", WSAEMFILE, "Too many open files");
    672 #endif
    673 #ifdef WSAESTALE
    674     inscode(d, ds, de, "WSAESTALE", WSAESTALE, "Stale NFS file handle");
    675 #endif
    676 #ifdef WSAVERNOTSUPPORTED
    677     inscode(d, ds, de, "WSAVERNOTSUPPORTED", WSAVERNOTSUPPORTED, "Error WSAVERNOTSUPPORTED");
    678 #endif
    679 #ifdef WSAENETUNREACH
    680     inscode(d, ds, de, "WSAENETUNREACH", WSAENETUNREACH, "Network is unreachable");
    681 #endif
    682 #ifdef WSAEPROCLIM
    683     inscode(d, ds, de, "WSAEPROCLIM", WSAEPROCLIM, "Error WSAEPROCLIM");
    684 #endif
    685 #ifdef WSAEFAULT
    686     inscode(d, ds, de, "WSAEFAULT", WSAEFAULT, "Bad address");
    687 #endif
    688 #ifdef WSANOTINITIALISED
    689     inscode(d, ds, de, "WSANOTINITIALISED", WSANOTINITIALISED, "Error WSANOTINITIALISED");
    690 #endif
    691 #ifdef WSAEUSERS
    692     inscode(d, ds, de, "WSAEUSERS", WSAEUSERS, "Too many users");
    693 #endif
    694 #ifdef WSAMAKEASYNCREPL
    695     inscode(d, ds, de, "WSAMAKEASYNCREPL", WSAMAKEASYNCREPL, "Error WSAMAKEASYNCREPL");
    696 #endif
    697 #ifdef WSAENOPROTOOPT
    698     inscode(d, ds, de, "WSAENOPROTOOPT", WSAENOPROTOOPT, "Protocol not available");
    699 #endif
    700 #ifdef WSAECONNABORTED
    701     inscode(d, ds, de, "WSAECONNABORTED", WSAECONNABORTED, "Software caused connection abort");
    702 #endif
    703 #ifdef WSAENAMETOOLONG
    704     inscode(d, ds, de, "WSAENAMETOOLONG", WSAENAMETOOLONG, "File name too long");
    705 #endif
    706 #ifdef WSAENOTEMPTY
    707     inscode(d, ds, de, "WSAENOTEMPTY", WSAENOTEMPTY, "Directory not empty");
    708 #endif
    709 #ifdef WSAESHUTDOWN
    710     inscode(d, ds, de, "WSAESHUTDOWN", WSAESHUTDOWN, "Cannot send after transport endpoint shutdown");
    711 #endif
    712 #ifdef WSAEAFNOSUPPORT
    713     inscode(d, ds, de, "WSAEAFNOSUPPORT", WSAEAFNOSUPPORT, "Address family not supported by protocol");
    714 #endif
    715 #ifdef WSAETOOMANYREFS
    716     inscode(d, ds, de, "WSAETOOMANYREFS", WSAETOOMANYREFS, "Too many references: cannot splice");
    717 #endif
    718 #ifdef WSAEACCES
    719     inscode(d, ds, de, "WSAEACCES", WSAEACCES, "Permission denied");
    720 #endif
    721 #ifdef WSATR
    722     inscode(d, ds, de, "WSATR", WSATR, "Error WSATR");
    723 #endif
    724 #ifdef WSABASEERR
    725     inscode(d, ds, de, "WSABASEERR", WSABASEERR, "Error WSABASEERR");
    726 #endif
    727 #ifdef WSADESCRIPTIO
    728     inscode(d, ds, de, "WSADESCRIPTIO", WSADESCRIPTIO, "Error WSADESCRIPTIO");
    729 #endif
    730 #ifdef WSAEMSGSIZE
    731     inscode(d, ds, de, "WSAEMSGSIZE", WSAEMSGSIZE, "Message too long");
    732 #endif
    733 #ifdef WSAEBADF
    734     inscode(d, ds, de, "WSAEBADF", WSAEBADF, "Bad file number");
    735 #endif
    736 #ifdef WSAECONNRESET
    737     inscode(d, ds, de, "WSAECONNRESET", WSAECONNRESET, "Connection reset by peer");
    738 #endif
    739 #ifdef WSAGETSELECTERRO
    740     inscode(d, ds, de, "WSAGETSELECTERRO", WSAGETSELECTERRO, "Error WSAGETSELECTERRO");
    741 #endif
    742 #ifdef WSAETIMEDOUT
    743     inscode(d, ds, de, "WSAETIMEDOUT", WSAETIMEDOUT, "Connection timed out");
    744 #endif
    745 #ifdef WSAENOBUFS
    746     inscode(d, ds, de, "WSAENOBUFS", WSAENOBUFS, "No buffer space available");
    747 #endif
    748 #ifdef WSAEDISCON
    749     inscode(d, ds, de, "WSAEDISCON", WSAEDISCON, "Error WSAEDISCON");
    750 #endif
    751 #ifdef WSAEINTR
    752     inscode(d, ds, de, "WSAEINTR", WSAEINTR, "Interrupted system call");
    753 #endif
    754 #ifdef WSAEPROTOTYPE
    755     inscode(d, ds, de, "WSAEPROTOTYPE", WSAEPROTOTYPE, "Protocol wrong type for socket");
    756 #endif
    757 #ifdef WSAHOS
    758     inscode(d, ds, de, "WSAHOS", WSAHOS, "Error WSAHOS");
    759 #endif
    760 #ifdef WSAEADDRINUSE
    761     inscode(d, ds, de, "WSAEADDRINUSE", WSAEADDRINUSE, "Address already in use");
    762 #endif
    763 #ifdef WSAEADDRNOTAVAIL
    764     inscode(d, ds, de, "WSAEADDRNOTAVAIL", WSAEADDRNOTAVAIL, "Cannot assign requested address");
    765 #endif
    766 #ifdef WSAEALREADY
    767     inscode(d, ds, de, "WSAEALREADY", WSAEALREADY, "Operation already in progress");
    768 #endif
    769 #ifdef WSAEPROTONOSUPPORT
    770     inscode(d, ds, de, "WSAEPROTONOSUPPORT", WSAEPROTONOSUPPORT, "Protocol not supported");
    771 #endif
    772 #ifdef WSASYSNOTREADY
    773     inscode(d, ds, de, "WSASYSNOTREADY", WSASYSNOTREADY, "Error WSASYSNOTREADY");
    774 #endif
    775 #ifdef WSAEWOULDBLOCK
    776     inscode(d, ds, de, "WSAEWOULDBLOCK", WSAEWOULDBLOCK, "Operation would block");
    777 #endif
    778 #ifdef WSAEPFNOSUPPORT
    779     inscode(d, ds, de, "WSAEPFNOSUPPORT", WSAEPFNOSUPPORT, "Protocol family not supported");
    780 #endif
    781 #ifdef WSAEOPNOTSUPP
    782     inscode(d, ds, de, "WSAEOPNOTSUPP", WSAEOPNOTSUPP, "Operation not supported on transport endpoint");
    783 #endif
    784 #ifdef WSAEISCONN
    785     inscode(d, ds, de, "WSAEISCONN", WSAEISCONN, "Transport endpoint is already connected");
    786 #endif
    787 #ifdef WSAEDQUOT
    788     inscode(d, ds, de, "WSAEDQUOT", WSAEDQUOT, "Quota exceeded");
    789 #endif
    790 #ifdef WSAENOTCONN
    791     inscode(d, ds, de, "WSAENOTCONN", WSAENOTCONN, "Transport endpoint is not connected");
    792 #endif
    793 #ifdef WSAEREMOTE
    794     inscode(d, ds, de, "WSAEREMOTE", WSAEREMOTE, "Object is remote");
    795 #endif
    796 #ifdef WSAEINVAL
    797     inscode(d, ds, de, "WSAEINVAL", WSAEINVAL, "Invalid argument");
    798 #endif
    799 #ifdef WSAEINPROGRESS
    800     inscode(d, ds, de, "WSAEINPROGRESS", WSAEINPROGRESS, "Operation now in progress");
    801 #endif
    802 #ifdef WSAGETSELECTEVEN
    803     inscode(d, ds, de, "WSAGETSELECTEVEN", WSAGETSELECTEVEN, "Error WSAGETSELECTEVEN");
    804 #endif
    805 #ifdef WSAESOCKTNOSUPPORT
    806     inscode(d, ds, de, "WSAESOCKTNOSUPPORT", WSAESOCKTNOSUPPORT, "Socket type not supported");
    807 #endif
    808 #ifdef WSAGETASYNCERRO
    809     inscode(d, ds, de, "WSAGETASYNCERRO", WSAGETASYNCERRO, "Error WSAGETASYNCERRO");
    810 #endif
    811 #ifdef WSAMAKESELECTREPL
    812     inscode(d, ds, de, "WSAMAKESELECTREPL", WSAMAKESELECTREPL, "Error WSAMAKESELECTREPL");
    813 #endif
    814 #ifdef WSAGETASYNCBUFLE
    815     inscode(d, ds, de, "WSAGETASYNCBUFLE", WSAGETASYNCBUFLE, "Error WSAGETASYNCBUFLE");
    816 #endif
    817 #ifdef WSAEDESTADDRREQ
    818     inscode(d, ds, de, "WSAEDESTADDRREQ", WSAEDESTADDRREQ, "Destination address required");
    819 #endif
    820 #ifdef WSAECONNREFUSED
    821     inscode(d, ds, de, "WSAECONNREFUSED", WSAECONNREFUSED, "Connection refused");
    822 #endif
    823 #ifdef WSAENETRESET
    824     inscode(d, ds, de, "WSAENETRESET", WSAENETRESET, "Network dropped connection because of reset");
    825 #endif
    826 #ifdef WSAN
    827     inscode(d, ds, de, "WSAN", WSAN, "Error WSAN");
    828 #endif
    829 #ifdef ENOMEDIUM
    830     inscode(d, ds, de, "ENOMEDIUM", ENOMEDIUM, "No medium found");
    831 #endif
    832 #ifdef EMEDIUMTYPE
    833     inscode(d, ds, de, "EMEDIUMTYPE", EMEDIUMTYPE, "Wrong medium type");
    834 #endif
    835 #ifdef ECANCELED
    836     inscode(d, ds, de, "ECANCELED", ECANCELED, "Operation Canceled");
    837 #endif
    838 #ifdef ENOKEY
    839     inscode(d, ds, de, "ENOKEY", ENOKEY, "Required key not available");
    840 #endif
    841 #ifdef EKEYEXPIRED
    842     inscode(d, ds, de, "EKEYEXPIRED", EKEYEXPIRED, "Key has expired");
    843 #endif
    844 #ifdef EKEYREVOKED
    845     inscode(d, ds, de, "EKEYREVOKED", EKEYREVOKED, "Key has been revoked");
    846 #endif
    847 #ifdef EKEYREJECTED
    848     inscode(d, ds, de, "EKEYREJECTED", EKEYREJECTED, "Key was rejected by service");
    849 #endif
    850 #ifdef EOWNERDEAD
    851     inscode(d, ds, de, "EOWNERDEAD", EOWNERDEAD, "Owner died");
    852 #endif
    853 #ifdef ENOTRECOVERABLE
    854     inscode(d, ds, de, "ENOTRECOVERABLE", ENOTRECOVERABLE, "State not recoverable");
    855 #endif
    856 #ifdef ERFKILL
    857     inscode(d, ds, de, "ERFKILL", ERFKILL, "Operation not possible due to RF-kill");
    858 #endif
    859 
    860     /* Solaris-specific errnos */
    861 #ifdef ECANCELED
    862     inscode(d, ds, de, "ECANCELED", ECANCELED, "Operation canceled");
    863 #endif
    864 #ifdef ENOTSUP
    865     inscode(d, ds, de, "ENOTSUP", ENOTSUP, "Operation not supported");
    866 #endif
    867 #ifdef EOWNERDEAD
    868     inscode(d, ds, de, "EOWNERDEAD", EOWNERDEAD, "Process died with the lock");
    869 #endif
    870 #ifdef ENOTRECOVERABLE
    871     inscode(d, ds, de, "ENOTRECOVERABLE", ENOTRECOVERABLE, "Lock is not recoverable");
    872 #endif
    873 #ifdef ELOCKUNMAPPED
    874     inscode(d, ds, de, "ELOCKUNMAPPED", ELOCKUNMAPPED, "Locked lock was unmapped");
    875 #endif
    876 #ifdef ENOTACTIVE
    877     inscode(d, ds, de, "ENOTACTIVE", ENOTACTIVE, "Facility is not active");
    878 #endif
    879 
    880     /* MacOSX specific errnos */
    881 #ifdef EAUTH
    882     inscode(d, ds, de, "EAUTH", EAUTH, "Authentication error");
    883 #endif
    884 #ifdef EBADARCH
    885     inscode(d, ds, de, "EBADARCH", EBADARCH, "Bad CPU type in executable");
    886 #endif
    887 #ifdef EBADEXEC
    888     inscode(d, ds, de, "EBADEXEC", EBADEXEC, "Bad executable (or shared library)");
    889 #endif
    890 #ifdef EBADMACHO
    891     inscode(d, ds, de, "EBADMACHO", EBADMACHO, "Malformed Mach-o file");
    892 #endif
    893 #ifdef EBADRPC
    894     inscode(d, ds, de, "EBADRPC", EBADRPC, "RPC struct is bad");
    895 #endif
    896 #ifdef EDEVERR
    897     inscode(d, ds, de, "EDEVERR", EDEVERR, "Device error");
    898 #endif
    899 #ifdef EFTYPE
    900     inscode(d, ds, de, "EFTYPE", EFTYPE, "Inappropriate file type or format");
    901 #endif
    902 #ifdef ENEEDAUTH
    903     inscode(d, ds, de, "ENEEDAUTH", ENEEDAUTH, "Need authenticator");
    904 #endif
    905 #ifdef ENOATTR
    906     inscode(d, ds, de, "ENOATTR", ENOATTR, "Attribute not found");
    907 #endif
    908 #ifdef ENOPOLICY
    909     inscode(d, ds, de, "ENOPOLICY", ENOPOLICY, "Policy not found");
    910 #endif
    911 #ifdef EPROCLIM
    912     inscode(d, ds, de, "EPROCLIM", EPROCLIM, "Too many processes");
    913 #endif
    914 #ifdef EPROCUNAVAIL
    915     inscode(d, ds, de, "EPROCUNAVAIL", EPROCUNAVAIL, "Bad procedure for program");
    916 #endif
    917 #ifdef EPROGMISMATCH
    918     inscode(d, ds, de, "EPROGMISMATCH", EPROGMISMATCH, "Program version wrong");
    919 #endif
    920 #ifdef EPROGUNAVAIL
    921     inscode(d, ds, de, "EPROGUNAVAIL", EPROGUNAVAIL, "RPC prog. not avail");
    922 #endif
    923 #ifdef EPWROFF
    924     inscode(d, ds, de, "EPWROFF", EPWROFF, "Device power is off");
    925 #endif
    926 #ifdef ERPCMISMATCH
    927     inscode(d, ds, de, "ERPCMISMATCH", ERPCMISMATCH, "RPC version wrong");
    928 #endif
    929 #ifdef ESHLIBVERS
    930     inscode(d, ds, de, "ESHLIBVERS", ESHLIBVERS, "Shared library version mismatch");
    931 #endif
    932 
    933     Py_DECREF(de);
    934     return m;
    935 }
    936