From b0b937dc3e2a81c95b0d621f726fd9b39673dfa6 Mon Sep 17 00:00:00 2001 From: Michael Debertol Date: Thu, 10 Jun 2021 18:29:06 +0200 Subject: [PATCH] core: add signal name lookup by value --- src/uucore/src/lib/features/signals.rs | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/uucore/src/lib/features/signals.rs b/src/uucore/src/lib/features/signals.rs index 2e6069cb7..3c52a9158 100644 --- a/src/uucore/src/lib/features/signals.rs +++ b/src/uucore/src/lib/features/signals.rs @@ -349,6 +349,13 @@ pub fn signal_by_name_or_value(signal_name_or_value: &str) -> Option { .map(|s| s.value) } +pub fn signal_name_by_value(signal_value: usize) -> Option<&'static str> { + ALL_SIGNALS + .iter() + .find(|signal| signal.value == signal_value) + .map(|signal| signal.name) +} + #[inline(always)] pub fn is_signal(num: usize) -> bool { // Named signals start at 1 @@ -358,7 +365,7 @@ pub fn is_signal(num: usize) -> bool { #[test] fn signals_all_contiguous() { for (i, signal) in ALL_SIGNALS.iter().enumerate() { - assert_eq!(signal.value, i + 1); + assert_eq!(signal.value, i); } } @@ -396,3 +403,10 @@ fn signal_by_long_name() { ); } } + +#[test] +fn name() { + for signal in &ALL_SIGNALS { + assert_eq!(signal_name_by_value(signal.value), Some(signal.name)); + } +}