diff --git a/src/header/signal/mod.rs b/src/header/signal/mod.rs index 8bb133bb01733ddb6a33d4e246ef15b1a99649b5..d3495b50906be9664c4b3ab253346b2f6983f642 100644 --- a/src/header/signal/mod.rs +++ b/src/header/signal/mod.rs @@ -131,9 +131,21 @@ pub extern "C" fn siginterrupt(sig: c_int, flag: c_int) -> c_int { unimplemented!(); } -// #[no_mangle] +#[no_mangle] pub extern "C" fn sigismember(set: *const sigset_t, signo: c_int) -> c_int { - unimplemented!(); + if signo <= 0 || signo as usize > NSIG { + unsafe { + platform::errno = errno::EINVAL; + } + return -1; + } + + if let Some(set) = unsafe { (set as *mut SigSet).as_mut() } { + if set.contains(signo as usize - 1) { + return 1; + } + } + 0 } extern "C" {