Skip to content

Commit 7cc2b60

Browse files
author
梶塚太智
committed
Update main.rs
1 parent 6db4878 commit 7cc2b60

File tree

1 file changed

+25
-6
lines changed

1 file changed

+25
-6
lines changed

src/main.rs

Lines changed: 25 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -823,6 +823,11 @@ impl Executor {
823823
let acc = self.pop_stack().get_string();
824824
let list = self.pop_stack().get_list();
825825

826+
self.memory
827+
.entry(acc.clone())
828+
.and_modify(|value| *value = Type::String("".to_string()))
829+
.or_insert(Type::String("".to_string()));
830+
826831
for x in list.iter() {
827832
self.memory
828833
.entry(now.clone())
@@ -983,17 +988,23 @@ impl Executor {
983988

984989
// Open the file or url
985990
"open" => {
986-
if let Err(e) = opener::open(self.pop_stack().get_string()) {
991+
let name = self.pop_stack().get_string();
992+
if let Err(e) = opener::open(name.clone()) {
987993
self.log_print(format!("Error! {e}\n"));
988994
self.stack.push(Type::Error("open".to_string()));
995+
} else {
996+
self.stack.push(Type::String(name))
989997
}
990998
}
991999

9921000
// Change current directory
9931001
"cd" => {
994-
if let Err(err) = std::env::set_current_dir(self.pop_stack().get_string()) {
1002+
let name = self.pop_stack().get_string();
1003+
if let Err(err) = std::env::set_current_dir(name.clone()) {
9951004
self.log_print(format!("Error! {}\n", err));
9961005
self.stack.push(Type::Error("cd".to_string()));
1006+
} else {
1007+
self.stack.push(Type::String(name))
9971008
}
9981009
}
9991010

@@ -1009,33 +1020,41 @@ impl Executor {
10091020
// Make directory
10101021
"mkdir" => {
10111022
let name = self.pop_stack().get_string();
1012-
if let Err(e) = fs::create_dir(name) {
1023+
if let Err(e) = fs::create_dir(name.clone()) {
10131024
self.log_print(format!("Error! {e}\n"));
10141025
self.stack.push(Type::Error("mkdir".to_string()));
1026+
} else {
1027+
self.stack.push(Type::String(name))
10151028
}
10161029
}
10171030

10181031
// Remove item
10191032
"rm" => {
10201033
let name = self.pop_stack().get_string();
10211034
if Path::new(name.as_str()).is_dir() {
1022-
if let Err(e) = fs::remove_dir(name) {
1035+
if let Err(e) = fs::remove_dir(name.clone()) {
10231036
self.log_print(format!("Error! {e}\n"));
10241037
self.stack.push(Type::Error("rm".to_string()));
1038+
} else {
1039+
self.stack.push(Type::String(name))
10251040
}
1026-
} else if let Err(e) = fs::remove_file(name) {
1041+
} else if let Err(e) = fs::remove_file(name.clone()) {
10271042
self.log_print(format!("Error! {e}\n"));
10281043
self.stack.push(Type::Error("rm".to_string()));
1044+
} else {
1045+
self.stack.push(Type::String(name))
10291046
}
10301047
}
10311048

10321049
// Rename item
10331050
"rename" => {
10341051
let to = self.pop_stack().get_string();
10351052
let from = self.pop_stack().get_string();
1036-
if let Err(e) = fs::rename(from, to) {
1053+
if let Err(e) = fs::rename(from, to.clone()) {
10371054
self.log_print(format!("Error! {e}\n"));
10381055
self.stack.push(Type::Error("rename".to_string()));
1056+
} else {
1057+
self.stack.push(Type::String(to))
10391058
}
10401059
}
10411060

0 commit comments

Comments
 (0)