From ea5783c2ac656bc6bc911704fa1f2e7beb1a160c Mon Sep 17 00:00:00 2001 From: Laytan Laats Date: Fri, 2 Aug 2024 21:42:53 +0200 Subject: [PATCH] os2: fixes after rebasing --- core/os/os2/file_posix.odin | 27 +++++++++++++++++---------- core/os/os2/stat_posix.odin | 4 ++-- 2 files changed, 19 insertions(+), 12 deletions(-) diff --git a/core/os/os2/file_posix.odin b/core/os/os2/file_posix.odin index a956932cf..123e288ef 100644 --- a/core/os/os2/file_posix.odin +++ b/core/os/os2/file_posix.odin @@ -26,9 +26,9 @@ File_Impl :: struct { @(init) init_std_files :: proc() { // NOTE: is this (paths) also the case on non darwin? - stdin = _new_file(posix.STDIN_FILENO, "/dev/stdin") - stdout = _new_file(posix.STDOUT_FILENO, "/dev/stdout") - stderr = _new_file(posix.STDERR_FILENO, "/dev/stdout") + stdin = new_file(posix.STDIN_FILENO, "/dev/stdin") + stdout = new_file(posix.STDOUT_FILENO, "/dev/stdout") + stderr = new_file(posix.STDERR_FILENO, "/dev/stdout") } _open :: proc(name: string, flags: File_Flags, perm: int) -> (f: ^File, err: Error) { @@ -63,27 +63,34 @@ _open :: proc(name: string, flags: File_Flags, perm: int) -> (f: ^File, err: Err return } - return _new_file(uintptr(fd), name), nil + return _new_file(uintptr(fd), name) } -_new_file :: proc(handle: uintptr, name: string) -> ^File { - if name == "" || handle == ~uintptr(0) { - return nil +_new_file :: proc(handle: uintptr, name: string) -> (f: ^File, err: Error) { + if name == "" { + err = .Invalid_Path + return + } else if handle == ~uintptr(0) { + err = .Invalid_File + return } TEMP_ALLOCATOR_GUARD() cname := temp_cstring(name) crname := posix.realpath(cname, nil) - assert(crname != nil) + if crname == nil { + err = _get_platform_error() + return + } rname := string(crname) - f := __new_file(posix.FD(handle)) + f = __new_file(posix.FD(handle)) impl := (^File_Impl)(f.impl) impl.name = rname impl.cname = crname - return f + return f, nil } __new_file :: proc(handle: posix.FD) -> ^File { diff --git a/core/os/os2/stat_posix.odin b/core/os/os2/stat_posix.odin index 359920b3b..caf25a277 100644 --- a/core/os/os2/stat_posix.odin +++ b/core/os/os2/stat_posix.odin @@ -12,10 +12,10 @@ internal_stat :: proc(stat: posix.stat_t, fullpath: string) -> (fi: File_Info) { fi.fullpath = fullpath fi.name = filepath.base(fi.fullpath) - fi.inode = u64(stat.st_ino) + fi.inode = u128(stat.st_ino) fi.size = i64(stat.st_size) - fi.mode = int(transmute(posix._mode_t)(stat.st_mode - posix._S_IFMT)) + fi.mode = int(transmute(posix._mode_t)(stat.st_mode - posix.S_IFMT)) fi.type = .Undetermined switch {