summaryrefslogtreecommitdiffstats
path: root/buffered-reader
diff options
context:
space:
mode:
Diffstat (limited to 'buffered-reader')
-rw-r--r--buffered-reader/Cargo.toml2
-rw-r--r--buffered-reader/src/dup.rs4
-rw-r--r--buffered-reader/src/eof.rs2
-rw-r--r--buffered-reader/src/file_unix.rs6
-rw-r--r--buffered-reader/src/generic.rs2
-rw-r--r--buffered-reader/src/lib.rs29
-rw-r--r--buffered-reader/src/limitor.rs6
-rw-r--r--buffered-reader/src/memory.rs4
-rw-r--r--buffered-reader/src/reserve.rs6
9 files changed, 28 insertions, 33 deletions
diff --git a/buffered-reader/Cargo.toml b/buffered-reader/Cargo.toml
index c2644763..0a6eabee 100644
--- a/buffered-reader/Cargo.toml
+++ b/buffered-reader/Cargo.toml
@@ -1,7 +1,7 @@
[package]
name = "buffered-reader"
description = "A super-powered Reader"
-version = "0.14.0"
+version = "0.17.0"
authors = [
"Justus Winter <justus@sequoia-pgp.org>",
"Kai Michaelis <kai@sequoia-pgp.org>",
diff --git a/buffered-reader/src/dup.rs b/buffered-reader/src/dup.rs
index 7870050b..d2573dce 100644
--- a/buffered-reader/src/dup.rs
+++ b/buffered-reader/src/dup.rs
@@ -52,9 +52,9 @@ impl<T: BufferedReader<C>, C> Dup<T, C> {
/// `cookie_mut` methods, and set using the `cookie_set` method.
pub fn with_cookie(reader: T, cookie: C) -> Self {
Dup {
- reader: reader,
+ reader,
cursor: 0,
- cookie: cookie,
+ cookie,
}
}
diff --git a/buffered-reader/src/eof.rs b/buffered-reader/src/eof.rs
index 928cd518..41d3d763 100644
--- a/buffered-reader/src/eof.rs
+++ b/buffered-reader/src/eof.rs
@@ -35,7 +35,7 @@ impl<C> EOF<C> {
/// Instantiates a new `EOF` with a cookie.
pub fn with_cookie(cookie: C) -> Self {
EOF {
- cookie: cookie,
+ cookie,
}
}
}
diff --git a/buffered-reader/src/file_unix.rs b/buffered-reader/src/file_unix.rs
index 5f6ebb75..2162f7d1 100644
--- a/buffered-reader/src/file_unix.rs
+++ b/buffered-reader/src/file_unix.rs
@@ -134,7 +134,7 @@ impl<'a, C> File<'a, C> {
mmap(ptr::null_mut(), length, PROT_READ, MAP_PRIVATE,
fd, 0)
};
- if addr.is_null() {
+ if addr == libc::MAP_FAILED {
return generic(file, cookie);
}
@@ -144,8 +144,8 @@ impl<'a, C> File<'a, C> {
Ok(File(
Imp::MMAP {
- addr: addr,
- length: length,
+ addr,
+ length,
reader: Memory::with_cookie(slice, cookie),
}
))
diff --git a/buffered-reader/src/generic.rs b/buffered-reader/src/generic.rs
index bd5a21c6..1ab87e50 100644
--- a/buffered-reader/src/generic.rs
+++ b/buffered-reader/src/generic.rs
@@ -68,7 +68,7 @@ impl<T: io::Read, C> Generic<T, C> {
if let Some(s) = preferred_chunk_size { s }
else { DEFAULT_BUF_SIZE },
reader: Box::new(reader),
- cookie: cookie,
+ cookie,
}
}
diff --git a/buffered-reader/src/lib.rs b/buffered-reader/src/lib.rs
index ea838e11..7c5ec322 100644
--- a/buffered-reader/src/lib.rs
+++ b/buffered-reader/src/lib.rs
@@ -233,6 +233,7 @@ use std::io;
use std::io::{Error, ErrorKind};
use std::cmp;
use std::fmt;
+use std::convert::TryInto;
mod generic;
mod memory;
@@ -603,15 +604,16 @@ pub trait BufferedReader<C> : io::Read + fmt::Debug + fmt::Display {
/// in big endian format.
fn read_be_u16(&mut self) -> Result<u16, std::io::Error> {
let input = self.data_consume_hard(2)?;
- return Ok(((input[0] as u16) << 8) + (input[1] as u16));
+ // input holds at least 2 bytes, so this cannot fail.
+ Ok(u16::from_be_bytes(input[..2].try_into().unwrap()))
}
/// A convenience function for reading a 32-bit unsigned integer
/// in big endian format.
fn read_be_u32(&mut self) -> Result<u32, std::io::Error> {
let input = self.data_consume_hard(4)?;
- return Ok(((input[0] as u32) << 24) + ((input[1] as u32) << 16)
- + ((input[2] as u32) << 8) + (input[3] as u32));
+ // input holds at least 4 bytes, so this cannot fail.
+ Ok(u32::from_be_bytes(input[..4].try_into().unwrap()))
}
/// Reads until either `terminal` is encountered or EOF.
@@ -799,19 +801,12 @@ pub trait BufferedReader<C> : io::Read + fmt::Debug + fmt::Display {
fn drop_eof(&mut self) -> Result<bool, std::io::Error> {
let mut at_least_one_byte = false;
loop {
- match self.data_consume(DEFAULT_BUF_SIZE) {
- Ok(ref buffer) => {
- if buffer.len() > 0 {
- at_least_one_byte = true;
- }
-
- if buffer.len() < DEFAULT_BUF_SIZE {
- // EOF.
- break;
- }
- }
- Err(err) =>
- return Err(err),
+ let n = self.data(DEFAULT_BUF_SIZE)?.len();
+ at_least_one_byte |= n > 0;
+ self.consume(n);
+ if n < DEFAULT_BUF_SIZE {
+ // EOF.
+ break;
}
}
@@ -886,7 +881,7 @@ pub trait BufferedReader<C> : io::Read + fmt::Debug + fmt::Display {
/// impl <T: BufferedReader> std::io::Read for T { ... }
/// ```
///
-/// but, alas, Rust doesn't like that ("error[E0119]: conflicting
+/// but, alas, Rust doesn't like that ("error\[E0119\]: conflicting
/// implementations of trait `std::io::Read` for type `&mut _`").
pub fn buffered_reader_generic_read_impl<T: BufferedReader<C>, C>
(bio: &mut T, buf: &mut [u8]) -> Result<usize, io::Error> {
diff --git a/buffered-reader/src/limitor.rs b/buffered-reader/src/limitor.rs
index 65478194..a8588032 100644
--- a/buffered-reader/src/limitor.rs
+++ b/buffered-reader/src/limitor.rs
@@ -45,9 +45,9 @@ impl<T: BufferedReader<C>, C> Limitor<T, C> {
pub fn with_cookie(reader: T, limit: u64, cookie: C)
-> Limitor<T, C> {
Limitor {
- reader: reader,
- limit: limit,
- cookie: cookie,
+ reader,
+ limit,
+ cookie,
}
}
}
diff --git a/buffered-reader/src/memory.rs b/buffered-reader/src/memory.rs
index 2ecf96a3..7647f4ea 100644
--- a/buffered-reader/src/memory.rs
+++ b/buffered-reader/src/memory.rs
@@ -52,9 +52,9 @@ impl<'a, C> Memory<'a, C> {
/// `cookie_mut` methods, and set using the `cookie_set` method.
pub fn with_cookie(buffer: &'a [u8], cookie: C) -> Self {
Memory {
- buffer: buffer,
+ buffer,
cursor: 0,
- cookie: cookie,
+ cookie,
}
}
diff --git a/buffered-reader/src/reserve.rs b/buffered-reader/src/reserve.rs
index 4c2ec047..3d0364d5 100644
--- a/buffered-reader/src/reserve.rs
+++ b/buffered-reader/src/reserve.rs
@@ -49,9 +49,9 @@ impl<T: BufferedReader<C>, C> Reserve<T, C> {
pub fn with_cookie(reader: T, reserve: usize, cookie: C)
-> Reserve<T, C> {
Reserve {
- reader: reader,
- reserve: reserve,
- cookie: cookie,
+ reader,
+ reserve,
+ cookie,
}
}
}