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
_inscode(PyObject * d,PyObject * de,char * name,int code)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
initerrno(void)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