#!/usr/local/bin/perl

use Sys::Utmp;


if (scalar @ARGV > 2)
{
	usage();
}
elsif ($ARGV[0] =~ /am|are/i && $ARGV[1] =~ /i|you/i)
{
	print $ENV{USER},"\n";
} 
else	
{
	display_info($ARGV[0]);
}

sub usage
{
	 print "who [ who-file ] [ am I ] [ are you ]\n";
}

#### Accept optional filename argument and display who info ##### 

sub display_info
{
	my $file = shift;
	my %args = ($file) ? (Filename => $file) : ();

	die "$0: $file: No such file\n" if ($file && ! (-e "$file" && -r "$file"));

	my $utmp = Sys::Utmp->new(%args);

	print "User\tLine\tTime\n";

	while ( my $utent =  $utmp->getutent() )
	{
		my $user = $utent->ut_user;
		print $utent->ut_user,"\t",$utent->ut_line,"\t",scalar localtime ($utent->ut_time),"\n" 
			if ($utent->user_process && $user);	
	}

	$utmp->endutent;
}
