get it working

This commit is contained in:
Bennet Bleßmann
2025-07-19 21:33:19 +02:00
committed by Bennet Bleßmann
parent d79ece2497
commit 003e9d4610
2 changed files with 14 additions and 14 deletions

View File

@@ -6,7 +6,6 @@
process_create(Exe, Args, Options) :- process_create(Exe, Args, Options) :-
must_be(chars, Exe), must_be(chars, Exe),
must_be(list(chars), Args),
must_be(list, Options), must_be(list, Options),
check_option(Sin, find_stdio(Sin, stdin, Options), valid_stdio, [std], Stdin), check_option(Sin, find_stdio(Sin, stdin, Options), valid_stdio, [std], Stdin),
check_option(Sout, find_stdio(Sout, stdout, Options), valid_stdio, [std], Stdout), 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([pipe, Stream]) :- must_be(var, Stream).
valid_stdio([file, Path]) :- must_be(chars, Path). valid_stdio([file, Path]) :- must_be(chars, Path).
find_env([env, E], Options) :- member(env(E), Options). find_env([env, ME], Options) :- member(env(E), Options), maplist(assign_to_list, E, ME).
find_env([environment, E], Options) :- member(environment(E), Options). 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([env, E]) :- valid_env_(E).
valid_env([environment, E]) :- valid_env_(E). valid_env([environment, E]) :- valid_env_(E).

View File

@@ -8441,28 +8441,27 @@ impl Machine {
_ => panic!("Invalid value for clear_env"), _ => panic!("Invalid value for clear_env"),
}; };
let env_names = self.machine_st.try_from_list(env_args[0], stub_gen)?; let envs = self
let env_values = self.machine_st.try_from_list(env_args[1], stub_gen)?; .machine_st
.try_from_list(env_args[1], stub_gen)?
let envs = env_names
.into_iter() .into_iter()
.zip(env_values) .map(|entry| {
.map(|(name, value)| { let entry = self.machine_st.try_from_list(entry, stub_gen)?;
let name = self let name = self
.machine_st .machine_st
.value_to_str_like(name) .value_to_str_like(entry[0])
.unwrap() .unwrap()
.as_str() .as_str()
.to_string(); .to_string();
let value = self let value = self
.machine_st .machine_st
.value_to_str_like(value) .value_to_str_like(entry[1])
.unwrap() .unwrap()
.as_str() .as_str()
.to_string(); .to_string();
(name, value) Ok((name, value))
}) })
.collect::<Vec<_>>(); .collect::<Result<Vec<_>, MachineStub>>()?;
let cwd = self.machine_st.value_to_str_like(cwd_r); let cwd = self.machine_st.value_to_str_like(cwd_r);