#!/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
