get it working
This commit is contained in:
committed by
Bennet Bleßmann
parent
d79ece2497
commit
003e9d4610
@@ -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).
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user