mirror of
https://github.com/RGBCube/uutils-coreutils
synced 2025-07-28 11:37:44 +00:00
od: fix command-line parsing of file names
This commit is contained in:
parent
e8eab8d3e8
commit
9e33c3a48c
5 changed files with 23 additions and 5 deletions
|
@ -134,12 +134,11 @@ pub fn uumain(args: Vec<String>) -> i32 {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
// Gather up file names - args which don't start with '-'
|
// Gather up file names
|
||||||
let mut inputs = args[1..]
|
let mut inputs = matches.free
|
||||||
.iter()
|
.iter()
|
||||||
.filter_map(|w| match w as &str {
|
.filter_map(|w| match w as &str {
|
||||||
"--" => Some(InputSource::Stdin),
|
"-" => Some(InputSource::Stdin),
|
||||||
o if o.starts_with("-") => None,
|
|
||||||
x => Some(InputSource::FileName(x)),
|
x => Some(InputSource::FileName(x)),
|
||||||
})
|
})
|
||||||
.collect::<Vec<_>>();
|
.collect::<Vec<_>>();
|
||||||
|
|
1
tests/fixtures/od/-f
vendored
Normal file
1
tests/fixtures/od/-f
vendored
Normal file
|
@ -0,0 +1 @@
|
||||||
|
minus lowercase f
|
1
tests/fixtures/od/c
vendored
Normal file
1
tests/fixtures/od/c
vendored
Normal file
|
@ -0,0 +1 @@
|
||||||
|
lowercase c
|
1
tests/fixtures/od/x
vendored
Normal file
1
tests/fixtures/od/x
vendored
Normal file
|
@ -0,0 +1 @@
|
||||||
|
lowercase x
|
|
@ -117,7 +117,7 @@ fn test_from_mixed() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
let result = new_ucmd!().arg("--endian=little").arg(file1.as_os_str()).arg("--").arg(file3.as_os_str()).run_piped_stdin(data2.as_bytes());
|
let result = new_ucmd!().arg("--endian=little").arg(file1.as_os_str()).arg("-").arg(file3.as_os_str()).run_piped_stdin(data2.as_bytes());
|
||||||
|
|
||||||
assert_empty_stderr!(result);
|
assert_empty_stderr!(result);
|
||||||
assert!(result.success);
|
assert!(result.success);
|
||||||
|
@ -548,3 +548,19 @@ fn test_ascii_dump(){
|
||||||
0000026
|
0000026
|
||||||
"));
|
"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_filename_parsing(){
|
||||||
|
// files "a" and "x" both exists, but are no filenames in the commandline below
|
||||||
|
// "-f" must be treated as a filename, it contains the text: minus lowercase f
|
||||||
|
// so "-f" should not be interpreted as a formatting option.
|
||||||
|
let result = new_ucmd!().arg("--format").arg("a").arg("-A").arg("x").arg("--").arg("-f").run();
|
||||||
|
|
||||||
|
assert_empty_stderr!(result);
|
||||||
|
assert!(result.success);
|
||||||
|
assert_eq!(result.stdout, unindent("
|
||||||
|
000000 m i n u s sp l o w e r c a s e sp
|
||||||
|
000010 f nl
|
||||||
|
000012
|
||||||
|
"));
|
||||||
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue