From 003e9d461008b4d7249639694c657e4faa0c3e00 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Bennet=20Ble=C3=9Fmann?= Date: Sat, 19 Jul 2025 21:33:19 +0200 Subject: [PATCH] get it working --- src/lib/process.pl | 9 +++++---- src/machine/system_calls.rs | 19 +++++++++---------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/src/lib/process.pl b/src/lib/process.pl index e712bd69..f0a0a819 100644 --- a/src/lib/process.pl +++ b/src/lib/process.pl @@ -6,7 +6,6 @@ process_create(Exe, Args, Options) :- must_be(chars, Exe), - must_be(list(chars), Args), must_be(list, Options), check_option(Sin, find_stdio(Sin, stdin, Options), valid_stdio, [std], Stdin), check_option(Sout, find_stdio(Sout, stdout, Options), valid_stdio, [std], Stdout), @@ -35,10 +34,12 @@ valid_stdio([null]). valid_stdio([pipe, Stream]) :- must_be(var, Stream). valid_stdio([file, Path]) :- must_be(chars, Path). -find_env([env, E], Options) :- member(env(E), Options). -find_env([environment, E], Options) :- member(environment(E), Options). +find_env([env, ME], Options) :- member(env(E), Options), maplist(assign_to_list, E, ME). +find_env([environment, ME], Options) :- member(environment(E), Options), maplist(assign_to_list, E, ME). -valid_cwd(Cwd) :- must_be(chars, Cwd). +assign_to_list(N=V, [N,v]). + +valid_cwd(Cwd). valid_env([env, E]) :- valid_env_(E). valid_env([environment, E]) :- valid_env_(E). diff --git a/src/machine/system_calls.rs b/src/machine/system_calls.rs index 51092f64..63aabd8b 100644 --- a/src/machine/system_calls.rs +++ b/src/machine/system_calls.rs @@ -8441,28 +8441,27 @@ impl Machine { _ => panic!("Invalid value for clear_env"), }; - let env_names = self.machine_st.try_from_list(env_args[0], stub_gen)?; - let env_values = self.machine_st.try_from_list(env_args[1], stub_gen)?; - - let envs = env_names + let envs = self + .machine_st + .try_from_list(env_args[1], stub_gen)? .into_iter() - .zip(env_values) - .map(|(name, value)| { + .map(|entry| { + let entry = self.machine_st.try_from_list(entry, stub_gen)?; let name = self .machine_st - .value_to_str_like(name) + .value_to_str_like(entry[0]) .unwrap() .as_str() .to_string(); let value = self .machine_st - .value_to_str_like(value) + .value_to_str_like(entry[1]) .unwrap() .as_str() .to_string(); - (name, value) + Ok((name, value)) }) - .collect::>(); + .collect::, MachineStub>>()?; let cwd = self.machine_st.value_to_str_like(cwd_r); -- 2.54.0