1*e6d6c189SCody Peter Mello#!/bin/bash
2*e6d6c189SCody Peter Mello
3*e6d6c189SCody Peter Melloif [[ -z "$AWK" || -z "$WORKDIR" ]]; then
4*e6d6c189SCody Peter Mello    printf '$AWK and $WORKDIR must be set\n' >&2
5*e6d6c189SCody Peter Mello    exit 1
6*e6d6c189SCody Peter Mellofi
7*e6d6c189SCody Peter Mello
8*e6d6c189SCody Peter MelloTEMP1=$WORKDIR/test.temp.1
9*e6d6c189SCody Peter MelloTEMP2=$WORKDIR/test.temp.2
10*e6d6c189SCody Peter Mello
11*e6d6c189SCody Peter MelloRESULT=0
12*e6d6c189SCody Peter Mello
13*e6d6c189SCody Peter Mellofail() {
14*e6d6c189SCody Peter Mello	echo "$1" >&2
15*e6d6c189SCody Peter Mello	RESULT=1
16*e6d6c189SCody Peter Mello}
17*e6d6c189SCody Peter Mello
18*e6d6c189SCody Peter Melloecho T.redir: test redirections
19*e6d6c189SCody Peter Mello
20*e6d6c189SCody Peter Mello$AWK '{ print >"'$TEMP1'" }' /etc/passwd
21*e6d6c189SCody Peter Mellodiff $TEMP1 /etc/passwd || fail 'BAD: T.redir (print >"test.temp.1")'
22*e6d6c189SCody Peter Mello
23*e6d6c189SCody Peter Mellorm -f $TEMP1
24*e6d6c189SCody Peter Mello$AWK '{ print >>"'$TEMP1'" }' /etc/passwd
25*e6d6c189SCody Peter Mellodiff $TEMP1 /etc/passwd || fail 'BAD: T.redir (print >>"test.temp.1")'
26*e6d6c189SCody Peter Mello
27*e6d6c189SCody Peter Mellorm -f $TEMP1
28*e6d6c189SCody Peter Mello$AWK 'NR%2 == 1 { print >>"'$TEMP1'" }
29*e6d6c189SCody Peter Mello      NR%2 == 0 { print >"'$TEMP1'" }' /etc/passwd
30*e6d6c189SCody Peter Mellodiff $TEMP1 /etc/passwd || fail 'BAD: T.redir (print > and >>"test.temp.1")'
31*e6d6c189SCody Peter Mello
32*e6d6c189SCody Peter Mellorm -f $TEMP1
33*e6d6c189SCody Peter Mello$AWK '{ print | "cat > '$TEMP1'" }' /etc/passwd
34*e6d6c189SCody Peter Mellodiff $TEMP1 /etc/passwd || fail 'BAD: T.redir (print | "cat > test.temp.1")'
35*e6d6c189SCody Peter Mello
36*e6d6c189SCody Peter Mello# tests flush of stdout before opening pipe
37*e6d6c189SCody Peter Melloecho '   head
38*e6d6c189SCody Peter Mello1
39*e6d6c189SCody Peter Mello2' > $TEMP1
40*e6d6c189SCody Peter Mello$AWK 'BEGIN { print "   head"
41*e6d6c189SCody Peter Mello	for (i = 1; i < 3; i++)
42*e6d6c189SCody Peter Mello		print i | "sort" }' > $TEMP2
43*e6d6c189SCody Peter Mellodiff $TEMP1 $TEMP2 || fail 'BAD: T.redir (buffering)'
44*e6d6c189SCody Peter Mello
45*e6d6c189SCody Peter Mellorm -f $TEMP1 $TEMP2
46*e6d6c189SCody Peter Mello$AWK '{ print >"/dev/stderr" }' /etc/passwd 1> $TEMP1 2> $TEMP2
47*e6d6c189SCody Peter Mellodiff $TEMP2 /etc/passwd || fail 'BAD: T.redir (print >"/dev/stderr")'
48*e6d6c189SCody Peter Mellodiff $TEMP1 /dev/null  || fail 'BAD: T.redir (print >"/dev/stderr")'
49*e6d6c189SCody Peter Mello
50*e6d6c189SCody Peter Mellorm -f $TEMP1 $TEMP2
51*e6d6c189SCody Peter Mello$AWK '{ print >"/dev/stdout" }' /etc/passwd 1> $TEMP1 2> $TEMP2
52*e6d6c189SCody Peter Mellodiff $TEMP1 /etc/passwd || fail 'BAD: T.redir (print >"/dev/stdout")'
53*e6d6c189SCody Peter Mellodiff $TEMP2 /dev/null  || fail 'BAD: T.redir (print >"/dev/stderr")'
54*e6d6c189SCody Peter Mello
55*e6d6c189SCody Peter Melloexit $RESULT
56