1e6d6c189SCody Peter Mello#!/bin/bash 2e6d6c189SCody Peter Mello 3e6d6c189SCody Peter Melloif [[ -z "$AWK" || -z "$WORKDIR" ]]; then 4e6d6c189SCody Peter Mello printf '$AWK and $WORKDIR must be set\n' >&2 5e6d6c189SCody Peter Mello exit 1 6e6d6c189SCody Peter Mellofi 7e6d6c189SCody Peter Mello 8e6d6c189SCody Peter MelloTEMP1=$WORKDIR/test.temp.1 9e6d6c189SCody Peter MelloTEMP2=$WORKDIR/test.temp.2 10e6d6c189SCody Peter Mello 11e6d6c189SCody Peter MelloRESULT=0 12e6d6c189SCody Peter Mello 13e6d6c189SCody Peter Mellofail() { 14e6d6c189SCody Peter Mello echo "$1" >&2 15e6d6c189SCody Peter Mello RESULT=1 16e6d6c189SCody Peter Mello} 17e6d6c189SCody Peter Mello 18e6d6c189SCody Peter Melloecho T.getline: test getline function 19e6d6c189SCody Peter Mello 20e6d6c189SCody Peter Mellowho > $TEMP1 21e6d6c189SCody Peter Mellocat $TEMP1 | $AWK ' 22e6d6c189SCody Peter MelloBEGIN { 23e6d6c189SCody Peter Mello while (getline) 24e6d6c189SCody Peter Mello print 25e6d6c189SCody Peter Mello exit 26e6d6c189SCody Peter Mello} 27e6d6c189SCody Peter Mello' > $TEMP2 28e6d6c189SCody Peter Mellocmp -s $TEMP1 $TEMP2 || fail 'BAD: T.getline (bare getline)' 29e6d6c189SCody Peter Mello 30e6d6c189SCody Peter Mellowho > $TEMP1 31e6d6c189SCody Peter Mellocat $TEMP1 | $AWK ' 32e6d6c189SCody Peter MelloBEGIN { 33e6d6c189SCody Peter Mello while (getline xxx) 34e6d6c189SCody Peter Mello print xxx 35e6d6c189SCody Peter Mello exit 36e6d6c189SCody Peter Mello} 37e6d6c189SCody Peter Mello' > $TEMP2 38e6d6c189SCody Peter Mellocmp -s $TEMP1 $TEMP2 || fail 'BAD: T.getline (getline xxx)' 39e6d6c189SCody Peter Mello 40e6d6c189SCody Peter Mello$AWK ' 41e6d6c189SCody Peter MelloBEGIN { 42e6d6c189SCody Peter Mello while (getline <"/etc/passwd") 43e6d6c189SCody Peter Mello print 44e6d6c189SCody Peter Mello exit 45e6d6c189SCody Peter Mello} 46e6d6c189SCody Peter Mello' > $TEMP1 47e6d6c189SCody Peter Mellocmp -s /etc/passwd $TEMP1 || fail 'BAD: T.getline (getline <file)' 48e6d6c189SCody Peter Mello 49e6d6c189SCody Peter Mellocat /etc/passwd | $AWK ' 50e6d6c189SCody Peter MelloBEGIN { 51e6d6c189SCody Peter Mello while (getline <"-") # stdin 52e6d6c189SCody Peter Mello print 53e6d6c189SCody Peter Mello exit 54e6d6c189SCody Peter Mello} 55e6d6c189SCody Peter Mello' > $TEMP1 56e6d6c189SCody Peter Mellocmp -s /etc/passwd $TEMP1 || fail 'BAD: T.getline (getline <"-")' 57e6d6c189SCody Peter Mello 58e6d6c189SCody Peter Mello$AWK ' 59e6d6c189SCody Peter MelloBEGIN { 60e6d6c189SCody Peter Mello while (getline <ARGV[1]) 61e6d6c189SCody Peter Mello print 62e6d6c189SCody Peter Mello exit 63e6d6c189SCody Peter Mello} 64e6d6c189SCody Peter Mello' /etc/passwd > $TEMP1 65e6d6c189SCody Peter Mellocmp -s /etc/passwd $TEMP1 || fail 'BAD: T.getline (getline <arg)' 66e6d6c189SCody Peter Mello 67e6d6c189SCody Peter Mello$AWK ' 68e6d6c189SCody Peter MelloBEGIN { 69e6d6c189SCody Peter Mello while (getline x <ARGV[1]) 70e6d6c189SCody Peter Mello print x 71e6d6c189SCody Peter Mello exit 72e6d6c189SCody Peter Mello} 73e6d6c189SCody Peter Mello' /etc/passwd > $TEMP1 74e6d6c189SCody Peter Mellocmp -s /etc/passwd $TEMP1 || fail 'BAD: T.getline (getline x <arg)' 75e6d6c189SCody Peter Mello 76e6d6c189SCody Peter Mello$AWK ' 77e6d6c189SCody Peter MelloBEGIN { 78e6d6c189SCody Peter Mello while (("cat " ARGV[1]) | getline) 79e6d6c189SCody Peter Mello print 80e6d6c189SCody Peter Mello exit 81e6d6c189SCody Peter Mello} 82e6d6c189SCody Peter Mello' /etc/passwd > $TEMP1 83e6d6c189SCody Peter Mellocmp -s /etc/passwd $TEMP1 || fail 'BAD: T.getline (cat arg | getline)' 84e6d6c189SCody Peter Mello 85e6d6c189SCody Peter Mello$AWK ' 86e6d6c189SCody Peter MelloBEGIN { 87e6d6c189SCody Peter Mello while (("cat " ARGV[1]) | getline x) 88e6d6c189SCody Peter Mello print x 89e6d6c189SCody Peter Mello exit 90e6d6c189SCody Peter Mello} 91e6d6c189SCody Peter Mello' /etc/passwd > $TEMP1 92e6d6c189SCody Peter Mellocmp -s /etc/passwd $TEMP1 || fail 'BAD: T.getline (cat arg | getline x)' 93e6d6c189SCody Peter Mello 94e6d6c189SCody Peter Mello$AWK ' BEGIN { print getline <"/glop/glop/glop" } ' > $TEMP1 95e6d6c189SCody Peter Melloecho '-1' > $TEMP2 96e6d6c189SCody Peter Mellocmp -s $TEMP1 $TEMP2 || fail 'BAD: T.getline (non-existent file)' 97e6d6c189SCody Peter Mello 98*3ee4fc2aSCody Peter Melloecho 'false false equal' > $TEMP1 99*3ee4fc2aSCody Peter Mello$AWK 'BEGIN { 100*3ee4fc2aSCody Peter Mello "echo 0" | getline 101*3ee4fc2aSCody Peter Mello if ($0) printf "true " 102*3ee4fc2aSCody Peter Mello else printf "false " 103*3ee4fc2aSCody Peter Mello if ($1) printf "true " 104*3ee4fc2aSCody Peter Mello else printf "false " 105*3ee4fc2aSCody Peter Mello if ($0==$1) printf "equal\n" 106*3ee4fc2aSCody Peter Mello else printf "not equal\n" 107*3ee4fc2aSCody Peter Mello}' > $TEMP2 108*3ee4fc2aSCody Peter Mellocmp -s $TEMP1 $TEMP2 || fail 'BAD: T.getline bad $0 type in cmd|getline' 109*3ee4fc2aSCody Peter Mello 110*3ee4fc2aSCody Peter Melloecho 'L1 111*3ee4fc2aSCody Peter MelloL2' | $AWK 'BEGIN { $0="old stuff"; $1="new"; getline x; print}' > $TEMP1 112*3ee4fc2aSCody Peter Melloecho 'new stuff' > $TEMP2 113*3ee4fc2aSCody Peter Mellocmp -s $TEMP1 $TEMP2 || fail 'BAD: T.getline bad update $0' 114*3ee4fc2aSCody Peter Mello 115e6d6c189SCody Peter Melloexit $RESULT 116