#!/bin/bash 
#
# $Id$
#
# Mesures quality improvement of mondorescue project
#

# Adapt to your needs
dname=`dirname $0`
prem=`echo $dname |cut -c1`
if [ ${prem} == "/" ]; then
        export TOOLHOME=$dname
else
        export TOOLHOME=${PWD}/$dname
fi

d=$TOOLHOME/..

if [ $# -gt 0 ]; then
	if [ -d $1 ]; then
		d=$1
	fi
fi

echo "Working on $d"
echo " "
cd $d

# How many sprintf/strcat/strcpy vs asprintf are they
for s in asprintf mr_asprintf sprintf snprintf strcat mr_strcat strcpy strncpy fgets malloc mr_malloc malloc_string getline mr_getline MAX_STR_LEN getcwd goto free mr_free paranoid_free paranoid_system mr_system assert; do
	echo "mondorescue $s usage : "
	tot=0
	for i in `find . -name '*.c' -o -name '*.h' |  grep -Ev '\.svn|/\*|monitas|mindi-busybox' | xargs grep -r -c -w $s | grep -Ev ":0$"`; do
			echo " === $i"
			((tot=$tot+`echo $i | cut -d: -f2`))
	done
	echo "total $s usage : $tot"
done

echo " "
echo "Qualimetry: "
pbg -w asprintf | grep -vE 'monitas|mindi-busybox|quality|/\*|asprintf\(&' > /tmp/mondo.quality
cat /tmp/mondo.quality
echo "mondorescue uses : `cat /tmp/mondo.quality | wc -l` asprintf without &"
pbg -w getline | grep -vE 'monitas|mindi-busybox|quality|/\*|getline\(&' > /tmp/mondo.quality
cat /tmp/mondo.quality
echo "mondorescue uses : `cat /tmp/mondo.quality | wc -l` getline without &"
pbg mr_asprintf | grep -vE '"|FNAME|ISOFS|syscall_sprintf|mr_mem|quality' > /tmp/mondo.quality
cat /tmp/mondo.quality
echo "mondorescue uses : `cat /tmp/mondo.quality | wc -l` mr_asprintf without \""
pbg mr_asprintf | grep -vE '|mr_mem|quality|mr_asprintf\(&' > /tmp/mondo.quality
cat /tmp/mondo.quality
echo "mondorescue uses : `cat /tmp/mondo.quality | wc -l` mr_asprintf without &"
echo " "
echo "Splint: "
find . -name '*.c' -o -name '*.h' | xargs splint +posixlib -Dlinux

rm -f /tmp/mondo.quality
