#!/usr/bin/ksh
# create the tcov output
# code must be built with the -gae options for this functio to work

Usage="Usage: $0 dir-name"
if test "$1" = "?"
then
  echo
  echo $Usage
  echo " where:"
  echo "   dir-name  - the name of a Palladium root directory that"
  echo "               contains the source code to be built."
  echo "               (no default - required field)"
  echo " "
fi



if test "$1" = ""
then
  echo "The directory must specified"
  exit 1
else
  PDDIR=$1
fi

cd $PDDIR/inc
tcov -a *.d

cd $PDDIR/src
ls | while read dirname
do
   cd $PDDIR/src/$dirname
   tcov -a *.d
done

sum_total_lines=0
sum_not_used_lines=0
sum_used_lines=0

sub_sum_total_lines=0
sub_sum_not_used_lines=0
sub_sum_used_lines=0

cd $PDDIR/inc
echo ""
echo "Directory name:" $PDDIR/inc
echo ""
printf "%25s\t%6s\t%6s\t%6s\t%7s \n" "File" "Total" "Lines " "Lines" "Percent"
printf "%25s\t%6s\t%6s\t%6s\t%7s \n" "Name" "Lines" "Tested" "not "  "Tested"
sub_sum_total_lines=0
sub_sum_not_used_lines=0
sub_sum_used_lines=0

#rm *_u.h.tcov >/dev/null 2>&1

ls *.tcov | while read filename
do
    total_lines=`grep '\-> ' $filename | wc -l | awk '{ print $1 }'`
    not_used_lines=`grep '@Not Used-> ' $filename | wc -l | awk '{ printf "%5d",$1 }'`
    used_lines=`expr $total_lines - $not_used_lines`

    sum_total_lines=`expr $sum_total_lines + $total_lines`
    sum_not_used_lines=`expr $sum_not_used_lines + $not_used_lines`
    sum_used_lines=`expr $sum_used_lines + $used_lines`

    sub_sum_total_lines=`expr $sub_sum_total_lines + $total_lines`
    sub_sum_not_used_lines=`expr $sub_sum_not_used_lines + $not_used_lines`
    sub_sum_used_lines=`expr $sub_sum_used_lines + $used_lines`

    if [ $total_lines = 0 ]
    then
       percent_lines=0
    else
       percent_lines=`expr 100 \* $used_lines / $total_lines `
    fi
    filename=`echo $filename | awk '{FS = "."}{print $1"."$2}`
    printf "%25s\t%6d\t%6d\t%6d\t%6d \n" $filename   $total_lines   $used_lines   $not_used_lines   $percent_lines

done
percent_lines=`expr 100 \* $sub_sum_used_lines / $sub_sum_total_lines `
printf "%25s\t%6d\t%6d\t%6d\t%6d \n" "Directory Totals"   $sub_sum_total_lines   $sub_sum_used_lines   $sub_sum_not_used_lines   $percent_lines



cd $PDDIR/src
ls  | while read dirname
do

   sub_sum_total_lines=0
   sub_sum_not_used_lines=0
   sub_sum_used_lines=0


   cd  $PDDIR/src/$dirname
   echo ""
   echo "Directory name:" $PDDIR/src/$dirname
   echo ""
   printf "%25s\t%6s\t%6s\t%6s\t%7s \n" "File" "Total" "Lines " "Lines" "Percent"
   printf "%25s\t%6s\t%6s\t%6s\t%7s \n" "Name" "Lines" "Tested" "not "  "Tested"
   rm *_u.cpp.tcov  >/dev/null 2>&1
   ls *.tcov 2>/dev/null | while read filename
   do
        total_lines=`grep '\-> ' $filename | wc -l | awk '{ print $1 }'`
        not_used_lines=`grep '@Not Used-> ' $filename | wc -l | awk '{ printf "%5d",$1 }'`
        used_lines=`expr $total_lines - $not_used_lines`

        sum_total_lines=`expr $sum_total_lines + $total_lines`
        sum_not_used_lines=`expr $sum_not_used_lines + $not_used_lines`
        sum_used_lines=`expr $sum_used_lines + $used_lines`

        sub_sum_total_lines=`expr $sub_sum_total_lines + $total_lines`
        sub_sum_not_used_lines=`expr $sub_sum_not_used_lines + $not_used_lines`
        sub_sum_used_lines=`expr $sub_sum_used_lines + $used_lines`



        if [ $total_lines = 0 ]
        then
           percent_lines=0
        else
           percent_lines=`expr 100 \* $used_lines / $total_lines `
        fi
        filename=`echo $filename | awk '{FS = "."}{print $1"."$2}`
        printf "%25s\t%6d\t%6d\t%6d\t%6d \n" $filename   $total_lines   $used_lines   $not_used_lines   $percent_lines
   done

   if [ $sub_sum_total_lines = 0 ]
   then
      percent_lines=0
   else
      percent_lines=`expr 100 \* $sub_sum_used_lines / $sub_sum_total_lines `
   fi
   printf "%25s\t%6d\t%6d\t%6d\t%6d \n" "Directory Totals"   $sub_sum_total_lines   $sub_sum_used_lines   $sub_sum_not_used_lines   $percent_lines

done


percent_lines=`expr 100 \* $sum_used_lines / $sum_total_lines `
printf "\n\n %25s\t%6d\t%6d\t%6d\t%6d \n" "Grand Totals"   $sum_total_lines   $sum_used_lines   $sum_not_used_lines   $percent_lines
exit
