From c3a72e499c2327649e0c542911b04024e9eadb37 Mon Sep 17 00:00:00 2001 From: Xavier L'Heureux <xavier.lheureux@icloud.com> Date: Fri, 31 May 2019 22:47:20 -0400 Subject: [PATCH] Don't print to stdout if no error message --- src/lib/builtins/mod.rs | 27 +++++++-------------------- src/lib/shell/status.rs | 5 ++++- 2 files changed, 11 insertions(+), 21 deletions(-) diff --git a/src/lib/builtins/mod.rs b/src/lib/builtins/mod.rs index 84acc466..d4e26d97 100644 --- a/src/lib/builtins/mod.rs +++ b/src/lib/builtins/mod.rs @@ -30,7 +30,7 @@ use self::{ use std::{ borrow::Cow, - io::{self, BufRead, Write}, + io::{self, BufRead}, path::PathBuf, }; @@ -689,25 +689,14 @@ pub fn builtin_disown(args: &[small::String], shell: &mut Shell) -> Status { } pub fn builtin_help(args: &[small::String], shell: &mut Shell) -> Status { - let builtins = shell.builtins(); - let stdout = io::stdout(); - let mut stdout = stdout.lock(); if let Some(command) = args.get(1) { - if let Some(help) = builtins.get_help(command) { - let _ = stdout.write_all(help.as_bytes()); - let _ = stdout.write_all(b"\n"); + if let Some(help) = shell.builtins().get_help(command) { + println!("{}", help); } else { - let _ = stdout.write_all(b"Command helper not found [run 'help']..."); - let _ = stdout.write_all(b"\n"); + println!("Command helper not found [run 'help']..."); } } else { - let commands = builtins.keys(); - - let mut buffer: Vec<u8> = Vec::new(); - for command in commands { - let _ = writeln!(buffer, "{}", command); - } - let _ = stdout.write_all(&buffer); + println!("{}", shell.builtins().keys().join("")); } Status::SUCCESS } @@ -743,16 +732,14 @@ pub fn builtin_matches(args: &[small::String], _: &mut Shell) -> Status { return Status::SUCCESS; } if args[1..].len() != 2 { - let stderr = io::stderr(); - let mut stderr = stderr.lock(); - let _ = stderr.write_all(b"match takes two arguments\n"); + eprintln!("match takes two arguments"); return Status::BAD_ARG; } let input = &args[1]; let re = match Regex::new(&args[2]) { Ok(r) => r, Err(e) => { - return Status::error(format!("couldn't compile input regex {}: {}\n", args[2], e)); + return Status::error(format!("couldn't compile input regex {}: {}", args[2], e)); } }; diff --git a/src/lib/shell/status.rs b/src/lib/shell/status.rs index b1053270..70cc8ed0 100644 --- a/src/lib/shell/status.rs +++ b/src/lib/shell/status.rs @@ -17,7 +17,10 @@ impl Status { pub fn from_bool(b: bool) -> Self { Status(!b as i32) } pub fn error<T: AsRef<str>>(err: T) -> Self { - eprintln!("{}", err.as_ref()); + let err = err.as_ref(); + if !err.is_empty() { + eprintln!("{}", err); + } Status(1) } -- GitLab