From 829654e3a2597eff5ad1ef3ca5b30f0494b755a0 Mon Sep 17 00:00:00 2001 From: Justin Hurstwright Date: Thu, 25 Jan 2024 20:51:36 -0600 Subject: [PATCH] steal the last_write from freebsd implementation --- core/os/os_darwin.odin | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/core/os/os_darwin.odin b/core/os/os_darwin.odin index 5a093b421..0a729267c 100644 --- a/core/os/os_darwin.odin +++ b/core/os/os_darwin.odin @@ -642,10 +642,24 @@ stdin: Handle = 0 // get_std_handle(win32.STD_INPUT_HANDLE); stdout: Handle = 1 // get_std_handle(win32.STD_OUTPUT_HANDLE); stderr: Handle = 2 // get_std_handle(win32.STD_ERROR_HANDLE); -/* TODO(zangent): Implement these! -last_write_time :: proc(fd: Handle) -> File_Time {} -last_write_time_by_name :: proc(name: string) -> File_Time {} -*/ +last_write_time :: proc(fd: Handle) -> (File_Time, Errno) { + s, err := _fstat(fd) + if err != ERROR_NONE { + return 0, err + } + modified := s.modified.seconds * 1_000_000_000 + s.modified.nanoseconds + return File_Time(modified), ERROR_NONE +} + +last_write_time_by_name :: proc(name: string) -> (File_Time, Errno) { + s, err := _stat(name) + if err != ERROR_NONE { + return 0, err + } + modified := s.modified.seconds * 1_000_000_000 + s.modified.nanoseconds + return File_Time(modified), ERROR_NONE +} + is_path_separator :: proc(r: rune) -> bool { return r == '/'