summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEl-BG-1970 <elouangros@hotmail.com>2022-04-26 22:04:29 +0200
committerEl-BG-1970 <elouangros@hotmail.com>2022-04-26 22:04:29 +0200
commitb7506a6fdfbc1ba75d263d9011c0521ba3e4e618 (patch)
tree23e37a65868e85f923a4fcb6834a17d2c00777be
parent1c6a3107e9200fdc6441fb9c714a2e99d79c1293 (diff)
downloadrush-b7506a6fdfbc1ba75d263d9011c0521ba3e4e618.tar.gz
~ now works, but not ~/*
-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 {