sh: Test that the read builtin passes through all byte values
except NUL, newline and backslash. This also passes on stable/8.
This commit is contained in:
parent
28de89e113
commit
e1012e9afb
32
tools/regression/bin/sh/builtins/read5.0
Normal file
32
tools/regression/bin/sh/builtins/read5.0
Normal file
@ -0,0 +1,32 @@
|
||||
# $FreeBSD$
|
||||
|
||||
unset LC_ALL
|
||||
LC_CTYPE=en_US.ISO8859-1
|
||||
export LC_CTYPE
|
||||
|
||||
# Note: the first and last characters are not whitespace.
|
||||
# Exclude backslash and newline.
|
||||
bad1=`printf %03o \'\\\\`
|
||||
bad2=`printf %03o \''
|
||||
'`
|
||||
e=
|
||||
for i in 0 1 2 3; do
|
||||
for j in 0 1 2 3 4 5 6 7; do
|
||||
for k in 0 1 2 3 4 5 6 7; do
|
||||
case $i$j$k in
|
||||
000|$bad1|$bad2) continue ;;
|
||||
esac
|
||||
e="$e\\$i$j$k"
|
||||
done
|
||||
done
|
||||
done
|
||||
e=`printf "$e"`
|
||||
[ "${#e}" = 253 ] || echo length bad
|
||||
|
||||
r1=`printf '%s\n' "$e" | { read -r x; printf '%s' "$x"; }`
|
||||
[ "$r1" = "$e" ] || echo "read with -r bad"
|
||||
r2=`printf '%s\n' "$e" | { read x; printf '%s' "$x"; }`
|
||||
[ "$r2" = "$e" ] || echo "read without -r bad 1"
|
||||
IFS=
|
||||
r3=`printf '%s\n' "$e" | { read x; printf '%s' "$x"; }`
|
||||
[ "$r3" = "$e" ] || echo "read without -r bad 2"
|
Loading…
x
Reference in New Issue
Block a user