aboutsummaryrefslogtreecommitdiffstats
path: root/src/run/mod.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/run/mod.rs')
-rw-r--r--src/run/mod.rs18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/run/mod.rs b/src/run/mod.rs
index c866c6e..a31ff1a 100644
--- a/src/run/mod.rs
+++ b/src/run/mod.rs
@@ -477,6 +477,21 @@ fn exec(se: Arc<Mutex<Session>>, ast: Ast<PreExpansion>) -> Result<(), ExecError
exec.exec_loop(cmd, &mut [c1, c2])
}
+pub fn run_quiet(
+ se: Arc<Mutex<Session>>,
+ cmd: parse::Command<PostExpansion>,
+) -> Result<(), ExecError> {
+ let mut exec = Executor {
+ se: se.clone(),
+ args: None,
+ expand_commands: true,
+ };
+ let (i, c1) = InputReader::new(Input::Null);
+ let (o, c2) = OutputWriter::new(Output::Null);
+ let cmd = exec.execute_pipeline(parse::Pipes { cmds: vec![cmd] }, i, o);
+ exec.exec_loop(cmd, &mut [c1, c2])
+}
+
pub fn run(se: Arc<Mutex<Session>>, parsed: Ast<PreExpansion>) {
se.lock().unwrap().raw.disable();
let result = exec(se.clone(), parsed);
@@ -550,6 +565,9 @@ const BUILTINS: &[&'static dyn Builtin] = &[
#[cfg(debug_assertions)]
&builtin::debug,
&builtin::terminfo,
+ &builtin::bind,
+ &builtin::exit,
+ &builtin::ct,
];
pub fn builtin_map() -> HashMap<BString, &'static dyn Builtin> {