diff options
| author | gingerBill <gingerBill@users.noreply.github.com> | 2025-11-17 09:41:46 +0000 |
|---|---|---|
| committer | gingerBill <gingerBill@users.noreply.github.com> | 2025-11-17 09:41:46 +0000 |
| commit | bbf0c0dc004046da63c87b803321d2dbd346bcdc (patch) | |
| tree | ff64fb747ee91cb84f3caea4c5e00d7012e42dd2 /core | |
| parent | 8558ab59edbe1e610c389f9de1b7d697f2060d16 (diff) | |
| parent | 3e0f9cace6ec30ea308edab5d72baacc82d2201a (diff) | |
Merge branch 'master' into bill/os2-file-stream
Diffstat (limited to 'core')
| -rw-r--r-- | core/odin/parser/parser.odin | 20 | ||||
| -rw-r--r-- | core/os/os2/path_posix.odin | 2 | ||||
| -rw-r--r-- | core/os/os2/path_windows.odin | 4 | ||||
| -rw-r--r-- | core/os/os2/stat_windows.odin | 6 | ||||
| -rw-r--r-- | core/sys/windows/ws2_32.odin | 24 |
5 files changed, 38 insertions, 18 deletions
diff --git a/core/odin/parser/parser.odin b/core/odin/parser/parser.odin index ce088fc64..f4beddcbb 100644 --- a/core/odin/parser/parser.odin +++ b/core/odin/parser/parser.odin @@ -99,19 +99,15 @@ end_pos :: proc(tok: tokenizer.Token) -> tokenizer.Pos { pos := tok.pos pos.offset += len(tok.text) - if tok.kind == .Comment || tok.kind == .String { - if tok.text[:2] == "/*" || tok.text[:1] == "`" { - for i := 0; i < len(tok.text); i += 1 { - c := tok.text[i] - if c == '\n' { - pos.line += 1 - pos.column = 1 - } else { - pos.column += 1 - } + if (tok.kind == .Comment && tok.text[:2] == "/*") || (tok.kind == .String && tok.text[:1] == "`") { + for i := 0; i < len(tok.text); i += 1 { + c := tok.text[i] + if c == '\n' { + pos.line += 1 + pos.column = 1 + } else { + pos.column += 1 } - } else { - pos.column += len(tok.text) } } else { pos.column += len(tok.text) diff --git a/core/os/os2/path_posix.odin b/core/os/os2/path_posix.odin index f22cd446b..173cb6b6d 100644 --- a/core/os/os2/path_posix.odin +++ b/core/os/os2/path_posix.odin @@ -133,7 +133,7 @@ _get_absolute_path :: proc(path: string, allocator: runtime.Allocator) -> (absol rel_cstr := clone_to_cstring(rel, temp_allocator) or_return path_ptr := posix.realpath(rel_cstr, nil) if path_ptr == nil { - return "", Platform_Error(posix.errno()) + return "", _get_platform_error() } defer posix.free(path_ptr) diff --git a/core/os/os2/path_windows.odin b/core/os/os2/path_windows.odin index e5a1545ec..1225ab2ce 100644 --- a/core/os/os2/path_windows.odin +++ b/core/os/os2/path_windows.odin @@ -305,13 +305,13 @@ _get_absolute_path :: proc(path: string, allocator: runtime.Allocator) -> (absol rel_utf16 := win32.utf8_to_utf16(rel, temp_allocator) n := win32.GetFullPathNameW(cstring16(raw_data(rel_utf16)), 0, nil, nil) if n == 0 { - return "", Platform_Error(win32.GetLastError()) + return "", _get_platform_error() } buf := make([]u16, n, temp_allocator) or_return n = win32.GetFullPathNameW(cstring16(raw_data(rel_utf16)), u32(n), cstring16(raw_data(buf)), nil) if n == 0 { - return "", Platform_Error(win32.GetLastError()) + return "", _get_platform_error() } return win32.utf16_to_utf8(buf, allocator) diff --git a/core/os/os2/stat_windows.odin b/core/os/os2/stat_windows.odin index 20a708145..651029ac3 100644 --- a/core/os/os2/stat_windows.odin +++ b/core/os/os2/stat_windows.odin @@ -287,9 +287,9 @@ _file_info_from_get_file_information_by_handle :: proc(path: string, h: win32.HA ti: win32.FILE_ATTRIBUTE_TAG_INFO if !win32.GetFileInformationByHandleEx(h, .FileAttributeTagInfo, &ti, size_of(ti)) { - err := win32.GetLastError() - if err != win32.ERROR_INVALID_PARAMETER { - return {}, Platform_Error(err) + err := _get_platform_error() + if perr, ok := is_platform_error(err); ok && perr != i32(win32.ERROR_INVALID_PARAMETER) { + return {}, err } // Indicate this is a symlink on FAT file systems ti.ReparseTag = 0 diff --git a/core/sys/windows/ws2_32.odin b/core/sys/windows/ws2_32.odin index 0d1f477c3..66054dd98 100644 --- a/core/sys/windows/ws2_32.odin +++ b/core/sys/windows/ws2_32.odin @@ -121,6 +121,18 @@ foreign ws2_32 { lpOverlapped: LPWSAOVERLAPPED, lpCompletionRoutine: LPWSAOVERLAPPED_COMPLETION_ROUTINE, ) -> c_int --- + // [MS-Docs](https://learn.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-wsasendto) + WSASendTo :: proc( + s: SOCKET, + lpBuffers: LPWSABUF, + dwBufferCount: DWORD, + lpNumberOfBytesSent: LPDWORD, + dwFlags: DWORD, + lpTo: ^SOCKADDR_STORAGE_LH, + iToLen: c_int, + lpOverlapped: LPWSAOVERLAPPED, + lpCompletionRoutine: LPWSAOVERLAPPED_COMPLETION_ROUTINE, + ) -> c_int --- // [MS-Docs](https://learn.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-wsarecv) WSARecv :: proc( s: SOCKET, @@ -131,6 +143,18 @@ foreign ws2_32 { lpOverlapped: LPWSAOVERLAPPED, lpCompletionRoutine: LPWSAOVERLAPPED_COMPLETION_ROUTINE, ) -> c_int --- + // [MS-Docs](https://learn.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-wsarecvfrom) + WSARecvFrom :: proc( + s: SOCKET, + lpBuffers: LPWSABUF, + dwBufferCount: DWORD, + lpNumberOfBytesRecvd: LPDWORD, + lpFlags: LPDWORD, + lpFrom: ^SOCKADDR_STORAGE_LH, + lpFromlen: ^c_int, + lpOverlapped: LPWSAOVERLAPPED, + lpCompletionRoutine: LPWSAOVERLAPPED_COMPLETION_ROUTINE, + ) -> c_int --- // [MS-Docs](https://learn.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-wsasocketw) WSASocketW :: proc( af: c_int, |