mirror of
https://github.com/Ed94/Odin.git
synced 2026-08-05 15:18:49 +00:00
net: rework errors to be cross-platform
This commit is contained in:
@@ -23,7 +23,7 @@ package net
|
||||
import sys "core:sys/windows"
|
||||
import strings "core:strings"
|
||||
|
||||
_enumerate_interfaces :: proc(allocator := context.allocator) -> (interfaces: []Network_Interface, err: Network_Error) {
|
||||
_enumerate_interfaces :: proc(allocator := context.allocator) -> (interfaces: []Network_Interface, err: Interfaces_Error) {
|
||||
context.allocator = allocator
|
||||
|
||||
buf: []u8
|
||||
@@ -52,7 +52,8 @@ _enumerate_interfaces :: proc(allocator := context.allocator) -> (interfaces: []
|
||||
case 0:
|
||||
break gaa
|
||||
case:
|
||||
return {}, Platform_Error(res)
|
||||
set_last_platform_error(i32(res))
|
||||
return {}, .Unknown
|
||||
}
|
||||
}
|
||||
|
||||
@@ -63,13 +64,13 @@ _enumerate_interfaces :: proc(allocator := context.allocator) -> (interfaces: []
|
||||
_interfaces := make([dynamic]Network_Interface, 0, allocator)
|
||||
for adapter := (^sys.IP_Adapter_Addresses)(raw_data(buf)); adapter != nil; adapter = adapter.Next {
|
||||
friendly_name, err1 := sys.wstring_to_utf8(sys.wstring(adapter.FriendlyName), 256, allocator)
|
||||
if err1 != nil { return {}, Platform_Error(err1) }
|
||||
if err1 != nil { return {}, .Allocation_Failure }
|
||||
|
||||
description, err2 := sys.wstring_to_utf8(sys.wstring(adapter.Description), 256, allocator)
|
||||
if err2 != nil { return {}, Platform_Error(err2) }
|
||||
if err2 != nil { return {}, .Allocation_Failure }
|
||||
|
||||
dns_suffix, err3 := sys.wstring_to_utf8(sys.wstring(adapter.DnsSuffix), 256, allocator)
|
||||
if err3 != nil { return {}, Platform_Error(err3) }
|
||||
if err3 != nil { return {}, .Allocation_Failure }
|
||||
|
||||
interface := Network_Interface{
|
||||
adapter_name = strings.clone(string(adapter.AdapterName)),
|
||||
@@ -176,4 +177,4 @@ parse_socket_address :: proc(addr_in: sys.SOCKET_ADDRESS) -> (addr: Endpoint) {
|
||||
case: return // Empty or invalid address type
|
||||
}
|
||||
unreachable()
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user