git: e31fb97148f7 - main - read builtin: Empty variables on timeout
Bryan Drewery
bdrewery at FreeBSD.org
Fri Sep 24 18:35:37 UTC 2021
The branch main has been updated by bdrewery:
URL: https://cgit.FreeBSD.org/src/commit/?id=e31fb97148f7a392aaf6cc84579a232f2969b9d1
commit e31fb97148f7a392aaf6cc84579a232f2969b9d1
Author: Bryan Drewery <bdrewery at FreeBSD.org>
AuthorDate: 2020-05-23 17:01:45 +0000
Commit: Bryan Drewery <bdrewery at FreeBSD.org>
CommitDate: 2021-09-24 18:34:54 +0000
read builtin: Empty variables on timeout
This matches how a non-timeout error is handled.
Reviewed by: jilles
MFC after: 2 weeks
Differential Revision: https://reviews.freebsd.org/D31876
---
bin/sh/miscbltin.c | 2 ++
bin/sh/tests/builtins/Makefile | 2 ++
bin/sh/tests/builtins/read10.0 | 8 ++++++++
bin/sh/tests/builtins/read11.0 | 17 +++++++++++++++++
4 files changed, 29 insertions(+)
diff --git a/bin/sh/miscbltin.c b/bin/sh/miscbltin.c
index faccfa92d221..79d7dc097b5c 100644
--- a/bin/sh/miscbltin.c
+++ b/bin/sh/miscbltin.c
@@ -231,6 +231,8 @@ readcmd(int argc __unused, char **argv __unused)
* If there's nothing ready, return an error.
*/
if (status <= 0) {
+ while (*ap != NULL)
+ setvar(*ap++, "", 0);
sig = pendingsig;
return (128 + (sig != 0 ? sig : SIGALRM));
}
diff --git a/bin/sh/tests/builtins/Makefile b/bin/sh/tests/builtins/Makefile
index 197d735920e6..f9b464a6da4b 100644
--- a/bin/sh/tests/builtins/Makefile
+++ b/bin/sh/tests/builtins/Makefile
@@ -141,6 +141,8 @@ ${PACKAGE}FILES+= read6.0
${PACKAGE}FILES+= read7.0
${PACKAGE}FILES+= read8.0
${PACKAGE}FILES+= read9.0
+${PACKAGE}FILES+= read10.0
+${PACKAGE}FILES+= read11.0
${PACKAGE}FILES+= return1.0
${PACKAGE}FILES+= return2.1
${PACKAGE}FILES+= return3.1
diff --git a/bin/sh/tests/builtins/read10.0 b/bin/sh/tests/builtins/read10.0
new file mode 100644
index 000000000000..5fc19896390a
--- /dev/null
+++ b/bin/sh/tests/builtins/read10.0
@@ -0,0 +1,8 @@
+
+set -e
+
+v=original_value
+r=0
+read v < /dev/null || r=$?
+[ "$r" -eq 1 ]
+[ -z "$v" ]
diff --git a/bin/sh/tests/builtins/read11.0 b/bin/sh/tests/builtins/read11.0
new file mode 100644
index 000000000000..c75ed9c92a83
--- /dev/null
+++ b/bin/sh/tests/builtins/read11.0
@@ -0,0 +1,17 @@
+
+set -e
+
+T=$(mktemp -d ${TMPDIR:-/tmp}/sh-test.XXXXXX)
+trap 'rm -rf "$T"' 0
+cd $T
+mkfifo fifo1
+# Open fifo1 for writing and then read block on a dummy fifo
+{ mkfifo fifo2; read dummy <fifo2; } >fifo1 &
+# Wait for the child to open fifo1 for writing
+exec 3<fifo1
+v=original_value
+r=0
+read -t 0 v <&3 || r=$?
+kill -TERM "$!" || :
+{ [ "$r" -gt 128 ] && [ "$(kill -l "$r")" = ALRM ]; } || exit
+[ -z "$v" ]
More information about the dev-commits-src-all
mailing list