#!/bin/sh

# collect statistics for the system
# parameters:
#  -sourcebase <directory> - <directory> is the root directory for the code
#  -target <directory>     - <directory> is where to put the results of analysis
#                            (the function and file analysis results)
#  -files <filename>       - <filename> is name of a file containing a line
#                            for every directory of code to be analyzed.  Each
#                            line is of the form:
#
#                                 dirname filelist sccsdir sccsfiles
#
#                             dirname is the name of a directory containing code
#                             filelist is a pattern which describes source code
#                             sccsdir is where this source is sccs'ed
#                             sccsfiles is a pattern which describes the sccs
#                               files
# 
# an example line from <filename> is:
# /usr/pascal/src/compiler *.[cy] /usr/pascal/sccs/compiler s.*.[cy]

sourcebase=`pwd`
gottarget=0
gotfiles=0

while [ $# -gt 0 ]
do
	case $1 in
	-sourcebase)
		sourcebase=$2
		shift ;;
	-target)
		gottarget=1
		target=$2
		shift ;;
	-files)
		gotfiles=1
		filespec=$2
		shift ;;
	*)
		echo "usage: $0 -target <directory> -files <filename> [-sourcebase <directory>]"
		exit 1
	esac
	shift
done

base=`pwd`
cd $sourcebase

# where we find the directories and file specs
if [ $gotfiles -ne 1 ]
then
	echo "usage: $0 -target <directory> -files <filename> [-sourcebase <directory>]"
	exit 1
fi
then


# temporary log for statistics for each directory
routine=$base/@routine_defs
file=$base/@file_defs

# empty out the target statistics fiels
>$target/@file_defs
>$target/@routine_defs

exec < $filespec

while read dirname filelist sccsdir sccsfiles
do
	echo gathering stats in $dirname file types "$filelist"
	gather_stats -file $file -routine $routine \
			-source $dirname "$filelist" -sccs $sccsdir "$sccsfiles"
	if [ $? != 0 ]
	then
		echo "unable to gather statistics on the $dirname directory"
		exit 1
	fi
	sed "s@^@$dirname/@" < $file >> $target/@file_defs
	sed "s@^@$dirname/@" < $routine >> $target/@routine_defs
done
