Skip to content

Commit

Permalink
Switch to flate2 (with oxide backend)
Browse files Browse the repository at this point in the history
  • Loading branch information
fasterthanlime committed Jan 26, 2024
1 parent cad55f0 commit c065722
Show file tree
Hide file tree
Showing 5 changed files with 39 additions and 108 deletions.
109 changes: 18 additions & 91 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion Justfile
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ check:

# Run all tests locally
test *args:
cargo nextest run {{args}}
cargo nextest run {{args}} --all-features

# Run all tests with nextest and cargo-llvm-cov
ci-test:
Expand Down
9 changes: 5 additions & 4 deletions crates/rc-zip/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -19,13 +19,14 @@ chrono = "0.4.33"
encoding_rs = "0.8.33"
crc32fast = "1.3.2"
positioned-io = { workspace = true, optional = true }
libflate = { version = "2.0.0", optional = true }
tracing = "0.1.40"
oem_cp = "2.0.0"
thiserror = "1.0.56"
chardetng = "0.1.17"
flate2 = { version = "1.0.28", optional = true }

[features]
default = ["sync", "file"]
sync = ["libflate"]
file = ["positioned-io"]
default = ["sync", "file", "deflate"]
sync = []
file = ["positioned-io"]
deflate = ["flate2"]
18 changes: 10 additions & 8 deletions crates/rc-zip/src/reader/sync/decoder.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
use libflate::non_blocking::deflate;
#[cfg(feature = "deflate")]
use flate2::read::DeflateDecoder;

use std::{cmp, io};

pub trait Decoder<R>: io::Read
Expand All @@ -10,19 +12,19 @@ where
fn into_inner(self: Box<Self>) -> R;

/// Returns a mutable reference to the inner reader.
fn as_inner_mut(&mut self) -> &mut R;
fn get_mut(&mut self) -> &mut R;
}

impl<R> Decoder<R> for deflate::Decoder<R>
impl<R> Decoder<R> for DeflateDecoder<R>
where
R: io::Read,
{
fn into_inner(self: Box<Self>) -> R {
deflate::Decoder::into_inner(*self)
DeflateDecoder::into_inner(*self)
}

fn as_inner_mut(&mut self) -> &mut R {
deflate::Decoder::as_inner_mut(self)
fn get_mut(&mut self) -> &mut R {
DeflateDecoder::get_mut(self)
}
}

Expand Down Expand Up @@ -59,7 +61,7 @@ where
self.inner
}

fn as_inner_mut(&mut self) -> &mut R {
fn get_mut(&mut self) -> &mut R {
&mut self.inner
}
}
Expand All @@ -80,7 +82,7 @@ impl LimitedReader {
self.inner
}

pub fn as_inner_mut(&mut self) -> &mut circular::Buffer {
pub fn get_mut(&mut self) -> &mut circular::Buffer {
&mut self.inner
}
}
Expand Down
9 changes: 5 additions & 4 deletions crates/rc-zip/src/reader/sync/entry_reader.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,8 @@ use crate::{
transition,
};

use libflate::non_blocking::deflate;
#[cfg(feature = "deflate")]
use flate2::read::DeflateDecoder;
use nom::Offset;
use std::io;
use tracing::trace;
Expand Down Expand Up @@ -74,7 +75,7 @@ where
let limited_reader = LimitedReader::new(buffer, self.inner.compressed_size);
let decoder: Box<dyn Decoder<LimitedReader>> = match self.method {
Method::Store => Box::new(StoreDecoder::new(limited_reader)),
Method::Deflate => Box::new(deflate::Decoder::new(limited_reader)),
Method::Deflate => Box::new(DeflateDecoder::new(limited_reader)),
method => return Err(Error::Unsupported(UnsupportedError::UnsupportedCompressionMethod(method)).into()),
};

Expand All @@ -97,7 +98,7 @@ where
..
} => {
{
let buffer = decoder.as_inner_mut().as_inner_mut();
let buffer = decoder.get_mut().get_mut();
if !self.eof && buffer.available_space() > 0 {
match self.rd.read(buffer.space())? {
0 => {
Expand Down Expand Up @@ -135,7 +136,7 @@ where
}
Err(e) => match e.kind() {
io::ErrorKind::UnexpectedEof => {
let buffer = decoder.as_inner_mut().as_inner_mut();
let buffer = decoder.get_mut().get_mut();
if self.eof || buffer.available_space() == 0 {
Err(e)
} else {
Expand Down

0 comments on commit c065722

Please sign in to comment.