:
##########################################################################
# Title      :	waitfor - wait for a user to log in
# Author     :	Heiner Steven <heiner.steven@odn.de>
# Date       :	1995-02-06
# Requires   :	
# Category   :	System Utilities
# SCCS-Id.   :	@(#) waitfor	1.2 03/12/19
##########################################################################
# Description
#
##########################################################################

PN=`basename "$0"`			# Program name
VER='1.2'

# Determine mail program knowing "-s" argument
Mail=mail
[ -x /bin/mailx ] && Mail=mailx

: ${LOGNAME:=`whoami`}			# User to send mail to
SleepTime=10

usage () {
    echo >&2 "$PN - wait for a user to log in, $VER (stv '95)
usage: $PN [-n count] user"
    exit 1
}

msg () {
    echo "$PN:" "$@" >&2
}

fatal () { msg "$@"; exit 1; }

set -- `getopt n:h "$@"` || usage

n=0					# Wait until user is logged in n times
while [ $# -gt 0 ]
do
    case "$1" in
	-n)	n="$2"
	    case "$2" in
		*[!0-9]*)   fatal "no positive integer number: $2";;
	    esac
	    shift;;
	--)	shift; break;;
	-h)	usage;;
	-*)	usage;;
	*)	break;;			# First file name
    esac
    shift
done

[ $# -eq 1 ] || usage
User="$1"

# If the number of logins is not given, assume the current
# number + 1.
if [ ${n:=0} -eq 0 ]
then
    n=`who | awk '$1 == "'$User'"' | wc -l`
    [ ${n:=0} -gt 0 ] && msg "Note: $User is already logged in" $n "time(s)"
    Sessions="$n"			# Current number of logins
    n=`expr $n + 1`
fi

until	k=`who | awk '$1 == "'$User'"' | wc -l`
	[ ${k:=0} -ge $n ]
do
    if [ $k -lt ${Sessions:=0} ]
    then
	# Session(s) terminated - adjust number of logins to wait for
	Sessions=$k
	n=`expr $k + 1`
    fi
    sleep $SleepTime
done

$Mail -s "$User is logged in at least $n time(s)" $LOGNAME <<!
`who | grep $User`
!
