#!/bin/sh

. /etc/account.conf

version="1.1"

function PrintTable()
{
    echo "<h2>Program Summary</h2>"
    echo "<pre>"
    if [ "x$4" = "x-l" ]
    then
      echo "   Calls Real [min]  Sys [min]  User [min]  Program"
      echo "---------------------------------------------------"
      "$saProg" -a $3 $4 /dev/null \
        --other-savacct-file "$1/savacct.$2" \
        --other-usracct-file "$1/usracct.$2" | \
        sed -e "s/\.\(..\)s/.\1/g" -e "s/\.\(..\)u/.\1/g" -e "s/\.\(..\)re/.\1/g"
    else
      echo "   Calls Real [min]  CPU [min]   Program"
      echo "----------------------------------------"
      "$saProg" -a $3 $4 /dev/null \
        --other-savacct-file "$1/savacct.$2" \
        --other-usracct-file "$1/usracct.$2" | \
        sed -e "s/\.\(..\)cp/.\1/g" -e "s/\.\(..\)re/.\1/g"
    fi
    echo "</pre>"

    echo "<h2>User Summary</h2>"
    echo "<pre>"
    if [ "x$4" = "x-l" ]
    then
      echo "User    Processes Real [min]  Sys [min] User [min]"
      echo "--------------------------------------------------"
      $toolDir/sa -am $3 $4 /dev/null \
        --other-savacct-file "$1/savacct.$2" \
        --other-usracct-file "$1/usracct.$2" | \
        sed -e "s/\.\(..\)s/.\1/g" -e "s/\.\(..\)u/.\1/g" -e "s/\.\(..\)re/.\1/g"
    else
      echo "User    Processes Real [min]  CPU [min]"
      echo "---------------------------------------"
      $toolDir/sa -am $3 $4 /dev/null \
        --other-savacct-file "$1/savacct.$2" \
        --other-usracct-file "$1/usracct.$2" | \
        sed -e "s/\.\(..\)cp/.\1/g" -e "s/\.\(..\)re/.\1/g"
    fi
    echo "</pre>"
}

echo "Content-type: text/html"
echo

case "$(uname -r)" in
1.3.* | 2.0.*)
	saProg="$toolDir/sa$sa20ext"
	;;
2.[1-9].*)
	saProg="$toolDir/sa$sa21ext"
	;;
*)
	echo "Your Linux version is too old or too new for this script."
	exit 1
	;;
esac

echo "<head><title>Accounting Summary From $1/*acct.$2</title></head>"
echo "<body $htmlBackground>"
echo "<h1>Accounting Summary For $3</h1>"

if [ $# != 0 ]
then
  case "$4$5" in
  Timet)
    PrintTable "$1" "$2"
    ;;
  Callst)
    PrintTable "$1" "$2" -n
    ;;
  PerCallt)
    PrintTable "$1" "$2" -b
    ;;
  Realtimet)
    PrintTable "$1" "$2" --sort-real-time
    ;;
  PerIOt)
    PrintTable "$1" "$2" -d
    ;;
  IOt)
    PrintTable "$1" "$2" -D
    ;;
  PerMemt)
    PrintTable "$1" "$2" -k
    ;;
  Memoryt)
    PrintTable "$1" "$2" -K
    ;;
  Times)
    PrintTable "$1" "$2" "" -l
    ;;
  Callss)
    PrintTable "$1" "$2" -n -l
    ;;
  PerCalls)
    PrintTable "$1" "$2" -b -l
    ;;
  Realtimes)
    PrintTable "$1" "$2" --sort-real-time -l
    ;;
  PerIOs)
    PrintTable "$1" "$2" -d -l
    ;;
  IOs)
    PrintTable "$1" "$2" -D -l
    ;;
  PerMems)
    PrintTable "$1" "$2" -k -l
    ;;
  Memorys)
    PrintTable "$1" "$2" -K -l
    ;;
  esac
fi

date=$(/usr/local/sbin/MakeURL "$3")
echo "<hr>Sort by"
echo "<a href=\"$host$1+$2+$date+Time+$5\">Time</a>"
echo " | <a href=\"$host$1+$2+$date+Calls+$5\">Calls</a>"
echo " | <a href=\"$host$1+$2+$date+PerCall+$5\">Time per call</a>"
echo " | <a href=\"$host$1+$2+$date+Realtime+$5\">Real time</a>"

# Doesn't work although Linux  >= 2.1 does have these fields.
#case "$(uname -r)" in
#  2.[1-9].*)
#    echo " | <a href=\"$host$1+$2+$date+PerIO+$5\">Av. I/O</a>"
#    echo " | <a href=\"$host$1+$2+$date+IO+$5\">I/O</a>"
#    echo " | <a href=\"$host$1+$2+$date+PerMem+$5\">Av. Memory</a>"
#    echo " | <a href=\"$host$1+$2+$date+Memory+$5\">Memory integral</a>"
#  ;;
#esac

if [ "$5" = "t" ]
then
  echo "<br><a href=\"$host$1+$2+$date+$4+s\">Split system and user time</a>"
else
  echo "<br><a href=\"$host$1+$2+$date+$4+t\">Add system and user time</a>"
fi

echo "<hr><address>Created by acctsum $version</address>"
