mirror of
https://github.com/odin-lang/Odin.git
synced 2026-05-25 13:18:14 +00:00
540 lines
12 KiB
Odin
540 lines
12 KiB
Odin
#+build windows, darwin, linux, freebsd, openbsd, netbsd
|
|
package posix
|
|
|
|
import "core:c"
|
|
import "core:c/libc"
|
|
|
|
// errno.h - system error numbers
|
|
|
|
EDOM :: libc.EDOM
|
|
EILSEQ :: libc.EILSEQ
|
|
ERANGE :: libc.ERANGE
|
|
|
|
@(no_instrumentation)
|
|
get_errno :: #force_inline proc "contextless" () -> Errno {
|
|
return (^Errno)(libc.errno())^
|
|
}
|
|
|
|
set_errno :: #force_inline proc "contextless" (err: Errno) {
|
|
libc.errno()^ = i32(err)
|
|
}
|
|
|
|
errno :: proc {
|
|
get_errno,
|
|
set_errno,
|
|
}
|
|
|
|
Errno :: enum c.int {
|
|
NONE = 0,
|
|
EDOM = EDOM,
|
|
EILSEQ = EILSEQ,
|
|
ERANGE = ERANGE,
|
|
E2BIG = E2BIG,
|
|
EACCES = EACCES,
|
|
EADDRINUSE = EADDRINUSE,
|
|
EADDRNOTAVAIL = EADDRNOTAVAIL,
|
|
EAFNOSUPPORT = EAFNOSUPPORT,
|
|
EAGAIN = EAGAIN,
|
|
EALREADY = EALREADY,
|
|
EBADF = EBADF,
|
|
EBADMSG = EBADMSG,
|
|
EBUSY = EBUSY,
|
|
ECANCELED = ECANCELED,
|
|
ECHILD = ECHILD,
|
|
ECONNABORTED = ECONNABORTED,
|
|
ECONNREFUSED = ECONNREFUSED,
|
|
ECONNRESET = ECONNRESET,
|
|
EDEADLK = EDEADLK,
|
|
EDESTADDRREQ = EDESTADDRREQ,
|
|
EDQUOT = EDQUOT,
|
|
EEXIST = EEXIST,
|
|
EFAULT = EFAULT,
|
|
EFBIG = EFBIG,
|
|
EHOSTUNREACH = EHOSTUNREACH,
|
|
EIDRM = EIDRM,
|
|
EINPROGRESS = EINPROGRESS,
|
|
EINTR = EINTR,
|
|
EINVAL = EINVAL,
|
|
EIO = EIO,
|
|
EISCONN = EISCONN,
|
|
EISDIR = EISDIR,
|
|
ELOOP = ELOOP,
|
|
EMFILE = EMFILE,
|
|
EMLINK = EMLINK,
|
|
EMSGSIZE = EMSGSIZE,
|
|
EMULTIHOP = EMULTIHOP,
|
|
ENAMETOOLONG = ENAMETOOLONG,
|
|
ENETDOWN = ENETDOWN,
|
|
ENETRESET = ENETRESET,
|
|
ENETUNREACH = ENETUNREACH,
|
|
ENFILE = ENFILE,
|
|
ENOBUFS = ENOBUFS,
|
|
ENODATA = ENODATA,
|
|
ENODEV = ENODEV,
|
|
ENOENT = ENOENT,
|
|
ENOEXEC = ENOEXEC,
|
|
ENOLCK = ENOLCK,
|
|
ENOLINK = ENOLINK,
|
|
ENOMEM = ENOMEM,
|
|
ENOMSG = ENOMSG,
|
|
ENOPROTOOPT = ENOPROTOOPT,
|
|
ENOSPC = ENOSPC,
|
|
ENOSR = ENOSR,
|
|
ENOSTR = ENOSTR,
|
|
ENOSYS = ENOSYS,
|
|
ENOTCONN = ENOTCONN,
|
|
ENOTDIR = ENOTDIR,
|
|
ENOTEMPTY = ENOTEMPTY,
|
|
ENOTRECOVERABLE = ENOTRECOVERABLE,
|
|
ENOTSOCK = ENOTSOCK,
|
|
ENOTSUP = ENOTSUP,
|
|
ENOTTY = ENOTTY,
|
|
ENXIO = ENXIO,
|
|
EOPNOTSUPP = EOPNOTSUPP,
|
|
EOVERFLOW = EOVERFLOW,
|
|
EOWNERDEAD = EOWNERDEAD,
|
|
EPERM = EPERM,
|
|
EPIPE = EPIPE,
|
|
EPROTO = EPROTO,
|
|
EPROTONOSUPPORT = EPROTONOSUPPORT,
|
|
EPROTOTYPE = EPROTOTYPE,
|
|
EROFS = EROFS,
|
|
ESPIPE = ESPIPE,
|
|
ESRCH = ESRCH,
|
|
ESTALE = ESTALE,
|
|
ETIME = ETIME,
|
|
ETIMEDOUT = ETIMEDOUT,
|
|
ETXTBSY = ETXTBSY,
|
|
EWOULDBLOCK = EWOULDBLOCK,
|
|
EXDEV = EXDEV,
|
|
}
|
|
|
|
when ODIN_OS == .Darwin {
|
|
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
|
|
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
|
|
EAGAIN :: 35
|
|
EWOULDBLOCK :: EAGAIN
|
|
EINPROGRESS :: 36
|
|
EALREADY :: 37
|
|
ENOTSOCK :: 38
|
|
EDESTADDRREQ :: 39
|
|
EMSGSIZE :: 40
|
|
EPROTOTYPE :: 41
|
|
ENOPROTOOPT :: 42
|
|
EPROTONOSUPPORT :: 43
|
|
ENOTSUP :: 45
|
|
EOPNOTSUPP :: ENOTSUP
|
|
EAFNOSUPPORT :: 47
|
|
EADDRINUSE :: 48
|
|
EADDRNOTAVAIL :: 49
|
|
ENETDOWN :: 50
|
|
ENETUNREACH :: 51
|
|
ENETRESET :: 52
|
|
ECONNABORTED :: 53
|
|
ECONNRESET :: 54
|
|
ENOBUFS :: 55
|
|
EISCONN :: 56
|
|
ENOTCONN :: 57
|
|
ETIMEDOUT :: 60
|
|
ECONNREFUSED :: 61
|
|
ELOOP :: 62
|
|
ENAMETOOLONG :: 63
|
|
EHOSTUNREACH :: 65
|
|
ENOTEMPTY :: 66
|
|
EDQUOT :: 69
|
|
ESTALE :: 70
|
|
ENOLCK :: 77
|
|
ENOSYS :: 78
|
|
EOVERFLOW :: 84
|
|
ECANCELED :: 89
|
|
EIDRM :: 90
|
|
ENOMSG :: 91
|
|
EBADMSG :: 94
|
|
EMULTIHOP :: 95
|
|
ENODATA :: 96
|
|
ENOLINK :: 97
|
|
ENOSR :: 98
|
|
ENOSTR :: 99
|
|
EPROTO :: 100
|
|
ETIME :: 101
|
|
ENOTRECOVERABLE :: 104
|
|
EOWNERDEAD :: 105
|
|
} else when ODIN_OS == .FreeBSD {
|
|
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
|
|
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
|
|
EAGAIN :: 35
|
|
EWOULDBLOCK :: EAGAIN
|
|
EINPROGRESS :: 36
|
|
EALREADY :: 37
|
|
ENOTSOCK :: 38
|
|
EDESTADDRREQ :: 39
|
|
EMSGSIZE :: 40
|
|
EPROTOTYPE :: 41
|
|
ENOPROTOOPT :: 42
|
|
EPROTONOSUPPORT :: 43
|
|
ENOTSUP :: 45
|
|
EOPNOTSUPP :: ENOTSUP
|
|
EAFNOSUPPORT :: 47
|
|
EADDRINUSE :: 48
|
|
EADDRNOTAVAIL :: 49
|
|
ENETDOWN :: 50
|
|
ENETUNREACH :: 51
|
|
ENETRESET :: 52
|
|
ECONNABORTED :: 53
|
|
ECONNRESET :: 54
|
|
ENOBUFS :: 55
|
|
EISCONN :: 56
|
|
ENOTCONN :: 57
|
|
ETIMEDOUT :: 60
|
|
ECONNREFUSED :: 61
|
|
ELOOP :: 62
|
|
ENAMETOOLONG :: 63
|
|
EHOSTUNREACH :: 65
|
|
ENOTEMPTY :: 66
|
|
EDQUOT :: 69
|
|
ESTALE :: 70
|
|
ENOLCK :: 77
|
|
ENOSYS :: 78
|
|
EOVERFLOW :: 84
|
|
EIDRM :: 82
|
|
ENOMSG :: 83
|
|
ECANCELED :: 85
|
|
EBADMSG :: 89
|
|
EMULTIHOP :: 90
|
|
ENOLINK :: 91
|
|
EPROTO :: 92
|
|
ENOTRECOVERABLE :: 95
|
|
EOWNERDEAD :: 96
|
|
|
|
// NOTE: not defined for freebsd
|
|
ENODATA :: -1
|
|
ENOSR :: -1
|
|
ENOSTR :: -1
|
|
ETIME :: -1
|
|
} else when ODIN_OS == .NetBSD || ODIN_OS == .OpenBSD {
|
|
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
|
|
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
|
|
EAGAIN :: 35
|
|
EWOULDBLOCK :: EAGAIN
|
|
EINPROGRESS :: 36
|
|
EALREADY :: 37
|
|
ENOTSOCK :: 38
|
|
EDESTADDRREQ :: 39
|
|
EMSGSIZE :: 40
|
|
EPROTOTYPE :: 41
|
|
ENOPROTOOPT :: 42
|
|
EPROTONOSUPPORT :: 43
|
|
ENOTSUP :: 45
|
|
EOPNOTSUPP :: ENOTSUP
|
|
EAFNOSUPPORT :: 47
|
|
EADDRINUSE :: 48
|
|
EADDRNOTAVAIL :: 49
|
|
ENETDOWN :: 50
|
|
ENETUNREACH :: 51
|
|
ENETRESET :: 52
|
|
ECONNABORTED :: 53
|
|
ECONNRESET :: 54
|
|
ENOBUFS :: 55
|
|
EISCONN :: 56
|
|
ENOTCONN :: 57
|
|
ETIMEDOUT :: 60
|
|
ECONNREFUSED :: 61
|
|
ELOOP :: 62
|
|
ENAMETOOLONG :: 63
|
|
EHOSTUNREACH :: 65
|
|
ENOTEMPTY :: 66
|
|
EDQUOT :: 69
|
|
ESTALE :: 70
|
|
ENOLCK :: 77
|
|
ENOSYS :: 78
|
|
|
|
when ODIN_OS == .NetBSD {
|
|
EOVERFLOW :: 84
|
|
EIDRM :: 82
|
|
ENOMSG :: 83
|
|
ECANCELED :: 87
|
|
EBADMSG :: 88
|
|
ENODATA :: 89
|
|
EMULTIHOP :: 94
|
|
ENOLINK :: 95
|
|
EPROTO :: 96
|
|
ENOTRECOVERABLE :: 98
|
|
EOWNERDEAD :: 97
|
|
ENOSR :: 90
|
|
ENOSTR :: 91
|
|
ETIME :: 92
|
|
} else {
|
|
EOVERFLOW :: 87
|
|
EIDRM :: 89
|
|
ENOMSG :: 90
|
|
ECANCELED :: 88
|
|
EBADMSG :: 92
|
|
EPROTO :: 95
|
|
ENOTRECOVERABLE :: 93
|
|
EOWNERDEAD :: 94
|
|
// NOTE: not defined for openbsd
|
|
ENODATA :: -1
|
|
EMULTIHOP :: -1
|
|
ENOLINK :: -1
|
|
ENOSR :: -1
|
|
ENOSTR :: -1
|
|
ETIME :: -1
|
|
}
|
|
|
|
} else when ODIN_OS == .Linux {
|
|
EPERM :: 1
|
|
ENOENT :: 2
|
|
ESRCH :: 3
|
|
EINTR :: 4
|
|
EIO :: 5
|
|
ENXIO :: 6
|
|
E2BIG :: 7
|
|
ENOEXEC :: 8
|
|
EBADF :: 9
|
|
ECHILD :: 10
|
|
EAGAIN :: 11
|
|
EWOULDBLOCK :: EAGAIN
|
|
ENOMEM :: 12
|
|
EACCES :: 13
|
|
EFAULT :: 14
|
|
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
|
|
|
|
EDEADLK :: 35
|
|
ENAMETOOLONG :: 36
|
|
ENOLCK :: 37
|
|
ENOSYS :: 38
|
|
ENOTEMPTY :: 39
|
|
ELOOP :: 40
|
|
ENOMSG :: 42
|
|
EIDRM :: 43
|
|
|
|
ENOSTR :: 60
|
|
ENODATA :: 61
|
|
ETIME :: 62
|
|
ENOSR :: 63
|
|
|
|
ENOLINK :: 67
|
|
|
|
EPROTO :: 71
|
|
EMULTIHOP :: 72
|
|
EBADMSG :: 74
|
|
EOVERFLOW :: 75
|
|
|
|
ENOTSOCK :: 88
|
|
EDESTADDRREQ :: 89
|
|
EMSGSIZE :: 90
|
|
EPROTOTYPE :: 91
|
|
ENOPROTOOPT :: 92
|
|
EPROTONOSUPPORT :: 93
|
|
|
|
EOPNOTSUPP :: 95
|
|
ENOTSUP :: EOPNOTSUPP
|
|
EAFNOSUPPORT :: 97
|
|
EADDRINUSE :: 98
|
|
EADDRNOTAVAIL :: 99
|
|
ENETDOWN :: 100
|
|
ENETUNREACH :: 101
|
|
ENETRESET :: 102
|
|
ECONNABORTED :: 103
|
|
ECONNRESET :: 104
|
|
ENOBUFS :: 105
|
|
EISCONN :: 106
|
|
ENOTCONN :: 107
|
|
|
|
ETIMEDOUT :: 110
|
|
ECONNREFUSED :: 111
|
|
|
|
EHOSTUNREACH :: 113
|
|
EALREADY :: 114
|
|
EINPROGRESS :: 115
|
|
ESTALE :: 116
|
|
|
|
EDQUOT :: 122
|
|
ECANCELED :: 125
|
|
|
|
EOWNERDEAD :: 130
|
|
ENOTRECOVERABLE :: 131
|
|
} else when ODIN_OS == .Windows {
|
|
E2BIG :: 7
|
|
EACCES :: 13
|
|
EADDRINUSE :: 100
|
|
EADDRNOTAVAIL :: 101
|
|
EAFNOSUPPORT :: 102
|
|
EAGAIN :: 11
|
|
EALREADY :: 103
|
|
EBADF :: 9
|
|
EBADMSG :: 104
|
|
EBUSY :: 16
|
|
ECANCELED :: 105
|
|
ECHILD :: 10
|
|
ECONNABORTED :: 106
|
|
ECONNREFUSED :: 107
|
|
ECONNRESET :: 108
|
|
EDEADLK :: 36
|
|
EDESTADDRREQ :: 109
|
|
EDQUOT :: -1 // NOTE: not defined
|
|
EEXIST :: 17
|
|
EFAULT :: 14
|
|
EFBIG :: 27
|
|
EHOSTUNREACH :: 110
|
|
EIDRM :: 111
|
|
EINPROGRESS :: 112
|
|
EINTR :: 4
|
|
EINVAL :: 22
|
|
EIO :: 5
|
|
EISCONN :: 113
|
|
EISDIR :: 21
|
|
ELOOP :: 114
|
|
EMFILE :: 24
|
|
EMLINK :: 31
|
|
EMSGSIZE :: 115
|
|
EMULTIHOP :: -1 // NOTE: not defined
|
|
ENAMETOOLONG :: 38
|
|
ENETDOWN :: 116
|
|
ENETRESET :: 117
|
|
ENETUNREACH :: 118
|
|
ENFILE :: 23
|
|
ENOBUFS :: 119
|
|
ENODATA :: 120
|
|
ENODEV :: 19
|
|
ENOENT :: 2
|
|
ENOEXEC :: 8
|
|
ENOLCK :: 39
|
|
ENOLINK :: 121
|
|
ENOMEM :: 12
|
|
ENOMSG :: 122
|
|
ENOPROTOOPT :: 123
|
|
ENOSPC :: 28
|
|
ENOSR :: 124
|
|
ENOSTR :: 125
|
|
ENOSYS :: 40
|
|
ENOTCONN :: 126
|
|
ENOTDIR :: 20
|
|
ENOTEMPTY :: 41
|
|
ENOTRECOVERABLE :: 127
|
|
ENOTSOCK :: 128
|
|
ENOTSUP :: 129
|
|
ENOTTY :: 25
|
|
ENXIO :: 6
|
|
EOPNOTSUPP :: 130
|
|
EOVERFLOW :: 132
|
|
EOWNERDEAD :: 133
|
|
EPERM :: 1
|
|
EPIPE :: 32
|
|
EPROTO :: 134
|
|
EPROTONOSUPPORT :: 135
|
|
EPROTOTYPE :: 136
|
|
EROFS :: 30
|
|
ESPIPE :: 29
|
|
ESRCH :: 3
|
|
ESTALE :: -1 // NOTE: not defined
|
|
ETIME :: 137
|
|
ETIMEDOUT :: 138
|
|
ETXTBSY :: 139
|
|
EWOULDBLOCK :: 140
|
|
EXDEV :: 18
|
|
}
|