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
This commit is contained in:
parent
0389e9be63
commit
e31fb97148
@ -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
|
||||
|
8
bin/sh/tests/builtins/read10.0
Normal file
8
bin/sh/tests/builtins/read10.0
Normal file
@ -0,0 +1,8 @@
|
||||
|
||||
set -e
|
||||
|
||||
v=original_value
|
||||
r=0
|
||||
read v < /dev/null || r=$?
|
||||
[ "$r" -eq 1 ]
|
||||
[ -z "$v" ]
|
17
bin/sh/tests/builtins/read11.0
Normal file
17
bin/sh/tests/builtins/read11.0
Normal file
@ -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" ]
|
Loading…
x
Reference in New Issue
Block a user