Changeset View
Changeset View
Standalone View
Standalone View
lib/lib9p/pytest/lerrno.py
- This file was added.
#! /usr/bin/env python | |||||
""" | |||||
Error number definitions for Linux. | |||||
""" | |||||
EPERM = 1 | |||||
ENOENT = 2 | |||||
ESRCH = 3 | |||||
EINTR = 4 | |||||
EIO = 5 | |||||
ENXIO = 6 | |||||
E2BIG = 7 | |||||
ENOEXEC = 8 | |||||
EBADF = 9 | |||||
ECHILD = 10 | |||||
EAGAIN = 11 | |||||
ENOMEM = 12 | |||||
EACCES = 13 | |||||
EFAULT = 14 | |||||
ENOTBLK = 15 | |||||
EBUSY = 16 | |||||
EEXIST = 17 | |||||
EXDEV = 18 | |||||
ENODEV = 19 | |||||
ENOTDIR = 20 | |||||
EISDIR = 21 | |||||
EINVAL = 22 | |||||
ENFILE = 23 | |||||
EMFILE = 24 | |||||
ENOTTY = 25 | |||||
ETXTBSY = 26 | |||||
EFBIG = 27 | |||||
ENOSPC = 28 | |||||
ESPIPE = 29 | |||||
EROFS = 30 | |||||
EMLINK = 31 | |||||
EPIPE = 32 | |||||
EDOM = 33 | |||||
ERANGE = 34 | |||||
EDEADLK = 35 | |||||
ENAMETOOLONG = 36 | |||||
ENOLCK = 37 | |||||
ENOSYS = 38 | |||||
ENOTEMPTY = 39 | |||||
ELOOP = 40 | |||||
# 41 unused | |||||
ENOMSG = 42 | |||||
EIDRM = 43 | |||||
ECHRNG = 44 | |||||
EL2NSYNC = 45 | |||||
EL3HLT = 46 | |||||
EL3RST = 47 | |||||
ELNRNG = 48 | |||||
EUNATCH = 49 | |||||
ENOCSI = 50 | |||||
EL2HLT = 51 | |||||
EBADE = 52 | |||||
EBADR = 53 | |||||
EXFULL = 54 | |||||
ENOANO = 55 | |||||
EBADRQC = 56 | |||||
EBADSLT = 57 | |||||
# 58 unused | |||||
EBFONT = 59 | |||||
ENOSTR = 60 | |||||
ENODATA = 61 | |||||
ETIME = 62 | |||||
ENOSR = 63 | |||||
ENONET = 64 | |||||
ENOPKG = 65 | |||||
EREMOTE = 66 | |||||
ENOLINK = 67 | |||||
EADV = 68 | |||||
ESRMNT = 69 | |||||
ECOMM = 70 | |||||
EPROTO = 71 | |||||
EMULTIHOP = 72 | |||||
EDOTDOT = 73 | |||||
EBADMSG = 74 | |||||
EOVERFLOW = 75 | |||||
ENOTUNIQ = 76 | |||||
EBADFD = 77 | |||||
EREMCHG = 78 | |||||
ELIBACC = 79 | |||||
ELIBBAD = 80 | |||||
ELIBSCN = 81 | |||||
ELIBMAX = 82 | |||||
ELIBEXEC = 83 | |||||
EILSEQ = 84 | |||||
ERESTART = 85 | |||||
ESTRPIPE = 86 | |||||
EUSERS = 87 | |||||
ENOTSOCK = 88 | |||||
EDESTADDRREQ = 89 | |||||
EMSGSIZE = 90 | |||||
EPROTOTYPE = 91 | |||||
ENOPROTOOPT = 92 | |||||
EPROTONOSUPPORT = 93 | |||||
ESOCKTNOSUPPORT = 94 | |||||
EOPNOTSUPP = 95 | |||||
EPFNOSUPPORT = 96 | |||||
EAFNOSUPPORT = 97 | |||||
EADDRINUSE = 98 | |||||
EADDRNOTAVAIL = 99 | |||||
ENETDOWN = 100 | |||||
ENETUNREACH = 101 | |||||
ENETRESET = 102 | |||||
ECONNABORTED = 103 | |||||
ECONNRESET = 104 | |||||
ENOBUFS = 105 | |||||
EISCONN = 106 | |||||
ENOTCONN = 107 | |||||
ESHUTDOWN = 108 | |||||
ETOOMANYREFS = 109 | |||||
ETIMEDOUT = 110 | |||||
ECONNREFUSED = 111 | |||||
EHOSTDOWN = 112 | |||||
EHOSTUNREACH = 113 | |||||
EALREADY = 114 | |||||
EINPROGRESS = 115 | |||||
ESTALE = 116 | |||||
EUCLEAN = 117 | |||||
ENOTNAM = 118 | |||||
ENAVAIL = 119 | |||||
EISNAM = 120 | |||||
EREMOTEIO = 121 | |||||
EDQUOT = 122 | |||||
ENOMEDIUM = 123 | |||||
EMEDIUMTYPE = 124 | |||||
ECANCELED = 125 | |||||
ENOKEY = 126 | |||||
EKEYEXPIRED = 127 | |||||
EKEYREVOKED = 128 | |||||
EKEYREJECTED = 129 | |||||
EOWNERDEAD = 130 | |||||
ENOTRECOVERABLE = 131 | |||||
ERFKILL = 132 | |||||
EHWPOISON = 133 | |||||
_strerror = { | |||||
EPERM: 'Permission denied', | |||||
ENOENT: 'No such file or directory', | |||||
ESRCH: 'No such process', | |||||
EINTR: 'Interrupted system call', | |||||
EIO: 'Input/output error', | |||||
ENXIO: 'Device not configured', | |||||
E2BIG: 'Argument list too long', | |||||
ENOEXEC: 'Exec format error', | |||||
EBADF: 'Bad file descriptor', | |||||
ECHILD: 'No child processes', | |||||
EAGAIN: 'Resource temporarily unavailable', | |||||
ENOMEM: 'Cannot allocate memory', | |||||
EACCES: 'Permission denied', | |||||
EFAULT: 'Bad address', | |||||
ENOTBLK: 'Block device required', | |||||
EBUSY: 'Device busy', | |||||
EEXIST: 'File exists', | |||||
EXDEV: 'Cross-device link', | |||||
ENODEV: 'Operation not supported by device', | |||||
ENOTDIR: 'Not a directory', | |||||
EISDIR: 'Is a directory', | |||||
EINVAL: 'Invalid argument', | |||||
ENFILE: 'Too many open files in system', | |||||
EMFILE: 'Too many open files', | |||||
ENOTTY: 'Inappropriate ioctl for device', | |||||
ETXTBSY: 'Text file busy', | |||||
EFBIG: 'File too large', | |||||
ENOSPC: 'No space left on device', | |||||
ESPIPE: 'Illegal seek', | |||||
EROFS: 'Read-only filesystem', | |||||
EMLINK: 'Too many links', | |||||
EPIPE: 'Broken pipe', | |||||
EDOM: 'Numerical argument out of domain', | |||||
ERANGE: 'Result too large', | |||||
EDEADLK: 'Resource deadlock avoided', | |||||
ENAMETOOLONG: 'File name too long', | |||||
ENOLCK: 'No locks available', | |||||
ENOSYS: 'Function not implemented', | |||||
ENOTEMPTY: 'Directory not empty', | |||||
ELOOP: 'Too many levels of symbolic links', | |||||
ENOMSG: 'No message of desired type', | |||||
EIDRM: 'Identifier removed', | |||||
ECHRNG: 'Channel number out of range', | |||||
EL2NSYNC: 'Level 2 not synchronized', | |||||
EL3HLT: 'Level 3 halted', | |||||
EL3RST: 'Level 3 reset', | |||||
ELNRNG: 'Link number out of range', | |||||
EUNATCH: 'Protocol driver not attached', | |||||
ENOCSI: 'No CSI structure available', | |||||
EL2HLT: 'Level 2 halted', | |||||
EBADE: 'Invalid exchange', | |||||
EBADR: 'Invalid request descriptor', | |||||
EXFULL: 'Exchange full', | |||||
ENOANO: 'No anode', | |||||
EBADRQC: 'Invalid request code', | |||||
EBADSLT: 'Invalid slot', | |||||
EBFONT: 'Bad font file format', | |||||
ENOSTR: 'Device not a stream', | |||||
ENODATA: 'No data available', | |||||
ETIME: 'Timer expired', | |||||
ENOSR: 'Out of streams resources', | |||||
ENONET: 'Machine is not on the network', | |||||
ENOPKG: 'Package not installed', | |||||
EREMOTE: 'Object is remote', | |||||
ENOLINK: 'Link has been severed', | |||||
EADV: 'Advertise error', | |||||
ESRMNT: 'Srmount error', | |||||
ECOMM: 'Communication error on send', | |||||
EPROTO: 'Protocol error', | |||||
EMULTIHOP: 'Multihop attempted', | |||||
EDOTDOT: 'RFS specific error', | |||||
EBADMSG: 'Bad message', | |||||
EOVERFLOW: 'Value too large for defined data type', | |||||
ENOTUNIQ: 'Name not unique on network', | |||||
EBADFD: 'File descriptor in bad state', | |||||
EREMCHG: 'Remote address changed', | |||||
ELIBACC: 'Can not access a needed shared library', | |||||
ELIBBAD: 'Accessing a corrupted shared library', | |||||
ELIBSCN: '.lib section in a.out corrupted', | |||||
ELIBMAX: 'Attempting to link in too many shared libraries', | |||||
ELIBEXEC: 'Cannot exec a shared library directly', | |||||
EILSEQ: 'Invalid or incomplete multibyte or wide character', | |||||
ERESTART: 'Interrupted system call should be restarted', | |||||
ESTRPIPE: 'Streams pipe error', | |||||
EUSERS: 'Too many users', | |||||
ENOTSOCK: 'Socket operation on non-socket', | |||||
EDESTADDRREQ: 'Destination address required', | |||||
EMSGSIZE: 'Message too long', | |||||
EPROTOTYPE: 'Protocol wrong type for socket', | |||||
ENOPROTOOPT: 'Protocol not available', | |||||
EPROTONOSUPPORT: 'Protocol not supported', | |||||
ESOCKTNOSUPPORT: 'Socket type not supported', | |||||
EOPNOTSUPP: 'Operation not supported', | |||||
EPFNOSUPPORT: 'Protocol family not supported', | |||||
EAFNOSUPPORT: 'Address family not supported by protocol', | |||||
EADDRINUSE: 'Address already in use', | |||||
EADDRNOTAVAIL: 'Cannot assign requested address', | |||||
ENETDOWN: 'Network is down', | |||||
ENETUNREACH: 'Network is unreachable', | |||||
ENETRESET: 'Network dropped connection on reset', | |||||
ECONNABORTED: 'Software caused connection abort', | |||||
ECONNRESET: 'Connection reset by peer', | |||||
ENOBUFS: 'No buffer space available', | |||||
EISCONN: 'Transport endpoint is already connected', | |||||
ENOTCONN: 'Transport endpoint is not connected', | |||||
ESHUTDOWN: 'Cannot send after transport endpoint shutdown', | |||||
ETOOMANYREFS: 'Too many references: cannot splice', | |||||
ETIMEDOUT: 'Connection timed out', | |||||
ECONNREFUSED: 'Connection refused', | |||||
EHOSTDOWN: 'Host is down', | |||||
EHOSTUNREACH: 'No route to host', | |||||
EALREADY: 'Operation already in progress', | |||||
EINPROGRESS: 'Operation now in progress', | |||||
ESTALE: 'Stale file handle', | |||||
EUCLEAN: 'Structure needs cleaning', | |||||
ENOTNAM: 'Not a XENIX named type file', | |||||
ENAVAIL: 'No XENIX semaphores available', | |||||
EISNAM: 'Is a named type file', | |||||
EREMOTEIO: 'Remote I/O error', | |||||
EDQUOT: 'Quota exceeded', | |||||
ENOMEDIUM: 'No medium found', | |||||
EMEDIUMTYPE: 'Wrong medium type', | |||||
ECANCELED: 'Operation canceled', | |||||
ENOKEY: 'Required key not available', | |||||
EKEYEXPIRED: 'Key has expired', | |||||
EKEYREVOKED: 'Key has been revoked', | |||||
EKEYREJECTED: 'Key was rejected by service', | |||||
EOWNERDEAD: 'Owner died', | |||||
ENOTRECOVERABLE: 'State not recoverable', | |||||
ERFKILL: 'Operation not possible due to RF-kill', | |||||
EHWPOISON: 'Memory page has hardware error', | |||||
} | |||||
def strerror(errnum): | |||||
""" | |||||
Translate Linux errno to string. | |||||
>>> strerror(ENOKEY) | |||||
'Required key not available' | |||||
>>> strerror(41) | |||||
'Unknown error 41' | |||||
""" | |||||
ret = _strerror.get(errnum) | |||||
if ret: | |||||
return ret | |||||
return 'Unknown error {0}'.format(errnum) | |||||
if __name__ == '__main__': | |||||
import doctest | |||||
doctest.testmod() |