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