blob: 154e0e3ae2c60090de6e5bf30570db4ae0cbf9d2 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
use crate::error::Error;
use crate::Result;
use flate2::read::{DeflateDecoder, ZlibDecoder};
use std::io::Read;
/// Decode Deflate or Zlib compressed data
pub fn decode_deflate(packed: &[u8]) -> Result<Vec<u8>> {
let mut out = Vec::new();
let mut decoder = DeflateDecoder::new(packed);
if decoder.read_to_end(&mut out).is_ok() {
return Ok(out);
}
out.clear();
let mut zlib = ZlibDecoder::new(packed);
zlib.read_to_end(&mut out)
.map_err(|_| Error::DecompressionFailed("deflate"))?;
Ok(out)
}
|