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