#!/afs/athena/contrib/perl/perl
#
# usage:   idle.pl user

$user = shift(@ARGV) || $ENV{'USER'};

open(Z, "/usr/athena/bin/zlocate -1 $user|");

while(<Z>) {
    do finger($user,(split(/\s+/))[1]);
}


sub finger {
    local($user,$host) = @_;
    local($idle,$it,$t,$p,$_) = (undef);

    open(F, "/usr/ucb/finger @$host|");

    while (($_=<F>) &&  !/Idle/) {};
    $p=length($`);

    while(<F>) {
	if (/^$user/) {
	    chop;
	    $t=substr($_,$p,4),"\n";
	    $it = ($t =~ /^([^:]*):([^:]*)$/) ? ($2 + 60*$1) : $t;
	    $idle=$it unless defined($idle);
	    $idle=$it if ($idle>$it);
	}
    }
    if (defined($idle)) {
	$idle=~s/\s+//g;
	$idle=0 if ($idle eq "");
	print "user $user@$host has been idle for $idle minutes.\n";
    }
}
