From 32e402087f942162eea439b657f01eb47defdfbd Mon Sep 17 00:00:00 2001 From: Red Bear OS Date: Sat, 27 Jun 2026 22:22:32 +0300 Subject: [PATCH] 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. --- src/header/signal/mod.rs | 10 +++++----- src/platform/redox/signal.rs | 4 ++-- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/header/signal/mod.rs b/src/header/signal/mod.rs index eecab22ae9..7356414308 100644 --- a/src/header/signal/mod.rs +++ b/src/header/signal/mod.rs @@ -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, - pub sa_flags: c_int, + pub sa_flags: c_ulong, pub sa_restorer: Option, 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(), }; diff --git a/src/platform/redox/signal.rs b/src/platform/redox/signal.rs index faa03ea09e..71ac274f01 100644 --- a/src/platform/redox/signal.rs +++ b/src/platform/redox/signal.rs @@ -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, }, };