]> git.proxmox.com Git - pxar.git/blob - examples/randaccess.rs
import
[pxar.git] / examples / randaccess.rs
1 use pxar::accessor::Accessor;
2
3 fn main() {
4 let mut args = std::env::args_os().skip(1);
5
6 let file = args.next().expect("expected a file name");
7
8 let mut accessor = Accessor::open(file).expect("failed to open file");
9 let mut dir = accessor
10 .open_root()
11 .expect("failed to open archive root directory");
12 for i in dir.decode_full().expect("failed to access root directory") {
13 println!("{:#?}", i.expect("failed to parse entry").path());
14 }
15
16 let da = dir
17 .lookup("da")
18 .expect("error looking up da/")
19 .expect("failed to lookup da/");
20 dir.lookup("db").expect("failed to lookup db");
21 dir.lookup("root1.txt").expect("failed to lookup root1.txt");
22 dir.lookup("root2.txt").expect("failed to lookup root2.txt");
23
24 println!("{:?}", da.entry());
25 let da = da.enter_directory().expect("failed to enter /da directory");
26 for i in da.decode_full().expect("failed to access /da directory") {
27 println!(
28 " ==> {:#?}",
29 i.expect("failed to parse /da file entry").path()
30 );
31 }
32
33 for i in dir.read_dir() {
34 let i = i.expect("failed to read directory entry");
35 println!("read_dir => {:?}", i.file_name());
36 }
37
38 // let file = tokio::fs::File::open(file)
39 // .await
40 // .expect("failed to open file");
41 //
42 // let mut reader = Accessor::from_tokio(file)
43 // .await
44 // .expect("failed to open pxar archive contents");
45 // let mut i = 0;
46 // while let Some(entry) = reader.next().await {
47 // println!("{:#?}", entry.expect("failed to parse entry").path());
48 // i += 1;
49 // if i == 2 {
50 // break;
51 // }
52 // }
53 //
54 // // Use a Stream for the remaining entries:
55 // use futures::stream::StreamExt;
56 //
57 // let mut stream = reader.into_stream();
58 //
59 // while let Some(entry) = stream.next().await {
60 // println!("{:#?}", entry.expect("failed to parse entry").path());
61 // }
62 }