aboutsummaryrefslogtreecommitdiff
path: root/src/zip/file/write.rs
diff options
context:
space:
mode:
authorIgor Tolmachev <me@igorek.dev>2024-07-01 19:12:40 +0900
committerIgor Tolmachev <me@igorek.dev>2024-07-02 18:59:00 +0900
commit5d3d32ded672b67471d9d7c85ebbe691129cc51c (patch)
tree1f9a82196d69cfec34af595a659e4d74a80b0c92 /src/zip/file/write.rs
parent6d5f8f046b3b24e50cb1a0e7751c6bc9170ed9d1 (diff)
downloadarchivator-5d3d32ded672b67471d9d7c85ebbe691129cc51c.tar.gz
archivator-5d3d32ded672b67471d9d7c85ebbe691129cc51c.zip
Add compression support (lzma and xz are broken)
Diffstat (limited to 'src/zip/file/write.rs')
-rw-r--r--src/zip/file/write.rs30
1 files changed, 30 insertions, 0 deletions
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 @@
1use crate::driver::FileDriver;
2use crate::zip::ZipFileInfo;
3use bzip2::write::BzEncoder;
4use flate2::write::DeflateEncoder;
5use std::io::Write;
6use xz2::write::XzEncoder;
7
8enum IoProxy<Io: Write> {
9 Store(Io),
10 Deflate(DeflateEncoder<Io>),
11 BZip2(BzEncoder<Io>),
12 XZ(XzEncoder<Io>),
13}
14
15pub struct ZipFileWriter<'d, Io: Write> {
16 io: IoProxy<&'d mut Io>,
17 info: &'d ZipFileInfo,
18
19 bounds: (u64, u64),
20 cursor: u64,
21}
22
23impl<'d, Io: Write> FileDriver for ZipFileWriter<'d, Io> {
24 type Io = Io;
25 type FileInfo = ZipFileInfo;
26
27 fn info(&self) -> &Self::FileInfo {
28 self.info
29 }
30}