use crate::entry::ZipEntry;
#[cfg(any(
feature = "deflate",
feature = "bzip2",
feature = "zstd",
feature = "lzma",
feature = "xz",
feature = "deflate64"
))]
use crate::spec::Compression;
pub(crate) const SPEC_VERSION_MADE_BY: u16 = 63;
pub fn as_needed_to_extract(entry: &ZipEntry) -> u16 {
let mut version = match entry.compression() {
#[cfg(feature = "deflate")]
Compression::Deflate => 20,
#[cfg(feature = "deflate64")]
Compression::Deflate64 => 21,
#[cfg(feature = "bzip2")]
Compression::Bz => 46,
#[cfg(feature = "lzma")]
Compression::Lzma => 63,
_ => 10,
};
if let Ok(true) = entry.dir() {
version = std::cmp::max(version, 20);
}
version
}
pub fn as_made_by() -> u16 {
3 << 8 | SPEC_VERSION_MADE_BY
}