xref: /freebsd/bin/sh/tests/builtins/fc2.0 (revision 6b7b2d80ed4d728d3ffd12c422e57798c1b63a84)
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