mirror of
https://github.com/sharkdp/hexyl.git
synced 2026-10-26 20:16:34 +00:00
Merge pull request #197 from sharifhsn/stdin-fix
Correctly handle discontinuous input i.e. stdin
This commit is contained in:
1 file changed
+17
-5
+17
-5
@@ -583,11 +583,23 @@ impl<'a, Writer: Write> Printer<'a, Writer> {
|
||||
self.print_header()?;
|
||||
is_empty = false;
|
||||
}
|
||||
|
||||
// perform second check on read
|
||||
if let Ok(0) = buf.read(&mut self.line_buf[n..]) {
|
||||
self.line_buf.resize(n, 0);
|
||||
break Some(n);
|
||||
let mut leftover = n;
|
||||
// loop until input is ceased
|
||||
if let Some(s) = loop {
|
||||
if let Ok(n) = buf.read(&mut self.line_buf[leftover..]) {
|
||||
leftover += n;
|
||||
// there is no more input being read
|
||||
if n == 0 {
|
||||
self.line_buf.resize(leftover, 0);
|
||||
break Some(leftover);
|
||||
}
|
||||
// amount read has exceeded line buffer
|
||||
if leftover >= 8 * self.panels as usize {
|
||||
break None;
|
||||
}
|
||||
}
|
||||
} {
|
||||
break Some(s);
|
||||
};
|
||||
} else if n == 0 {
|
||||
// if no bytes are read, that indicates end of file
|
||||
|
||||
Reference in new issue
Block a user