xref: /freebsd-src/contrib/lib9p/pytest/lerrno.py (revision 134e17798c9af53632b372348ab828e75e65bf46)
1*134e1779SJakub Wojciech Klama#! /usr/bin/env python
2*134e1779SJakub Wojciech Klama
3*134e1779SJakub Wojciech Klama"""
4*134e1779SJakub Wojciech KlamaError number definitions for Linux.
5*134e1779SJakub Wojciech Klama"""
6*134e1779SJakub Wojciech Klama
7*134e1779SJakub Wojciech KlamaEPERM =                 1
8*134e1779SJakub Wojciech KlamaENOENT =                2
9*134e1779SJakub Wojciech KlamaESRCH =                 3
10*134e1779SJakub Wojciech KlamaEINTR =                 4
11*134e1779SJakub Wojciech KlamaEIO =                   5
12*134e1779SJakub Wojciech KlamaENXIO =                 6
13*134e1779SJakub Wojciech KlamaE2BIG =                 7
14*134e1779SJakub Wojciech KlamaENOEXEC =               8
15*134e1779SJakub Wojciech KlamaEBADF =                 9
16*134e1779SJakub Wojciech KlamaECHILD =                10
17*134e1779SJakub Wojciech KlamaEAGAIN =                11
18*134e1779SJakub Wojciech KlamaENOMEM =                12
19*134e1779SJakub Wojciech KlamaEACCES =                13
20*134e1779SJakub Wojciech KlamaEFAULT =                14
21*134e1779SJakub Wojciech KlamaENOTBLK =               15
22*134e1779SJakub Wojciech KlamaEBUSY =                 16
23*134e1779SJakub Wojciech KlamaEEXIST =                17
24*134e1779SJakub Wojciech KlamaEXDEV =                 18
25*134e1779SJakub Wojciech KlamaENODEV =                19
26*134e1779SJakub Wojciech KlamaENOTDIR =               20
27*134e1779SJakub Wojciech KlamaEISDIR =                21
28*134e1779SJakub Wojciech KlamaEINVAL =                22
29*134e1779SJakub Wojciech KlamaENFILE =                23
30*134e1779SJakub Wojciech KlamaEMFILE =                24
31*134e1779SJakub Wojciech KlamaENOTTY =                25
32*134e1779SJakub Wojciech KlamaETXTBSY =               26
33*134e1779SJakub Wojciech KlamaEFBIG =                 27
34*134e1779SJakub Wojciech KlamaENOSPC =                28
35*134e1779SJakub Wojciech KlamaESPIPE =                29
36*134e1779SJakub Wojciech KlamaEROFS =                 30
37*134e1779SJakub Wojciech KlamaEMLINK =                31
38*134e1779SJakub Wojciech KlamaEPIPE =                 32
39*134e1779SJakub Wojciech KlamaEDOM =                  33
40*134e1779SJakub Wojciech KlamaERANGE =                34
41*134e1779SJakub Wojciech KlamaEDEADLK =               35
42*134e1779SJakub Wojciech KlamaENAMETOOLONG =          36
43*134e1779SJakub Wojciech KlamaENOLCK =                37
44*134e1779SJakub Wojciech KlamaENOSYS =                38
45*134e1779SJakub Wojciech KlamaENOTEMPTY =             39
46*134e1779SJakub Wojciech KlamaELOOP =                 40
47*134e1779SJakub Wojciech Klama#                       41 unused
48*134e1779SJakub Wojciech KlamaENOMSG =                42
49*134e1779SJakub Wojciech KlamaEIDRM =                 43
50*134e1779SJakub Wojciech KlamaECHRNG =                44
51*134e1779SJakub Wojciech KlamaEL2NSYNC =              45
52*134e1779SJakub Wojciech KlamaEL3HLT =                46
53*134e1779SJakub Wojciech KlamaEL3RST =                47
54*134e1779SJakub Wojciech KlamaELNRNG =                48
55*134e1779SJakub Wojciech KlamaEUNATCH =               49
56*134e1779SJakub Wojciech KlamaENOCSI =                50
57*134e1779SJakub Wojciech KlamaEL2HLT =                51
58*134e1779SJakub Wojciech KlamaEBADE =                 52
59*134e1779SJakub Wojciech KlamaEBADR =                 53
60*134e1779SJakub Wojciech KlamaEXFULL =                54
61*134e1779SJakub Wojciech KlamaENOANO =                55
62*134e1779SJakub Wojciech KlamaEBADRQC =               56
63*134e1779SJakub Wojciech KlamaEBADSLT =               57
64*134e1779SJakub Wojciech Klama#                       58 unused
65*134e1779SJakub Wojciech KlamaEBFONT =                59
66*134e1779SJakub Wojciech KlamaENOSTR =                60
67*134e1779SJakub Wojciech KlamaENODATA =               61
68*134e1779SJakub Wojciech KlamaETIME =                 62
69*134e1779SJakub Wojciech KlamaENOSR =                 63
70*134e1779SJakub Wojciech KlamaENONET =                64
71*134e1779SJakub Wojciech KlamaENOPKG =                65
72*134e1779SJakub Wojciech KlamaEREMOTE =               66
73*134e1779SJakub Wojciech KlamaENOLINK =               67
74*134e1779SJakub Wojciech KlamaEADV =                  68
75*134e1779SJakub Wojciech KlamaESRMNT =                69
76*134e1779SJakub Wojciech KlamaECOMM =                 70
77*134e1779SJakub Wojciech KlamaEPROTO =                71
78*134e1779SJakub Wojciech KlamaEMULTIHOP =             72
79*134e1779SJakub Wojciech KlamaEDOTDOT =               73
80*134e1779SJakub Wojciech KlamaEBADMSG =               74
81*134e1779SJakub Wojciech KlamaEOVERFLOW =             75
82*134e1779SJakub Wojciech KlamaENOTUNIQ =              76
83*134e1779SJakub Wojciech KlamaEBADFD =                77
84*134e1779SJakub Wojciech KlamaEREMCHG =               78
85*134e1779SJakub Wojciech KlamaELIBACC =               79
86*134e1779SJakub Wojciech KlamaELIBBAD =               80
87*134e1779SJakub Wojciech KlamaELIBSCN =               81
88*134e1779SJakub Wojciech KlamaELIBMAX =               82
89*134e1779SJakub Wojciech KlamaELIBEXEC =              83
90*134e1779SJakub Wojciech KlamaEILSEQ =                84
91*134e1779SJakub Wojciech KlamaERESTART =              85
92*134e1779SJakub Wojciech KlamaESTRPIPE =              86
93*134e1779SJakub Wojciech KlamaEUSERS =                87
94*134e1779SJakub Wojciech KlamaENOTSOCK =              88
95*134e1779SJakub Wojciech KlamaEDESTADDRREQ =          89
96*134e1779SJakub Wojciech KlamaEMSGSIZE =              90
97*134e1779SJakub Wojciech KlamaEPROTOTYPE =            91
98*134e1779SJakub Wojciech KlamaENOPROTOOPT =           92
99*134e1779SJakub Wojciech KlamaEPROTONOSUPPORT =       93
100*134e1779SJakub Wojciech KlamaESOCKTNOSUPPORT =       94
101*134e1779SJakub Wojciech KlamaEOPNOTSUPP =            95
102*134e1779SJakub Wojciech KlamaEPFNOSUPPORT =          96
103*134e1779SJakub Wojciech KlamaEAFNOSUPPORT =          97
104*134e1779SJakub Wojciech KlamaEADDRINUSE =            98
105*134e1779SJakub Wojciech KlamaEADDRNOTAVAIL =         99
106*134e1779SJakub Wojciech KlamaENETDOWN =              100
107*134e1779SJakub Wojciech KlamaENETUNREACH =           101
108*134e1779SJakub Wojciech KlamaENETRESET =             102
109*134e1779SJakub Wojciech KlamaECONNABORTED =          103
110*134e1779SJakub Wojciech KlamaECONNRESET =            104
111*134e1779SJakub Wojciech KlamaENOBUFS =               105
112*134e1779SJakub Wojciech KlamaEISCONN =               106
113*134e1779SJakub Wojciech KlamaENOTCONN =              107
114*134e1779SJakub Wojciech KlamaESHUTDOWN =             108
115*134e1779SJakub Wojciech KlamaETOOMANYREFS =          109
116*134e1779SJakub Wojciech KlamaETIMEDOUT =             110
117*134e1779SJakub Wojciech KlamaECONNREFUSED =          111
118*134e1779SJakub Wojciech KlamaEHOSTDOWN =             112
119*134e1779SJakub Wojciech KlamaEHOSTUNREACH =          113
120*134e1779SJakub Wojciech KlamaEALREADY =              114
121*134e1779SJakub Wojciech KlamaEINPROGRESS =           115
122*134e1779SJakub Wojciech KlamaESTALE =                116
123*134e1779SJakub Wojciech KlamaEUCLEAN =               117
124*134e1779SJakub Wojciech KlamaENOTNAM =               118
125*134e1779SJakub Wojciech KlamaENAVAIL =               119
126*134e1779SJakub Wojciech KlamaEISNAM =                120
127*134e1779SJakub Wojciech KlamaEREMOTEIO =             121
128*134e1779SJakub Wojciech KlamaEDQUOT =                122
129*134e1779SJakub Wojciech KlamaENOMEDIUM =             123
130*134e1779SJakub Wojciech KlamaEMEDIUMTYPE =           124
131*134e1779SJakub Wojciech KlamaECANCELED =             125
132*134e1779SJakub Wojciech KlamaENOKEY =                126
133*134e1779SJakub Wojciech KlamaEKEYEXPIRED =           127
134*134e1779SJakub Wojciech KlamaEKEYREVOKED =           128
135*134e1779SJakub Wojciech KlamaEKEYREJECTED =          129
136*134e1779SJakub Wojciech KlamaEOWNERDEAD =            130
137*134e1779SJakub Wojciech KlamaENOTRECOVERABLE =       131
138*134e1779SJakub Wojciech KlamaERFKILL =               132
139*134e1779SJakub Wojciech KlamaEHWPOISON =             133
140*134e1779SJakub Wojciech Klama
141*134e1779SJakub Wojciech Klama_strerror = {
142*134e1779SJakub Wojciech Klama    EPERM:              'Permission denied',
143*134e1779SJakub Wojciech Klama    ENOENT:             'No such file or directory',
144*134e1779SJakub Wojciech Klama    ESRCH:              'No such process',
145*134e1779SJakub Wojciech Klama    EINTR:              'Interrupted system call',
146*134e1779SJakub Wojciech Klama    EIO:                'Input/output error',
147*134e1779SJakub Wojciech Klama    ENXIO:              'Device not configured',
148*134e1779SJakub Wojciech Klama    E2BIG:              'Argument list too long',
149*134e1779SJakub Wojciech Klama    ENOEXEC:            'Exec format error',
150*134e1779SJakub Wojciech Klama    EBADF:              'Bad file descriptor',
151*134e1779SJakub Wojciech Klama    ECHILD:             'No child processes',
152*134e1779SJakub Wojciech Klama    EAGAIN:             'Resource temporarily unavailable',
153*134e1779SJakub Wojciech Klama    ENOMEM:             'Cannot allocate memory',
154*134e1779SJakub Wojciech Klama    EACCES:             'Permission denied',
155*134e1779SJakub Wojciech Klama    EFAULT:             'Bad address',
156*134e1779SJakub Wojciech Klama    ENOTBLK:            'Block device required',
157*134e1779SJakub Wojciech Klama    EBUSY:              'Device busy',
158*134e1779SJakub Wojciech Klama    EEXIST:             'File exists',
159*134e1779SJakub Wojciech Klama    EXDEV:              'Cross-device link',
160*134e1779SJakub Wojciech Klama    ENODEV:             'Operation not supported by device',
161*134e1779SJakub Wojciech Klama    ENOTDIR:            'Not a directory',
162*134e1779SJakub Wojciech Klama    EISDIR:             'Is a directory',
163*134e1779SJakub Wojciech Klama    EINVAL:             'Invalid argument',
164*134e1779SJakub Wojciech Klama    ENFILE:             'Too many open files in system',
165*134e1779SJakub Wojciech Klama    EMFILE:             'Too many open files',
166*134e1779SJakub Wojciech Klama    ENOTTY:             'Inappropriate ioctl for device',
167*134e1779SJakub Wojciech Klama    ETXTBSY:            'Text file busy',
168*134e1779SJakub Wojciech Klama    EFBIG:              'File too large',
169*134e1779SJakub Wojciech Klama    ENOSPC:             'No space left on device',
170*134e1779SJakub Wojciech Klama    ESPIPE:             'Illegal seek',
171*134e1779SJakub Wojciech Klama    EROFS:              'Read-only filesystem',
172*134e1779SJakub Wojciech Klama    EMLINK:             'Too many links',
173*134e1779SJakub Wojciech Klama    EPIPE:              'Broken pipe',
174*134e1779SJakub Wojciech Klama    EDOM:               'Numerical argument out of domain',
175*134e1779SJakub Wojciech Klama    ERANGE:             'Result too large',
176*134e1779SJakub Wojciech Klama    EDEADLK:            'Resource deadlock avoided',
177*134e1779SJakub Wojciech Klama    ENAMETOOLONG:       'File name too long',
178*134e1779SJakub Wojciech Klama    ENOLCK:             'No locks available',
179*134e1779SJakub Wojciech Klama    ENOSYS:             'Function not implemented',
180*134e1779SJakub Wojciech Klama    ENOTEMPTY:          'Directory not empty',
181*134e1779SJakub Wojciech Klama    ELOOP:              'Too many levels of symbolic links',
182*134e1779SJakub Wojciech Klama    ENOMSG:             'No message of desired type',
183*134e1779SJakub Wojciech Klama    EIDRM:              'Identifier removed',
184*134e1779SJakub Wojciech Klama    ECHRNG:             'Channel number out of range',
185*134e1779SJakub Wojciech Klama    EL2NSYNC:           'Level 2 not synchronized',
186*134e1779SJakub Wojciech Klama    EL3HLT:             'Level 3 halted',
187*134e1779SJakub Wojciech Klama    EL3RST:             'Level 3 reset',
188*134e1779SJakub Wojciech Klama    ELNRNG:             'Link number out of range',
189*134e1779SJakub Wojciech Klama    EUNATCH:            'Protocol driver not attached',
190*134e1779SJakub Wojciech Klama    ENOCSI:             'No CSI structure available',
191*134e1779SJakub Wojciech Klama    EL2HLT:             'Level 2 halted',
192*134e1779SJakub Wojciech Klama    EBADE:              'Invalid exchange',
193*134e1779SJakub Wojciech Klama    EBADR:              'Invalid request descriptor',
194*134e1779SJakub Wojciech Klama    EXFULL:             'Exchange full',
195*134e1779SJakub Wojciech Klama    ENOANO:             'No anode',
196*134e1779SJakub Wojciech Klama    EBADRQC:            'Invalid request code',
197*134e1779SJakub Wojciech Klama    EBADSLT:            'Invalid slot',
198*134e1779SJakub Wojciech Klama    EBFONT:             'Bad font file format',
199*134e1779SJakub Wojciech Klama    ENOSTR:             'Device not a stream',
200*134e1779SJakub Wojciech Klama    ENODATA:            'No data available',
201*134e1779SJakub Wojciech Klama    ETIME:              'Timer expired',
202*134e1779SJakub Wojciech Klama    ENOSR:              'Out of streams resources',
203*134e1779SJakub Wojciech Klama    ENONET:             'Machine is not on the network',
204*134e1779SJakub Wojciech Klama    ENOPKG:             'Package not installed',
205*134e1779SJakub Wojciech Klama    EREMOTE:            'Object is remote',
206*134e1779SJakub Wojciech Klama    ENOLINK:            'Link has been severed',
207*134e1779SJakub Wojciech Klama    EADV:               'Advertise error',
208*134e1779SJakub Wojciech Klama    ESRMNT:             'Srmount error',
209*134e1779SJakub Wojciech Klama    ECOMM:              'Communication error on send',
210*134e1779SJakub Wojciech Klama    EPROTO:             'Protocol error',
211*134e1779SJakub Wojciech Klama    EMULTIHOP:          'Multihop attempted',
212*134e1779SJakub Wojciech Klama    EDOTDOT:            'RFS specific error',
213*134e1779SJakub Wojciech Klama    EBADMSG:            'Bad message',
214*134e1779SJakub Wojciech Klama    EOVERFLOW:          'Value too large for defined data type',
215*134e1779SJakub Wojciech Klama    ENOTUNIQ:           'Name not unique on network',
216*134e1779SJakub Wojciech Klama    EBADFD:             'File descriptor in bad state',
217*134e1779SJakub Wojciech Klama    EREMCHG:            'Remote address changed',
218*134e1779SJakub Wojciech Klama    ELIBACC:            'Can not access a needed shared library',
219*134e1779SJakub Wojciech Klama    ELIBBAD:            'Accessing a corrupted shared library',
220*134e1779SJakub Wojciech Klama    ELIBSCN:            '.lib section in a.out corrupted',
221*134e1779SJakub Wojciech Klama    ELIBMAX:            'Attempting to link in too many shared libraries',
222*134e1779SJakub Wojciech Klama    ELIBEXEC:           'Cannot exec a shared library directly',
223*134e1779SJakub Wojciech Klama    EILSEQ:             'Invalid or incomplete multibyte or wide character',
224*134e1779SJakub Wojciech Klama    ERESTART:           'Interrupted system call should be restarted',
225*134e1779SJakub Wojciech Klama    ESTRPIPE:           'Streams pipe error',
226*134e1779SJakub Wojciech Klama    EUSERS:             'Too many users',
227*134e1779SJakub Wojciech Klama    ENOTSOCK:           'Socket operation on non-socket',
228*134e1779SJakub Wojciech Klama    EDESTADDRREQ:       'Destination address required',
229*134e1779SJakub Wojciech Klama    EMSGSIZE:           'Message too long',
230*134e1779SJakub Wojciech Klama    EPROTOTYPE:         'Protocol wrong type for socket',
231*134e1779SJakub Wojciech Klama    ENOPROTOOPT:        'Protocol not available',
232*134e1779SJakub Wojciech Klama    EPROTONOSUPPORT:    'Protocol not supported',
233*134e1779SJakub Wojciech Klama    ESOCKTNOSUPPORT:    'Socket type not supported',
234*134e1779SJakub Wojciech Klama    EOPNOTSUPP:         'Operation not supported',
235*134e1779SJakub Wojciech Klama    EPFNOSUPPORT:       'Protocol family not supported',
236*134e1779SJakub Wojciech Klama    EAFNOSUPPORT:       'Address family not supported by protocol',
237*134e1779SJakub Wojciech Klama    EADDRINUSE:         'Address already in use',
238*134e1779SJakub Wojciech Klama    EADDRNOTAVAIL:      'Cannot assign requested address',
239*134e1779SJakub Wojciech Klama    ENETDOWN:           'Network is down',
240*134e1779SJakub Wojciech Klama    ENETUNREACH:        'Network is unreachable',
241*134e1779SJakub Wojciech Klama    ENETRESET:          'Network dropped connection on reset',
242*134e1779SJakub Wojciech Klama    ECONNABORTED:       'Software caused connection abort',
243*134e1779SJakub Wojciech Klama    ECONNRESET:         'Connection reset by peer',
244*134e1779SJakub Wojciech Klama    ENOBUFS:            'No buffer space available',
245*134e1779SJakub Wojciech Klama    EISCONN:            'Transport endpoint is already connected',
246*134e1779SJakub Wojciech Klama    ENOTCONN:           'Transport endpoint is not connected',
247*134e1779SJakub Wojciech Klama    ESHUTDOWN:          'Cannot send after transport endpoint shutdown',
248*134e1779SJakub Wojciech Klama    ETOOMANYREFS:       'Too many references: cannot splice',
249*134e1779SJakub Wojciech Klama    ETIMEDOUT:          'Connection timed out',
250*134e1779SJakub Wojciech Klama    ECONNREFUSED:       'Connection refused',
251*134e1779SJakub Wojciech Klama    EHOSTDOWN:          'Host is down',
252*134e1779SJakub Wojciech Klama    EHOSTUNREACH:       'No route to host',
253*134e1779SJakub Wojciech Klama    EALREADY:           'Operation already in progress',
254*134e1779SJakub Wojciech Klama    EINPROGRESS:        'Operation now in progress',
255*134e1779SJakub Wojciech Klama    ESTALE:             'Stale file handle',
256*134e1779SJakub Wojciech Klama    EUCLEAN:            'Structure needs cleaning',
257*134e1779SJakub Wojciech Klama    ENOTNAM:            'Not a XENIX named type file',
258*134e1779SJakub Wojciech Klama    ENAVAIL:            'No XENIX semaphores available',
259*134e1779SJakub Wojciech Klama    EISNAM:             'Is a named type file',
260*134e1779SJakub Wojciech Klama    EREMOTEIO:          'Remote I/O error',
261*134e1779SJakub Wojciech Klama    EDQUOT:             'Quota exceeded',
262*134e1779SJakub Wojciech Klama    ENOMEDIUM:          'No medium found',
263*134e1779SJakub Wojciech Klama    EMEDIUMTYPE:        'Wrong medium type',
264*134e1779SJakub Wojciech Klama    ECANCELED:          'Operation canceled',
265*134e1779SJakub Wojciech Klama    ENOKEY:             'Required key not available',
266*134e1779SJakub Wojciech Klama    EKEYEXPIRED:        'Key has expired',
267*134e1779SJakub Wojciech Klama    EKEYREVOKED:        'Key has been revoked',
268*134e1779SJakub Wojciech Klama    EKEYREJECTED:       'Key was rejected by service',
269*134e1779SJakub Wojciech Klama    EOWNERDEAD:         'Owner died',
270*134e1779SJakub Wojciech Klama    ENOTRECOVERABLE:    'State not recoverable',
271*134e1779SJakub Wojciech Klama    ERFKILL:            'Operation not possible due to RF-kill',
272*134e1779SJakub Wojciech Klama    EHWPOISON:          'Memory page has hardware error',
273*134e1779SJakub Wojciech Klama}
274*134e1779SJakub Wojciech Klama
275*134e1779SJakub Wojciech Klamadef strerror(errnum):
276*134e1779SJakub Wojciech Klama    """
277*134e1779SJakub Wojciech Klama    Translate Linux errno to string.
278*134e1779SJakub Wojciech Klama
279*134e1779SJakub Wojciech Klama    >>> strerror(ENOKEY)
280*134e1779SJakub Wojciech Klama    'Required key not available'
281*134e1779SJakub Wojciech Klama    >>> strerror(41)
282*134e1779SJakub Wojciech Klama    'Unknown error 41'
283*134e1779SJakub Wojciech Klama    """
284*134e1779SJakub Wojciech Klama    ret = _strerror.get(errnum)
285*134e1779SJakub Wojciech Klama    if ret:
286*134e1779SJakub Wojciech Klama        return ret
287*134e1779SJakub Wojciech Klama    return 'Unknown error {0}'.format(errnum)
288*134e1779SJakub Wojciech Klama
289*134e1779SJakub Wojciech Klamaif __name__ == '__main__':
290*134e1779SJakub Wojciech Klama    import doctest
291*134e1779SJakub Wojciech Klama    doctest.testmod()
292