#!/bin/sh
################################################################################
#      This file is part of OpenELEC - http://www.openelec.tv
#      Copyright (C) 2009-2014 Stephan Raue (stephan@openelec.tv)
#
#  OpenELEC is free software: you can redistribute it and/or modify
#  it under the terms of the GNU General Public License as published by
#  the Free Software Foundation, either version 2 of the License, or
#  (at your option) any later version.
#
#  OpenELEC is distributed in the hope that it will be useful,
#  but WITHOUT ANY WARRANTY; without even the implied warranty of
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#  GNU General Public License for more details.
#
#  You should have received a copy of the GNU General Public License
#  along with OpenELEC.  If not, see <http://www.gnu.org/licenses/>.
################################################################################

ACTION=$(echo "$1")
DEVICE=$(echo "$2" | cut -f1 -d:)
DRIVER=$(echo "$2" | cut -f2 -d:)
CONFIG=$(echo "$2" | cut -f3 -d:)

case "$ACTION" in
  add)
    if [ "x$DRIVER" = "x" ]; then
      exit 1;
    fi

    mkdir -p '/run/lirc'

    if [ ! -e "/run/lirc/lircd-$DEVICE.pid" ]; then

      LIRCD="/usr/sbin/lircd"
      LIRCD_CONFIG="--uinput --driver=$DRIVER --device=/dev/$DEVICE"
      LIRCD_CONFIG="$LIRCD_CONFIG --output=/run/lirc/lircd-$DEVICE"
      LIRCD_CONFIG="$LIRCD_CONFIG --pidfile=/run/lirc/lircd-$DEVICE.pid"

      if [ -e "/storage/.config/lircd.conf" ]; then
        LIRCD_CONFIG="$LIRCD_CONFIG /storage/.config/lircd.conf"
      elif [ -n "$CONFIG" ]; then
        if [ -e "/storage/.config/$CONFIG" ]; then
          LIRCD_CONFIG="$LIRCD_CONFIG /storage/.config/$CONFIG"
        elif [ -e "/etc/lirc/$CONFIG" ]; then
          LIRCD_CONFIG="$LIRCD_CONFIG /etc/lirc/$CONFIG"
        else
          exit 1
        fi
      else
        exit 1
      fi

      exec $LIRCD $LIRCD_CONFIG
    fi
    ;;
  remove)
    if [ -e "/run/lirc/lircd-$DEVICE.pid" ]; then
      PID=`cat /run/lirc/lircd-$DEVICE.pid`
      if [ ! "x$PID" = "x" ]; then
        kill $PID
      fi
    fi
    ;;
esac

exit 0
