#!/bin/sh

PATH=/usr/sbin:/bin:/usr/bin:/usr/ucb:$PATH
PIDFILE=/var/run/roamd.pid
USAGE='echo "usage: $0 (status|leave|stop|restart) ... "; exit 1'


if [ -f $PIDFILE ]
then
	PID=`cat $PIDFILE`
	PS=`ps $PID | tail -1 | grep $PID`
	RUNNING=1
	[ `echo $PS | wc -w` -ne 0 ] || {
		echo "roamd (pid $PID?) not running"
		RUNNING=0
	}
else
	echo "roamd (no pid file) not running"
	RUNNING=0
fi

for ARG
do
	case $ARG in
	start|restart)
		;;
	*)
		[ $RUNNING -eq 0 ] && {
			exit 1
		}
	esac

	case $ARG in
	status) echo "$PS"
		[ $RUNNING -eq 0 ] && {
		    exit 1
		} || {
		    exit 0
		}
		;;
	leave)	kill -USR1 $PID && echo "Synthesizing leave event" ;;
	int)	kill -INT $PID && echo "Sent INT signal" ;;
	hup)	kill -HUP $PID && echo "Sent HUP signal" ;;
	stop)
		kill -USR2 $PID
		sleep 5
		if $0 status >/dev/null 2>&1
		then
			kill $PID
			sleep 2
			if $0 status >/dev/null 2>&1
			then
				echo "roamd still didn't stop, giving up"
			else
				echo "roamd stopped"
			fi
		else
			echo "roamd stopped"
		fi
		;;
	KILL)	kill -KILL $PID ;;
	start)
		[ $RUNNING -eq 1 ] && {
			echo "$0: start: roamd (pid $PID) already running"
			continue
		}
		rm -f $PIDFILE
		roamd -b && {
			sleep 5
			echo "roamd started"
		}
		;;
	restart)
		[ $RUNNING -eq 1 ] && {
			$0 stop
		}
		$0 start
		;;
	*)	eval $USAGE;;
	esac
done
