aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLaytan Laats <laytanlaats@hotmail.com>2024-08-02 21:42:53 +0200
committerLaytan Laats <laytanlaats@hotmail.com>2024-08-14 01:44:37 +0200
commitea5783c2ac656bc6bc911704fa1f2e7beb1a160c (patch)
tree32dd3afd76d699ced8f075bd41fbbb11d4dac912
parente05fddc00121f1e244fa141c9dc35d4dcee69b98 (diff)
os2: fixes after rebasing
-rw-r--r--core/os/os2/file_posix.odin27
-rw-r--r--core/os/os2/stat_posix.odin4
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 {