dnl Check a program for version sanity. The test runs a program, passes it an
dnl argument to make it print out some identification string, and filters that 
dnl output with a regular expression. If the output is non-empty, the program
dnl passes the sanity check.
dnl   $1 - Name or full path of the program to run
dnl   $2 - Argument to pass to print out identification string
dnl   $3 - grep RE to match identification string
dnl   $4 - set to 1 to make errors only a warning
AC_DEFUN([CHECK_PROGRAM_SANITY],
[
AC_MSG_CHECKING([sanity for program ]$1)
sanity="0"
sanity_path=`which $1 2>/dev/null`
if test "$?" -eq 0 -a -x "$sanity_path" ; then
  sanity=`$1 $2 2>&1 | grep "$3"`
  if test -z "$sanity" ; then
    AC_MSG_RESULT([no])
    sanity="0"
    if test "$4" -eq 1 ; then
      AC_MSG_WARN([Program ]$1[ failed to pass sanity check.])
    else
      AC_MSG_ERROR([Program ]$1[ failed to pass sanity check.])
    fi
  else
    AC_MSG_RESULT([yes])
    sanity="1"
  fi
else
  AC_MSG_RESULT([not found])
fi
])
