From 32c5e89c82d6f359a97eb76442e70588f80d0914 Mon Sep 17 00:00:00 2001 From: 4lDO2 <4lDO2@protonmail.com> Date: Sun, 20 Apr 2025 17:10:51 +0200 Subject: [PATCH] Return ID of new session in setsid. --- redox-rt/src/sys.rs | 4 ++-- src/header/unistd/mod.rs | 2 +- src/platform/linux/mod.rs | 4 ++-- src/platform/pal/mod.rs | 2 +- src/platform/redox/mod.rs | 5 ++--- 5 files changed, 8 insertions(+), 9 deletions(-) diff --git a/redox-rt/src/sys.rs b/redox-rt/src/sys.rs index 82ece48fdc..1fe71d8c4b 100644 --- a/redox-rt/src/sys.rs +++ b/redox-rt/src/sys.rs @@ -339,9 +339,9 @@ pub fn posix_getsid(pid: usize) -> Result { &[ProcCall::Getsid as u64, pid as u64], ) } -pub fn posix_setsid() -> Result<()> { +pub fn posix_setsid() -> Result { this_proc_call(&mut [], CallFlags::empty(), &[ProcCall::Setsid as u64])?; - Ok(()) + Ok(posix_getpid()) } pub fn posix_nanosleep(rqtp: &TimeSpec, rmtp: &mut TimeSpec) -> Result<()> { wrapper(false, false, || syscall::nanosleep(rqtp, rmtp))?; diff --git a/src/header/unistd/mod.rs b/src/header/unistd/mod.rs index bcd682035e..e0cb6457a1 100644 --- a/src/header/unistd/mod.rs +++ b/src/header/unistd/mod.rs @@ -895,7 +895,7 @@ pub extern "C" fn setreuid(ruid: uid_t, euid: uid_t) -> c_int { /// See . #[no_mangle] pub extern "C" fn setsid() -> pid_t { - Sys::setsid().map(|()| 0).or_minus_one_errno() + Sys::setsid().or_minus_one_errno() } /// See . diff --git a/src/platform/linux/mod.rs b/src/platform/linux/mod.rs index b624a7da3a..93c6614edc 100644 --- a/src/platform/linux/mod.rs +++ b/src/platform/linux/mod.rs @@ -612,8 +612,8 @@ impl Pal for Sys { e_raw(unsafe { syscall!(SETRESUID, ruid, euid, suid) }).map(|_| ()) } - fn setsid() -> Result<()> { - e_raw(unsafe { syscall!(SETSID) }).map(|_| ()) + fn setsid() -> Result { + e_raw(unsafe { syscall!(SETSID) }).map(|s| s as c_int) } fn symlink(path1: CStr, path2: CStr) -> Result<()> { diff --git a/src/platform/pal/mod.rs b/src/platform/pal/mod.rs index fd5de3e2d8..f27cc635a8 100644 --- a/src/platform/pal/mod.rs +++ b/src/platform/pal/mod.rs @@ -237,7 +237,7 @@ pub trait Pal { fn setresuid(ruid: uid_t, euid: uid_t, suid: uid_t) -> Result<()>; - fn setsid() -> Result<()>; + fn setsid() -> Result; fn symlink(path1: CStr, path2: CStr) -> Result<()>; diff --git a/src/platform/redox/mod.rs b/src/platform/redox/mod.rs index 3c9b273b97..59fcd4014e 100644 --- a/src/platform/redox/mod.rs +++ b/src/platform/redox/mod.rs @@ -890,9 +890,8 @@ impl Pal for Sys { Err(Errno(ENOSYS)) } - fn setsid() -> Result<()> { - redox_rt::sys::posix_setsid()?; - Ok(()) + fn setsid() -> Result { + Ok(redox_rt::sys::posix_setsid()? as c_int) } fn setresgid(rgid: gid_t, egid: gid_t, sgid: gid_t) -> Result<()> {