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}