Sha256: 6707313957e4474b1fc2422b535080d6bfca9a5e55089930ce4cdc9cdd137905

Contents?: true

Size: 1.31 KB

Versions: 25

Compression:

Stored size: 1.31 KB

Contents

use clap::{App, Arg};
use std::fs;
use std::io;

fn main() {
    // This will be a simple application:
    // takes a single (repeatable and optional) argument.
    let matches = App::new("zstdcat")
        .version("0.1")
        .author("Yann Collet (zstd), Alexandre Bury (zstd-rs)")
        .about("Decompress FILEs to standard output.")
        .arg(Arg::new("FILE").index(1).multiple_occurrences(true).help(
            "Files to decompress. With no file, or when given -, \
             read standard input.",
        ))
        .get_matches();

    // If nothign was given, act as if `-` was there.
    match matches.values_of("FILE") {
        None => decompress_file("-").unwrap(),
        Some(files) => {
            // Decompress each file sequentially.
            for file in files {
                decompress_file(file).unwrap();
            }
        }
    }
}

// Dispatch the source reader depending on the filename
fn decompress_file(file: &str) -> io::Result<()> {
    match file {
        "-" => decompress_from(io::stdin()),
        other => decompress_from(io::BufReader::new(fs::File::open(other)?)),
    }
}

// Decompress from a `Reader` into stdout
fn decompress_from<R: io::Read>(r: R) -> io::Result<()> {
    let mut decoder = zstd::Decoder::new(r)?;
    io::copy(&mut decoder, &mut io::stdout())?;
    Ok(())
}

Version data entries

25 entries across 25 versions & 1 rubygems

Version Path
wasmtime-18.0.3 ./ext/cargo-vendor/zstd-0.11.2+zstd.1.5.2/examples/zstdcat.rs
wasmtime-17.0.1 ./ext/cargo-vendor/zstd-0.11.2+zstd.1.5.2/examples/zstdcat.rs
wasmtime-17.0.0 ./ext/cargo-vendor/zstd-0.11.2+zstd.1.5.2/examples/zstdcat.rs
wasmtime-16.0.0 ./ext/cargo-vendor/zstd-0.11.2+zstd.1.5.2/examples/zstdcat.rs
wasmtime-15.0.1 ./ext/cargo-vendor/zstd-0.11.2+zstd.1.5.2/examples/zstdcat.rs
wasmtime-15.0.0 ./ext/cargo-vendor/zstd-0.11.2+zstd.1.5.2/examples/zstdcat.rs
wasmtime-14.0.4 ./ext/cargo-vendor/zstd-0.11.2+zstd.1.5.2/examples/zstdcat.rs
wasmtime-14.0.3 ./ext/cargo-vendor/zstd-0.11.2+zstd.1.5.2/examples/zstdcat.rs
wasmtime-14.0.1 ./ext/cargo-vendor/zstd-0.11.2+zstd.1.5.2/examples/zstdcat.rs
wasmtime-14.0.0 ./ext/cargo-vendor/zstd-0.11.2+zstd.1.5.2/examples/zstdcat.rs
wasmtime-13.0.0 ./ext/cargo-vendor/zstd-0.11.2+zstd.1.5.2/examples/zstdcat.rs
wasmtime-12.0.1 ./ext/cargo-vendor/zstd-0.11.2+zstd.1.5.2/examples/zstdcat.rs
wasmtime-12.0.0 ./ext/cargo-vendor/zstd-0.11.2+zstd.1.5.2/examples/zstdcat.rs
wasmtime-11.0.0 ./ext/cargo-vendor/zstd-0.11.2+zstd.1.5.2/examples/zstdcat.rs
wasmtime-10.0.1 ./ext/cargo-vendor/zstd-0.11.2+zstd.1.5.2/examples/zstdcat.rs
wasmtime-10.0.0 ./ext/cargo-vendor/zstd-0.11.2+zstd.1.5.2/examples/zstdcat.rs
wasmtime-9.0.4 ./ext/cargo-vendor/zstd-0.11.2+zstd.1.5.2/examples/zstdcat.rs
wasmtime-9.0.1 ./ext/cargo-vendor/zstd-0.11.2+zstd.1.5.2/examples/zstdcat.rs
wasmtime-8.0.0 ./ext/cargo-vendor/zstd-0.11.2+zstd.1.5.2/examples/zstdcat.rs
wasmtime-7.0.0 ./ext/cargo-vendor/zstd-0.11.2+zstd.1.5.2/examples/zstdcat.rs