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