The branch main has been updated by bdrewery:

URL: 
https://cgit.FreeBSD.org/src/commit/?id=e31fb97148f7a392aaf6cc84579a232f2969b9d1

commit e31fb97148f7a392aaf6cc84579a232f2969b9d1
Author:     Bryan Drewery <bdrew...@freebsd.org>
AuthorDate: 2020-05-23 17:01:45 +0000
Commit:     Bryan Drewery <bdrew...@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" ]
_______________________________________________
dev-commits-src-main@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/dev-commits-src-main
To unsubscribe, send any mail to "dev-commits-src-main-unsubscr...@freebsd.org"

Reply via email to