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; } } } 0 }