Some more cleanup
This commit is contained in:
parent
6d2a63e406
commit
f382cf85b9
3 changed files with 4 additions and 45 deletions
|
@ -5,12 +5,11 @@ use std::cell::RefCell;
|
|||
|
||||
pub struct IoConverter<T> {
|
||||
inner: RefCell<T>,
|
||||
eofs: usize,
|
||||
}
|
||||
|
||||
impl<T> IoConverter<T> {
|
||||
pub fn new(inner: T) -> IoConverter<T> {
|
||||
IoConverter { inner: RefCell::new(inner), eofs: 0, }
|
||||
IoConverter { inner: RefCell::new(inner), }
|
||||
}
|
||||
pub fn into_inner(self) -> T {
|
||||
self.inner.into_inner()
|
||||
|
@ -41,27 +40,7 @@ impl<W: Writer> Write for IoConverter<W> {
|
|||
}
|
||||
}
|
||||
|
||||
impl<W: io::Seek> old_io::Seek for IoConverter<W> {
|
||||
fn tell(&self) -> old_io::IoResult<u64> {
|
||||
match self.inner.borrow_mut().seek(io::SeekFrom::Current(0)) {
|
||||
Ok(v) => Ok(v),
|
||||
Err(..) => Err(old_io::standard_error(old_io::OtherIoError)),
|
||||
}
|
||||
}
|
||||
fn seek(&mut self, pos: i64, style: old_io::SeekStyle) -> old_io::IoResult<()> {
|
||||
let new_pos = match style {
|
||||
old_io::SeekSet => io::SeekFrom::Start(pos as u64),
|
||||
old_io::SeekEnd => io::SeekFrom::End(pos),
|
||||
old_io::SeekCur => io::SeekFrom::Current(pos),
|
||||
};
|
||||
match self.inner.borrow_mut().seek(new_pos) {
|
||||
Ok(..) => Ok(()),
|
||||
Err(..) => Err(old_io::standard_error(old_io::OtherIoError)),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl<R: old_io::Reader> Read for IoConverter<R> {
|
||||
impl<R: Reader> Read for IoConverter<R> {
|
||||
fn read(&mut self, buf: &mut [u8]) -> io::Result<usize> {
|
||||
match self.inner.borrow_mut().read(buf) {
|
||||
Ok(v) => Ok(v),
|
||||
|
@ -74,14 +53,7 @@ impl<R: old_io::Reader> Read for IoConverter<R> {
|
|||
impl<R: Read> Reader for IoConverter<R> {
|
||||
fn read(&mut self, buf: &mut [u8]) -> old_io::IoResult<usize> {
|
||||
match self.inner.borrow_mut().read(buf) {
|
||||
Ok(0) => {
|
||||
if self.eofs >= 2 {
|
||||
Err(old_io::standard_error(old_io::EndOfFile))
|
||||
} else {
|
||||
self.eofs += 1;
|
||||
Ok(0)
|
||||
}
|
||||
},
|
||||
Ok(0) if buf.len() > 0 => Err(old_io::standard_error(old_io::EndOfFile)),
|
||||
Ok(v) => Ok(v),
|
||||
Err(..) => Err(old_io::standard_error(old_io::OtherIoError)),
|
||||
}
|
||||
|
|
14
src/util.rs
14
src/util.rs
|
@ -63,14 +63,6 @@ impl<'a, R: Read> Read for RefMutReader<'a, R>
|
|||
}
|
||||
}
|
||||
|
||||
impl<'a, R: Reader> Reader for RefMutReader<'a, R>
|
||||
{
|
||||
fn read(&mut self, buf: &mut [u8]) -> ::std::old_io::IoResult<usize>
|
||||
{
|
||||
self.inner.read(buf)
|
||||
}
|
||||
}
|
||||
|
||||
/// Additional integer write methods for a io::Read
|
||||
pub trait WriteIntExt {
|
||||
/// Write a u32 in little-endian mode
|
||||
|
@ -110,16 +102,12 @@ pub trait ReadIntExt {
|
|||
|
||||
fn fill_exact<R: Read>(reader: &mut R, buf: &mut [u8]) -> io::Result<()> {
|
||||
let mut idx = 0;
|
||||
let mut tries = 0;
|
||||
while idx < buf.len() {
|
||||
match reader.read(&mut buf[idx..]) {
|
||||
Err(v) => return Err(v),
|
||||
Ok(0) => return Err(io::Error::new(io::ErrorKind::ResourceUnavailable, "Could not fill the buffer", None)),
|
||||
Ok(i) => idx += i,
|
||||
}
|
||||
tries += 1;
|
||||
if tries > 2*buf.len() {
|
||||
return Err(io::Error::new(io::ErrorKind::ResourceUnavailable, "Could not fill the buffer", None));
|
||||
}
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
|
|
@ -7,7 +7,6 @@ use result::{ZipResult, ZipError};
|
|||
use std::default::Default;
|
||||
use std::io;
|
||||
use std::io::prelude::*;
|
||||
use std::old_io::Writer;
|
||||
use std::mem;
|
||||
use time;
|
||||
use flate2;
|
||||
|
|
Loading…
Add table
Reference in a new issue