1# $FreeBSD$ 2set -e 3trap 'echo Broken pipe -- test failed' PIPE 4 5P=${TMPDIR:-/tmp} 6cd $P 7T=$(mktemp -d sh-test.XXXXXX) 8cd $T 9 10mkfifo input output error 11HISTFILE=/dev/null ${SH} +m -i <input >output 2>error & 12exec 3>input 13{ 14 # Command not found, containing slash 15 echo '/var/empty/nonexistent' >&3 16 # Read error message, shell will read new input now 17 read dummy <&5 18 # Execute bad command again 19 echo 'fc -e true; echo continued' >&3 20 read dummy <&5 21 read line <&4 && [ "$line" = continued ] && : ${rc:=0} 22 exec 3>&- 23 # Old sh duplicates itself after the fc, producing another line 24 # of output. 25 if read line <&4; then 26 echo "Extraneous output: $line" 27 rc=1 28 fi 29} 4<output 5<error 30exec 3>&- 31 32rm input output error 33rmdir ${P}/${T} 34exit ${rc:-3} 35