From 330d65bcae97c77604fb8fee4fa2a69bd0191c0b Mon Sep 17 00:00:00 2001 From: Tuomas Tynkkynen Date: Mon, 10 Feb 2025 22:43:18 +0200 Subject: [PATCH] pgrep, pkill: Move signal to settings --- src/uu/pgrep/src/pgrep.rs | 8 +++----- src/uu/pkill/src/pkill.rs | 12 +++++------- 2 files changed, 8 insertions(+), 12 deletions(-) diff --git a/src/uu/pgrep/src/pgrep.rs b/src/uu/pgrep/src/pgrep.rs index 3639b3b..08af580 100644 --- a/src/uu/pgrep/src/pgrep.rs +++ b/src/uu/pgrep/src/pgrep.rs @@ -32,6 +32,7 @@ struct Settings { parent: Option>, runstates: Option, terminal: Option>, + signal: usize, } fn get_match_settings(matches: &ArgMatches) -> UResult { @@ -56,6 +57,7 @@ fn get_match_settings(matches: &ArgMatches) -> UResult { .flat_map(Teletype::try_from) .collect::>() }), + signal: parse_signal_value(matches.get_one::("signal").unwrap())?, }; if (!settings.newest @@ -91,10 +93,6 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> { let matches = uu_app().try_get_matches_from(args)?; let settings = get_match_settings(&matches)?; - // Parse signal - #[cfg(unix)] - let sig_num = parse_signal_value(matches.get_one::("signal").unwrap())?; - // Collect pids let pids = { let mut pids = collect_matched_pids(&settings); @@ -103,7 +101,7 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> { pids.retain(|pid| { let mask = u64::from_str_radix(pid.clone().status().get("SigCgt").unwrap(), 16).unwrap(); - mask & (1 << sig_num) != 0 + mask & (1 << settings.signal) != 0 }); } if pids.is_empty() { diff --git a/src/uu/pkill/src/pkill.rs b/src/uu/pkill/src/pkill.rs index 2d8a4ce..5e5ebe9 100644 --- a/src/uu/pkill/src/pkill.rs +++ b/src/uu/pkill/src/pkill.rs @@ -43,6 +43,7 @@ struct Settings { parent: Option>, runstates: Option, terminal: Option>, + signal: usize, } fn get_match_settings(matches: &ArgMatches) -> UResult { @@ -67,6 +68,7 @@ fn get_match_settings(matches: &ArgMatches) -> UResult { .flat_map(Teletype::try_from) .collect::>() }), + signal: parse_signal_value(matches.get_one::("signal").unwrap())?, }; if (!settings.newest @@ -97,19 +99,15 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> { let matches = uu_app().try_get_matches_from(&args)?; let settings = get_match_settings(&matches)?; - // Parse signal #[cfg(unix)] - let sig_num = parse_signal_value(matches.get_one::("signal").unwrap())?; - - #[cfg(unix)] - let sig_name = signal_name_by_value(sig_num); + let sig_name = signal_name_by_value(settings.signal); // Signal does not support converting from EXIT // Instead, nix::signal::kill expects Option::None to properly handle EXIT #[cfg(unix)] let sig: Option = if sig_name.is_some_and(|name| name == "EXIT") { None } else { - let sig = (sig_num as i32) + let sig = (settings.signal as i32) .try_into() .map_err(|e| std::io::Error::from_raw_os_error(e as i32))?; Some(sig) @@ -123,7 +121,7 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> { pids.retain(|pid| { let mask = u64::from_str_radix(pid.clone().status().get("SigCgt").unwrap(), 16).unwrap(); - mask & (1 << sig_num) != 0 + mask & (1 << settings.signal) != 0 }); } if pids.is_empty() {