From 5d3d32ded672b67471d9d7c85ebbe691129cc51c Mon Sep 17 00:00:00 2001 From: Igor Tolmachev Date: Mon, 1 Jul 2024 19:12:40 +0900 Subject: Add compression support (lzma and xz are broken) --- src/zip/file/write.rs | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 src/zip/file/write.rs (limited to 'src/zip/file/write.rs') diff --git a/src/zip/file/write.rs b/src/zip/file/write.rs new file mode 100644 index 0000000..627db6d --- /dev/null +++ b/src/zip/file/write.rs @@ -0,0 +1,30 @@ +use crate::driver::FileDriver; +use crate::zip::ZipFileInfo; +use bzip2::write::BzEncoder; +use flate2::write::DeflateEncoder; +use std::io::Write; +use xz2::write::XzEncoder; + +enum IoProxy { + Store(Io), + Deflate(DeflateEncoder), + BZip2(BzEncoder), + XZ(XzEncoder), +} + +pub struct ZipFileWriter<'d, Io: Write> { + io: IoProxy<&'d mut Io>, + info: &'d ZipFileInfo, + + bounds: (u64, u64), + cursor: u64, +} + +impl<'d, Io: Write> FileDriver for ZipFileWriter<'d, Io> { + type Io = Io; + type FileInfo = ZipFileInfo; + + fn info(&self) -> &Self::FileInfo { + self.info + } +} -- cgit v1.2.3