mirror of
https://github.com/RGBCube/uutils-coreutils
synced 2025-07-27 19:17:43 +00:00
Merge pull request #1369 from Dr-Emann/uucore_signals_cleanup
Uucore signals cleanup
This commit is contained in:
commit
0101351290
1 changed files with 55 additions and 11 deletions
|
@ -325,21 +325,65 @@ pub static ALL_SIGNALS: [Signal<'static>; 31] = [
|
||||||
];
|
];
|
||||||
|
|
||||||
pub fn signal_by_name_or_value(signal_name_or_value: &str) -> Option<usize> {
|
pub fn signal_by_name_or_value(signal_name_or_value: &str) -> Option<usize> {
|
||||||
if signal_name_or_value == "0" {
|
if let Ok(value) = signal_name_or_value.parse() {
|
||||||
return Some(0);
|
if is_signal(value) {
|
||||||
}
|
return Some(value);
|
||||||
for signal in &ALL_SIGNALS {
|
} else {
|
||||||
let long_name = format!("SIG{}", signal.name);
|
return None;
|
||||||
if signal.name == signal_name_or_value || (signal_name_or_value == signal.value.to_string())
|
|
||||||
|| (long_name == signal_name_or_value)
|
|
||||||
{
|
|
||||||
return Some(signal.value);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
None
|
let signal_name = signal_name_or_value.trim_left_matches("SIG");
|
||||||
|
|
||||||
|
ALL_SIGNALS
|
||||||
|
.iter()
|
||||||
|
.find(|s| s.name == signal_name)
|
||||||
|
.map(|s| s.value)
|
||||||
}
|
}
|
||||||
|
|
||||||
#[inline(always)]
|
#[inline(always)]
|
||||||
pub fn is_signal(num: usize) -> bool {
|
pub fn is_signal(num: usize) -> bool {
|
||||||
num < ALL_SIGNALS.len()
|
// Named signals start at 1
|
||||||
|
num <= ALL_SIGNALS.len()
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn signals_all_contiguous() {
|
||||||
|
for (i, signal) in ALL_SIGNALS.iter().enumerate() {
|
||||||
|
assert_eq!(signal.value, i + 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn signals_all_are_signal() {
|
||||||
|
for signal in &ALL_SIGNALS {
|
||||||
|
assert!(is_signal(signal.value));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn signal_by_value() {
|
||||||
|
assert_eq!(signal_by_name_or_value("0"), Some(0));
|
||||||
|
for signal in &ALL_SIGNALS {
|
||||||
|
assert_eq!(
|
||||||
|
signal_by_name_or_value(&signal.value.to_string()),
|
||||||
|
Some(signal.value)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn signal_by_short_name() {
|
||||||
|
for signal in &ALL_SIGNALS {
|
||||||
|
assert_eq!(signal_by_name_or_value(signal.name), Some(signal.value));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn signal_by_long_name() {
|
||||||
|
for signal in &ALL_SIGNALS {
|
||||||
|
assert_eq!(
|
||||||
|
signal_by_name_or_value(&format!("SIG{}", signal.name)),
|
||||||
|
Some(signal.value)
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue