#!/dcs/bin/python

import string
import sys
import pwd
import os
import regex

def main():
	line=string.strip(sys.stdin.readline())
	chopped=string.split(line)
	if len(chopped) == 0 or chopped[-1][0:1] == '/':
		show = 0
		try:
			file = open('/var/adm/no-inspecific-finger')
		except:
			show = 1
		if show == 1:
			run_finger('')
		else:
			show_file(file)
		sys.exit(0)
	else:
		user = chopped[-1]
	local = regex.compile('^[0-9a-zA-Z]*$')
	remote = 0
	if local.match(user) == -1:
		remote = regex.compile('^[0-9a-zA-Z][0-9a-zA-Z-\.@]*$')
		if remote.match(user) == -1:
			sys.stdout.write(user+' does not look like a username\n')
			sys.exit(0)
		else:
			remote = 1
			show = 1
	if not remote:
		try:
			pwent = pwd.getpwnam(user)	
		except:
			# this makes it too easy to tell when a specific username exists;
			# an invalid username says "user foo does not exist", while
			# a valid username with finger turned off says ""
			#sys.stdout.write('user '+user+' does not exist\n\r')
			sys.exit(0)
		have_home_dir=1
		try:
			os.chdir(pwent[5])
		except:
			have_home_dir=0
		show = 0
		if have_home_dir:
			try:
				file = open('.no-finger','r')
			except:
				show=1
		else:
			show=1
	if show == 1:
		sys.stdout.flush()
		run_finger(user)
	else:
		show_file(file)

def show_file(file):
	while 1:
		line = file.readline()
		if not line:
			break
		sys.stdout.write(line+'\r')
	sys.exit(0)

def run_finger(user):
	if sys.platform[0:4] == 'irix':
		path='/usr/bsd/finger'
	elif sys.platform[0:4] == 'sunos4':
		path='/usr/ucb/finger'
	else:
		# solaris, osf/1 and linux have it at /usr/bin.
		path='/usr/bin/finger'
	if user == '':
		sys.stdout.write('Some users may have chosen not to appear in this list.')
		sys.stdout.write('\n\n')
		pipe = os.popen(path,'r')
		while 1:
			line = pipe.readline()
			if not line:
				break
			chopped=string.split(line)
			if len(chopped) > 0:
				found=1
				try:
					pwent = pwd.getpwnam(chopped[0])
				except:
					found=0
				have_home_dir=0
				if found:
					try:
						os.chdir(pwent[5])
						have_home_dir=1
					except:
						pass
				if have_home_dir:
					show=0
					try:
						file = open('.no-finger','r')
					except:
						show=1
				else:
					show=1
			if show:
				sys.stdout.write(line)
	else:
		os.execlp(path,'finger',user)
		

main()