//! An example of extracting a file in an archive. //! //! Takes a tarball on standard input, looks for an entry with a listed file //! name as the first argument provided, and then prints the contents of that //! file to stdout. extern crate tar; use std::env::args_os; use std::io::{copy, stdin, stdout}; use std::path::Path; use tar::Archive; fn main() { let first_arg = args_os().skip(1).next().unwrap(); let filename = Path::new(&first_arg); let mut ar = Archive::new(stdin()); for file in ar.entries().unwrap() { let mut f = file.unwrap(); if f.path().unwrap() == filename { copy(&mut f, &mut stdout()).unwrap(); } } }