You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
35 lines
970 B
35 lines
970 B
7 months ago
|
use std::io::{self, Read};
|
||
|
|
||
|
fn main() {
|
||
|
std::process::exit(real_main());
|
||
|
}
|
||
|
|
||
|
fn real_main() -> i32 {
|
||
|
let stdin = io::stdin();
|
||
|
let mut stdin_handle = stdin.lock();
|
||
|
let mut buf = [0u8; 16];
|
||
|
|
||
|
loop {
|
||
|
match zip::read::read_zipfile_from_stream(&mut stdin_handle) {
|
||
|
Ok(Some(mut file)) => {
|
||
|
println!(
|
||
|
"{}: {} bytes ({} bytes packed)",
|
||
|
file.name(),
|
||
|
file.size(),
|
||
|
file.compressed_size()
|
||
|
);
|
||
|
match file.read(&mut buf) {
|
||
|
Ok(n) => println!("The first {} bytes are: {:?}", n, &buf[0..n]),
|
||
|
Err(e) => println!("Could not read the file: {:?}", e),
|
||
|
};
|
||
|
}
|
||
|
Ok(None) => break,
|
||
|
Err(e) => {
|
||
|
println!("Error encountered while reading zip: {:?}", e);
|
||
|
return 1;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
return 0;
|
||
|
}
|