From 341087a82bf09f020fb60f580391dd02cce7bb4c Mon Sep 17 00:00:00 2001 From: flysand7 Date: Fri, 10 Nov 2023 08:31:52 +1100 Subject: [PATCH] [sys/linux]: Fix creat(2) syscall not returning file descriptor --- core/sys/linux/sys.odin | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/sys/linux/sys.odin b/core/sys/linux/sys.odin index f502b11be..3567d3526 100644 --- a/core/sys/linux/sys.odin +++ b/core/sys/linux/sys.odin @@ -1209,12 +1209,12 @@ rmdir :: proc "contextless" (name: cstring) -> (Errno) { Available since Linux 1.0. On ARM64 available since Linux 2.6.16. */ -creat :: proc "contextless" (name: cstring, mode: Mode) -> (Errno) { +creat :: proc "contextless" (name: cstring, mode: Mode) -> (Fd, Errno) { when ODIN_ARCH == .arm64 { return openat(AT_FDCWD, name, {.CREAT, .WRONLY,.TRUNC}, mode) } else { ret := syscall(SYS_creat, cast(rawptr) name, transmute(u32) mode) - return Errno(-ret) + return errno_unwrap(ret, Fd) } }