xref: /freebsd/bin/sh/tests/builtins/fc2.0 (revision d0b2dbfa)
113de33a5SJulio Merinoset -e
213de33a5SJulio Merinotrap 'echo Broken pipe -- test failed' PIPE
313de33a5SJulio Merino
413de33a5SJulio MerinoP=${TMPDIR:-/tmp}
513de33a5SJulio Merinocd $P
613de33a5SJulio MerinoT=$(mktemp -d sh-test.XXXXXX)
713de33a5SJulio Merinocd $T
813de33a5SJulio Merino
913de33a5SJulio Merinomkfifo input output error
1013de33a5SJulio MerinoHISTFILE=/dev/null ${SH} +m -i <input >output 2>error &
1113de33a5SJulio Merinoexec 3>input
1213de33a5SJulio Merino{
1313de33a5SJulio Merino	# Command not found, containing slash
1413de33a5SJulio Merino	echo '/var/empty/nonexistent' >&3
1513de33a5SJulio Merino	# Read error message, shell will read new input now
1613de33a5SJulio Merino	read dummy <&5
1713de33a5SJulio Merino	# Execute bad command again
1813de33a5SJulio Merino	echo 'fc -e true; echo continued' >&3
1913de33a5SJulio Merino	read dummy <&5
2013de33a5SJulio Merino	read line <&4 && [ "$line" = continued ] && : ${rc:=0}
2113de33a5SJulio Merino	exec 3>&-
2213de33a5SJulio Merino	# Old sh duplicates itself after the fc, producing another line
2313de33a5SJulio Merino	# of output.
2413de33a5SJulio Merino	if read line <&4; then
2513de33a5SJulio Merino		echo "Extraneous output: $line"
2613de33a5SJulio Merino		rc=1
2713de33a5SJulio Merino	fi
2813de33a5SJulio Merino} 4<output 5<error
2913de33a5SJulio Merinoexec 3>&-
3013de33a5SJulio Merino
3113de33a5SJulio Merinorm input output error
3213de33a5SJulio Merinormdir ${P}/${T}
3313de33a5SJulio Merinoexit ${rc:-3}
34