summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main.rs12
1 files changed, 7 insertions, 5 deletions
diff --git a/src/main.rs b/src/main.rs
index 31133da..4eea403 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -20,10 +20,13 @@ fn main() -> io::Result<()> {
let mut line = String::new();
stdin().read_line(&mut line).unwrap();
- let mut parts = line.trim().split_whitespace();
+ let tmp = line.trim().split_whitespace()
+ .collect::<Vec<&str>>();
+ let mut parts = tmp.iter()
+ .map(|x| substitute_vars(*x));
let command = parts.next().unwrap();
- match command {
+ match command.as_str() {
"exit" => return Ok(()),
"cd" => {
// change directory
@@ -34,15 +37,14 @@ fn main() -> io::Result<()> {
env::set_current_dir(&cd)?;
},
Some(p) => {
- let tmp = substitute_vars(p);
- let cd = Path::new(&tmp);
+ let cd = Path::new(&p);
env::set_current_dir(&cd)?;
}
};
},
command => {
let child = Command::new(command)
- .args(parts.map(substitute_vars))
+ .args(parts)
.spawn();
match child {