Procházet zdrojové kódy

Merge pull request #118 from gemmarx/ignore_brokenpipe

Change to ignore broken pipe error
Benjamin Sago před 9 roky
rodič
revize
3f81300e21
1 změnil soubory, kde provedl 11 přidání a 3 odebrání
  1. 11 3
      src/bin/main.rs

+ 11 - 3
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());
         },
     };