add _chtimes

This commit is contained in:
CiD-
2022-04-01 22:41:35 -04:00
parent 6456618891
commit 88de3a1c06
2 changed files with 14 additions and 2 deletions

View File

@@ -27,6 +27,8 @@ _O_SYNC :: 0o4010000
_O_CLOEXEC :: 0o2000000
_O_PATH :: 0o10000000
_AT_FDCWD :: -100
_open :: proc(name: string, flags: File_Flags, perm: File_Mode) -> (Handle, Error) {
cstr := strings.clone_to_cstring(name, context.temp_allocator)
@@ -250,8 +252,12 @@ _lchown :: proc(name: string, uid, gid: int) -> Error {
}
_chtimes :: proc(name: string, atime, mtime: time.Time) -> Error {
//TODO
return nil
name_cstr := strings.clone_to_cstring(name, context.temp_allocator)
times := [2]Unix_File_Time {
{ atime._nsec, 0 },
{ mtime._nsec, 0 },
}
return _ok_or_error(unix.sys_utimensat(_AT_FDCWD, name_cstr, &times, 0))
}
_exists :: proc(name: string) -> bool {

View File

@@ -1779,6 +1779,12 @@ sys_fork :: proc() -> int {
}
}
// NOTE: Unsure about if this works directly on 32 bit archs. It may need 32 bit version of the time struct.
// As of Linux 5.1, there is a utimensat_time64 function. Maybe use this in the future?
sys_utimensat :: proc(dfd: int, path: cstring, times: rawptr, flags: int) -> int {
return int(intrinsics.syscall(SYS_utimensat, uintptr(dfd), uintptr(rawptr(path)), uintptr(times), uintptr(flags)))
}
get_errno :: proc(res: int) -> i32 {
if res < 0 && res > -4096 {
return i32(-res)