aboutsummaryrefslogtreecommitdiff
path: root/core/net/errors_darwin.odin
diff options
context:
space:
mode:
authorLaytan Laats <laytanlaats@hotmail.com>2026-01-11 20:07:03 +0100
committerLaytan Laats <laytanlaats@hotmail.com>2026-01-11 20:21:21 +0100
commitc10771305d91b966f7520b830c398abffe4e9e1d (patch)
tree185497758d0298c4e23f15992a0bb48a44936863 /core/net/errors_darwin.odin
parenta6ec199a52ae83603921fcf948fdf45e327fd17d (diff)
net: implement OpenBSD and NetBSD support & add stubs for other targets & cleanup
Diffstat (limited to 'core/net/errors_darwin.odin')
-rw-r--r--core/net/errors_darwin.odin268
1 files changed, 0 insertions, 268 deletions
diff --git a/core/net/errors_darwin.odin b/core/net/errors_darwin.odin
deleted file mode 100644
index a35e96bc0..000000000
--- a/core/net/errors_darwin.odin
+++ /dev/null
@@ -1,268 +0,0 @@
-#+build darwin
-package net
-
-/*
- Package net implements cross-platform Berkeley Sockets, DNS resolution and associated procedures.
- For other protocols and their features, see subdirectories of this package.
-*/
-
-/*
- Copyright 2022 Tetralux <tetraluxonpc@gmail.com>
- Copyright 2022 Colin Davidson <colrdavidson@gmail.com>
- Copyright 2022 Jeroen van Rijn <nom@duclavier.com>.
- Copyright 2024 Feoramund <rune@swevencraft.org>.
- Made available under Odin's license.
-
- List of contributors:
- Tetralux: Initial implementation
- Colin Davidson: Linux platform code, OSX platform code, Odin-native DNS resolver
- Jeroen van Rijn: Cross platform unification, code style, documentation
- Feoramund: FreeBSD platform code
-*/
-
-import "core:reflect"
-import "core:sys/posix"
-
-_last_platform_error :: proc() -> i32 {
- return i32(posix.errno())
-}
-
-_last_platform_error_string :: proc() -> string {
- description, _ := reflect.enum_name_from_value(posix.errno())
- return description
-}
-
-_set_last_platform_error :: proc(err: i32) {
- posix.errno(posix.Errno(err))
-}
-
-_create_socket_error :: proc() -> Create_Socket_Error {
- #partial switch posix.errno() {
- case .EMFILE, .ENOBUFS, .ENOMEM, .EPROTONOSUPPORT, .EISCONN, .ENFILE:
- return .Insufficient_Resources
- case .EAFNOSUPPORT, .EPROTOTYPE:
- return .Invalid_Argument
- case .EACCES:
- return .Insufficient_Permissions
- case:
- return .Unknown
- }
-}
-
-_dial_error :: proc() -> Dial_Error {
- #partial switch posix.errno() {
- case .ENOBUFS:
- return .Insufficient_Resources
- case .EAFNOSUPPORT, .EBADF, .EFAULT, .EINVAL, .ENOTSOCK, .EPROTOTYPE, .EADDRNOTAVAIL:
- return .Invalid_Argument
- case .EISCONN:
- return .Already_Connected
- case .EALREADY:
- return .Already_Connecting
- case .EADDRINUSE:
- return .Address_In_Use
- case .ENETDOWN:
- return .Network_Unreachable
- case .EHOSTUNREACH:
- return .Host_Unreachable
- case .ECONNREFUSED:
- return .Refused
- case .ECONNRESET:
- return .Reset
- case .ETIMEDOUT:
- return .Timeout
- case .EINPROGRESS:
- return .Would_Block
- case .EINTR:
- return .Interrupted
- case .EACCES:
- return .Broadcast_Not_Supported
- case:
- return .Unknown
- }
-}
-
-_bind_error :: proc() -> Bind_Error {
- #partial switch posix.errno() {
- case .EADDRNOTAVAIL, .EAFNOSUPPORT, .EBADF, .EDESTADDRREQ, .EFAULT, .ENOTSOCK, .EOPNOTSUPP:
- return .Invalid_Argument
- case .EINVAL:
- return .Already_Bound
- case .EACCES:
- return .Insufficient_Permissions_For_Address
- case .EADDRINUSE:
- return .Address_In_Use
- case:
- return .Unknown
- }
-}
-
-_listen_error :: proc() -> Listen_Error {
- #partial switch posix.errno() {
- case .EBADF, .ENOTSOCK:
- return .Invalid_Argument
- case .EDESTADDRREQ, .EOPNOTSUPP:
- return .Unsupported_Socket
- case .EINVAL:
- return .Already_Connected
- case:
- return .Unknown
- }
-}
-
-_accept_error :: proc() -> Accept_Error {
- #partial switch posix.errno() {
- case .EMFILE, .ENFILE, .ENOMEM:
- return .Insufficient_Resources
- case .EBADF, .ENOTSOCK, .EFAULT:
- return .Invalid_Argument
- case .EOPNOTSUPP:
- return .Unsupported_Socket
- case .ECONNABORTED:
- return .Aborted
- case .EWOULDBLOCK:
- return .Would_Block
- case .EINTR:
- return .Interrupted
- case:
- return .Unknown
- }
-}
-
-_tcp_recv_error :: proc() -> TCP_Recv_Error {
- #partial switch posix.errno() {
- case .EBADF, .EFAULT, .EINVAL, .ENOTSOCK, .EOPNOTSUPP:
- return .Invalid_Argument
- case .ENOBUFS:
- return .Insufficient_Resources
- case .ENOTCONN:
- return .Not_Connected
- case .ECONNRESET:
- return .Connection_Closed
- case .ETIMEDOUT:
- return .Timeout
- case .EAGAIN:
- return .Would_Block
- case .EINTR:
- return .Interrupted
- case:
- return .Unknown
- }
-}
-
-_udp_recv_error :: proc() -> UDP_Recv_Error {
- #partial switch posix.errno() {
- case .EBADF, .EFAULT, .EINVAL, .ENOTSOCK, .EOPNOTSUPP, .EMSGSIZE:
- return .Invalid_Argument
- case .ENOBUFS, .ENOMEM:
- return .Insufficient_Resources
- case .ECONNRESET, .ENOTCONN:
- return .Connection_Refused
- case .ETIMEDOUT:
- return .Timeout
- case .EAGAIN:
- return .Would_Block
- case .EINTR:
- return .Interrupted
- case:
- return .Unknown
- }
-}
-
-_tcp_send_error :: proc() -> TCP_Send_Error {
- #partial switch posix.errno() {
- case .EACCES, .EBADF, .EFAULT, .EMSGSIZE, .ENOTSOCK, .EOPNOTSUPP:
- return .Invalid_Argument
- case .ENOBUFS:
- return .Insufficient_Resources
- case .ECONNRESET, .EPIPE:
- return .Connection_Closed
- case .ENOTCONN:
- return .Not_Connected
- case .EHOSTUNREACH:
- return .Host_Unreachable
- case .ENETDOWN, .ENETUNREACH:
- return .Network_Unreachable
- case .ETIMEDOUT:
- return .Timeout
- case .EAGAIN:
- return .Would_Block
- case .EINTR:
- return .Interrupted
- case:
- return .Unknown
- }
-}
-
-_udp_send_error :: proc() -> UDP_Send_Error {
- #partial switch posix.errno() {
- case .EACCES, .EBADF, .EFAULT, .EMSGSIZE, .ENOTSOCK, .EOPNOTSUPP, .EAFNOSUPPORT, .EDESTADDRREQ:
- return .Invalid_Argument
- case .ENOBUFS, .ENOMEM:
- return .Insufficient_Resources
- case .ECONNRESET, .EPIPE:
- return .Connection_Refused
- case .EHOSTUNREACH:
- return .Host_Unreachable
- case .ENETDOWN, .ENETUNREACH:
- return .Network_Unreachable
- case .ETIMEDOUT:
- return .Timeout
- case .EAGAIN:
- return .Would_Block
- case .EINTR:
- return .Interrupted
- case:
- return .Unknown
- }
-}
-
-_shutdown_error :: proc() -> Shutdown_Error {
- #partial switch posix.errno() {
- case .EBADF, .EINVAL, .ENOTSOCK, .ENOTCONN:
- return .Invalid_Argument
- case:
- return .Unknown
- }
-}
-
-_socket_info_error :: proc() -> Socket_Info_Error {
- #partial switch posix.errno() {
- case .EBADF, .ENOTSOCK:
- return .Invalid_Argument
- case .ENOTCONN:
- return .Network_Unreachable
- case .EOPNOTSUPP:
- return .Unsupported_Socket
- case .EINVAL:
- return .Connection_Closed
- case .ENOBUFS:
- return .Insufficient_Resources
- case:
- return .Unknown
- }
-}
-
-_socket_option_error :: proc() -> Socket_Option_Error {
- #partial switch posix.errno() {
- case .ENOBUFS:
- return .Insufficient_Resources
- case .EBADF, .ENOTSOCK, .EISCONN:
- return .Invalid_Socket
- case .EINVAL, .ENOPROTOOPT:
- return .Invalid_Option
- case .EFAULT, .EDOM:
- return .Invalid_Value
- case:
- return .Unknown
- }
-}
-
-_set_blocking_error :: proc() -> Set_Blocking_Error {
- #partial switch posix.errno() {
- case .EBADF:
- return .Invalid_Argument
- case:
- return .Unknown
- }
-}