#!/bin/sh
VALGRIND=`which ${VALGRIND-valgrind}`
VALGRIND_FLAGS="--trace-children=yes --track-fds=yes --leak-check=full --show-reachable=yes --suppressions=$srcdir/valgrind.supp"
test -n "$VALGRIND" || { echo "*** valgrind not found, skipping test"; exit 77; }
test -x "$VALGRIND" || { echo "*** valgrind not executable, skipping test"; exit 77; }

echo "Running valgrind"
CK_FORK=no ../libtool --mode=execute $VALGRIND $VALGRIND_FLAGS ./check_clamav 2>&1 | cat >valgrind.log
if grep "ERROR SUMMARY: 0 errors" valgrind.log >/dev/null; then
	if grep "no leaks are possible" valgrind.log >/dev/null; then
		echo "Valgrind tests successful"
		exit 0;
	fi
	echo "*** Valgrind test FAILED, memory LEAKS detected ***"
else
	echo "*** Valgrind test FAILED, memory ERRORS detected ****"
fi
echo 
grep "ERROR SUMMARY" valgrind.log
echo `grep "Invalid read" valgrind.log| wc -l` "invalid reads"
echo `grep "Invalid write" valgrind.log| wc -l` "invalid writes"
echo `grep "Invalid free" valgrind.log| wc -l` "invalid frees"
echo `grep "uninitialised value" valgrind.log|wc -l` "uses of uninitialized values"
grep " lost:" valgrind.log
grep "still reachable:" valgrind.log
grep "FILE DESCRIPTORS" valgrind.log
echo 
exit 1;