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