| // Copyright 2009 The Go Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style |
| // license that can be found in the LICENSE file. |
| |
| package syscall |
| |
| export const ( |
| ENONE=0; |
| EPERM=1; |
| ENOENT=2; |
| ESRCH=3; |
| EINTR=4; |
| EIO=5; |
| ENXIO=6; |
| E2BIG=7; |
| ENOEXEC=8; |
| EBADF=9; |
| ECHILD=10; |
| EDEADLK=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; |
| EAGAIN=35; |
| EINPROGRESS=36; |
| EALREADY=37; |
| ENOTSOCK=38; |
| EDESTADDRREQ=39; |
| EMSGSIZE=40; |
| EPROTOTYPE=41; |
| ENOPROTOOPT=42; |
| EPROTONOSUPPORT=43; |
| ESOCKTNOSUPPORT=44; |
| ENOTSUP=45; |
| EPFNOSUPPORT=46; |
| EAFNOSUPPORT=47; |
| EADDRINUSE=48; |
| EADDRNOTAVAIL=49; |
| ENETDOWN=50; |
| ENETUNREACH=51; |
| ENETRESET=52; |
| ECONNABORTED=53; |
| ECONNRESET=54; |
| ENOBUFS=55; |
| EISCONN=56; |
| ENOTCONN=57; |
| ESHUTDOWN=58; |
| ETOOMANYREFS=59; |
| ETIMEDOUT=60; |
| ECONNREFUSED=61; |
| ELOOP=62; |
| ENAMETOOLONG=63; |
| EHOSTDOWN=64; |
| EHOSTUNREACH=65; |
| ENOTEMPTY=66; |
| EPROCLIM=67; |
| EUSERS=68; |
| EDQUOT=69; |
| ESTALE=70; |
| EREMOTE=71; |
| EBADRPC=72; |
| ERPCMISMATCH=73; |
| EPROGUNAVAIL=74; |
| EPROGMISMATCH=75; |
| EPROCUNAVAIL=76; |
| ENOLCK=77; |
| ENOSYS=78; |
| EFTYPE=79; |
| EAUTH=80; |
| ENEEDAUTH=81; |
| EPWROFF=82; |
| EDEVERR=83; |
| EOVERFLOW=84; |
| EBADEXEC=85; |
| EBADARCH=86; |
| ESHLIBVERS=87; |
| EBADMACHO=88; |
| ECANCELED=89; |
| EIDRM=90; |
| ENOMSG=91; |
| EILSEQ=92; |
| ENOATTR=93; |
| EBADMSG=94; |
| EMULTIHOP=95; |
| ENODATA=96; |
| ENOLINK=97; |
| ENOSR=98; |
| ENOSTR=99; |
| EPROTO=100; |
| ETIME=101; |
| EOPNOTSUPP=102; |
| ELAST=103; |
| ) |
| |
| var error [ELAST]string; |
| |
| func init(){ |
| error[ENONE] = "No error"; |
| error[EPERM] = "Operation not permitted"; |
| error[ENOENT] = "No such file or directory"; |
| error[ESRCH] = "No such process"; |
| error[EINTR] = "Interrupted system call"; |
| error[EIO] = "Input/output error"; |
| error[ENXIO] = "Device not configured"; |
| error[E2BIG] = "Argument list too long"; |
| error[ENOEXEC] = "Exec format error"; |
| error[EBADF] = "Bad file descriptor"; |
| error[ECHILD] = "No child processes"; |
| error[EDEADLK] = "Resource deadlock avoided"; |
| error[ENOMEM] = "Cannot allocate memory"; |
| error[EACCES] = "Permission denied"; |
| error[EFAULT] = "Bad address"; |
| error[ENOTBLK] = "Block device required"; |
| error[EBUSY] = "Device / Resource busy"; |
| error[EEXIST] = "File exists"; |
| error[EXDEV] = "Cross-device link"; |
| error[ENODEV] = "Operation not supported by device"; |
| error[ENOTDIR] = "Not a directory"; |
| error[EISDIR] = "Is a directory"; |
| error[EINVAL] = "Invalid argument"; |
| error[ENFILE] = "Too many open files in system"; |
| error[EMFILE] = "Too many open files"; |
| error[ENOTTY] = "Inappropriate ioctl for device"; |
| error[ETXTBSY] = "Text file busy"; |
| error[EFBIG] = "File too large"; |
| error[ENOSPC] = "No space left on device"; |
| error[ESPIPE] = "Illegal seek"; |
| error[EROFS] = "Read-only file system"; |
| error[EMLINK] = "Too many links"; |
| error[EPIPE] = "Broken pipe"; |
| error[EDOM] = "Numerical argument out of domain"; |
| error[ERANGE] = "Result too large"; |
| error[EAGAIN] = "Resource temporarily unavailable"; |
| error[EINPROGRESS] = "Operation now in progress"; |
| error[EALREADY] = "Operation already in progress"; |
| error[ENOTSOCK] = "Socket operation on non-socket"; |
| error[EDESTADDRREQ] = "Destination address required"; |
| error[EMSGSIZE] = "Message too long"; |
| error[EPROTOTYPE] = "Protocol wrong type for socket"; |
| error[ENOPROTOOPT] = "Protocol not available"; |
| error[EPROTONOSUPPORT] = "Protocol not supported"; |
| error[ESOCKTNOSUPPORT] = "Socket type not supported"; |
| error[ENOTSUP] = "Operation not supported"; |
| error[EPFNOSUPPORT] = "Protocol family not supported"; |
| error[EAFNOSUPPORT] = "Address family not supported by protocol family"; |
| error[EADDRINUSE] = "Address already in use"; |
| error[EADDRNOTAVAIL] = "Can't assign requested address"; |
| error[ENETDOWN] = "Network is down"; |
| error[ENETUNREACH] = "Network is unreachable"; |
| error[ENETRESET] = "Network dropped connection on reset"; |
| error[ECONNABORTED] = "Software caused connection abort"; |
| error[ECONNRESET] = "Connection reset by peer"; |
| error[ENOBUFS] = "No buffer space available"; |
| error[EISCONN] = "Socket is already connected"; |
| error[ENOTCONN] = "Socket is not connected"; |
| error[ESHUTDOWN] = "Can't send after socket shutdown"; |
| error[ETOOMANYREFS] = "Too many references: can't splice"; |
| error[ETIMEDOUT] = "Operation timed out"; |
| error[ECONNREFUSED] = "Connection refused"; |
| error[ELOOP] = "Too many levels of symbolic links"; |
| error[ENAMETOOLONG] = "File name too long"; |
| error[EHOSTDOWN] = "Host is down"; |
| error[EHOSTUNREACH] = "No route to host"; |
| error[ENOTEMPTY] = "Directory not empty"; |
| error[EPROCLIM] = "Too many processes"; |
| error[EUSERS] = "Too many users"; |
| error[EDQUOT] = "Disc quota exceeded"; |
| error[ESTALE] = "Stale NFS file handle"; |
| error[EREMOTE] = "Too many levels of remote in path"; |
| error[EBADRPC] = "RPC struct is bad"; |
| error[ERPCMISMATCH] = "RPC version wrong"; |
| error[EPROGUNAVAIL] = "RPC prog. not avail"; |
| error[EPROGMISMATCH] = "Program version wrong"; |
| error[EPROCUNAVAIL] = "Bad procedure for program"; |
| error[ENOLCK] = "No locks available"; |
| error[ENOSYS] = "Function not implemented"; |
| error[EFTYPE] = "Inappropriate file type or format"; |
| error[EAUTH] = "Authentication error"; |
| error[ENEEDAUTH] = "Need authenticator"; |
| error[EPWROFF] = "Device power is off"; |
| error[EDEVERR] = "Device error, e.g. paper out"; |
| error[EOVERFLOW] = "Value too large to be stored in data type"; |
| error[EBADEXEC] = "Bad executable"; |
| error[EBADARCH] = "Bad CPU type in executable"; |
| error[ESHLIBVERS] = "Shared library version mismatch"; |
| error[EBADMACHO] = "Malformed Macho file"; |
| error[ECANCELED] = "Operation canceled"; |
| error[EIDRM] = "Identifier removed"; |
| error[ENOMSG] = "No message of desired type"; |
| error[EILSEQ] = "Illegal byte sequence"; |
| error[ENOATTR] = "Attribute not found"; |
| error[EBADMSG] = "Bad message"; |
| error[EMULTIHOP] = "Reserved"; |
| error[ENODATA] = "No message available on STREAM"; |
| error[ENOLINK] = "Reserved"; |
| error[ENOSR] = "No STREAM resources"; |
| error[ENOSTR] = "Not a STREAM"; |
| error[EPROTO] = "Protocol error"; |
| error[ETIME] = "STREAM ioctl timeout"; |
| error[EOPNOTSUPP] = "Operation not supported on socket"; |
| error[ELAST] = "Must be equal largest errno"; |
| } |
| |
| func str(val int64) string { // do it here rather than with fmt to avoid dependency |
| if val < 0 { |
| return "-" + str(-val); |
| } |
| var buf [32]byte; // big enough for int64 |
| i := len(buf)-1; |
| for val >= 10 { |
| buf[i] = byte(val%10 + '0'); |
| i--; |
| val /= 10; |
| } |
| buf[i] = byte(val + '0'); |
| return string(buf)[i:len(buf)]; |
| } |
| |
| export func errstr(errno int64) string { |
| if errno < 0 || errno >= len(error) { |
| return "Error " + str(errno) |
| } |
| return error[errno] |
| } |