1214512Sjilles# $FreeBSD: releng/10.2/bin/sh/tests/expansion/plus-minus6.0 214512 2010-10-29 13:42:18Z jilles $
2214512Sjilles
3214512Sjillesfailures=0
4214512Sjillesunset LC_ALL
5214512Sjillesexport LC_CTYPE=en_US.ISO8859-1
6214512Sjillesnl='
7214512Sjilles'
8214512Sjillesi=1
9214512Sjillesset -f
10214512Sjilleswhile [ "$i" -le 255 ]; do
11214512Sjilles	# A different byte still in the range 1..255.
12214512Sjilles	i2=$((i^2+(i==2)))
13214512Sjilles	# Add a character to work around command substitution's removal of
14214512Sjilles	# final newlines, then remove it again.
15214512Sjilles	c=$(printf \\"$(printf %o@ "$i")")
16214512Sjilles	c=${c%@}
17214512Sjilles	c2=$(printf \\"$(printf %o@ "$i2")")
18214512Sjilles	c2=${c2%@}
19214512Sjilles	case $c in
20214512Sjilles		[\'$nl'$}();&|\"`']) c=M
21214512Sjilles	esac
22214512Sjilles	case $c2 in
23214512Sjilles		[\'$nl'$}();&|\"`']) c2=N
24214512Sjilles	esac
25214512Sjilles	IFS=$c
26214512Sjilles	command eval "set -- \${\$+$c2$c$c2$c$c2}"
27214512Sjilles	if [ "$#" -ne 3 ] || [ "$1" != "$c2" ] || [ "$2" != "$c2" ] ||
28214512Sjilles	    [ "$3" != "$c2" ]; then
29214512Sjilles		echo "Bad results for separator $i (word $i2)" >&2
30214512Sjilles		: $((failures += 1))
31214512Sjilles	fi
32214512Sjilles	i=$((i+1))
33214512Sjillesdone
34214512Sjillesexit $((failures > 0))
35