:
#	txlogsum: Script to summarize transmitted statistics
#
SPOOLDIR=/usr/spool/fax
if [ "Q$*" != Q ]
then
	files="$*"
else
	files=$SPOOLDIR/txlog
fi
cat $files | nawk '
/^JOBNUM USERNAME/ {
	fcol[1] = 1; flen[1] = 6;
	fcol[2] = fcol[1] + flen[1] + 1; flen[2] = 8;
	fcol[3] = fcol[2] + flen[2] + 1; flen[3] = 3;
	fcol[4] = fcol[3] + flen[3] + 1; flen[4] = 16;
	fcol[5] = fcol[4] + flen[4] + 1; flen[5] = 3;
	fcol[6] = fcol[5] + flen[5] + 1; flen[6] = 2;
	fcol[7] = fcol[6] + flen[6] + 1; flen[7] = 5;
	fcol[8] = fcol[7] + flen[7] + 1; flen[8] = 5;
	fcol[9] = fcol[8] + flen[8] + 1; flen[9] = 4;
	fcol[10] = fcol[9] + flen[9] + 1; flen[10] = 2;
	fcol[11] = fcol[10] + flen[10] + 1; flen[11] = 99;
	nf=11
	continue
}
/^-/ { continue }
BEGIN {
	lastf5 = ""; needhdr=1
}
function secs2hhmmss (secs) {
	return sprintf("%02d:%02d:%02d", secs/3600, (secs/60) % 60 , secs % 60)
}
function secs2mmss (secs) {
	return sprintf("%02d:%02d", secs/60, secs % 60)
}
function dashes() {
	printf "------- ------- ------- -------  -------- ------- ------- -------\n"
}
function header() {
	printf "\n%s\t%7s %7s %7s %9s %7s %7s %7s\n", \
		"DATE  ", "JOBS", "PAGES", "PGS/JOB", "XMITTIME", \
		"TIME/PG", "TIME/JB", "TRY/JOB"
	dashes();
}
function summary() {
	if (needhdr) header();
	if (jobs != 0 && pgs != 0)
	{
		printf "%s %s\t%7d %7d %7.1f %9s %7s %7s %7.1f\n", \
			lastf5, lastf6, jobs, pgs, pgs/jobs, \
			secs2hhmmss(time), secs2mmss(time/pgs +.5), \
			secs2mmss(time/jobs +.5), tries/jobs
	}
	needhdr = 0; jobs=0; pgs=0; time=0; tries=0
}
function msummary() {
	dashes();
	if (mjobs != 0 && mpgs != 0)
	{
		printf "%s\t%7d %7d %7.1f %9s %7s %7s %7.1f\n", \
			lastf5, mjobs, mpgs, mpgs/mjobs, \
			secs2hhmmss(mtime), secs2mmss(mtime/mpgs +.5), \
			secs2mmss(mtime/mjobs), mtries/mjobs
	}
	needhdr = 1; mjobs=0; mpgs=0; mtime=0; mtries=0
}
{
	for (i = 1; i <= nf; ++i)
		f[i] = substr($0, fcol[i], flen[i]);
	if (lastf5 != "")
		if (lastf5 != f[5])
		{
			summary();
			msummary();
		}
		else if (lastf6 != f[6])
			summary();
	if (f[11] == "sent")
	{
		jobs++; mjobs++; tjobs++;
		pgs += f[3]; mpgs += f[3]; tpgs += f[3];
		tries += f[10]; mtries += f[10]; ttries += f[10];
		split(f[8], mmss, ":"); secs = mmss[1]*60 + mmss[2];
		time += secs; mtime += secs; ttime += secs;
	}
	lastf5 = f[5]; lastf6 = f[6];
}
END {
	summary();
	msummary();
	header();
	printf "TOTAL\t%7d %7d %7.1f %9s %7s %7s %7.1f\n", \
		tjobs, tpgs, tpgs/tjobs, \
		secs2hhmmss(ttime), secs2mmss(ttime/tpgs + .5), \
		secs2mmss(ttime/tjobs + .5), ttries/tjobs
}'
