Fix sigaction.sa_flags type: c_int -> c_ulong

nix 0.30.1 expects SaFlags_t = c_ulong for target_os = "redox"
(see nix-0.30.1/src/sys/signal.rs:430). Our relibc had c_int,
causing type mismatch errors in uutils and any nix-dependent crate.
Align with nix's expectation.
This commit is contained in:
Red Bear OS
2026-06-27 22:22:32 +03:00
parent 2cd334a1f9
commit 32e402087f
2 changed files with 7 additions and 7 deletions
+5 -5
View File
@@ -12,7 +12,7 @@ use crate::{
platform::{
self, ERRNO, Pal, PalSignal, Sys,
types::{
c_char, c_int, c_ulonglong, c_void, pid_t, pthread_attr_t, pthread_t, size_t, uid_t,
c_char, c_int, c_ulong, c_ulonglong, c_void, pid_t, pthread_attr_t, pthread_t, size_t, uid_t,
},
},
};
@@ -56,7 +56,7 @@ pub const SIGEV_THREAD: c_int = 2;
/// cbindgen:ignore
pub struct sigaction {
pub sa_handler: Option<extern "C" fn(c_int)>,
pub sa_flags: c_int,
pub sa_flags: c_ulong,
pub sa_restorer: Option<unsafe extern "C" fn()>,
pub sa_mask: sigset_t,
}
@@ -300,9 +300,9 @@ pub extern "C" fn siginterrupt(sig: c_int, flag: c_int) -> c_int {
unsafe { sigaction(sig, ptr::null_mut(), psa.as_mut_ptr()) };
let mut sa = unsafe { psa.assume_init() };
if flag != 0 {
sa.sa_flags &= !SA_RESTART as c_int;
sa.sa_flags &= !SA_RESTART as c_ulong;
} else {
sa.sa_flags |= SA_RESTART as c_int;
sa.sa_flags |= SA_RESTART as c_ulong;
}
unsafe { sigaction(sig, &raw const sa, ptr::null_mut()) }
@@ -457,7 +457,7 @@ pub unsafe extern "C" fn sigset(
} else {
let mut sa = sigaction {
sa_handler: func,
sa_flags: c_int::from(0),
sa_flags: 0,
sa_restorer: None, // set by platform if applicable
sa_mask: sigset_t::default(),
};
+2 -2
View File
@@ -127,7 +127,7 @@ impl PalSignal for Sys {
SigactionKind::Ignore
} else {
SigactionKind::Handled {
handler: if c_act.sa_flags & crate::header::signal::SA_SIGINFO as c_int != 0 {
handler: if c_act.sa_flags & crate::header::signal::SA_SIGINFO as c_ulong != 0 {
SignalHandler {
sigaction: unsafe { core::mem::transmute(c_act.sa_handler) },
}
@@ -170,7 +170,7 @@ impl PalSignal for Sys {
unsafe { handler.handler }
},
sa_restorer: None,
sa_flags: old_action.flags.bits() as c_int,
sa_flags: old_action.flags.bits() as c_ulong,
sa_mask: old_action.mask,
},
};