diff options
Diffstat (limited to 'src/state')
-rw-r--r-- | src/state/history/mod.rs | 15 |
1 files changed, 4 insertions, 11 deletions
diff --git a/src/state/history/mod.rs b/src/state/history/mod.rs index 3573a1c..430eb28 100644 --- a/src/state/history/mod.rs +++ b/src/state/history/mod.rs @@ -104,7 +104,7 @@ impl History { run_commands( ast, async_std::sync::Arc::clone(&entry), - crate::env::Env::new(0), + crate::env::Env::new(), input_r, resize_r, event_w, @@ -541,8 +541,8 @@ fn run_commands( }; for pipeline in ast.pipelines() { - let (pipeline_status, done) = - run_pipeline(pipeline, &pty, &env).await; + env.set_pipeline(pipeline.input_string().to_string()); + let (pipeline_status, done) = run_pipeline(&pty, &env).await; env.set_status(pipeline_status); if done { break; @@ -556,7 +556,6 @@ fn run_commands( } async fn run_pipeline( - pipeline: &crate::parse::Pipeline, pty: &pty::Pty, env: &crate::env::Env, ) -> (async_std::process::ExitStatus, bool) { @@ -573,13 +572,7 @@ async fn run_pipeline( nix::unistd::close(r).unwrap(); let mut w = unsafe { async_std::fs::File::from_raw_fd(w) }; - // TODO: actual serialization - w.write_all(&env.latest_status().code().unwrap_or(1).to_be_bytes()) - .await - .unwrap(); - w.write_all(pipeline.input_string().as_bytes()) - .await - .unwrap(); + w.write_all(&env.as_bytes()).await.unwrap(); drop(w); let status = child.status_no_drop().await.unwrap(); |