36 lines
		
	
	
		
			963 B
		
	
	
	
		
			Rust
		
	
	
	
			
		
		
	
	
			36 lines
		
	
	
		
			963 B
		
	
	
	
		
			Rust
		
	
	
	
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
 | 
						|
}
 |