diff --git a/src/bin/main.rs b/src/bin/main.rs index 491d793..914253e 100644 --- a/src/bin/main.rs +++ b/src/bin/main.rs @@ -2,7 +2,7 @@ extern crate exa; use exa::Exa; use std::env::args; -use std::io::stdout; +use std::io::{stdout, stderr, Write, ErrorKind}; use std::process::exit; fn main() { @@ -10,9 +10,17 @@ fn main() { let mut stdout = stdout(); match Exa::new(&args, &mut stdout) { - Ok(mut exa) => exa.run().expect("IO error"), + Ok(mut exa) => if let Err(e) = exa.run() { + match e.kind() { + ErrorKind::BrokenPipe => exit(0), + _ => { + writeln!(stderr(), "{}", e).unwrap(); + exit(1); + }, + }; + }, Err(e) => { - println!("{}", e); + writeln!(stderr(), "{}", e).unwrap(); exit(e.error_code()); }, };