summaryrefslogtreecommitdiffstats
path: root/src/runner/builtins/mod.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/runner/builtins/mod.rs')
-rw-r--r--src/runner/builtins/mod.rs15
1 files changed, 7 insertions, 8 deletions
diff --git a/src/runner/builtins/mod.rs b/src/runner/builtins/mod.rs
index 07be59f..117cefd 100644
--- a/src/runner/builtins/mod.rs
+++ b/src/runner/builtins/mod.rs
@@ -235,20 +235,19 @@ fn read(
bail!(cfg, exe, "usage: read var");
};
- let val = match cfg.io().read_line_stdin().await {
- Ok(line) => {
- if line.is_empty() {
- return std::process::ExitStatus::from_raw(1 << 8);
- }
- line
- }
+ let (done, val) = match cfg.io().read_line_stdin().await {
+ Ok(line) => (line.is_empty(), line),
Err(e) => {
bail!(cfg, exe, e);
}
};
std::env::set_var(var, val);
- async_std::process::ExitStatus::from_raw(0)
+ async_std::process::ExitStatus::from_raw(if done {
+ 1 << 8
+ } else {
+ 0
+ })
}
Ok(command::Child::new_fut(async move {