#!/bin/sh
# runchecker.sh


args=$#


if [ $args -lt 1 ]
then
echo "Usage: runchecker.sh file"
exit
fi

IRST_DIR="/afs/cern.ch/user/j/jlo/public/IRST" 
#IRST_DIR=$1
CODE_CHECK="rules.ROOT.ROOTRuleChecker"

DEFINES=

#include all directory necessary
INCLUDES="-I. -I$ROOTSYS/include -I/usr/include -I/usr/include/libxml2 -I/usr/include/mysql -I/usr/include/python2.2"


function checksinglefile() {
# $1 is the file name

	file=$1
	filename=${file%.cxx}

	if [ -e $filename.i ] && [ $file -ot $filename.i ]
	then
		echo "<b>$file already CHECKED</b><br><hr>"
	elif [ -e $filename.err ] && [ $file -ot $filename.err ] 
	then
		echo "<b>$file with error... Not Checked. See ${filename}.err </b><br><hr>"
	else
		echo -n "<b>$file </b>"
		`g++ -c $INCLUDES $file >& $filename.err`
		if [ ! -s ${filename}.err ]
		then
			`g++ -E $INCLUDES $file > ${filename}.i` 
			`rm -f ${filename}.err` 
			`$IRST_DIR/patch/patch4alice.prl ${filename}.i`
			`java -classpath $IRST_DIR $CODE_CHECK ${filename}.i > ${filename}.viol`

			command sed -e '1,23d' -e 's/$/<br>/' < ${filename}.viol
	
			echo "<br><hr><br>"

		fi
	fi

}

function checkdirectory() {
# $1 is the directory name
	dir=$1

	cd $dir
	
	if [ ! -e ../check ] 
	then
		`mkdir ../check`
	fi


	for file in $(ls *.cxx | grep -v G__)
	do	
		filename=${file%.cxx}
		if [ -e ../check/$filename.i ] && [ $file -ot ../check/$filename.i ]
		then
			echo "<b>$file already CHECKED</b><br><hr>"
		elif [ -e ../check/$filename.err ] && [ $file -ot ../check/$filename.err ] 
		then
			echo "<b>$file with error... Not Checked. See ${filename}.err </b><br><hr>"
		else
			echo -n "<b>$file </b>"
			`g++ -c $INCLUDES $file >& ../check/$filename.err`
			if [ ! -s ../check/${filename}.err ]
			then
				`g++ -E $INCLUDES $file > ../check/${filename}.i` 
				cd ../check
				`rm -f ${filename}.err` 
				`$IRST_DIR/patch/patch4alice.prl ${filename}.i`
				`java -classpath $IRST_DIR $CODE_CHECK ${filename}.i > ${filename}.viol`

				command sed -e '1,22d' -e 's/$/<br>/' < ${filename}.viol

				echo "<br><hr><br>"

				cd ../src
			fi
		fi
	done

}


for arg in $*
do
	if [ -f $arg ] 
	then
		filename=$arg
		checksinglefile $filename
	elif [ -d $arg ]
	then
		checkdirectory $arg	
	else 
		$arg does not exist
	fi	
done







