diff --git a/core/os/os2/file_posix.odin b/core/os/os2/file_posix.odin index dc46b380f..c53a176f2 100644 --- a/core/os/os2/file_posix.odin +++ b/core/os/os2/file_posix.odin @@ -70,7 +70,7 @@ _open :: proc(name: string, flags: File_Flags, perm: int) -> (f: ^File, err: Err if .Inheritable in flags { sys_flags -= {.CLOEXEC} } temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) - cname := clone_to_cstring(name, temp_allocator) + cname := clone_to_cstring(name, temp_allocator) or_return fd := posix.open(cname, sys_flags, transmute(posix.mode_t)posix._mode_t(perm)) if fd < 0 { @@ -183,39 +183,39 @@ _truncate :: proc(f: ^File, size: i64) -> Error { return nil } -_remove :: proc(name: string) -> Error { +_remove :: proc(name: string) -> (err: Error) { temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) - cname := clone_to_cstring(name, temp_allocator) + cname := clone_to_cstring(name, temp_allocator) or_return if posix.remove(cname) != 0 { return _get_platform_error() } return nil } -_rename :: proc(old_path, new_path: string) -> Error { +_rename :: proc(old_path, new_path: string) -> (err: Error) { temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) - cold := clone_to_cstring(old_path, temp_allocator) - cnew := clone_to_cstring(new_path, temp_allocator) + cold := clone_to_cstring(old_path, temp_allocator) or_return + cnew := clone_to_cstring(new_path, temp_allocator) or_return if posix.rename(cold, cnew) != 0 { return _get_platform_error() } return nil } -_link :: proc(old_name, new_name: string) -> Error { +_link :: proc(old_name, new_name: string) -> (err: Error) { temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) - cold := clone_to_cstring(old_name, temp_allocator) - cnew := clone_to_cstring(new_name, temp_allocator) + cold := clone_to_cstring(old_name, temp_allocator) or_return + cnew := clone_to_cstring(new_name, temp_allocator) or_return if posix.link(cold, cnew) != .OK { return _get_platform_error() } return nil } -_symlink :: proc(old_name, new_name: string) -> Error { +_symlink :: proc(old_name, new_name: string) -> (err: Error) { temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) - cold := clone_to_cstring(old_name, temp_allocator) - cnew := clone_to_cstring(new_name, temp_allocator) + cold := clone_to_cstring(old_name, temp_allocator) or_return + cnew := clone_to_cstring(new_name, temp_allocator) or_return if posix.symlink(cold, cnew) != .OK { return _get_platform_error() } @@ -224,7 +224,7 @@ _symlink :: proc(old_name, new_name: string) -> Error { _read_link :: proc(name: string, allocator: runtime.Allocator) -> (s: string, err: Error) { temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({ allocator })) - cname := clone_to_cstring(name, temp_allocator) + cname := clone_to_cstring(name, temp_allocator) or_return buf: [dynamic]byte buf.allocator = allocator @@ -268,9 +268,9 @@ _read_link :: proc(name: string, allocator: runtime.Allocator) -> (s: string, er } } -_chdir :: proc(name: string) -> Error { +_chdir :: proc(name: string) -> (err: Error) { temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) - cname := clone_to_cstring(name, temp_allocator) + cname := clone_to_cstring(name, temp_allocator) or_return if posix.chdir(cname) != .OK { return _get_platform_error() } @@ -291,9 +291,9 @@ _fchmod :: proc(f: ^File, mode: int) -> Error { return nil } -_chmod :: proc(name: string, mode: int) -> Error { +_chmod :: proc(name: string, mode: int) -> (err: Error) { temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) - cname := clone_to_cstring(name, temp_allocator) + cname := clone_to_cstring(name, temp_allocator) or_return if posix.chmod(cname, transmute(posix.mode_t)posix._mode_t(mode)) != .OK { return _get_platform_error() } @@ -307,9 +307,9 @@ _fchown :: proc(f: ^File, uid, gid: int) -> Error { return nil } -_chown :: proc(name: string, uid, gid: int) -> Error { +_chown :: proc(name: string, uid, gid: int) -> (err: Error) { temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) - cname := clone_to_cstring(name, temp_allocator) + cname := clone_to_cstring(name, temp_allocator) or_return if posix.chown(cname, posix.uid_t(uid), posix.gid_t(gid)) != .OK { return _get_platform_error() } @@ -318,14 +318,14 @@ _chown :: proc(name: string, uid, gid: int) -> Error { _lchown :: proc(name: string, uid, gid: int) -> Error { temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) - cname := clone_to_cstring(name, temp_allocator) + cname := clone_to_cstring(name, temp_allocator) or_return if posix.lchown(cname, posix.uid_t(uid), posix.gid_t(gid)) != .OK { return _get_platform_error() } return nil } -_chtimes :: proc(name: string, atime, mtime: time.Time) -> Error { +_chtimes :: proc(name: string, atime, mtime: time.Time) -> (err: Error) { times := [2]posix.timeval{ { tv_sec = posix.time_t(atime._nsec/1e9), /* seconds */ @@ -338,7 +338,7 @@ _chtimes :: proc(name: string, atime, mtime: time.Time) -> Error { } temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) - cname := clone_to_cstring(name, temp_allocator) + cname := clone_to_cstring(name, temp_allocator) or_return if posix.utimes(cname, ×) != .OK { return _get_platform_error() @@ -366,7 +366,8 @@ _fchtimes :: proc(f: ^File, atime, mtime: time.Time) -> Error { _exists :: proc(path: string) -> bool { temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) - cpath := clone_to_cstring(path, temp_allocator) + cpath, err := clone_to_cstring(path, temp_allocator) + if err != nil { return false } return posix.access(cpath) == .OK } diff --git a/core/os/os2/path_posix.odin b/core/os/os2/path_posix.odin index 01a149854..1ad46259c 100644 --- a/core/os/os2/path_posix.odin +++ b/core/os/os2/path_posix.odin @@ -14,9 +14,9 @@ _is_path_separator :: proc(c: byte) -> bool { return c == _Path_Separator } -_mkdir :: proc(name: string, perm: int) -> Error { +_mkdir :: proc(name: string, perm: int) -> (err: Error) { temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) - cname := clone_to_cstring(name, temp_allocator) + cname := clone_to_cstring(name, temp_allocator) or_return if posix.mkdir(cname, transmute(posix.mode_t)posix._mode_t(perm)) != .OK { return _get_platform_error() } @@ -52,9 +52,9 @@ _mkdir_all :: proc(path: string, perm: int) -> Error { } } -_remove_all :: proc(path: string) -> Error { +_remove_all :: proc(path: string) -> (err: Error) { temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) - cpath := clone_to_cstring(path, temp_allocator) + cpath := clone_to_cstring(path, temp_allocator) or_return dir := posix.opendir(cpath) if dir == nil { @@ -117,7 +117,7 @@ _get_working_directory :: proc(allocator: runtime.Allocator) -> (dir: string, er _set_working_directory :: proc(dir: string) -> (err: Error) { temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) - cdir := clone_to_cstring(dir, temp_allocator) + cdir := clone_to_cstring(dir, temp_allocator) or_return if posix.chdir(cdir) != .OK { err = _get_platform_error() } diff --git a/core/os/os2/process_posix.odin b/core/os/os2/process_posix.odin index 425e56ce3..f24aa12d3 100644 --- a/core/os/os2/process_posix.odin +++ b/core/os/os2/process_posix.odin @@ -108,12 +108,12 @@ _process_start :: proc(desc: Process_Desc) -> (process: Process, err: Error) { } cwd: cstring; if desc.working_dir != "" { - cwd = clone_to_cstring(desc.working_dir, temp_allocator) + cwd = clone_to_cstring(desc.working_dir, temp_allocator) or_return } cmd := make([]cstring, len(desc.command) + 1, temp_allocator) for part, i in desc.command { - cmd[i] = clone_to_cstring(part, temp_allocator) + cmd[i] = clone_to_cstring(part, temp_allocator) or_return } env: [^]cstring @@ -123,7 +123,7 @@ _process_start :: proc(desc: Process_Desc) -> (process: Process, err: Error) { } else { cenv := make([]cstring, len(desc.env) + 1, temp_allocator) for env, i in desc.env { - cenv[i] = clone_to_cstring(env, temp_allocator) + cenv[i] = clone_to_cstring(env, temp_allocator) or_return } env = raw_data(cenv) } diff --git a/core/os/os2/process_posix_darwin.odin b/core/os/os2/process_posix_darwin.odin index f150d728b..eb7ab492d 100644 --- a/core/os/os2/process_posix_darwin.odin +++ b/core/os/os2/process_posix_darwin.odin @@ -50,6 +50,7 @@ _process_info_by_pid :: proc(pid: int, selection: Process_Info_Fields, allocator } + temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({ allocator })) info.pid = pid // Thought on errors is: allocation failures return immediately (also why the non-allocation stuff is done first), diff --git a/core/os/os2/stat_posix.odin b/core/os/os2/stat_posix.odin index 0f873cd40..5119fe9ad 100644 --- a/core/os/os2/stat_posix.odin +++ b/core/os/os2/stat_posix.odin @@ -122,7 +122,8 @@ _lstat :: proc(name: string, allocator: runtime.Allocator) -> (fi: File_Info, er } stat: posix.stat_t - if posix.lstat(clone_to_cstring(fullpath), &stat, temp_allocator) != .OK { + c_fullpath := clone_to_cstring(fullpath, temp_allocator) or_return + if posix.lstat(c_fullpath, &stat) != .OK { err = _get_platform_error() return }