From 01860bcaf05e6f4e66e0b3da0f4079f804e844ca Mon Sep 17 00:00:00 2001 From: sharkdp Date: Mon, 5 Nov 2018 23:21:54 +0100 Subject: [PATCH] Possibility to read from stdin --- src/main.rs | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/main.rs b/src/main.rs index 0efa010..74662de 100644 --- a/src/main.rs +++ b/src/main.rs @@ -174,21 +174,25 @@ fn run() -> io::Result<()> { .setting(AppSettings::DeriveDisplayOrder) .setting(AppSettings::UnifiedHelpMessage) .version(crate_version!()) - .arg(Arg::with_name("file").help("to do").required(true)); + .arg(Arg::with_name("file").help("to do")); let matches = app.get_matches(); - let filename = matches.value_of("file").unwrap(); + let stdin = io::stdin(); + + let mut reader: Box = match matches.value_of("file") { + Some(filename) => Box::new(File::open(filename)?), + None => Box::new(stdin.lock()), + }; - let mut buffer = [0; BUFFER_SIZE]; - let mut file = File::open(filename)?; let stdout = io::stdout(); let mut printer = Printer::new(stdout.lock()); printer.header(); + let mut buffer = [0; BUFFER_SIZE]; loop { - let size = file.read(&mut buffer)?; + let size = reader.read(&mut buffer)?; if size == 0 { break; }