113de33a5SJulio Merino# This is really a test for outqstr(), which is readily accessible via trap. 213de33a5SJulio Merino 313de33a5SJulio Merinoruntest() 413de33a5SJulio Merino{ 513de33a5SJulio Merino teststring=$1 613de33a5SJulio Merino trap -- "$teststring" USR1 713de33a5SJulio Merino traps=$(trap) 813de33a5SJulio Merino if [ "$teststring" != "-" ] && [ -z "$traps" ]; then 913de33a5SJulio Merino # One possible reading of POSIX requires the above to return an 1013de33a5SJulio Merino # empty string because backquote commands are executed in a 1113de33a5SJulio Merino # subshell and subshells shall reset traps. However, an example 1213de33a5SJulio Merino # in the normative description of the trap builtin shows the 1313de33a5SJulio Merino # same usage as here, it is useful and our /bin/sh allows it. 1413de33a5SJulio Merino echo '$(trap) is broken' 1513de33a5SJulio Merino exit 1 1613de33a5SJulio Merino fi 1713de33a5SJulio Merino trap - USR1 1813de33a5SJulio Merino eval "$traps" 1913de33a5SJulio Merino traps2=$(trap) 2013de33a5SJulio Merino if [ "$traps" != "$traps2" ]; then 2113de33a5SJulio Merino echo "Mismatch for '$teststring'" 2213de33a5SJulio Merino exit 1 2313de33a5SJulio Merino fi 2413de33a5SJulio Merino} 2513de33a5SJulio Merino 2613de33a5SJulio Merinoruntest 'echo' 2713de33a5SJulio Merinoruntest 'echo hi' 2813de33a5SJulio Merinoruntest "'echo' 'hi'" 2913de33a5SJulio Merinoruntest '"echo" $PATH' 3013de33a5SJulio Merinoruntest '\echo "$PATH"' 3113de33a5SJulio Merinoruntest ' 0' 3213de33a5SJulio Merinoruntest '0 ' 3313de33a5SJulio Merinoruntest ' 1' 3413de33a5SJulio Merinoruntest '1 ' 3513de33a5SJulio Merinoi=1 3613de33a5SJulio Merinowhile [ $i -le 127 ]; do 3713de33a5SJulio Merino c=$(printf \\"$(printf %o $i)") 3813de33a5SJulio Merino if [ $i -lt 48 ] || [ $i -gt 57 ]; then 3913de33a5SJulio Merino runtest "$c" 4013de33a5SJulio Merino fi 4113de33a5SJulio Merino runtest " $c$c" 4213de33a5SJulio Merino runtest "a$c" 4313de33a5SJulio Merino i=$((i+1)) 4413de33a5SJulio Merinodone 4513de33a5SJulio MerinoIFS=, 4613de33a5SJulio Merinoruntest ' ' 4713de33a5SJulio Merinoruntest ',' 4813de33a5SJulio Merinounset IFS 4913de33a5SJulio Merinoruntest ' ' 5013de33a5SJulio Merino 5113de33a5SJulio Merinoexit 0 52