PageRenderTime 125ms CodeModel.GetById 40ms app.highlight 55ms RepoModel.GetById 16ms app.codeStats 0ms

/Modules/errnomodule.c

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