#!/bin/bash
#
# /etc/rc.d/lircd: start/stop/restart lirc daemon
#

NAME=lirc
USER=lirc
GROUP=lirc
RUNDIR=/var/run/lirc
PIDFILE=$RUNDIR/lircd.pid
CONFIG=/etc/lircd.conf
DEVICE=/dev/usbirboy
PARAMS="--device=$DEVICE --output=$RUNDIR/lircd --pidfile=$PIDFILE --permission=660 --allow-simulate $CONFIG"

case "$1" in
	start)
		[ -d $RUNDIR ] || install -d -m 750 -o $USER -g $GROUP $RUNDIR || exit 1
		if [ -f $PIDFILE ]; then
			pid=$(< $PIDFILE)
			if [ ! -d /proc/$pid -o -z "$pid" ]; then
				echo "$NAME: removing stale pidfile $PIDFILE" >&2
				rm -f $PIDFILE
			fi
		fi
		if [ -f $PIDFILE ]; then
			echo "$NAME already running with pid $pid" >&2
			exit 1
		fi

		chown $USER:$GROUP $DEVICE
		/usr/bin/sudo -b -H -u $USER /usr/sbin/lircd $PARAMS
	;;
	stop)
		if [ -f $PIDFILE ]; then
			pid=$(< $PIDFILE)
			if [ ! -d /proc/$pid -o -z "$pid" ]; then
				echo "$NAME: removing stale pidfile $PIDFILE" >&2
				rm -f $PIDFILE
			else
				kill $pid
				t=0
				while [ -d /proc/$pid -a $t -lt 10 ]; do
					sleep 0.5
					let t++
				done
				if [ -d /proc/$pid ]; then
					echo "$NAME still running with pid $pid" >&2
				else
					rm -f $PIDFILE
				fi
			fi
		else
			echo "$NAME is not running" >&2
		fi
	;;
	restart)
		$0 stop
		$0 start
	;;
	*)
		echo "Usage: $0 start|stop|restart"
		exit 1
	;;
esac
