aboutsummaryrefslogtreecommitdiff
path: root/core/sys/linux
diff options
context:
space:
mode:
authorflysand7 <yyakut.ac@gmail.com>2023-11-10 08:31:52 +1100
committerflysand7 <yyakut.ac@gmail.com>2023-11-10 08:31:52 +1100
commit341087a82bf09f020fb60f580391dd02cce7bb4c (patch)
tree6a54465564e971855c77b23189cc232912fd4b1f /core/sys/linux
parent851fd1f8d11494e135ee6ad15ddf373560205965 (diff)
[sys/linux]: Fix creat(2) syscall not returning file descriptor
Diffstat (limited to 'core/sys/linux')
-rw-r--r--core/sys/linux/sys.odin4
1 files 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)
}
}