From 2d4810b91b8741db9cf902a8fb9428d17a5ecfa6 Mon Sep 17 00:00:00 2001 From: Daniel Hofstetter Date: Tue, 1 Nov 2022 10:04:46 +0100 Subject: [PATCH] numfmt: allow ' ' as field separator --- src/uu/numfmt/src/numfmt.rs | 2 +- src/uucore/src/lib/mods/ranges.rs | 2 +- tests/by-util/test_numfmt.rs | 7 ++++++- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/uu/numfmt/src/numfmt.rs b/src/uu/numfmt/src/numfmt.rs index d490d3fee97..1e826e68e28 100644 --- a/src/uu/numfmt/src/numfmt.rs +++ b/src/uu/numfmt/src/numfmt.rs @@ -160,7 +160,7 @@ fn parse_options(args: &ArgMatches) -> Result { let fields = args.get_one::(options::FIELD).unwrap().as_str(); // a lone "-" means "all fields", even as part of a list of fields - let fields = if fields.split(',').any(|x| x == "-") { + let fields = if fields.split(&[',', ' ']).any(|x| x == "-") { vec![Range { low: 1, high: std::usize::MAX, diff --git a/src/uucore/src/lib/mods/ranges.rs b/src/uucore/src/lib/mods/ranges.rs index aba4c9ca270..76a61b9a687 100644 --- a/src/uucore/src/lib/mods/ranges.rs +++ b/src/uucore/src/lib/mods/ranges.rs @@ -75,7 +75,7 @@ impl Range { pub fn from_list(list: &str) -> Result, String> { let mut ranges = Vec::new(); - for item in list.split(',') { + for item in list.split(&[',', ' ']) { let range_item = FromStr::from_str(item) .map_err(|e| format!("range {} was invalid: {}", item.quote(), e))?; ranges.push(range_item); diff --git a/tests/by-util/test_numfmt.rs b/tests/by-util/test_numfmt.rs index f4fa942980c..108c26fd06d 100644 --- a/tests/by-util/test_numfmt.rs +++ b/tests/by-util/test_numfmt.rs @@ -373,6 +373,11 @@ fn test_format_selected_fields() { .args(&["--from=auto", "--field", "1,4,3", "1K 2K 3K 4K 5K 6K"]) .succeeds() .stdout_only("1000 2K 3000 4000 5K 6K\n"); + + new_ucmd!() + .args(&["--from=auto", "--field", "1,4 3", "1K 2K 3K 4K 5K 6K"]) + .succeeds() + .stdout_only("1000 2K 3000 4000 5K 6K\n"); } #[test] @@ -401,7 +406,7 @@ fn test_format_selected_field_range() { #[test] fn test_format_all_fields() { - let all_fields_patterns = vec!["-", "-,3", "3,-", "1,-,3"]; + let all_fields_patterns = vec!["-", "-,3", "3,-", "1,-,3", "- 3"]; for pattern in all_fields_patterns { new_ucmd!()