Possibility to read from stdin

This commit is contained in:
sharkdp committed 2018-11-05 23:21:54 +01:00
1 parent 4b7c44c207
commit 01860bcaf0
1 file changed
+9 -5
+9 -5
View File
@@ -174,21 +174,25 @@ fn run() -> io::Result<()> {
.setting(AppSettings::DeriveDisplayOrder) .setting(AppSettings::DeriveDisplayOrder)
.setting(AppSettings::UnifiedHelpMessage) .setting(AppSettings::UnifiedHelpMessage)
.version(crate_version!()) .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 matches = app.get_matches();
let filename = matches.value_of("file").unwrap(); let stdin = io::stdin();
let mut reader: Box<dyn Read> = 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 stdout = io::stdout();
let mut printer = Printer::new(stdout.lock()); let mut printer = Printer::new(stdout.lock());
printer.header(); printer.header();
let mut buffer = [0; BUFFER_SIZE];
loop { loop {
let size = file.read(&mut buffer)?; let size = reader.read(&mut buffer)?;
if size == 0 { if size == 0 {
break; break;
} }