[sys/linux] Change flags parameter of execveat to bit_set

This commit is contained in:
PucklaJ
2024-04-28 11:48:18 +02:00
parent b0fe6212bb
commit 7f301790d0
4 changed files with 16 additions and 5 deletions
+8
View File
@@ -1756,3 +1756,11 @@ EPoll_Ctl_Opcode :: enum i32 {
DEL = 2,
MOD = 3,
}
/*
Bits for execveat(2) flags.
*/
Execveat_Flags_Bits :: enum {
AT_SYMLINK_NOFOLLOW = 8,
AT_EMPTY_PATH = 12,
}
-2
View File
@@ -5,8 +5,6 @@ package linux
that relative paths are relative to current directory.
*/
AT_FDCWD :: Fd(-100)
AT_EMPTY_PATH :: 0x1000
AT_SYMLINK_NOFOLLOW :: 0x100
/*
Special value to put into timespec for utimensat() to set timestamp to the current time.
+3 -3
View File
@@ -783,7 +783,7 @@ execve :: proc "contextless" (name: cstring, argv: [^]cstring, envp: [^]cstring)
ret := syscall(SYS_execve, cast(rawptr) name, cast(rawptr) argv, cast(rawptr) envp)
return Errno(-ret)
} else {
return execveat(AT_FDCWD, name, argv, envp, 0)
return execveat(AT_FDCWD, name, argv, envp, nil)
}
}
@@ -2816,8 +2816,8 @@ getrandom :: proc "contextless" (buf: []u8, flags: Get_Random_Flags) -> (int, Er
Execute program relative to a directory file descriptor.
Available since Linux 3.19.
*/
execveat :: proc "contextless" (dirfd: Fd, name: cstring, argv: [^]cstring, envp: [^]cstring, flags: i32) -> (Errno) {
ret := syscall(SYS_execveat, dirfd, cast(rawptr) name, cast(rawptr) argv, cast(rawptr) envp, flags)
execveat :: proc "contextless" (dirfd: Fd, name: cstring, argv: [^]cstring, envp: [^]cstring, flags: Execveat_Flags) -> (Errno) {
ret := syscall(SYS_execveat, dirfd, cast(rawptr) name, cast(rawptr) argv, cast(rawptr) envp, transmute(i32) flags)
return Errno(-ret)
}
+5
View File
@@ -1238,3 +1238,8 @@ EPoll_Event :: struct #packed {
events: EPoll_Event_Kind,
data: EPoll_Data,
}
/*
Flags for execveat(2) syscall.
*/
Execveat_Flags :: bit_set[Execveat_Flags_Bits; i32]