diff --git a/core/sys/haiku/errno.odin b/core/sys/haiku/errno.odin index 2b5e3681c..1acdd3c0c 100644 --- a/core/sys/haiku/errno.odin +++ b/core/sys/haiku/errno.odin @@ -5,6 +5,9 @@ import "core:sys/posix" foreign import libroot "system:c" +USE_POSITIVE_POSIX_ERRORS :: posix._HAIKU_USE_POSITIVE_POSIX_ERRORS +POSIX_ERROR_FACTOR :: posix._POSIX_ERROR_FACTOR + Errno :: enum i32 { // Error baselines GENERAL_ERROR_BASE = min(i32), @@ -109,13 +112,95 @@ Errno :: enum i32 { PARTIAL_READ = STORAGE_ERROR_BASE + 16, PARTIAL_WRITE = STORAGE_ERROR_BASE + 17, + EIO = posix.EIO, + EACCES = posix.EACCES, + EINVAL = posix.EINVAL, + ETIMEDOUT = posix.ETIMEDOUT, + EINTR = posix.EINTR, + EAGAIN = posix.EAGAIN, + EWOULDBLOCK = posix.EWOULDBLOCK, + EBUSY = posix.EBUSY, + EPERM = posix.EPERM, + EFAULT = posix.EFAULT, + ENOEXEC = posix.ENOEXEC, + EBADF = posix.EBADF, + EEXIST = posix.EEXIST, + ENOENT = posix.ENOENT, + ENAMETOOLONG = posix.ENAMETOOLONG, + ENOTDIR = posix.ENOTDIR, + ENOTEMPTY = posix.ENOTEMPTY, + ENOSPC = posix.ENOSPC, + EROFS = posix.EROFS, + EISDIR = posix.EISDIR, + EMFILE = posix.EMFILE, + EXDEV = posix.EXDEV, + ELOOP = posix.ELOOP, + EPIPE = posix.EPIPE, + ENOMEM = posix.ENOMEM, + E2BIG = posix.E2BIG, + ECHILD = posix.ECHILD, + EDEADLK = posix.EDEADLK, + EFBIG = posix.EFBIG, + EMLINK = posix.EMLINK, + ENFILE = posix.ENFILE, + ENODEV = posix.ENODEV, + ENOLCK = posix.ENOLCK, + ENOSYS = posix.ENOSYS, + ENOTTY = posix.ENOTTY, + ENXIO = posix.ENXIO, + ESPIPE = posix.ESPIPE, + ESRCH = posix.ESRCH, + EDOM = posix.EDOM, + ERANGE = posix.ERANGE, + EPROTOTYPE = posix.EPROTOTYPE, + EPROTONOSUPPORT = posix.EPROTONOSUPPORT, + EAFNOSUPPORT = posix.EAFNOSUPPORT, + EADDRINUSE = posix.EADDRINUSE, + EADDRNOTAVAIL = posix.EADDRNOTAVAIL, + ENETDOWN = posix.ENETDOWN, + ENETUNREACH = posix.ENETUNREACH, + ENETRESET = posix.ENETRESET, + ECONNABORTED = posix.ECONNABORTED, + ECONNRESET = posix.ECONNRESET, + EISCONN = posix.EISCONN, + ENOTCONN = posix.ENOTCONN, + ECONNREFUSED = posix.ECONNREFUSED, + EHOSTUNREACH = posix.EHOSTUNREACH, + ENOPROTOOPT = posix.ENOPROTOOPT, + ENOBUFS = posix.ENOBUFS, + EINPROGRESS = posix.EINPROGRESS, + EALREADY = posix.EALREADY, + EILSEQ = posix.EILSEQ, + ENOMSG = posix.ENOMSG, + ESTALE = posix.ESTALE, + EOVERFLOW = posix.EOVERFLOW, + EMSGSIZE = posix.EMSGSIZE, + EOPNOTSUPP = posix.EOPNOTSUPP, + ENOTSOCK = posix.ENOTSOCK, + EBADMSG = posix.EBADMSG, + ECANCELED = posix.ECANCELED, + EDESTADDRREQ = posix.EDESTADDRREQ, + EDQUOT = posix.EDQUOT, + EIDRM = posix.EIDRM, + EMULTIHOP = posix.EMULTIHOP, + ENODATA = posix.ENODATA, + ENOLINK = posix.ENOLINK, + ENOSR = posix.ENOSR, + ENOSTR = posix.ENOSTR, + ENOTSUP = posix.ENOTSUP, + EPROTO = posix.EPROTO, + ETIME = posix.ETIME, + ETXTBSY = posix.ETXTBSY, + ENOTRECOVERABLE = posix.ENOTRECOVERABLE, + EOWNERDEAD = posix.EOWNERDEAD, + // New error codes that can be mapped to POSIX errors - TOO_MANY_ARGS = posix.E2BIG, - FILE_TOO_LARGE = posix.EFBIG, - DEVICE_NOT_FOUND = posix.ENODEV, - RESULT_NOT_REPRESENTABLE = posix.ERANGE, - BUFFER_OVERFLOW = posix.EOVERFLOW, - NOT_SUPPORTED = posix.EOPNOTSUPP, + TOO_MANY_ARGS = POSIX_ERROR_FACTOR * E2BIG, + FILE_TOO_LARGE = POSIX_ERROR_FACTOR * EFBIG, + DEVICE_NOT_FOUND = POSIX_ERROR_FACTOR * ENODEV, + RESULT_NOT_REPRESENTABLE = POSIX_ERROR_FACTOR * ERANGE, + BUFFER_OVERFLOW = POSIX_ERROR_FACTOR * EOVERFLOW, + NOT_SUPPORTED = POSIX_ERROR_FACTOR * EOPNOTSUPP, // Media Kit Errors STREAM_NOT_FOUND = MEDIA_ERROR_BASE + 0,