]> git.proxmox.com Git - rustc.git/blob - vendor/object-0.22.0/examples/ar.rs
New upstream version 1.55.0+dfsg1
[rustc.git] / vendor / object-0.22.0 / examples / ar.rs
1 use std::{env, fs, process};
2
3 fn main() {
4 let mut args = env::args().skip(1);
5 if args.len() < 2 {
6 eprintln!(
7 "Usage: {} <op> <archive> [<member>...]",
8 env::args().next().unwrap()
9 );
10 process::exit(1);
11 }
12
13 let op = args.next().unwrap();
14 let file_path = args.next().unwrap();
15
16 let file = match fs::File::open(&file_path) {
17 Ok(file) => file,
18 Err(err) => {
19 println!("Failed to open file '{}': {}", file_path, err,);
20 return;
21 }
22 };
23 let file = match unsafe { memmap::Mmap::map(&file) } {
24 Ok(mmap) => mmap,
25 Err(err) => {
26 println!("Failed to map file '{}': {}", file_path, err,);
27 return;
28 }
29 };
30 let archive = match object::read::archive::ArchiveFile::parse(&*file) {
31 Ok(file) => file,
32 Err(err) => {
33 println!("Failed to parse file '{}': {}", file_path, err);
34 return;
35 }
36 };
37 match op.chars().next().unwrap() {
38 't' => {
39 println!("kind: {:?}", archive.kind());
40 for member in archive.members() {
41 let member = member.unwrap();
42 println!("{}", String::from_utf8_lossy(member.name()));
43 }
44 }
45 op => println!("Invalid operation: {}", op),
46 }
47 }