#!/bin/sh
### BEGIN INIT INFO
# Provides:          acpid
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# X-Start-Before:    kdm gdm3 xdm lightdm
# X-Stop-After:      kdm gdm3 xdm lightdm
# Default-Start:     2 3 4 5
# Default-Stop:      
# Short-Description: Start the Advanced Configuration and Power Interface daemon
# Description:       Provide a socket for X11, hald and others to multiplex
#                    kernel ACPI events.
### END INIT INFO

set -e

setvar ACPID = ""/usr/sbin/acpid""
setvar DEFAULTS = ""/etc/default/acpid""

# Check for daemon presence
test -x $ACPID || exit 0

setvar OPTIONS = """"
setvar MODULES = """"
# Include acpid defaults if available
test -r $DEFAULTS && source "$DEFAULTS"

# Get lsb functions
source /lib/lsb/init-functions

# As the name says. If the kernel supports modules, it'll try to load
# the ones listed in "MODULES".
proc load_modules {
    test -f /proc/modules || return 0
    if test $MODULES = "all" {
        setvar MODULES = "$(sed -rn 's#^(/lib/modules/[^/]+/)?kernel/(drivers|ubuntu)/acpi/([^/]+/)*(.*)\.ko:.*#\4#p' "/lib/modules/$(uname -r)/modules.dep")"
    }

    if test -z $MODULES {
        return
    }

    log_begin_msg "Loading ACPI kernel modules..."
    # work around a bug in initramfs which leaks this env var Launchpad #291619
    # and a bug in modprobe --all --quiet which doesn't load all modules and
    # exits with non-zero exit status Debian #504088
    unset MODPROBE_OPTIONS
    modprobe --all --use-blacklist $MODULES 2>/dev/null
    log_end_msg $?
}

case (1) {
  start {
    load_modules || true
    log_begin_msg "Starting ACPI services..."
    start-stop-daemon --start --quiet --oknodo --exec $ACPID -- $OPTIONS
    log_end_msg $?
    }
  stop {
    log_begin_msg "Stopping ACPI services..."
    start-stop-daemon --stop --quiet --oknodo --retry 2 --exec $ACPID
    log_end_msg $?
    }
  restart {
    $0 stop
    sleep 1
    $0 start
    }
  reload|force-reload { 
    log_begin_msg "Reloading ACPI services..."
    start-stop-daemon --stop --signal 1 --exec $ACPID
    log_end_msg $?
    }
  status {
    status_of_proc $ACPID acpid
    }
  * {
    log_success_msg "Usage: /etc/init.d/acpid {start|stop|restart|reload|force-reload|status}"
    exit 1
}
}