#!/afs/athena/contrib/perl/perl
#
# usage:   zfinger.pl user1 user2 user3

while ($user = shift) {
    open(Z, "zlocate $user|");

    while ($zlocate = <Z>) {
        chop($zlocate);
        ($host,$display,$date) = split(/[ \t]/, $zlocate);
	$host =~ tr/A-Z/a-z/;
	if ($host =~ /hidden/) {
	    print "$user is hidden or not logged in.\n";
	    break;
	} else {
            $idle = &finger($user,$host);
            $idle =~ tr/[ ]+//d;
            $idle = 0 if ($idle eq "");
            print "$user has been idle for $idle minutes at $host.\n";
	}
    }
    close(Z);
}
    
sub finger {
    local($user, $host) = @_;
    local($idle);
    open(F, "/usr/bin/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);
        }
    }
    close(F);
    $idle;
}

