cleanup after msrv bump
This commit is contained in:
@@ -8850,13 +8850,7 @@ impl Machine {
|
||||
.stderr(stderr);
|
||||
|
||||
match command.spawn() {
|
||||
#[cfg_attr(rust_version = "1.87.0", expect(unused_mut))]
|
||||
Ok(mut child) => {
|
||||
#[cfg(not(rust_version = "1.87.0"))]
|
||||
{
|
||||
self.anon_pipe_compat(&mut child, &stdin_args, &stdout_args, &stderr_args)?;
|
||||
}
|
||||
|
||||
Ok(child) => {
|
||||
let child_process_alloc: TypedArenaPtr<Child> =
|
||||
arena_alloc!(child, &mut self.machine_st.arena);
|
||||
|
||||
@@ -8879,94 +8873,32 @@ impl Machine {
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(not(rust_version = "1.87.0"))]
|
||||
fn anon_pipe_compat(
|
||||
&mut self,
|
||||
child: &mut std::process::Child,
|
||||
stdin_args: &[HeapCellValue],
|
||||
stdout_args: &[HeapCellValue],
|
||||
stderr_args: &[HeapCellValue],
|
||||
) -> CallResult {
|
||||
if let Some(atom!("pipe")) = stdin_args[0].to_atom() {
|
||||
let writer = child.stdin.take().expect("Should have captured stdin");
|
||||
|
||||
let stream = Stream::from_pipe_writer(writer, &mut self.machine_st.arena);
|
||||
|
||||
self.indices
|
||||
.add_stream(stream, atom!("process_create"), 3)
|
||||
.map_err(|stub_gen| stub_gen(&mut self.machine_st))?;
|
||||
|
||||
unify!(self.machine_st, stdin_args[1], HeapCellValue::from(stream));
|
||||
}
|
||||
|
||||
if let Some(atom!("pipe")) = stdout_args[0].to_atom() {
|
||||
let writer = child.stdout.take().expect("Should have captured stdout");
|
||||
|
||||
let stream = Stream::from_pipe_reader(
|
||||
PipeReader(PipeReaderInner::Stdout(writer)),
|
||||
&mut self.machine_st.arena,
|
||||
);
|
||||
|
||||
self.indices
|
||||
.add_stream(stream, atom!("process_create"), 3)
|
||||
.map_err(|stub_gen| stub_gen(&mut self.machine_st))?;
|
||||
|
||||
unify!(self.machine_st, stdout_args[1], HeapCellValue::from(stream));
|
||||
}
|
||||
|
||||
if let Some(atom!("pipe")) = stderr_args[0].to_atom() {
|
||||
let writer = child.stderr.take().expect("Should have captured stderr");
|
||||
|
||||
let stream = Stream::from_pipe_reader(
|
||||
PipeReader(PipeReaderInner::Stderr(writer)),
|
||||
&mut self.machine_st.arena,
|
||||
);
|
||||
|
||||
self.indices
|
||||
.add_stream(stream, atom!("process_create"), 3)
|
||||
.map_err(|stub_gen| stub_gen(&mut self.machine_st))?;
|
||||
|
||||
unify!(self.machine_st, stderr_args[1], HeapCellValue::from(stream));
|
||||
}
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn handle_output_stream(&mut self, args: &[HeapCellValue]) -> Result<Stdio, MachineStub> {
|
||||
Ok(match args[0].to_atom() {
|
||||
Some(atom!("std")) => Stdio::inherit(),
|
||||
Some(atom!("null")) => Stdio::null(),
|
||||
Some(atom!("pipe")) => {
|
||||
#[cfg(rust_version = "1.87.0")]
|
||||
#[allow(clippy::incompatible_msrv)]
|
||||
{
|
||||
let (reader, writer) = match std::io::pipe() {
|
||||
Ok(pipe_pair) => pipe_pair,
|
||||
Err(_) => {
|
||||
return Err(self.machine_st.open_permission_error(
|
||||
atom!("anonymous_pipe"),
|
||||
atom!("process_create"),
|
||||
3,
|
||||
));
|
||||
}
|
||||
};
|
||||
let (reader, writer) = match std::io::pipe() {
|
||||
Ok(pipe_pair) => pipe_pair,
|
||||
Err(_) => {
|
||||
return Err(self.machine_st.open_permission_error(
|
||||
atom!("anonymous_pipe"),
|
||||
atom!("process_create"),
|
||||
3,
|
||||
));
|
||||
}
|
||||
};
|
||||
|
||||
let stream = Stream::from_pipe_reader(reader, &mut self.machine_st.arena);
|
||||
let stream = Stream::from_pipe_reader(reader, &mut self.machine_st.arena);
|
||||
|
||||
self.indices
|
||||
.add_stream(stream, atom!("process_create"), 3)
|
||||
.map_err(|stub_gen| stub_gen(&mut self.machine_st))?;
|
||||
self.indices
|
||||
.add_stream(stream, atom!("process_create"), 3)
|
||||
.map_err(|stub_gen| stub_gen(&mut self.machine_st))?;
|
||||
|
||||
self.machine_st
|
||||
.bind(args[1].as_var().unwrap(), stream.into());
|
||||
self.machine_st
|
||||
.bind(args[1].as_var().unwrap(), stream.into());
|
||||
|
||||
Stdio::from(writer)
|
||||
}
|
||||
|
||||
#[cfg(not(rust_version = "1.87.0"))]
|
||||
{
|
||||
Stdio::piped()
|
||||
}
|
||||
Stdio::from(writer)
|
||||
}
|
||||
Some(atom!("file")) => {
|
||||
let path = self.machine_st.value_to_str_like(args[1]).unwrap();
|
||||
|
||||
Reference in New Issue
Block a user