Просмотр исходного кода

Change to ignore broken pipe error

Gemmarx 9 лет назад
Родитель
Сommit
943ac87466
1 измененных файлов с 11 добавлено и 3 удалено
  1. 11 3
      src/bin/main.rs

+ 11 - 3
src/bin/main.rs

@@ -2,7 +2,7 @@ extern crate exa;
 use exa::Exa;
 use exa::Exa;
 
 
 use std::env::args;
 use std::env::args;
-use std::io::stdout;
+use std::io::{stdout, stderr, Write, ErrorKind};
 use std::process::exit;
 use std::process::exit;
 
 
 fn main() {
 fn main() {
@@ -10,9 +10,17 @@ fn main() {
     let mut stdout = stdout();
     let mut stdout = stdout();
 
 
     match Exa::new(&args, &mut 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) => {
         Err(e) => {
-            println!("{}", e);
+            writeln!(stderr(), "{}", e).unwrap();
             exit(e.error_code());
             exit(e.error_code());
         },
         },
     };
     };