| #!/bin/sh | |
| # | |
| # CkTestDB -- see if this dialect is has been tested | |
| # | |
| # This script builds a line from config.flags in the form of lines in | |
| # ./TestDB, (See Add2TestDB.) | |
| # | |
| # It then compares the line to TestDB. If the line is found, the script | |
| # exits. if the line is not found, the script issues a warning and requests | |
| # a go-ahead confirmation. | |
| # | |
| # The script will exit 0 if the test line is in the DB or the go-ahead | |
| # confirmation is positive. | |
| # | |
| # $Id: CkTestDB,v 1.3 2010/01/18 19:02:21 abe Exp abe $ | |
| # Check for config.flags. | |
| if test ! -r config.cflags | |
| then | |
| echo "$0: no ./config.cflags file" | |
| exit 1 | |
| fi | |
| # Check for a current data base file. | |
| if test ! -r TestDB | |
| then | |
| echo "$0: no ./TestDB file" | |
| exit 1 | |
| fi | |
| # Form a data base line. | |
| new="" | |
| for i in `LC_ALL=C sort < config.cflags` | |
| do | |
| w=`echo $i | sed 's/^-D//'` | |
| if test "X$new" = "X" | |
| then | |
| new=$w | |
| else | |
| new="$new $w" | |
| fi | |
| done | |
| # See if the line is already in the data base. Exit with success (0), if it is. | |
| grep "^$new\$" TestDB > /dev/null 2>&1 | |
| if test $? -eq 0 | |
| then | |
| exit 0 | |
| fi | |
| # This dialect may never have been validated with the test suite. | |
| # If the standard input is not a TTY, quit, because no interaction | |
| # is possible. | |
| tty -s > /dev/null 2>&1 | |
| if test $? -ne 0 | |
| then | |
| echo "" | |
| echo "This suite has not been validated on:" | |
| echo "" | |
| echo " $new" | |
| echo "" | |
| exit 1 | |
| fi | |
| # Establish trap and stty handling. | |
| ISIG=":" | |
| trap '$ISIG; exit 1' 1 2 3 15 | |
| stty -a 2>&1 | grep isig > /dev/null | |
| if test $? -eq 0 | |
| then | |
| stty -a 2>&1 | egrep -e -isig > /dev/null | |
| if test $? -eq 0 | |
| then | |
| ISIG="stty -isig" | |
| stty isig | |
| fi | |
| fi | |
| # Establish echo type -- Berkeley or SYSV. | |
| j=`echo -n ""` | |
| if test "X$j" = "X-n " | |
| then | |
| EC="\c" | |
| EO="" | |
| else | |
| EC="" | |
| EO="-n" | |
| fi | |
| # Display a validation warning. | |
| cat << .CAT_MARK > /dev/tty | |
| ================================================================== | |
| !!!WARNING!!! | |
| This dialect or its particular version may not have been validated | |
| with the lsof test suite. Consequently some tests may fail or may | |
| not even compile. | |
| This is the computed identity of this dialect, not found in the | |
| test data base file, ./TestDB: | |
| .CAT_MARK | |
| echo " $new" > /dev/tty | |
| END=0 | |
| while test $END = 0 | |
| do | |
| echo "" > /dev/tty | |
| echo $EO "Do you want to continue (y|n) [n]? $EC" > /dev/tty | |
| read ANS EXCESS | |
| if test "X$ANS" = "Xn" -o "X$ANS" = "XN" | |
| then | |
| exit 1 | |
| fi | |
| if test "X$ANS" = "Xy" -o "X$ANS" = "XY" | |
| then | |
| exit 0 | |
| else | |
| echo "Please answer y or n." > /dev/tty | |
| fi | |
| done | |
| # Should never get here! | |
| echo "$0: unexpected failure!" | |
| exit 2 |