#!/bin/sh
# chkconfig: 2345 56 44
### BEGIN INIT INFO
# Provides:          lirc
# Required-Start:    modules
# Required-Stop:     modules
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start lirc at boot time
# Description:       Enable service provided by lirc.
# X-Start-Before:    
# X-Stop-After:      
# X-Timesys-Start-Number:  56
# X-Timesys-Stop-Number:  44
### END INIT INFO

set -e

PATH=/usr/bin:/bin:/usr/sbin:/sbin
LIRC_DAEMON=lircd
LIRC_PID_FILE=/var/run/lirc/lircd.pid
LIRC_OPTS='--device /dev/lirc'
LIRCM_DAEMON=lircmd
LIRCM_PID_FILE=/var/run/lirc/lircmd.pid
LIRCM_OPTS=''

case "$1" in
    start)
        if [ -e $LIRC_PID_FILE ]; then
            PIDDIR=/proc/$(cat $LIRC_PID_FILE)
            if [ -d ${PIDDIR} -a -n "$(readlink -f ${PIDDIR}/exe 2>/dev/null)" ]; then
                echo "lircd already started; not starting."
                exit 1
            else
                echo "Removing stale PID file $LIRC_PID_FILE."
                rm -f $LIRC_PID_FILE
            fi
        fi
        echo -n "Starting lircd: "
        $LIRC_DAEMON $LIRC_OPTS && \
          echo '[ OK ]' || echo '[FAIL]'
        echo -n "Starting lircmd: "
        $LIRCM_DAEMON $LIRCM_OPTS && \
          echo '[ OK ]' || echo '[FAIL]'
        pidof $LIRCM_DAEMON > $LIRCM_PID_FILE
    ;;
    stop)
        if [ -f $LIRC_PID_FILE ]; then
            echo -n "Stopping lircd: "
            read PID < $LIRC_PID_FILE
            kill $PID && \
              echo '[ OK ]' || echo '[FAIL]'

            rm $LIRCM_PID_FILE
        else
            echo "pid file not found... is $LIRC_DAEMON running?"
        fi
    ;;
    restart)
      $0 stop
      $0 start
    ;;
    *)
        echo "usage: $0 {start|stop|restart}"
        exit 1
    ;;
esac
