from_reader

Function from_reader 

Source
pub fn from_reader<M: Read>(reader: M) -> Result<(Header, Vec<TableEntry>)>
Expand description

Decodes the header and the indices table from a Reader

Examples found in repository?
examples/file-decoder.rs (line 18)
8fn main() -> Result<()> {
9    let path = if let Some(path) = env::args().skip(1).next() {
10        path
11    } else {
12        eprintln!("A second argument with the path to the file must be passed");
13        process::exit(1)
14    };
15
16    let file = fs::File::open(path)?;
17
18    let (header, entries) = ea_big::from_reader(&file)?;
19
20    println!("======= Header =======");
21    println!("name: {}", header.name);
22    println!("size: {}", header.size);
23    println!("files: {}", header.files);
24    println!("indices: {}", header.indices);
25    println!("======= Entries ======");
26    for entry in entries {
27        println!(
28            "name: {} | offset: {} | size: {}",
29            entry.name, entry.pos, entry.size
30        );
31
32        let mut embed = ea_big::open_file(&file, &entry);
33
34        let mut buf = Vec::with_capacity(entry.size as usize);
35
36        assert_eq!(embed.read_to_end(&mut buf)?, entry.size as usize);
37
38        let path = PathBuf::from(entry.name.replace("\\", "/"));
39
40        fs::create_dir_all(path.parent().unwrap())?;
41        fs::write(path, buf)?;
42    }
43
44    Ok(())
45}