add command-wait-silent
This commit is contained in:
parent
8c2b6724da
commit
4357a16523
1 changed files with 13 additions and 4 deletions
|
@ -829,6 +829,14 @@ pub fn command(stack: &mut Stack) -> OError {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn command_wait(stack: &mut Stack) -> OError {
|
pub fn command_wait(stack: &mut Stack) -> OError {
|
||||||
|
command_wait_impl(stack, Stdio::inherit)
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn command_wait_silent(stack: &mut Stack) -> OError {
|
||||||
|
command_wait_impl(stack, Stdio::null)
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn command_wait_impl(stack: &mut Stack, stdio: fn() -> Stdio) -> OError {
|
||||||
let binding = stack.pop();
|
let binding = stack.pop();
|
||||||
let Value::Array(ref a) = binding.lock_ro().native else {
|
let Value::Array(ref a) = binding.lock_ro().native else {
|
||||||
return stack.err(ErrorKind::InvalidCall("command".to_owned()));
|
return stack.err(ErrorKind::InvalidCall("command".to_owned()));
|
||||||
|
@ -848,9 +856,9 @@ pub fn command_wait(stack: &mut Stack) -> OError {
|
||||||
Value::Int(
|
Value::Int(
|
||||||
process::Command::new(&args[0])
|
process::Command::new(&args[0])
|
||||||
.args(&args[1..])
|
.args(&args[1..])
|
||||||
.stdin(Stdio::inherit())
|
.stdin(stdio())
|
||||||
.stdout(Stdio::inherit())
|
.stdout(stdio())
|
||||||
.stderr(Stdio::inherit())
|
.stderr(stdio())
|
||||||
.spawn()
|
.spawn()
|
||||||
.map_err(|x| stack.error(ErrorKind::IO(x.to_string())))?
|
.map_err(|x| stack.error(ErrorKind::IO(x.to_string())))?
|
||||||
.wait()
|
.wait()
|
||||||
|
@ -1150,7 +1158,7 @@ pub fn chdir(stack: &mut Stack) -> OError {
|
||||||
|
|
||||||
pub fn register(r: &mut Stack, o: Arc<Frame>) {
|
pub fn register(r: &mut Stack, o: Arc<Frame>) {
|
||||||
type Fn = fn(&mut Stack) -> OError;
|
type Fn = fn(&mut Stack) -> OError;
|
||||||
let fns: [(&str, Fn, u32); 69] = [
|
let fns: [(&str, Fn, u32); 70] = [
|
||||||
("pop", pop, 0),
|
("pop", pop, 0),
|
||||||
("dup", dup, 2),
|
("dup", dup, 2),
|
||||||
("dup2", dup2, 3),
|
("dup2", dup2, 3),
|
||||||
|
@ -1203,6 +1211,7 @@ pub fn register(r: &mut Stack, o: Arc<Frame>) {
|
||||||
("readln", readln, 1),
|
("readln", readln, 1),
|
||||||
("command", command, 1),
|
("command", command, 1),
|
||||||
("command-wait", command_wait, 1),
|
("command-wait", command_wait, 1),
|
||||||
|
("command-wait-silent", command_wait_silent, 1),
|
||||||
("str-to-bytes", str_to_bytes, 1),
|
("str-to-bytes", str_to_bytes, 1),
|
||||||
("bytes-to-str", bytes_to_str, 1),
|
("bytes-to-str", bytes_to_str, 1),
|
||||||
("acopy", acopy, 1),
|
("acopy", acopy, 1),
|
||||||
|
|
Loading…
Add table
Reference in a new issue