1
Fork 0
mirror of https://github.com/RGBCube/uutils-coreutils synced 2025-07-28 03:27:44 +00:00

Merge pull request #5306 from cakebaker/nl_fix_output_order_if_stdin_and_files_are_mixed

nl: fix output order if stdin and files are mixed
This commit is contained in:
Terts Diepraam 2023-09-24 12:12:54 +02:00 committed by GitHub
commit 4ca792d2ff
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 20 additions and 13 deletions

View file

@ -168,7 +168,6 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> {
));
}
let mut read_stdin = false;
let files: Vec<String> = match matches.get_many::<String>(options::FILE) {
Some(v) => v.clone().map(|v| v.to_owned()).collect(),
None => vec!["-".to_owned()],
@ -178,21 +177,16 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> {
for file in &files {
if file == "-" {
// If both file names and '-' are specified, we choose to treat first all
// regular files, and then read from stdin last.
read_stdin = true;
continue;
let mut buffer = BufReader::new(stdin());
nl(&mut buffer, &mut stats, &settings)?;
} else {
let path = Path::new(file);
let reader = File::open(path).map_err_context(|| file.to_string())?;
let mut buffer = BufReader::new(reader);
nl(&mut buffer, &mut stats, &settings)?;
}
let path = Path::new(file);
let reader = File::open(path).map_err_context(|| file.to_string())?;
let mut buffer = BufReader::new(reader);
nl(&mut buffer, &mut stats, &settings)?;
}
if read_stdin {
let mut buffer = BufReader::new(stdin());
nl(&mut buffer, &mut stats, &settings)?;
}
Ok(())
}

View file

@ -349,6 +349,19 @@ fn test_default_body_numbering_multiple_files() {
.stdout_is(" 1\ta\n 2\tb\n 3\tc\n");
}
#[test]
fn test_default_body_numbering_multiple_files_and_stdin() {
let (at, mut ucmd) = at_and_ucmd!();
at.write("a.txt", "a");
at.write("c.txt", "c");
ucmd.args(&["a.txt", "-", "c.txt"])
.pipe_in("b")
.succeeds()
.stdout_is(" 1\ta\n 2\tb\n 3\tc\n");
}
#[test]
fn test_body_numbering_all_lines_without_delimiter() {
for arg in ["-ba", "--body-numbering=a"] {