From 7f2755c3cb74bb15d10296cbfbf6196e4a6a2a63 Mon Sep 17 00:00:00 2001 From: Ahurac Date: Mon, 11 Dec 2023 16:03:36 +0100 Subject: [PATCH] Gros debloatage --- src/input.rs | 10 ++++++++-- src/job.rs | 2 +- src/main.rs | 11 ++++------- 3 files changed, 13 insertions(+), 10 deletions(-) diff --git a/src/input.rs b/src/input.rs index 93ac102..dd60eb5 100644 --- a/src/input.rs +++ b/src/input.rs @@ -1,15 +1,20 @@ 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, + argv: Vec, } impl Buffer { pub fn new() -> Self { Self { buffer: String::new(), + argv: vec![], } } @@ -28,9 +33,10 @@ impl Buffer { } } - pub fn parse(&self) -> Option> { + pub fn try_spawn(&mut self) -> Option> { if ! self.buffer.is_empty() { - Some(parser::parse(&self.buffer)) + self.argv = parser::parse(&self.buffer); + Some(job::execute(&mut self.argv)) } else { None } diff --git a/src/job.rs b/src/job.rs index 028ed75..b26fbd7 100644 --- a/src/job.rs +++ b/src/job.rs @@ -8,7 +8,7 @@ use std::io::{ ErrorKind, }; -pub fn execute(mut argv: Vec) -> Result { +pub fn execute(argv: &mut Vec) -> Result { let mut command = Command::new(&argv[0]); argv.remove(0); command.args(argv); diff --git a/src/main.rs b/src/main.rs index 14b3743..455d236 100644 --- a/src/main.rs +++ b/src/main.rs @@ -12,25 +12,22 @@ mod job; fn main() { let mut buffer = input::Buffer::new(); let mut bytes_read: usize = 1; - let mut argv: Option>; - let mut exit_status: Result; + let mut exit_status: Option>; let mut exit_code: i32 = 0; while bytes_read != 0 { output::print_ps1(); bytes_read = buffer.read_line(); - argv = buffer.parse(); - if argv.is_some() { - exit_status = job::execute(argv.unwrap()); + 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; } } else { exit_code = 1;