mirror of
https://github.com/sharkdp/hexyl.git
synced 2026-10-30 09:05:54 +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()?;
|
self.print_header()?;
|
||||||
is_empty = false;
|
is_empty = false;
|
||||||
}
|
}
|
||||||
|
let mut leftover = n;
|
||||||
// perform second check on read
|
// loop until input is ceased
|
||||||
if let Ok(0) = buf.read(&mut self.line_buf[n..]) {
|
if let Some(s) = loop {
|
||||||
self.line_buf.resize(n, 0);
|
if let Ok(n) = buf.read(&mut self.line_buf[leftover..]) {
|
||||||
break Some(n);
|
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 {
|
} else if n == 0 {
|
||||||
// if no bytes are read, that indicates end of file
|
// if no bytes are read, that indicates end of file
|
||||||
|
|||||||
Reference in new issue
Block a user