diff options
Diffstat (limited to 'core/error_codes.rs')
-rw-r--r-- | core/error_codes.rs | 216 |
1 files changed, 0 insertions, 216 deletions
diff --git a/core/error_codes.rs b/core/error_codes.rs deleted file mode 100644 index ebe036609..000000000 --- a/core/error_codes.rs +++ /dev/null @@ -1,216 +0,0 @@ -// Copyright 2018-2023 the Deno authors. All rights reserved. MIT license. - -use anyhow::Error; - -pub fn get_error_code(err: &Error) -> Option<&'static str> { - err - .downcast_ref::<std::io::Error>() - .map(|e| match e.raw_os_error() { - Some(code) => get_os_error_code(code), - None => get_io_error_code(e), - }) - .and_then(|code| match code.is_empty() { - true => None, - false => Some(code), - }) -} - -fn get_io_error_code(err: &std::io::Error) -> &'static str { - // not exhaustive but simple and possibly sufficient once `io_error_more` is stabilized (https://github.com/rust-lang/rust/issues/86442) - // inversion of https://github.com/rust-lang/rust/blob/dca3f1b786efd27be3b325ed1e01e247aa589c3b/library/std/src/sys/unix/mod.rs#L138-L185 - // TODO(@AaronO): revisit as `io_error_more` lands in rust stable - use std::io::ErrorKind; - match err.kind() { - // ErrorKind::ArgumentListTooLong => "E2BIG", - ErrorKind::AddrInUse => "EADDRINUSE", - ErrorKind::AddrNotAvailable => "EADDRNOTAVAIL", - // ErrorKind::ResourceBusy => "EBUSY", - ErrorKind::ConnectionAborted => "ECONNABORTED", - ErrorKind::ConnectionRefused => "ECONNREFUSED", - ErrorKind::ConnectionReset => "ECONNRESET", - // ErrorKind::Deadlock => "EDEADLK", - // ErrorKind::FilesystemQuotaExceeded => "EDQUOT", - ErrorKind::AlreadyExists => "EEXIST", - // ErrorKind::FileTooLarge => "EFBIG", - // ErrorKind::HostUnreachable => "EHOSTUNREACH", - ErrorKind::Interrupted => "EINTR", - ErrorKind::InvalidInput => "EINVAL", - // ErrorKind::IsADirectory => "EISDIR", - // ErrorKind::FilesystemLoop => "ELOOP", - ErrorKind::NotFound => "ENOENT", - ErrorKind::OutOfMemory => "ENOMEM", - // ErrorKind::StorageFull => "ENOSPC", - ErrorKind::Unsupported => "ENOSYS", - // ErrorKind::TooManyLinks => "EMLINK", - // ErrorKind::FilenameTooLong => "ENAMETOOLONG", - // ErrorKind::NetworkDown => "ENETDOWN", - // ErrorKind::NetworkUnreachable => "ENETUNREACH", - ErrorKind::NotConnected => "ENOTCONN", - // ErrorKind::NotADirectory => "ENOTDIR", - // ErrorKind::DirectoryNotEmpty => "ENOTEMPTY", - ErrorKind::BrokenPipe => "EPIPE", - // ErrorKind::ReadOnlyFilesystem => "EROFS", - // ErrorKind::NotSeekable => "ESPIPE", - // ErrorKind::StaleNetworkFileHandle => "ESTALE", - ErrorKind::TimedOut => "ETIMEDOUT", - // ErrorKind::ExecutableFileBusy => "ETXTBSY", - // ErrorKind::CrossesDevices => "EXDEV", - ErrorKind::PermissionDenied => "EACCES", // NOTE: Collides with EPERM ... - ErrorKind::WouldBlock => "EWOULDBLOCK", // NOTE: Collides with EAGAIN ... - _ => "", - } -} - -/// Maps OS errno codes to string names -/// derived from libuv: https://github.com/libuv/libuv/blob/26b2e5dbb6301756644d6e4cf6ca9c49c00513d3/include/uv/errno.h -/// generated with tools/codegen_error_codes.js -#[cfg(unix)] -fn get_os_error_code(errno: i32) -> &'static str { - match errno { - libc::E2BIG => "E2BIG", - libc::EACCES => "EACCES", - libc::EADDRINUSE => "EADDRINUSE", - libc::EADDRNOTAVAIL => "EADDRNOTAVAIL", - libc::EAFNOSUPPORT => "EAFNOSUPPORT", - libc::EAGAIN => "EAGAIN", - libc::EALREADY => "EALREADY", - libc::EBADF => "EBADF", - libc::EBUSY => "EBUSY", - libc::ECANCELED => "ECANCELED", - libc::ECONNABORTED => "ECONNABORTED", - libc::ECONNREFUSED => "ECONNREFUSED", - libc::ECONNRESET => "ECONNRESET", - libc::EEXIST => "EEXIST", - libc::EFAULT => "EFAULT", - libc::EHOSTUNREACH => "EHOSTUNREACH", - libc::EINVAL => "EINVAL", - libc::EIO => "EIO", - libc::EISCONN => "EISCONN", - libc::EISDIR => "EISDIR", - libc::ELOOP => "ELOOP", - libc::EMFILE => "EMFILE", - libc::EMSGSIZE => "EMSGSIZE", - libc::ENAMETOOLONG => "ENAMETOOLONG", - libc::ENETUNREACH => "ENETUNREACH", - libc::ENOBUFS => "ENOBUFS", - libc::ENOENT => "ENOENT", - libc::ENOMEM => "ENOMEM", - libc::ENOSPC => "ENOSPC", - libc::ENOTCONN => "ENOTCONN", - libc::ENOTDIR => "ENOTDIR", - libc::ENOTEMPTY => "ENOTEMPTY", - libc::ENOTSOCK => "ENOTSOCK", - libc::ENOTSUP => "ENOTSUP", - libc::EPERM => "EPERM", - libc::EPIPE => "EPIPE", - libc::EPROTONOSUPPORT => "EPROTONOSUPPORT", - libc::EROFS => "EROFS", - libc::ETIMEDOUT => "ETIMEDOUT", - libc::EXDEV => "EXDEV", - libc::ESOCKTNOSUPPORT => "ESOCKTNOSUPPORT", - _ => "", - } -} - -#[cfg(windows)] -fn get_os_error_code(errno: i32) -> &'static str { - match errno { - 998 => "EACCES", // ERROR_NOACCESS - 10013 => "EACCES", // WSAEACCES - 1920 => "EACCES", // ERROR_CANT_ACCESS_FILE - 1227 => "EADDRINUSE", // ERROR_ADDRESS_ALREADY_ASSOCIATED - 10048 => "EADDRINUSE", // WSAEADDRINUSE - 10049 => "EADDRNOTAVAIL", // WSAEADDRNOTAVAIL - 10047 => "EAFNOSUPPORT", // WSAEAFNOSUPPORT - 10035 => "EAGAIN", // WSAEWOULDBLOCK - 10037 => "EALREADY", // WSAEALREADY - 1004 => "EBADF", // ERROR_INVALID_FLAGS - 6 => "EBADF", // ERROR_INVALID_HANDLE - 33 => "EBUSY", // ERROR_LOCK_VIOLATION - 231 => "EBUSY", // ERROR_PIPE_BUSY - 32 => "EBUSY", // ERROR_SHARING_VIOLATION - 995 => "ECANCELED", // ERROR_OPERATION_ABORTED - 10004 => "ECANCELED", // WSAEINTR - 1236 => "ECONNABORTED", // ERROR_CONNECTION_ABORTED - 10053 => "ECONNABORTED", // WSAECONNABORTED - 1225 => "ECONNREFUSED", // ERROR_CONNECTION_REFUSED - 10061 => "ECONNREFUSED", // WSAECONNREFUSED - 64 => "ECONNRESET", // ERROR_NETNAME_DELETED - 10054 => "ECONNRESET", // WSAECONNRESET - 183 => "EEXIST", // ERROR_ALREADY_EXISTS - 80 => "EEXIST", // ERROR_FILE_EXISTS - 111 => "EFAULT", // ERROR_BUFFER_OVERFLOW - 10014 => "EFAULT", // WSAEFAULT - 1232 => "EHOSTUNREACH", // ERROR_HOST_UNREACHABLE - 10065 => "EHOSTUNREACH", // WSAEHOSTUNREACH - 122 => "EINVAL", // ERROR_INSUFFICIENT_BUFFER - 13 => "EINVAL", // ERROR_INVALID_DATA - 87 => "EINVAL", // ERROR_INVALID_PARAMETER - 1464 => "EINVAL", // ERROR_SYMLINK_NOT_SUPPORTED - 10022 => "EINVAL", // WSAEINVAL - 10046 => "EINVAL", // WSAEPFNOSUPPORT - 1102 => "EIO", // ERROR_BEGINNING_OF_MEDIA - 1111 => "EIO", // ERROR_BUS_RESET - 23 => "EIO", // ERROR_CRC - 1166 => "EIO", // ERROR_DEVICE_DOOR_OPEN - 1165 => "EIO", // ERROR_DEVICE_REQUIRES_CLEANING - 1393 => "EIO", // ERROR_DISK_CORRUPT - 1129 => "EIO", // ERROR_EOM_OVERFLOW - 1101 => "EIO", // ERROR_FILEMARK_DETECTED - 31 => "EIO", // ERROR_GEN_FAILURE - 1106 => "EIO", // ERROR_INVALID_BLOCK_LENGTH - 1117 => "EIO", // ERROR_IO_DEVICE - 1104 => "EIO", // ERROR_NO_DATA_DETECTED - 205 => "EIO", // ERROR_NO_SIGNAL_SENT - 110 => "EIO", // ERROR_OPEN_FAILED - 1103 => "EIO", // ERROR_SETMARK_DETECTED - 156 => "EIO", // ERROR_SIGNAL_REFUSED - 10056 => "EISCONN", // WSAEISCONN - 1921 => "ELOOP", // ERROR_CANT_RESOLVE_FILENAME - 4 => "EMFILE", // ERROR_TOO_MANY_OPEN_FILES - 10024 => "EMFILE", // WSAEMFILE - 10040 => "EMSGSIZE", // WSAEMSGSIZE - 206 => "ENAMETOOLONG", // ERROR_FILENAME_EXCED_RANGE - 1231 => "ENETUNREACH", // ERROR_NETWORK_UNREACHABLE - 10051 => "ENETUNREACH", // WSAENETUNREACH - 10055 => "ENOBUFS", // WSAENOBUFS - 161 => "ENOENT", // ERROR_BAD_PATHNAME - 267 => "ENOENT", // ERROR_DIRECTORY - 203 => "ENOENT", // ERROR_ENVVAR_NOT_FOUND - 2 => "ENOENT", // ERROR_FILE_NOT_FOUND - 123 => "ENOENT", // ERROR_INVALID_NAME - 15 => "ENOENT", // ERROR_INVALID_DRIVE - 4392 => "ENOENT", // ERROR_INVALID_REPARSE_DATA - 126 => "ENOENT", // ERROR_MOD_NOT_FOUND - 3 => "ENOENT", // ERROR_PATH_NOT_FOUND - 11001 => "ENOENT", // WSAHOST_NOT_FOUND - 11004 => "ENOENT", // WSANO_DATA - 8 => "ENOMEM", // ERROR_NOT_ENOUGH_MEMORY - 14 => "ENOMEM", // ERROR_OUTOFMEMORY - 82 => "ENOSPC", // ERROR_CANNOT_MAKE - 112 => "ENOSPC", // ERROR_DISK_FULL - 277 => "ENOSPC", // ERROR_EA_TABLE_FULL - 1100 => "ENOSPC", // ERROR_END_OF_MEDIA - 39 => "ENOSPC", // ERROR_HANDLE_DISK_FULL - 2250 => "ENOTCONN", // ERROR_NOT_CONNECTED - 10057 => "ENOTCONN", // WSAENOTCONN - 145 => "ENOTEMPTY", // ERROR_DIR_NOT_EMPTY - 10038 => "ENOTSOCK", // WSAENOTSOCK - 50 => "ENOTSUP", // ERROR_NOT_SUPPORTED - 5 => "EPERM", // ERROR_ACCESS_DENIED - 1314 => "EPERM", // ERROR_PRIVILEGE_NOT_HELD - 230 => "EPIPE", // ERROR_BAD_PIPE - 232 => "EPIPE", // ERROR_NO_DATA - 233 => "EPIPE", // ERROR_PIPE_NOT_CONNECTED - 10058 => "EPIPE", // WSAESHUTDOWN - 10043 => "EPROTONOSUPPORT", // WSAEPROTONOSUPPORT - 19 => "EROFS", // ERROR_WRITE_PROTECT - 121 => "ETIMEDOUT", // ERROR_SEM_TIMEOUT - 10060 => "ETIMEDOUT", // WSAETIMEDOUT - 17 => "EXDEV", // ERROR_NOT_SAME_DEVICE - 1 => "EISDIR", // ERROR_INVALID_FUNCTION - 208 => "E2BIG", // ERROR_META_EXPANSION_TOO_LONG - 10044 => "ESOCKTNOSUPPORT", // WSAESOCKTNOSUPPORT - _ => "", - } -} |