#!/bin/sh
eval "exec /mit/watchmaker/`/bin/athena/machtype`bin/perl -S $0 $*"
    if $running_under_some_shell;

# This perl script tries to analyze the bloom-beacon usage logs and 
# generates a report.

$i = 0;

line: while (<>) {
	($time[$i], $load[$i], $users[$i], $space[$i], $discussd[$i], 
		$nntpd[$i]) = split;
	if (substr($time[$i], 1, 1) eq ":") {
		$time[$i] = '0' . $time[$i];
	}
	$i++;
}

$maxentry = $i;

do print_time();

for ($i=20; $i; $i--) {
	for ($j=0; $j < $maxentry; $j++) {
		if ($nntpd[$j] <= $i) {
			print " ";
		} else {
			print "#";
		}
	}
	printf(" %2d\n", $i);
}
do center("Number of nntpd(s) over time", $maxentry);

print "\f\n";

do print_time();

for ($i=20; $i; $i--) {
	for ($j=0; $j < $maxentry; $j++) {
		if ($discussd[$j] <= $i) {
			print " ";
		} else {
			print "#";
		}
	}
	printf(" %2d\n", $i);
}
do center("Number of discussd(s) over time", $maxentry);

print "\f\n";

do print_time();

for ($i=8000; $i; $i -= 200) {
	for ($j=0; $j < $maxentry; $j++) {
		if ($space[$j] <= $i) {
			print " ";
		} else {
			print "#";
		}
	}
	printf(" %2d\n", $i);
}
do center("Space on /usr/spool over time", $maxentry);

print "\f\n";

do print_time();
for ($i=10; $i >= 0; $i -= 0.2) {
	for ($j=0; $j < $maxentry; $j++) {
		if ($load[$j] <= $i) {
			print " ";
		} else {
			print "#";
		}
	}
	printf(" %4.2f\n", $i);
}
do center("Load on bloom-beacon over time", $maxentry);


# Subroutines follow here....
sub print_time {
	local($i, $j);
	for ($i=0; $i < 7; $i++) {
		if ($i == 2) {
			next;
		}
		for ($j=0; $j < $maxentry; $j++) {
			if ($j % 4) {
				print " ";
			} else {
				print substr($time[$j], $i, 1);
			}
		}
		print "\n";
	}
}

sub center {
	local($str, $width) = @_;
	local($pad) = int(($width - length($str))/2);
	if ($pad > 0) {
		while ($pad--) {
			print " ";
		}
	}
	print "$str\n";
}

