diff --git a/std/c/index.zig b/std/c/index.zig index e6ba1b01fa..9e33ed2196 100644 --- a/std/c/index.zig +++ b/std/c/index.zig @@ -41,3 +41,5 @@ pub extern "c" fn realpath(noalias file_name: &const u8, noalias resolved_name: pub extern "c" fn sigprocmask(how: c_int, noalias set: &const sigset_t, noalias oset: ?&sigset_t) -> c_int; pub extern "c" fn sigaction(sig: c_int, noalias act: &const Sigaction, noalias oact: ?&Sigaction) -> c_int; pub extern "c" fn nanosleep(rqtp: &const timespec, rmtp: ?×pec) -> c_int; +pub extern "c" fn setreuid(ruid: c_uint, euid: c_uint) -> c_int; +pub extern "c" fn setregid(rgid: c_uint, egid: c_uint) -> c_int; diff --git a/std/os/darwin.zig b/std/os/darwin.zig index 0cec438e5f..149523b069 100644 --- a/std/os/darwin.zig +++ b/std/os/darwin.zig @@ -229,6 +229,14 @@ pub fn realpath(noalias filename: &const u8, noalias resolved_name: &u8) -> usiz if (c.realpath(filename, resolved_name) == null) @bitCast(usize, -isize(*c._errno())) else 0 } +pub fn setreuid(ruid: u32, euid: u32) -> usize { + errnoWrap(c.setreuid(ruid, euid)) +} + +pub fn setregid(rgid: u32, egid: u32) -> usize { + errnoWrap(c.setregid(rgid, egid)) +} + pub fn sigprocmask(flags: u32, noalias set: &const sigset_t, noalias oldset: ?&sigset_t) -> usize { errnoWrap(c.sigprocmask(@bitCast(c_int, flags), set, oldset)) }