Skip to content

Commit f5e7499

Browse files
committed
head: align non-unix stdin error handling
1 parent f7d6395 commit f5e7499

1 file changed

Lines changed: 21 additions & 4 deletions

File tree

src/uu/head/src/head.rs

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -484,14 +484,31 @@ fn uu_head(options: &HeadOptions) -> UResult<()> {
484484
{
485485
let mut stdin = stdin.lock();
486486

487-
match options.mode {
488-
Mode::FirstBytes(n) => print_n_bytes(&mut stdin, n),
489-
Mode::AllButLastBytes(n) => print_but_last_n_bytes(&mut stdin, n),
487+
let result = match options.mode {
488+
Mode::FirstBytes(n) => {
489+
print_n_bytes(&mut stdin, n).map_err(HeadFileError::WriteStdout)
490+
}
491+
Mode::AllButLastBytes(n) => {
492+
print_but_last_n_bytes(&mut stdin, n).map_err(HeadFileError::WriteStdout)
493+
}
490494
Mode::FirstLines(n) => print_n_lines(&mut stdin, n, options.line_ending.into()),
491495
Mode::AllButLastLines(n) => {
492496
print_but_last_n_lines(&mut stdin, n, options.line_ending.into())
497+
.map_err(HeadFileError::WriteStdout)
493498
}
494-
}?;
499+
};
500+
501+
match result {
502+
Ok(_) => {}
503+
Err(HeadFileError::Read(err)) => {
504+
return Err(HeadError::Io {
505+
name: "standard input".into(),
506+
err,
507+
}
508+
.into());
509+
}
510+
Err(HeadFileError::WriteStdout(err)) => return Err(err.into()),
511+
}
495512
}
496513

497514
Ok(())

0 commit comments

Comments
 (0)