:
#	rxlogsum: Script to summarize received statistics
#
SPOOLDIR=/usr/spool/fax
if [ "Q$*" != Q ]
then
	files="$*"
else
	files=$SPOOLDIR/txlog
fi
cat $files | nawk '
/^JOBNUM USERNAME/ {	# New Log format
	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] = 20;
	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;
	nf=9
	continue
}
/^JOBNUM PGS/ {		# Old Log format
	fcol[1] = 1; flen[1] = 6;
	fcol[2] = fcol[1] + flen[1]; flen[2] = 0;
	fcol[3] = fcol[2] + flen[2] + 1; flen[3] = 3;
	fcol[4] = fcol[3] + flen[3] + 1; flen[4] = 20;
	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;
	nf=9
	continue
}
/^-/ { continue }
BEGIN {	# This gets done before any of the file is read
	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\n", \
		"DATE  ", "JOBS", "PAGES", "PGS/JOB", "RECVTIME", "TIME/PG"
	dashes();
}
function summary() {
	if (needhdr) header();
	printf "%s %s\t%7d %7d %7.1f %9s %7s\n", \
		lastf5, lastf6, jobs, pgs, pgs/jobs, \
		secs2hhmmss(time), secs2mmss(time/pgs +.5)
	needhdr = 0;
	jobs=0; pgs=0; time=0
}
function msummary() {
	dashes();
	printf "%s\t%7d %7d %7.1f %9s %7s\n", \
		lastf5, mjobs, mpgs, mpgs/mjobs, \
		secs2hhmmss(mtime), secs2mmss(mtime/mpgs +.5)
	mjobs=0; mpgs=0; mtime=0; needhdr = 1;
}
{	# Do this for every log line
	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();
	jobs++; mjobs++; tjobs++;
	pgs += f[3]; mpgs += f[3]; tpgs += f[3];
	split(f[8], mmss, ":"); secs = mmss[1]*60 + mmss[2];
	time += secs; mtime += secs; ttime += secs;
	lastf5 = f[5]; lastf6 = f[6];
}
END {	# This gets done when end of file is reached
	summary();
	msummary();
	header();
	printf "TOTAL\t%7d %7d %7.1f %9s %7s\n", \
		tjobs, tpgs, tpgs/tjobs, \
		secs2hhmmss(ttime), secs2mmss(ttime/tpgs +.5)
}'
