blob: fe981cc55d557e1200f723c1409bf8a2bbea468f [file] [log] [blame]
//===----------------------------------------------------------------------===//
//
// This source file is part of the Swift.org open source project
//
// Copyright (c) 2014 - 2017 Apple Inc. and the Swift project authors
// Licensed under Apache License v2.0 with Runtime Library Exception
//
// See https://swift.org/LICENSE.txt for license information
// See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
//
//===----------------------------------------------------------------------===//
#if (os(macOS) || os(iOS) || os(tvOS) || os(watchOS)) && _runtime(_ObjC)
/// Enumeration describing POSIX error codes.
@objc
public enum POSIXErrorCode : Int32 {
/// Operation not permitted.
case EPERM = 1
/// No such file or directory.
case ENOENT = 2
/// No such process.
case ESRCH = 3
/// Interrupted system call.
case EINTR = 4
/// Input/output error.
case EIO = 5
/// Device not configured.
case ENXIO = 6
/// Argument list too long.
case E2BIG = 7
/// Exec format error.
case ENOEXEC = 8
/// Bad file descriptor.
case EBADF = 9
/// No child processes.
case ECHILD = 10
/// Resource deadlock avoided.
case EDEADLK = 11
/// 11 was EAGAIN.
/// Cannot allocate memory.
case ENOMEM = 12
/// Permission denied.
case EACCES = 13
/// Bad address.
case EFAULT = 14
/// Block device required.
case ENOTBLK = 15
/// Device / Resource busy.
case EBUSY = 16
/// File exists.
case EEXIST = 17
/// Cross-device link.
case EXDEV = 18
/// Operation not supported by device.
case ENODEV = 19
/// Not a directory.
case ENOTDIR = 20
/// Is a directory.
case EISDIR = 21
/// Invalid argument.
case EINVAL = 22
/// Too many open files in system.
case ENFILE = 23
/// Too many open files.
case EMFILE = 24
/// Inappropriate ioctl for device.
case ENOTTY = 25
/// Text file busy.
case ETXTBSY = 26
/// File too large.
case EFBIG = 27
/// No space left on device.
case ENOSPC = 28
/// Illegal seek.
case ESPIPE = 29
/// Read-only file system.
case EROFS = 30
/// Too many links.
case EMLINK = 31
/// Broken pipe.
case EPIPE = 32
/// math software.
/// Numerical argument out of domain.
case EDOM = 33
/// Result too large.
case ERANGE = 34
/// non-blocking and interrupt i/o.
/// Resource temporarily unavailable.
case EAGAIN = 35
/// Operation would block.
public static var EWOULDBLOCK: POSIXErrorCode { return EAGAIN }
/// Operation now in progress.
case EINPROGRESS = 36
/// Operation already in progress.
case EALREADY = 37
/// ipc/network software -- argument errors.
/// Socket operation on non-socket.
case ENOTSOCK = 38
/// Destination address required.
case EDESTADDRREQ = 39
/// Message too long.
case EMSGSIZE = 40
/// Protocol wrong type for socket.
case EPROTOTYPE = 41
/// Protocol not available.
case ENOPROTOOPT = 42
/// Protocol not supported.
case EPROTONOSUPPORT = 43
/// Socket type not supported.
case ESOCKTNOSUPPORT = 44
/// Operation not supported.
case ENOTSUP = 45
/// Protocol family not supported.
case EPFNOSUPPORT = 46
/// Address family not supported by protocol family.
case EAFNOSUPPORT = 47
/// Address already in use.
case EADDRINUSE = 48
/// Can't assign requested address.
case EADDRNOTAVAIL = 49
/// ipc/network software -- operational errors
/// Network is down.
case ENETDOWN = 50
/// Network is unreachable.
case ENETUNREACH = 51
/// Network dropped connection on reset.
case ENETRESET = 52
/// Software caused connection abort.
case ECONNABORTED = 53
/// Connection reset by peer.
case ECONNRESET = 54
/// No buffer space available.
case ENOBUFS = 55
/// Socket is already connected.
case EISCONN = 56
/// Socket is not connected.
case ENOTCONN = 57
/// Can't send after socket shutdown.
case ESHUTDOWN = 58
/// Too many references: can't splice.
case ETOOMANYREFS = 59
/// Operation timed out.
case ETIMEDOUT = 60
/// Connection refused.
case ECONNREFUSED = 61
/// Too many levels of symbolic links.
case ELOOP = 62
/// File name too long.
case ENAMETOOLONG = 63
/// Host is down.
case EHOSTDOWN = 64
/// No route to host.
case EHOSTUNREACH = 65
/// Directory not empty.
case ENOTEMPTY = 66
/// quotas & mush.
/// Too many processes.
case EPROCLIM = 67
/// Too many users.
case EUSERS = 68
/// Disc quota exceeded.
case EDQUOT = 69
/// Network File System.
/// Stale NFS file handle.
case ESTALE = 70
/// Too many levels of remote in path.
case EREMOTE = 71
/// RPC struct is bad.
case EBADRPC = 72
/// RPC version wrong.
case ERPCMISMATCH = 73
/// RPC prog. not avail.
case EPROGUNAVAIL = 74
/// Program version wrong.
case EPROGMISMATCH = 75
/// Bad procedure for program.
case EPROCUNAVAIL = 76
/// No locks available.
case ENOLCK = 77
/// Function not implemented.
case ENOSYS = 78
/// Inappropriate file type or format.
case EFTYPE = 79
/// Authentication error.
case EAUTH = 80
/// Need authenticator.
case ENEEDAUTH = 81
/// Intelligent device errors.
/// Device power is off.
case EPWROFF = 82
/// Device error, e.g. paper out.
case EDEVERR = 83
/// Value too large to be stored in data type.
case EOVERFLOW = 84
// MARK: Program loading errors.
/// Bad executable.
case EBADEXEC = 85
/// Bad CPU type in executable.
case EBADARCH = 86
/// Shared library version mismatch.
case ESHLIBVERS = 87
/// Malformed Macho file.
case EBADMACHO = 88
/// Operation canceled.
case ECANCELED = 89
/// Identifier removed.
case EIDRM = 90
/// No message of desired type.
case ENOMSG = 91
/// Illegal byte sequence.
case EILSEQ = 92
/// Attribute not found.
case ENOATTR = 93
/// Bad message.
case EBADMSG = 94
/// Reserved.
case EMULTIHOP = 95
/// No message available on STREAM.
case ENODATA = 96
/// Reserved.
case ENOLINK = 97
/// No STREAM resources.
case ENOSR = 98
/// Not a STREAM.
case ENOSTR = 99
/// Protocol error.
case EPROTO = 100
/// STREAM ioctl timeout.
case ETIME = 101
/// No such policy registered.
case ENOPOLICY = 103
/// State not recoverable.
case ENOTRECOVERABLE = 104
/// Previous owner died.
case EOWNERDEAD = 105
/// Interface output queue is full.
case EQFULL = 106
/// Must be equal largest errno.
public static var ELAST: POSIXErrorCode { return EQFULL }
// FIXME: EOPNOTSUPP has different values depending on __DARWIN_UNIX03 and
// KERNEL.
}
#elseif os(Linux) || os(Android)
/// Enumeration describing POSIX error codes.
public enum POSIXErrorCode : Int32 {
/// Operation not permitted.
case EPERM = 1
/// No such file or directory.
case ENOENT = 2
/// No such process.
case ESRCH = 3
/// Interrupted system call.
case EINTR = 4
/// Input/output error.
case EIO = 5
/// Device not configured.
case ENXIO = 6
/// Argument list too long.
case E2BIG = 7
/// Exec format error.
case ENOEXEC = 8
/// Bad file descriptor.
case EBADF = 9
/// No child processes.
case ECHILD = 10
/// Try again.
case EAGAIN = 11
/// Cannot allocate memory.
case ENOMEM = 12
/// Permission denied.
case EACCES = 13
/// Bad address.
case EFAULT = 14
/// Block device required.
case ENOTBLK = 15
/// Device / Resource busy.
case EBUSY = 16
/// File exists.
case EEXIST = 17
/// Cross-device link.
case EXDEV = 18
/// Operation not supported by device.
case ENODEV = 19
/// Not a directory.
case ENOTDIR = 20
/// Is a directory.
case EISDIR = 21
/// Invalid argument.
case EINVAL = 22
/// Too many open files in system.
case ENFILE = 23
/// Too many open files.
case EMFILE = 24
/// Inappropriate ioctl for device.
case ENOTTY = 25
/// Text file busy.
case ETXTBSY = 26
/// File too large.
case EFBIG = 27
/// No space left on device.
case ENOSPC = 28
/// Illegal seek.
case ESPIPE = 29
/// Read-only file system.
case EROFS = 30
/// Too many links.
case EMLINK = 31
/// Broken pipe.
case EPIPE = 32
/// Numerical argument out of domain.
case EDOM = 33
/// Result too large.
case ERANGE = 34
/// Resource deadlock would occur.
case EDEADLK = 35
/// File name too long.
case ENAMETOOLONG = 36
/// No record locks available
case ENOLCK = 37
/// Function not implemented.
case ENOSYS = 38
/// Directory not empty.
case ENOTEMPTY = 39
/// Too many symbolic links encountered
case ELOOP = 40
/// Operation would block.
public static var EWOULDBLOCK: POSIXErrorCode { return .EAGAIN }
/// No message of desired type.
case ENOMSG = 42
/// Identifier removed.
case EIDRM = 43
/// Channel number out of range.
case ECHRNG = 44
/// Level 2 not synchronized.
case EL2NSYNC = 45
/// Level 3 halted
case EL3HLT = 46
/// Level 3 reset.
case EL3RST = 47
/// Link number out of range.
case ELNRNG = 48
/// Protocol driver not attached.
case EUNATCH = 49
/// No CSI structure available.
case ENOCSI = 50
/// Level 2 halted.
case EL2HLT = 51
/// Invalid exchange
case EBADE = 52
/// Invalid request descriptor
case EBADR = 53
/// Exchange full
case EXFULL = 54
/// No anode
case ENOANO = 55
/// Invalid request code
case EBADRQC = 56
/// Invalid slot
case EBADSLT = 57
public static var EDEADLOCK: POSIXErrorCode { return .EDEADLK }
/// Bad font file format
case EBFONT = 59
/// Device not a stream
case ENOSTR = 60
/// No data available
case ENODATA = 61
/// Timer expired
case ETIME = 62
/// Out of streams resources
case ENOSR = 63
/// Machine is not on the network
case ENONET = 64
/// Package not installed
case ENOPKG = 65
/// Object is remote
case EREMOTE = 66
/// Link has been severed
case ENOLINK = 67
/// Advertise error
case EADV = 68
/// Srmount error
case ESRMNT = 69
/// Communication error on send
case ECOMM = 70
/// Protocol error
case EPROTO = 71
/// Multihop attempted
case EMULTIHOP = 72
/// RFS specific error
case EDOTDOT = 73
/// Not a data message
case EBADMSG = 74
/// Value too large for defined data type
case EOVERFLOW = 75
/// Name not unique on network
case ENOTUNIQ = 76
/// File descriptor in bad state
case EBADFD = 77
/// Remote address changed
case EREMCHG = 78
/// Can not access a needed shared library
case ELIBACC = 79
/// Accessing a corrupted shared library
case ELIBBAD = 80
/// .lib section in a.out corrupted
case ELIBSCN = 81
/// Attempting to link in too many shared libraries
case ELIBMAX = 82
/// Cannot exec a shared library directly
case ELIBEXEC = 83
/// Illegal byte sequence
case EILSEQ = 84
/// Interrupted system call should be restarted
case ERESTART = 85
/// Streams pipe error
case ESTRPIPE = 86
/// Too many users
case EUSERS = 87
/// Socket operation on non-socket
case ENOTSOCK = 88
/// Destination address required
case EDESTADDRREQ = 89
/// Message too long
case EMSGSIZE = 90
/// Protocol wrong type for socket
case EPROTOTYPE = 91
/// Protocol not available
case ENOPROTOOPT = 92
/// Protocol not supported
case EPROTONOSUPPORT = 93
/// Socket type not supported
case ESOCKTNOSUPPORT = 94
/// Operation not supported on transport endpoint
case EOPNOTSUPP = 95
/// Protocol family not supported
case EPFNOSUPPORT = 96
/// Address family not supported by protocol
case EAFNOSUPPORT = 97
/// Address already in use
case EADDRINUSE = 98
/// Cannot assign requested address
case EADDRNOTAVAIL = 99
/// Network is down
case ENETDOWN = 100
/// Network is unreachable
case ENETUNREACH = 101
/// Network dropped connection because of reset
case ENETRESET = 102
/// Software caused connection abort
case ECONNABORTED = 103
/// Connection reset by peer
case ECONNRESET = 104
/// No buffer space available
case ENOBUFS = 105
/// Transport endpoint is already connected
case EISCONN = 106
/// Transport endpoint is not connected
case ENOTCONN = 107
/// Cannot send after transport endpoint shutdown
case ESHUTDOWN = 108
/// Too many references: cannot splice
case ETOOMANYREFS = 109
/// Connection timed out
case ETIMEDOUT = 110
/// Connection refused
case ECONNREFUSED = 111
/// Host is down
case EHOSTDOWN = 112
/// No route to host
case EHOSTUNREACH = 113
/// Operation already in progress
case EALREADY = 114
/// Operation now in progress
case EINPROGRESS = 115
/// Stale NFS file handle
case ESTALE = 116
/// Structure needs cleaning
case EUCLEAN = 117
/// Not a XENIX named type file
case ENOTNAM = 118
/// No XENIX semaphores available
case ENAVAIL = 119
/// Is a named type file
case EISNAM = 120
/// Remote I/O error
case EREMOTEIO = 121
/// Quota exceeded
case EDQUOT = 122
/// No medium found
case ENOMEDIUM = 123
/// Wrong medium type
case EMEDIUMTYPE = 124
/// Operation Canceled
case ECANCELED = 125
/// Required key not available
case ENOKEY = 126
/// Key has expired
case EKEYEXPIRED = 127
/// Key has been revoked
case EKEYREVOKED = 128
/// Key was rejected by service
case EKEYREJECTED = 129
/// Owner died
case EOWNERDEAD = 130
/// State not recoverable
case ENOTRECOVERABLE = 131
/// Operation not possible due to RF-kill
case ERFKILL = 132
/// Memory page has hardware error
case EHWPOISON = 133
}
#elseif os(Windows)
/// Enumeration describing POSIX error codes.
public enum POSIXErrorCode : Int32 {
/// Operation not permitted
case EPERM = 1
/// No such file or directory
case ENOENT = 2
/// No such process
case ESRCH = 3
/// Interrupted function
case EINTR = 4
/// I/O error
case EIO = 5
/// No such device or address
case ENXIO = 6
/// Argument list too long
case E2BIG = 7
/// Exec format error
case ENOEXEC = 8
/// Bad file number
case EBADF = 9
/// No spawned processes
case ECHILD = 10
/// No more processes or not enough memory or maximum nesting level reached
case EAGAIN = 11
/// Not enough memory
case ENOMEM = 12
/// Permission denied
case EACCES = 13
/// Bad address
case EFAULT = 14
/// Device or resource busy
case EBUSY = 16
/// File exists
case EEXIST = 17
/// Cross-device link
case EXDEV = 18
/// No such device
case ENODEV = 19
/// Not a directory
case ENOTDIR = 20
/// Is a directory
case EISDIR = 21
/// Invalid argument
case EINVAL = 22
/// Too many files open in system
case ENFILE = 23
/// Too many open files
case EMFILE = 24
/// Inappropriate I/O control operation
case ENOTTY = 25
/// File too large
case EFBIG = 27
/// No space left on device
case ENOSPC = 28
/// Invalid seek
case ESPIPE = 29
/// Read-only file system
case EROFS = 30
/// Too many links
case EMLINK = 31
/// Broken pipe
case EPIPE = 32
/// Math argument
case EDOM = 33
/// Result too large
case ERANGE = 34
/// Resource deadlock would occur
case EDEADLK = 36
/// Same as EDEADLK for compatibility with older Microsoft C versions
public static var EDEADLOCK: POSIXErrorCode { return .EDEADLK }
/// Filename too long
case ENAMETOOLONG = 38
/// No locks available
case ENOLCK = 39
/// Function not supported
case ENOSYS = 40
/// Directory not empty
case ENOTEMPTY = 41
/// Illegal byte sequence
case EILSEQ = 42
/// String was truncated
case STRUNCATE = 80
}
#endif