use crate::extractors::common::{ExtractionResult, Extractor, ExtractorType};
use crate::extractors::inflate;
pub const CHECKSUM_SIZE: usize = 4;
pub fn zlib_extractor() -> Extractor {
Extractor {
utility: ExtractorType::Internal(zlib_decompress),
..Default::default()
}
}
pub fn zlib_decompress(
file_data: &[u8],
offset: usize,
output_directory: Option<&String>,
) -> ExtractionResult {
const HEADER_SIZE: usize = 2;
let mut result =
inflate::inflate_decompressor(file_data, offset + HEADER_SIZE, output_directory);
if let Some(deflate_size) = result.size {
result.size = Some(HEADER_SIZE + deflate_size + CHECKSUM_SIZE);
}
result
}