Commit e31fb971 authored by Bryan Drewery's avatar Bryan Drewery
Browse files

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
parent 0389e9be
......@@ -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));
}
......
......@@ -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
......
set -e
v=original_value
r=0
read v < /dev/null || r=$?
[ "$r" -eq 1 ]
[ -z "$v" ]
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" ]
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment