#!/bin/sh

# Par Julien MOREAU     ( jmoreau@bigfoot.com )

nbps=1					# Nombre de paramètres souhaités
nom_cmde=`basename $0`			# Nom de la commande
usage="Usage: $nom_cmde <login>|moi"	# Message d'aide
usage=$usage"\n\tDonne l'adresse du terminal X d'un utilisateur."

if test `uname` != "HP-UX" ; then e="-e" ; fi

if [ $# -lt $nbps ] ; then	# Si le nombre de paramètres est incorrecte,
	echo $e $usage 1>&2 ; exit 2	# Affichage aide puis arrêt.
fi

# sufx="isty-info.uvsq.fr:0.0"	# Suffixe à l'ISTY
sufx=":0.0"			# Suffixe par défaut

argv=$* ; argc=$#
for nom in $argv ; do
	if [ $argc -gt 1 ] ; then echo "$nom : \c" 1>&2 ; fi
	if [ $nom = "moi" ] ; then
		if test -n "$DISPLAY" ; then
			echo $DISPLAY
			ret=0 ; continue
		else
			nom=`whoami`
		fi
	fi

	grep -q ^$nom /etc/passwd
	if [ $? -ne 0 ] ; then
		echo "Login inconnu sur ce serveur." 1>&2 ; ret=3 ; continue
	fi

	ps -u $nom >> /dev/null 2>&1
	if [ $? -eq 1 ] ; then
		echo "Cette personne n'est pas loguée en ce moment." 1>&2
		ret=4 ; continue
	fi

	res=`who -T|grep ^$nom|grep -v ' old '`
	if test -z "$res" ; then
		echo "Cette personne n'a pas de fenêtre\c" 1>&2
		echo " shell d'ouverte en ce moment." 1>&2 ; ret=5 ; continue
	fi

	ligne=`who -T|grep -e ' \. ' -e ' 0:' -e ' 1:' | grep ^$nom | head -n1`
	if test -z "$ligne" ; then ligne=`echo $res | head -n1` ; fi
	set $ligne
	ret=$?
	echo $9|grep -q ^*.*.*$
	if [ $? -eq 0 ] ; then echo $9
	else
		poste=`echo $9|cut -d':' -f1	#|cut -d'.' -f1`
		if test -z "$poste" ; then poste=$MACHINE ; fi
		echo $poste.$sufx
	fi
done

exit $ret

