blob: b5749509ee3da7188a90ef69453874c763c7f3bc [file] [log] [blame]
Yi Kongf19c3f22021-02-13 04:04:00 +08001use std::io::prelude::*;
2use zip::write::FileOptions;
3
4fn main() {
5 std::process::exit(real_main());
6}
7
8fn real_main() -> i32 {
9 let args: Vec<_> = std::env::args().collect();
10 if args.len() < 2 {
11 println!("Usage: {} <filename>", args[0]);
12 return 1;
13 }
14
15 let filename = &*args[1];
16 match doit(filename) {
17 Ok(_) => println!("File written to {}", filename),
18 Err(e) => println!("Error: {:?}", e),
19 }
20
David LeGare132eccb2022-04-11 16:44:12 +000021 0
Yi Kongf19c3f22021-02-13 04:04:00 +080022}
23
24fn doit(filename: &str) -> zip::result::ZipResult<()> {
25 let path = std::path::Path::new(filename);
26 let file = std::fs::File::create(&path).unwrap();
27
28 let mut zip = zip::ZipWriter::new(file);
29
30 zip.add_directory("test/", Default::default())?;
31
32 let options = FileOptions::default()
33 .compression_method(zip::CompressionMethod::Stored)
34 .unix_permissions(0o755);
35 zip.start_file("test/☃.txt", options)?;
36 zip.write_all(b"Hello, World!\n")?;
37
38 zip.start_file("test/lorem_ipsum.txt", Default::default())?;
39 zip.write_all(LOREM_IPSUM)?;
40
41 zip.finish()?;
42 Ok(())
43}
44
David LeGare132eccb2022-04-11 16:44:12 +000045const LOREM_IPSUM : &[u8] = b"Lorem ipsum dolor sit amet, consectetur adipiscing elit. In tellus elit, tristique vitae mattis egestas, ultricies vitae risus. Quisque sit amet quam ut urna aliquet
Yi Kongf19c3f22021-02-13 04:04:00 +080046molestie. Proin blandit ornare dui, a tempor nisl accumsan in. Praesent a consequat felis. Morbi metus diam, auctor in auctor vel, feugiat id odio. Curabitur ex ex,
47dictum quis auctor quis, suscipit id lorem. Aliquam vestibulum dolor nec enim vehicula, porta tristique augue tincidunt. Vivamus ut gravida est. Sed pellentesque, dolor
48vitae tristique consectetur, neque lectus pulvinar dui, sed feugiat purus diam id lectus. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per
49inceptos himenaeos. Maecenas feugiat velit in ex ultrices scelerisque id id neque.
50
51Phasellus sed nisi in augue sodales pulvinar ut et leo. Pellentesque eget leo vitae massa bibendum sollicitudin. Curabitur erat lectus, congue quis auctor sed, aliquet
52bibendum est. Ut porta ultricies turpis at maximus. Cras non lobortis justo. Duis rutrum magna sed velit facilisis, et sagittis metus laoreet. Pellentesque quam ligula,
53dapibus vitae mauris quis, dapibus cursus leo. Sed sit amet condimentum eros. Nulla vestibulum enim sit amet lorem pharetra, eu fringilla nisl posuere. Sed tristique non
54nibh at viverra. Vivamus sed accumsan lacus, nec pretium eros. Mauris elementum arcu eu risus fermentum, tempor ullamcorper neque aliquam. Sed tempor in erat eu
55suscipit. In euismod in libero in facilisis. Donec sagittis, odio et fermentum dignissim, risus justo pretium nibh, eget vestibulum lectus metus vel lacus.
56
57Quisque feugiat, magna ac feugiat ullamcorper, augue justo consequat felis, ut fermentum arcu lorem vitae ligula. Quisque iaculis tempor maximus. In quis eros ac tellus
58aliquam placerat quis id tellus. Donec non gravida nulla. Morbi faucibus neque sed faucibus aliquam. Sed accumsan mattis nunc, non interdum justo. Cras vitae facilisis
59leo. Fusce sollicitudin ultrices sagittis. Maecenas eget massa id lorem dignissim ultrices non et ligula. Pellentesque aliquam mi ac neque tempus ornare. Morbi non enim
60vulputate quam ullamcorper finibus id non neque. Quisque malesuada commodo lorem, ut ornare velit iaculis rhoncus. Mauris vel maximus ex.
61
62Morbi eleifend blandit diam, non vulputate ante iaculis in. Donec pellentesque augue id enim suscipit, eget suscipit lacus commodo. Ut vel ex vitae elit imperdiet
63vulputate. Nunc eu mattis orci, ut pretium sem. Nam vitae purus mollis ante tempus malesuada a at magna. Integer mattis lectus non luctus lobortis. In a cursus quam,
64eget faucibus sem.
65
66Donec vitae condimentum nisi, non efficitur massa. Praesent sed mi in massa sollicitudin iaculis. Pellentesque a libero ultrices, sodales lacus eu, ornare dui. In
67laoreet est nec dolor aliquam consectetur. Integer iaculis felis venenatis libero pulvinar, ut pretium odio interdum. Donec in nisi eu dolor varius vestibulum eget vel
68nunc. Morbi a venenatis quam, in vehicula justo. Nam risus dui, auctor eu accumsan at, sagittis ac lectus. Mauris iaculis dignissim interdum. Cras cursus dapibus auctor.
69Donec sagittis massa vitae tortor viverra vehicula. Mauris fringilla nunc eu lorem ultrices placerat. Maecenas posuere porta quam at semper. Praesent eu bibendum eros.
70Nunc congue sollicitudin ante, sollicitudin lacinia magna cursus vitae.
71";