diff --git a/src/buffer.rs b/src/buffer.rs index 9424734..ceab8ae 100644 --- a/src/buffer.rs +++ b/src/buffer.rs @@ -2,6 +2,7 @@ use std::io as stdio; use stdio::stdin; use crate::parser; use crate::job; +use crate::error::command_not_found; pub struct Buffer { buffer: String, @@ -34,6 +35,7 @@ impl Buffer { pub fn try_spawn(&mut self) -> Option { if ! self.buffer.is_empty() { self.argv = parser::parse(&self.buffer); + let command_name = self.argv[0].to_string(); let result = job::execute(&mut self.argv); if result.is_ok() { @@ -43,8 +45,7 @@ impl Buffer { return Some(result.code().unwrap()); } } else { - eprintln!("{}", result.unwrap_err()); - return Some(127); + return Some(command_not_found(&command_name)); } } diff --git a/src/error.rs b/src/error.rs new file mode 100644 index 0000000..a693759 --- /dev/null +++ b/src/error.rs @@ -0,0 +1,11 @@ +use std::env; + +fn error(message: &str) { + eprintln!("{}: {}", env::args().next().unwrap(), message); +} + +pub fn command_not_found(command: &String) -> i32 { + let message = command.to_owned() + ": command not found"; + error(&message); + 127 +} diff --git a/src/main.rs b/src/main.rs index 67b8fda..ced5470 100644 --- a/src/main.rs +++ b/src/main.rs @@ -2,6 +2,7 @@ mod buffer; mod parser; mod job; mod variables; +mod error; use std::process::exit; use variables::Variables;