From de7236e3ac7596dfdcd4b705861189ee9af9942c Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Mon, 17 Jan 2022 01:33:04 -0500 Subject: fix reading empty lines --- src/runner/builtins/command.rs | 5 +++-- src/runner/builtins/mod.rs | 4 ++-- 2 files changed, 5 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/runner/builtins/command.rs b/src/runner/builtins/command.rs index 7d84c8f..a2ba35d 100644 --- a/src/runner/builtins/command.rs +++ b/src/runner/builtins/command.rs @@ -185,17 +185,18 @@ impl Io { } } - pub async fn read_line_stdin(&self) -> anyhow::Result { + pub async fn read_line_stdin(&self) -> anyhow::Result<(String, bool)> { let mut buf = String::new(); if let Some(fh) = self.stdin() { if let File::In(fh) = &mut *fh.lock_arc().await { fh.read_line(&mut buf).await?; } } + let done = buf.is_empty(); if buf.ends_with('\n') { buf.truncate(buf.len() - 1); } - Ok(buf) + Ok((buf, done)) } pub async fn write_stdout(&self, buf: &[u8]) -> anyhow::Result<()> { diff --git a/src/runner/builtins/mod.rs b/src/runner/builtins/mod.rs index 19d250a..5205856 100644 --- a/src/runner/builtins/mod.rs +++ b/src/runner/builtins/mod.rs @@ -213,8 +213,8 @@ fn read( bail!(cfg, exe, "usage: read var"); }; - let (done, val) = match cfg.io().read_line_stdin().await { - Ok(line) => (line.is_empty(), line), + let (val, done) = match cfg.io().read_line_stdin().await { + Ok((line, done)) => (line, done), Err(e) => { bail!(cfg, exe, e); } -- cgit v1.2.3-54-g00ecf