Index: trunk/test/testcompile.sh
===================================================================
--- trunk/test/testcompile.sh	(revision 473)
+++ trunk/test/testcompile.sh	(revision 474)
@@ -20,5 +20,5 @@
 #
 
-# dnmalloc + cppcheck + flawfinder + (38 * 2)
+# dnmalloc + cppcheck + flawfinder + (38 * 2) - 8
 MAXTEST=79; export MAXTEST
 
@@ -85,8 +85,4 @@
 run_cppcheck ()
 {
-    if [ -z "$doall" ]; then
-	[ -z "$quiet" ] && log_skip $2 ${MAXTEST} "check w/cppcheck";
-	return 0
-    fi
     #
     CPC=`find_path cppcheck`
@@ -124,84 +120,32 @@
 }
 
-run_smatch () 
+run_clang () 
 {
     export CDIR=`pwd`;
 
     if [ -z "$doall" ]; then
-	[ -z "$quiet" ] && log_skip $2 ${MAXTEST} "$TEST (smatch)";
+	[ -z "$quiet" ] && log_skip $2 ${MAXTEST} "$TEST (clang)";
 	return 0
     fi
 
-    if [ ! -f "./x_samhain.c.sm" ]; then
-	[ -z "$quiet" ] && log_skip $2 ${MAXTEST} "$TEST (skip sm)";
+    CLANGPATH=`find_path clang`
+    if [ -n "$CLANGPATH" ]; then
+	CLANG_CC="$CLANGPATH"; export CLANG_CC
+    else
+	[ -z "$quiet" ] && log_skip $2 ${MAXTEST} "$TEST (clang)";
 	return 0
     fi
 
-    if [ "x$3" = "xdebug" ]; then memcheck=debug; else memcheck=simple; fi
-    if [ -f ../../static/sm_scripts/smatch.pm ]; then
-	( 
-	    cd ../../static/sm_scripts;
-	    
-	    for i in ${CDIR}/*.c.sm ; do
-	        # echo $i;
-		cat $i | ./unreached_code.pl | grep -v sh_threaded_module_run;
-		cat $i | ./ampersand_missing.sh;
-		cat $i | ./eqeq.pl;
-		cat $i | ./for_bounds.pl;    # doesn't work?
-		cat $i | ./unchecked_returns.pl;
-		cat $i | ./uninitialized.pl; # doesn't work?
-
-		# from http://people.redhat.com/mstefani/wine/smatch/
-		if [ -f ./while_for_check.pl ]; then
-		    cat $i | ./while_for_check.pl; # works
-		fi 
-		# --> end wine <--
-
-		# samhain specific modifications (list of free/malloc funcs)
-		# doesn't seem to find anything useful
-		if [ $memcheck = xsimple ]; then
-		    if [ -f ./samhain_unfree.pl ]; then
-			cat $i | ./samhain_unfree.pl | \
-			    egrep -v 'x_cutest_.*Test_' | \
-			    egrep -v 'x_sh_unix.c .... .... sh_unix_copyenv';
-		    fi 
-		fi
-		if [ $memcheck = xdebug ]; then
-		    if [ -f ./samhain_unfree_debug.pl ]; then
-			cat $i | ./samhain_unfree_debug.pl | \
-			    egrep -v 'x_cutest_.*Test_' | \
-			    egrep -v 'x_sh_unix.c .... .... sh_unix_copyenv';
-		    fi 
-		fi
-		# --> end samhain specific <--
-
-		echo malloc >  list_null_funcs_uniq;
-		echo getenv >> list_null_funcs_uniq;
-		cat $i | ./deference_check.pl |\
-                     egrep -v 'x_trustfile.c ... ... sl_trustfile' | \
-		     egrep -v 'x_sh_mem.c ';
-		rm -f list_null_funcs_uniq;
-		# rm -f $i
-	    done
-	) >test_log_smatch 2>&1
-	if [ -f test_log_smatch ]; then
-	    lines=`cat test_log_smatch | wc -l`
-	    if [ $lines -ne 0 ]; then
-		cat test_log_smatch
-		rm -f test_log_smatch
-		[ -z "$quiet" ] && log_fail $2 ${MAXTEST} "$TEST (smatch)";
-		return 1
-	    fi
-	fi
-	[ -z "$quiet" ] && log_ok $2 ${MAXTEST} "$TEST (smatch)";
-	return 0
-    fi
-    [ -z "$quiet" ] && log_skip $2 ${MAXTEST} "$TEST (smatch)";
-    return 0
+    SAVE_TEST="$TEST"
+    TEST="$TEST (clang)"
+    testmake $1 $2
+    retval=$?
+    CLANG_CC=""; export CLANG_CC
+    TEST="$SAVE_TEST"
+    return $retval
 }
 
 testmake ()
 {
-
 	fail=0
 	#
@@ -219,5 +163,11 @@
 		[ -z "$verbose" ]     ||  log_msg_ok  "configure...  $TEST";
 		$MAKE clean > /dev/null 2>> test_log
-		$MAKE ${SMATCH} cutest > /dev/null 2>> test_log
+		if [ -z "$CLANG_CC" ]; then
+		    $MAKE cutest > /dev/null 2>> test_log
+		else
+		    sed --in-place 's/-Wno-empty-body/-Wno-empty-body -Wno-invalid-source-encoding/g' Makefile
+		    sed --in-place 's/-fno-strength-reduce//g' Makefile
+		    $MAKE -e CC=$CLANG_CC -e BUILD_CC=$CLANG_CC cutest > /dev/null 2>> test_log
+		fi
 		if test x$? = x0; then
 		    [ -z "$verbose" ] || log_msg_ok   "make cutest... $TEST";
@@ -247,17 +197,4 @@
 {
 	log_start "COMPILE"
-
-	if [ "x$doall" = xon ]; then
-	    uname -a | grep x86_64 >/dev/null 
-	    if [ $? -ne 0 ]; then
-		if [ -f /usr/local/gcc-smatch/bin/gcc ]; then  # FIXME
-		    SAVE_CC="${CC}"
-		    SMATCH="DBGDEF=--smatch"; export SMATCH
-		    SAVE_SMATCH="${SMATCH}"; export SAVE_SMATCH
-		    CC="/usr/local/gcc-smatch/bin/gcc"; export CC
-		    SMATCH_CC="${CC}"
-		fi
-	    fi
-	fi
 
 	num=0
@@ -342,5 +279,5 @@
 	testmake $? $num || let "numfail = numfail + 1"  >/dev/null
 	let "num = num + 1" >/dev/null
-	run_smatch $? $num || let "numfail = numfail + 1"  >/dev/null
+	run_clang $? $num || let "numfail = numfail + 1"  >/dev/null
 
 	#
@@ -353,6 +290,4 @@
 	fi
 	#
-	[ -z "${SMATCH}" ] || { CC="${SAVE_CC}"; export CC; SMATCH=""; export SMATCH; }
-	#
 	${TOP_SRCDIR}/configure --quiet  --prefix=$PW_DIR --localstatedir=$PW_DIR --with-config-file=$PW_DIR/samhainrc.test  --enable-static --enable-suidcheck --enable-process-check ${C_LOGFILE} > /dev/null 2>> test_log
 	#
@@ -360,7 +295,5 @@
 	testmake $? $num || let "numfail = numfail + 1"  >/dev/null
 	let "num = num + 1" >/dev/null
-	run_smatch $? $num || let "numfail = numfail + 1"  >/dev/null
-	#
-	[ -z "${SMATCH_CC}" ] || { CC="${SMATCH_CC}"; export CC; SMATCH="${SAVE_SMATCH}"; export SMATCH; }
+	run_clang $? $num || let "numfail = numfail + 1"  >/dev/null
 	#
 	# test standalone compilation
@@ -377,5 +310,5 @@
 	testmake $? $num || let "numfail = numfail + 1"  >/dev/null
 	let "num = num + 1" >/dev/null
-	run_smatch $? $num || let "numfail = numfail + 1"  >/dev/null
+	run_clang $? $num || let "numfail = numfail + 1"  >/dev/null
 
 	#
@@ -388,6 +321,4 @@
 	fi
 	#
-	[ -z "${SMATCH}" ] || { CC="${SAVE_CC}"; export CC; SMATCH=""; export SMATCH; }
-	#
 	${TOP_SRCDIR}/configure --quiet  --prefix=$PW_DIR --localstatedir=$PW_DIR --with-config-file=$PW_DIR/samhainrc.test  --enable-process-check --enable-port-check --enable-static > /dev/null 2>> test_log
 	#
@@ -395,7 +326,5 @@
 	testmake $? $num || let "numfail = numfail + 1"  >/dev/null
 	let "num = num + 1" >/dev/null
-	run_smatch $? $num || let "numfail = numfail + 1"  >/dev/null
-	#
-	[ -z "${SMATCH_CC}" ] || { CC="${SMATCH_CC}"; export CC; SMATCH="${SAVE_SMATCH}"; export SMATCH; }
+	run_clang $? $num || let "numfail = numfail + 1"  >/dev/null
 	#
 	# test standalone compilation
@@ -412,5 +341,5 @@
 	testmake $? $num || let "numfail = numfail + 1"  >/dev/null
 	let "num = num + 1" >/dev/null
-	run_smatch $? $num || let "numfail = numfail + 1"  >/dev/null
+	run_clang $? $num || let "numfail = numfail + 1"  >/dev/null
 
 	#
@@ -428,5 +357,5 @@
 	testmake $? $num || let "numfail = numfail + 1" >/dev/null
 	let "num = num + 1" >/dev/null
-	run_smatch $? $num || let "numfail = numfail + 1"  >/dev/null
+	run_clang $? $num || let "numfail = numfail + 1"  >/dev/null
 
 
@@ -445,5 +374,5 @@
 	testmake $? $num || let "numfail = numfail + 1" >/dev/null
 	let "num = num + 1" >/dev/null
-	run_smatch $? $num || let "numfail = numfail + 1"  >/dev/null
+	run_clang $? $num || let "numfail = numfail + 1"  >/dev/null
 
 	#
@@ -461,5 +390,5 @@
 	testmake $? $num || let "numfail = numfail + 1" >/dev/null
 	let "num = num + 1" >/dev/null
-	run_smatch $? $num || let "numfail = numfail + 1"  >/dev/null
+	run_clang $? $num || let "numfail = numfail + 1"  >/dev/null
 
 	#
@@ -477,5 +406,5 @@
 	testmake $? $num || let "numfail = numfail + 1" >/dev/null
 	let "num = num + 1" >/dev/null
-	run_smatch $? $num debug || let "numfail = numfail + 1"  >/dev/null
+	run_clang $? $num debug || let "numfail = numfail + 1"  >/dev/null
 
 	#
@@ -500,5 +429,5 @@
 	    testmake $? $num || let "numfail = numfail + 1" >/dev/null
 	    let "num = num + 1" >/dev/null
-	    run_smatch $? $num || let "numfail = numfail + 1"  >/dev/null
+	    run_clang $? $num || let "numfail = numfail + 1"  >/dev/null
 	fi
 
@@ -517,5 +446,5 @@
 	testmake $? $num || let "numfail = numfail + 1" >/dev/null
 	let "num = num + 1" >/dev/null
-	run_smatch $? $num || let "numfail = numfail + 1"  >/dev/null
+	run_clang $? $num || let "numfail = numfail + 1"  >/dev/null
 
 	#
@@ -533,5 +462,5 @@
 	testmake $? $num || let "numfail = numfail + 1" >/dev/null
 	let "num = num + 1" >/dev/null
-	run_smatch $? $num || let "numfail = numfail + 1"  >/dev/null
+	run_clang $? $num || let "numfail = numfail + 1"  >/dev/null
 
 	#
@@ -549,5 +478,5 @@
 	testmake $? $num "skip" || let "numfail = numfail + 1" >/dev/null
 	let "num = num + 1" >/dev/null
-	run_smatch $? $num || let "numfail = numfail + 1"  >/dev/null
+	run_clang $? $num || let "numfail = numfail + 1"  >/dev/null
 
 	#
@@ -565,5 +494,5 @@
 	testmake $? $num "skip" || let "numfail = numfail + 1" >/dev/null
 	let "num = num + 1" >/dev/null
-	run_smatch $? $num || let "numfail = numfail + 1"  >/dev/null
+	run_clang $? $num || let "numfail = numfail + 1"  >/dev/null
 
 	#
@@ -581,5 +510,5 @@
 	testmake $? $num "skip" || let "numfail = numfail + 1" >/dev/null
 	let "num = num + 1" >/dev/null
-	run_smatch $? $num || let "numfail = numfail + 1"  >/dev/null
+	run_clang $? $num || let "numfail = numfail + 1"  >/dev/null
 
 	#
@@ -597,5 +526,5 @@
 	testmake $? $num "skip" || let "numfail = numfail + 1" >/dev/null
 	let "num = num + 1" >/dev/null
-	run_smatch $? $num || let "numfail = numfail + 1"  >/dev/null
+	run_clang $? $num || let "numfail = numfail + 1"  >/dev/null
 
 	#
@@ -613,5 +542,5 @@
 	testmake $? $num || let "numfail = numfail + 1" >/dev/null
 	let "num = num + 1" >/dev/null
-	run_smatch $? $num || let "numfail = numfail + 1"  >/dev/null
+	run_clang $? $num || let "numfail = numfail + 1"  >/dev/null
 
 	#
@@ -629,5 +558,5 @@
 	testmake $? $num || let "numfail = numfail + 1" >/dev/null
 	let "num = num + 1" >/dev/null
-	run_smatch $? $num || let "numfail = numfail + 1"  >/dev/null
+	run_clang $? $num || let "numfail = numfail + 1"  >/dev/null
 
 	# echo; echo "${S}__ TEST CLIENT/SERVER __${E}"; echo;
@@ -647,5 +576,5 @@
 	testmake $? $num || let "numfail = numfail + 1" >/dev/null
 	let "num = num + 1" >/dev/null
-	run_smatch $? $num || let "numfail = numfail + 1"  >/dev/null
+	run_clang $? $num || let "numfail = numfail + 1"  >/dev/null
 	
 	if test -r "Makefile"; then
@@ -658,5 +587,5 @@
 	testmake $? $num || let "numfail = numfail + 1" >/dev/null
 	let "num = num + 1" >/dev/null
-	run_smatch $? $num || let "numfail = numfail + 1"  >/dev/null
+	run_clang $? $num || let "numfail = numfail + 1"  >/dev/null
 
 	#
@@ -685,5 +614,5 @@
 	    testmake $? $num || let "numfail = numfail + 1" >/dev/null
 	    let "num = num + 1" >/dev/null
-	    run_smatch $? $num || let "numfail = numfail + 1"  >/dev/null
+	    run_clang $? $num || let "numfail = numfail + 1"  >/dev/null
 	    
 	    if test -r "Makefile"; then
@@ -696,5 +625,5 @@
 	    testmake $? $num || let "numfail = numfail + 1" >/dev/null
 	    let "num = num + 1" >/dev/null
-	    run_smatch $? $num || let "numfail = numfail + 1"  >/dev/null
+	    run_clang $? $num || let "numfail = numfail + 1"  >/dev/null
 	    #
 	fi
@@ -709,6 +638,4 @@
 	fi
 	#
-	[ -z "${SMATCH}" ] || { CC="${SAVE_CC}"; export CC; SMATCH=""; export SMATCH; }
-	#
 	${TOP_SRCDIR}/configure --quiet --enable-network=client  --enable-static --enable-srp --prefix=$PW_DIR --localstatedir=$PW_DIR --with-config-file=$PW_DIR/samhainrc.test   --with-timeserver=127.0.0.1 ${C_LOGFILE} > /dev/null 2>> test_log   
 	#
@@ -716,5 +643,5 @@
 	testmake $? $num || let "numfail = numfail + 1" >/dev/null
 	let "num = num + 1" >/dev/null
-	run_smatch $? $num || let "numfail = numfail + 1"  >/dev/null
+	run_clang $? $num || let "numfail = numfail + 1"  >/dev/null
 	
 	if test -r "Makefile"; then
@@ -727,7 +654,5 @@
 	testmake $? $num || let "numfail = numfail + 1" >/dev/null
 	let "num = num + 1" >/dev/null
-	run_smatch $? $num || let "numfail = numfail + 1"  >/dev/null
-	#
-	[ -z "${SMATCH_CC}" ] || { CC="${SMATCH_CC}"; export CC; SMATCH="${SAVE_SMATCH}"; export SMATCH; }
+	run_clang $? $num || let "numfail = numfail + 1"  >/dev/null
 	#
 	# test c/s compilation w/ gpg
@@ -755,5 +680,5 @@
 	    testmake $? $num || let "numfail = numfail + 1" >/dev/null
 	    let "num = num + 1" >/dev/null
-	    run_smatch $? $num || let "numfail = numfail + 1"  >/dev/null
+	    run_clang $? $num || let "numfail = numfail + 1"  >/dev/null
 	    #
 	    if test -r "Makefile"; then
@@ -766,5 +691,5 @@
 	    testmake $? $num || let "numfail = numfail + 1" >/dev/null
 	    let "num = num + 1" >/dev/null
-	    run_smatch $? $num || let "numfail = numfail + 1"  >/dev/null
+	    run_clang $? $num || let "numfail = numfail + 1"  >/dev/null
 	fi
 
@@ -784,5 +709,5 @@
 	testmake $? $num || let "numfail = numfail + 1" >/dev/null
 	let "num = num + 1" >/dev/null
-	run_smatch $? $num || let "numfail = numfail + 1"  >/dev/null
+	run_clang $? $num || let "numfail = numfail + 1"  >/dev/null
 	#
 	if test -r "Makefile"; then
@@ -795,5 +720,5 @@
 	testmake $? $num || let "numfail = numfail + 1" >/dev/null
 	let "num = num + 1" >/dev/null
-	run_smatch $? $num || let "numfail = numfail + 1"  >/dev/null
+	run_clang $? $num || let "numfail = numfail + 1"  >/dev/null
 
 	#
@@ -811,5 +736,5 @@
 	testmake $? $num || let "numfail = numfail + 1" >/dev/null
 	let "num = num + 1" >/dev/null
-	run_smatch $? $num debug || let "numfail = numfail + 1"  >/dev/null
+	run_clang $? $num debug || let "numfail = numfail + 1"  >/dev/null
 	#
 	if test -r "Makefile"; then
@@ -822,5 +747,5 @@
 	testmake $? $num || let "numfail = numfail + 1" >/dev/null
 	let "num = num + 1" >/dev/null
-	run_smatch $? $num debug || let "numfail = numfail + 1"  >/dev/null
+	run_clang $? $num debug || let "numfail = numfail + 1"  >/dev/null
 
 	#
@@ -838,5 +763,5 @@
 	testmake $? $num || let "numfail = numfail + 1" >/dev/null
 	let "num = num + 1" >/dev/null
-	run_smatch $? $num || let "numfail = numfail + 1"  >/dev/null
+	run_clang $? $num || let "numfail = numfail + 1"  >/dev/null
 	#
 	if test -r "Makefile"; then
@@ -849,5 +774,5 @@
 	testmake $? $num || let "numfail = numfail + 1" >/dev/null
 	let "num = num + 1" >/dev/null
-	run_smatch $? $num || let "numfail = numfail + 1"  >/dev/null
+	run_clang $? $num || let "numfail = numfail + 1"  >/dev/null
 
 	#
@@ -865,5 +790,5 @@
 	testmake $? $num || let "numfail = numfail + 1" >/dev/null
 	let "num = num + 1" >/dev/null
-	run_smatch $? $num || let "numfail = numfail + 1"  >/dev/null
+	run_clang $? $num || let "numfail = numfail + 1"  >/dev/null
 	#
 	if test -r "Makefile"; then
@@ -876,5 +801,5 @@
 	testmake $? $num || let "numfail = numfail + 1" >/dev/null
 	let "num = num + 1" >/dev/null
-	run_smatch $? $num || let "numfail = numfail + 1"  >/dev/null
+	run_clang $? $num || let "numfail = numfail + 1"  >/dev/null
 
 	#
@@ -892,5 +817,5 @@
 	testmake $? $num || let "numfail = numfail + 1" >/dev/null
 	let "num = num + 1" >/dev/null
-	run_smatch $? $num debug || let "numfail = numfail + 1"  >/dev/null
+	run_clang $? $num debug || let "numfail = numfail + 1"  >/dev/null
 	#
 	if test -r "Makefile"; then
@@ -903,5 +828,5 @@
 	testmake $? $num || let "numfail = numfail + 1" >/dev/null
 	let "num = num + 1" >/dev/null
-	run_smatch $? $num debug || let "numfail = numfail + 1"  >/dev/null
+	run_clang $? $num debug || let "numfail = numfail + 1"  >/dev/null
 
 	#
@@ -919,5 +844,5 @@
 	testmake $? $num || let "numfail = numfail + 1" >/dev/null
 	let "num = num + 1" >/dev/null
-	run_smatch $? $num || let "numfail = numfail + 1"  >/dev/null
+	run_clang $? $num || let "numfail = numfail + 1"  >/dev/null
 	#
 	if test -r "Makefile"; then
@@ -930,7 +855,5 @@
 	testmake $? $num || let "numfail = numfail + 1" >/dev/null
 	let "num = num + 1" >/dev/null
-	run_smatch $? $num || let "numfail = numfail + 1"  >/dev/null
-
-	[ -z "${SMATCH}" ] || { CC="${SAVE_CC}"; export CC; }
+	run_clang $? $num || let "numfail = numfail + 1"  >/dev/null
 
 	log_end "COMPILE"
