const std = @import("std"); pub const SystemErrno = enum(u8) { SUCCESS = 0, 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, EWOULDBLOCK = 41, 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, EDEADLOCK = 58, 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, /// For Linux, EOPNOTSUPP is the real value /// but it's ~the same and is incompatible across operating systems /// https://lists.gnu.org/archive/html/bug-glibc/2002-08/msg00017.html ENOTSUP = 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, pub const max = 134; const LabelMap = std.EnumMap(SystemErrno, []const u8); pub const labels: LabelMap = brk: { var map: LabelMap = LabelMap.initFull(""); map.put(.EPERM, "Operation not permitted"); map.put(.ENOENT, "No such file or directory"); map.put(.ESRCH, "No such process"); map.put(.EINTR, "Interrupted system call"); map.put(.EIO, "I/O error"); map.put(.ENXIO, "No such device or address"); map.put(.E2BIG, "Argument list too long"); map.put(.ENOEXEC, "Exec format error"); map.put(.EBADF, "Bad file number"); map.put(.ECHILD, "No child processes"); map.put(.EAGAIN, "Try again"); map.put(.ENOMEM, "Out of memory"); map.put(.EACCES, "Permission denied"); map.put(.EFAULT, "Bad address"); map.put(.ENOTBLK, "Block device required"); map.put(.EBUSY, "Device or resource busy"); map.put(.EEXIST, "File or folder exists"); map.put(.EXDEV, "Cross-device link"); map.put(.ENODEV, "No such device"); map.put(.ENOTDIR, "Not a directory"); map.put(.EISDIR, "Is a directory"); map.put(.EINVAL, "Invalid argument"); map.put(.ENFILE, "File table overflow"); map.put(.EMFILE, "Too many open files"); map.put(.ENOTTY, "Not a typewriter"); map.put(.ETXTBSY, "Text file busy"); map.put(.EFBIG, "File too large"); map.put(.ENOSPC, "No space left on device"); map.put(.ESPIPE, "Illegal seek"); map.put(.EROFS, "Read-only file system"); map.put(.EMLINK, "Too many links"); map.put(.EPIPE, "Broken pipe"); map.put(.EDOM, "Math argument out of domain of func"); map.put(.ERANGE, "Math result not representable"); map.put(.EDEADLK, "Resource deadlock would occur"); map.put(.ENAMETOOLONG, "File name too long"); map.put(.ENOLCK, "No record locks available"); map.put(.ENOSYS, "Function not implemented"); map.put(.ENOTEMPTY, "Directory not empty"); map.put(.ELOOP, "Too many symbolic links encountered"); map.put(.ENOMSG, "No message of desired type"); map.put(.EIDRM, "Identifier removed"); map.put(.ECHRNG, "Channel number out of range"); map.put(.EL2NSYNC, "Level 2 not synchronized"); map.put(.EL3HLT, "Level 3 halted"); map.put(.EL3RST, "Level 3 reset"); map.put(.ELNRNG, "Link number out of range"); map.put(.EUNATCH, "Protocol driver not attached"); map.put(.ENOCSI, "No CSI structure available"); map.put(.EL2HLT, "Level 2 halted"); map.put(.EBADE, "Invalid exchange"); map.put(.EBADR, "Invalid request descriptor"); map.put(.EXFULL, "Exchange full"); map.put(.ENOANO, "No anode"); map.put(.EBADRQC, "Invalid request code"); map.put(.EBADSLT, "Invalid slot"); map.put(.EBFONT, "Bad font file format"); map.put(.ENOSTR, "Device not a stream"); map.put(.ENODATA, "No data available"); map.put(.ETIME, "Timer expired"); map.put(.ENOSR, "Out of streams resources"); map.put(.ENONET, "Machine is not on the network"); map.put(.ENOPKG, "Package not installed"); map.put(.EREMOTE, "Object is remote"); map.put(.ENOLINK, "Link has been severed"); map.put(.EADV, "Advertise error"); map.put(.ESRMNT, "Srmount error"); map.put(.ECOMM, "Communication error on send"); map.put(.EPROTO, "Protocol error"); map.put(.EMULTIHOP, "Multihop attempted"); map.put(.EDOTDOT, "RFS specific error"); map.put(.EBADMSG, "Not a data message"); map.put(.EOVERFLOW, "Value too large for defined data type"); map.put(.ENOTUNIQ, "Name not unique on network"); map.put(.EBADFD, "File descriptor in bad state"); map.put(.EREMCHG, "Remote address changed"); map.put(.ELIBACC, "Can not access a needed shared library"); map.put(.ELIBBAD, "Accessing a corrupted shared library"); map.put(.ELIBSCN, "lib section in a.out corrupted"); map.put(.ELIBMAX, "Attempting to link in too many shared libraries"); map.put(.ELIBEXEC, "Cannot exec a shared library directly"); map.put(.EILSEQ, "Illegal byte sequence"); map.put(.ERESTART, "Interrupted system call should be restarted"); map.put(.ESTRPIPE, "Streams pipe error"); map.put(.EUSERS, "Too many users"); map.put(.ENOTSOCK, "Socket operation on non-socket"); map.put(.EDESTADDRREQ, "Destination address required"); map.put(.EMSGSIZE, "Message too long"); map.put(.EPROTOTYPE, "Protocol wrong type for socket"); map.put(.ENOPROTOOPT, "Protocol not available"); map.put(.EPROTONOSUPPORT, "Protocol not supported"); map.put(.ESOCKTNOSUPPORT, "Socket type not supported"); map.put(.ENOTSUP, "Operation not supported on transport endpoint"); map.put(.EPFNOSUPPORT, "Protocol family not supported"); map.put(.EAFNOSUPPORT, "Address family not supported by protocol"); map.put(.EADDRINUSE, "Address already in use"); map.put(.EADDRNOTAVAIL, "Cannot assign requested address"); map.put(.ENETDOWN, "Network is down"); map.put(.ENETUNREACH, "Network is unreachable"); map.put(.ENETRESET, "Network dropped connection because of reset"); map.put(.ECONNABORTED, "Software caused connection abort"); map.put(.ECONNRESET, "Connection reset by peer"); map.put(.ENOBUFS, "No buffer space available"); map.put(.EISCONN, "Transport endpoint is already connected"); map.put(.ENOTCONN, "Transport endpoint is not connected"); map.put(.ESHUTDOWN, "Cannot send after transport endpoint shutdown"); map.put(.ETOOMANYREFS, "Too many references: cannot splice"); map.put(.ETIMEDOUT, "Connection timed out"); map.put(.ECONNREFUSED, "Connection refused"); map.put(.EHOSTDOWN, "Host is down"); map.put(.EHOSTUNREACH, "No route to host"); map.put(.EALREADY, "Operation already in progress"); map.put(.EINPROGRESS, "Operation now in progress"); map.put(.ESTALE, "Stale NFS file handle"); map.put(.EUCLEAN, "Structure needs cleaning"); map.put(.ENOTNAM, "Not a XENIX named type file"); map.put(.ENAVAIL, "No XENIX semaphores available"); map.put(.EISNAM, "Is a named type file"); map.put(.EREMOTEIO, "Remote I/O error"); map.put(.EDQUOT, "Quota exceeded"); map.put(.ENOMEDIUM, "No medium found"); map.put(.EMEDIUMTYPE, "Wrong medium type"); map.put(.ECANCELED, "Operation Canceled"); map.put(.ENOKEY, "Required key not available"); map.put(.EKEYEXPIRED, "Key has expired"); map.put(.EKEYREVOKED, "Key has been revoked"); map.put(.EKEYREJECTED, "Key was rejected by service"); map.put(.EOWNERDEAD, "Owner died"); map.put(.ENOTRECOVERABLE, "State not recoverable"); break :brk map; }; };