From 3773af17f77521f1fd8338d3af8db378f2959c9e Mon Sep 17 00:00:00 2001 From: "Neal H. Walfield" Date: Sat, 16 Dec 2017 14:59:52 +0100 Subject: openpgp: Add a setting to the PacketParser to buffer unread content - Add a setting to the PacketParser to enable buffering of unread content when the PacketParser is advanced. --- buffered-reader/src/lib.rs | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'buffered-reader') diff --git a/buffered-reader/src/lib.rs b/buffered-reader/src/lib.rs index 951b8c71..7f082f72 100644 --- a/buffered-reader/src/lib.rs +++ b/buffered-reader/src/lib.rs @@ -152,6 +152,24 @@ pub trait BufferedReader : io::Read + fmt::Debug { return Ok(data); } + /// Like steal_eof, but instead of returning the data, the data is + /// discarded. + fn drop_eof(&mut self) -> Result<(), std::io::Error> { + loop { + match self.data_consume(DEFAULT_BUF_SIZE) { + Ok(ref buffer) => + if buffer.len() < DEFAULT_BUF_SIZE { + // EOF. + break; + }, + Err(err) => + return Err(err), + } + } + + Ok(()) + } + fn into_inner<'a>(self: Box) -> Option> where Self: 'a; } @@ -234,6 +252,10 @@ impl <'a> BufferedReader for Box { return self.as_mut().steal_eof(); } + fn drop_eof(&mut self) -> Result<(), std::io::Error> { + return self.as_mut().drop_eof(); + } + fn into_inner<'b>(self: Box) -> Option> where Self: 'b { // Strip the outer box. -- cgit v1.2.3