diff --git a/src/io/in.rs b/src/io/in.rs index ba176e5..849dd68 100644 --- a/src/io/in.rs +++ b/src/io/in.rs @@ -12,13 +12,26 @@ impl Buffer { } } - pub fn read_line(&mut self) -> stdio::Result { + pub fn read_line(&mut self) -> usize { self.buffer.clear(); + let result: stdio::Result = stdin().read_line(&mut self.buffer); + if result.is_err() { eprintln!("error: invalid UTF-8 characters were read"); + self.buffer.clear(); + 1 + } else { + self.buffer = self.buffer.trim().to_string(); + result.unwrap() } + } - result + pub fn is_empty(&self) -> bool { + self.buffer.is_empty() + } + + pub fn get_buffer(&self) -> &String { + &self.buffer } } diff --git a/src/io/mod.rs b/src/io/mod.rs index e706f45..99768cf 100644 --- a/src/io/mod.rs +++ b/src/io/mod.rs @@ -1,27 +1,21 @@ -use std::io; - mod r#in; mod r#out; - mod parser; pub fn run() -> i32 { let mut buffer = r#in::Buffer::new(); - let mut bytes_read_result: io::Result; let mut bytes_read: usize = 1; + let mut command_line: String; + let mut argv: Vec; while bytes_read != 0 { out::print_ps1(); - bytes_read_result = buffer.read_line(); + bytes_read = buffer.read_line(); - if bytes_read_result.is_err() { - bytes_read = 1; - } else { - bytes_read = bytes_read_result.unwrap(); - if bytes_read != 0 { - //let command_vec: Vec = parser::parse(&buffer); - //println!("{:?}", command_vec); - } + if ! buffer.is_empty() { + command_line = buffer.get_buffer().to_string(); + argv = parser::parse(&command_line); + println!("{:?}", argv); } }