Advertisement
Guest User

lirc init script

a guest
May 20th, 2012
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 4.26 KB | None | 0 0
  1. #! /bin/sh
  2. ### BEGIN INIT INFO
  3. # Provides:          lirc
  4. # Required-Start:    $remote_fs $syslog
  5. # Required-Stop:     $remote_fs $syslog
  6. # Default-Start:     2 3 4 5
  7. # Default-Stop:      0 1 6
  8. # Short-Description: Starts LIRC daemon.
  9. # Description:       LIRC is used to control different
  10. #                    infrared receivers and transceivers.
  11. ### END INIT INFO
  12.  
  13. load_modules ()
  14. {
  15.     MODULES_MISSING=false
  16.  
  17.     log_daemon_msg "Loading LIRC modules"
  18.     for mod in $*; do
  19.         modprobe $mod 2> /dev/null || MODULES_MISSING=true
  20.     done
  21.  
  22.     # avoid a hard dependency or a flag day between udev versions
  23.     if [ -x /sbin/udevadm ]; then
  24.         # udev >= 0.117
  25.         udevadm settle || echo "timeout waiting for devices to be ready"
  26.     elif [ -x /sbin/udevsettle ]; then
  27.         # udev < 0.117
  28.         udevsettle || echo "timeout waiting for devices to be ready"
  29.     fi
  30.  
  31.     log_end_msg $?
  32.  
  33.     if $MODULES_MISSING; then
  34.         log_failure_msg "Unable to load LIRC kernel modules. Verify your"
  35.         log_failure_msg "selected kernel modules in /etc/lirc/hardware.conf"
  36.         START_LIRCMD=false
  37.         START_LIRCD=false
  38.     fi
  39. }
  40.  
  41. build_args ()
  42. {
  43.     ARGS="$*"
  44.  
  45.     ## Try to find an lirc device.
  46.     if [ -z "$DEVICE" ]; then
  47.         if [ -c $dev ]; then
  48.             DEVICE="$dev"
  49.             break
  50.         fi
  51.     fi
  52.  
  53.     if [ -n "$DEVICE" ] && [ "$DEVICE" != "none" ]; then
  54.         ARGS="--device=$DEVICE $ARGS"
  55.     fi
  56.  
  57.     if [ -n "$DRIVER" ] && [ "$DRIVER" != "none" ]; then
  58.         ARGS="--driver=$DRIVER $ARGS"
  59.     fi
  60.  
  61.     echo $ARGS
  62. }
  63.  
  64. . /lib/lsb/init-functions
  65.  
  66. test -f /usr/sbin/lircd || exit 0
  67. test -f /usr/sbin/lircmd || exit 0
  68.  
  69. START_LIRCMD=true
  70. START_LIRCD=true
  71. START_IREXEC=true
  72.  
  73.  
  74. if [ -f /etc/lirc/hardware.conf ];then
  75.     . /etc/lirc/hardware.conf
  76. fi
  77.  
  78. if [ ! -f /etc/lirc/lircd.conf ] || grep -q "^#UNCONFIGURED" /etc/lirc/lircd.conf; then
  79.     if [ "$1" = "start" ]; then
  80.         log_success_msg "No valid /etc/lirc/lircd.conf has been found."
  81.         log_success_msg "Remote control support has been disabled."
  82.         log_success_msg "Reconfigure LIRC or manually replace /etc/lirc/lircd.conf to enable."
  83.     fi
  84.  
  85.     START_LIRCD=false
  86.     START_LIRCMD=false
  87.     START_IREXEC=false
  88. fi
  89.  
  90. if [ ! -f /etc/lirc/lircmd.conf ] || grep -q "^#UNCONFIGURED" /etc/lirc/lircmd.conf; then
  91.     START_LIRCMD=false
  92. fi
  93.  
  94. if [ ! -f /etc/lirc/lircrc ] || grep -q "^#UNCONFIGURED" /etc/lirc/lircrc; then
  95.     START_IREXEC=false
  96. fi
  97.  
  98.  
  99.  
  100. case "$1" in
  101.     start)
  102.         if [ "$LOAD_MODULES" = "true" ] && [ "$START_LIRCD" = "true" ]; then
  103.             load_modules $MODULES
  104.         fi
  105.  
  106.         if [ "$START_LIRCD" = "true" ]; then
  107.             log_daemon_msg "Starting remote control daemon(s) : LIRC "
  108.             LIRCD_ARGS=`build_args $LIRCD_ARGS`
  109.  
  110.             if [ ! -z "$LIRCD_ARGS" ]; then
  111.                 start-stop-daemon --start --quiet --exec /usr/sbin/lircd -- $LIRCD_ARGS < /dev/null
  112.                 log_end_msg $?
  113.             else
  114.                 log_end_msg 1
  115.             fi
  116.         fi
  117.  
  118.         if [ "$START_LIRCMD" = "true" ]; then
  119.             log_daemon_msg "Starting remote control mouse daemon : LIRCMD "
  120.             start-stop-daemon --start --quiet --exec /usr/sbin/lircmd < /dev/null
  121.             log_end_msg $?
  122.         fi
  123.  
  124.         if [ "$START_IREXEC" = "true" ]; then
  125.             log_daemon_msg "Starting execution daemon: irexec"
  126.             start-stop-daemon --start --quiet --exec /usr/bin/irexec -- -d /etc/lirc/lircrc < /dev/null
  127.             log_end_msg $?
  128.         fi
  129.         ;;
  130.     stop)
  131.         if [ "$START_IREXEC" = "true" ]; then
  132.             log_daemon_msg "Stopping execution daemon: irexec"
  133.             start-stop-daemon --stop --quiet --exec /usr/bin/irexec
  134.             log_end_msg $?
  135.         fi
  136.  
  137.         if [ "$START_LIRCMD" = "true" ]; then
  138.             log_daemon_msg "Stopping remote control mouse daemon: LIRCMD"
  139.             start-stop-daemon --stop --quiet --exec /usr/sbin/lircmd
  140.             log_end_msg $?
  141.         fi
  142.  
  143.         if [ "$START_LIRCD" = "true" ]; then
  144.             log_daemon_msg "Stopping remote control daemon(s): LIRC"
  145.             start-stop-daemon --stop --quiet --exec /usr/sbin/lircd
  146.             log_end_msg $?
  147.         fi
  148.         ;;
  149.     reload|force-reload)
  150.         if [ "$START_IREXEC" = "true" ]; then
  151.             start-stop-daemon --stop --quiet --signal 1 --exec /usr/bin/irexec
  152.         fi
  153.  
  154.         if [ "$START_LIRCD" = "true" ]; then
  155.             start-stop-daemon --stop --quiet --signal 1 --exec /usr/sbin/lircd
  156.         fi
  157.  
  158.         if [ "$START_LIRCMD" = "true" ]; then
  159.             start-stop-daemon --stop --quiet --signal 1 --exec /usr/sbin/lircmd
  160.         fi
  161.         ;;
  162.     restart)
  163.         $0 stop
  164.         sleep 1
  165.         $0 start
  166.         ;;
  167.     *)
  168.         echo "Usage: /etc/init.d/lircd {start|stop|reload|restart|force-reload}"
  169.     exit 1
  170. esac
  171.  
  172. exit 0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement