From 546aa135830d4d46872c8f07f50d4d52d4db6d79 Mon Sep 17 00:00:00 2001 From: Ahurac Date: Tue, 12 Dec 2023 11:02:24 +0100 Subject: [PATCH] Message d'erreur command not found --- src/buffer.rs | 21 ++++++++++++++++----- src/job.rs | 2 +- src/main.rs | 19 +++---------------- 3 files changed, 20 insertions(+), 22 deletions(-) diff --git a/src/buffer.rs b/src/buffer.rs index dd60eb5..2a9f592 100644 --- a/src/buffer.rs +++ b/src/buffer.rs @@ -2,8 +2,6 @@ use std::io as stdio; use stdio::stdin; use crate::parser; use crate::job; -use std::process::ExitStatus; -use std::io::Result; pub struct Buffer { buffer: String, @@ -33,12 +31,25 @@ impl Buffer { } } - pub fn try_spawn(&mut self) -> Option> { + pub fn try_spawn(&mut self) -> Option { if ! self.buffer.is_empty() { self.argv = parser::parse(&self.buffer); - Some(job::execute(&mut self.argv)) + let result = job::execute(&mut self.argv); + + if result.is_ok() { + let result = result.unwrap(); + + if result.code().is_some() { + return Some(result.code().unwrap()); + } else { + None + } + } else { + eprintln!("{}", result.unwrap_err()); + return Some(127); + } } else { - None + return None; } } } diff --git a/src/job.rs b/src/job.rs index b26fbd7..a8b6c92 100644 --- a/src/job.rs +++ b/src/job.rs @@ -18,6 +18,6 @@ pub fn execute(argv: &mut Vec) -> Result { if child.is_ok() { child.unwrap().wait() } else { - Err(Error::new(ErrorKind::Other, "failed to spawn child process")) + Err(Error::new(ErrorKind::Other, "command not found")) } } diff --git a/src/main.rs b/src/main.rs index c063f39..5c505cf 100644 --- a/src/main.rs +++ b/src/main.rs @@ -3,18 +3,14 @@ mod parser; mod job; mod variables; -use std::io::Result; -use std::process::{ - ExitStatus, - exit, -}; +use std::process::exit; use variables::Variables; use buffer::Buffer; fn main() { let mut buffer = Buffer::new(); let mut bytes_read: usize = 1; - let mut exit_status: Option>; + let mut exit_status: Option; let mut exit_code: i32 = 0; let mut variables = Variables::new(); @@ -25,16 +21,7 @@ fn main() { exit_status = buffer.try_spawn(); if exit_status.is_some() { - let exit_status = exit_status.unwrap(); - if exit_status.is_ok() { - let exit_status = exit_status.unwrap(); - - if exit_status.code().is_some() { - exit_code = exit_status.code().unwrap(); - } - } else { - exit_code = 1; - } + exit_code = exit_status.unwrap(); } } -- 2.45.2