diff --git a/src/main.rs b/src/main.rs index 13dd9f9..14b3743 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,4 +1,8 @@ -use std::process::exit; +use std::io::Result; +use std::process::{ + ExitStatus, + exit, +}; mod input; mod output; @@ -9,6 +13,8 @@ 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_code: i32 = 0; while bytes_read != 0 { output::print_ps1(); @@ -16,11 +22,22 @@ fn main() { argv = buffer.parse(); if argv.is_some() { - let _ = job::execute(argv.unwrap()); + exit_status = job::execute(argv.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; + } } } println!(); - - exit(0); + exit(exit_code); }