]> git.pld-linux.org Git - packages/acpid.git/blobdiff - acpid.init
- IBM_LAPTOP is back (thinkpad_acpi module)
[packages/acpid.git] / acpid.init
index 6f5b7f70ac36cafcbd8f52792d6aa078a00afa5c..4100a767ccc85aab707b7f44675f90e13538be12 100644 (file)
 #
 # pidfile:     /var/run/acpid.pid
 
+# Check for ACPI event-file support on kernel side
+[ -r /proc/acpi/event ] || exit 0
+
 # Source function library.
 . /etc/rc.d/init.d/functions
 
+# Initial values (just in case):
+LAPTOP_MODULES=""
+VARIOUS_MODULES=""
+ASUS_LAPTOP=""
+TOSHIBA_LAPTOP=""
+MODULES=""
+
 # Configuration file.
 . /etc/sysconfig/acpid
 
+# As the name says. If the kernel supports modules,
+# it'll try to load the ones listed in "MODULES".
+load_modules() {
+       [ -f /proc/modules ] || return 0
 
-RETVAL=0
+       if [ "$MODULES" = "all" ]; then
+               MODULES=$(sed -rn 's#^kernel/(drivers|misc)/acpi/([^/]+/)*(.*)\.ko(\.gz)?:.*#\3#p' /lib/modules/$(uname -r)/modules.dep)
+       else
+               # assemble from old lists
+               MODULES="$MODULES $LAPTOP_MODULES"
+               MODULES="$MODULES $VARIOUS_MODULES"
+               if is_yes "$ASUS_LAPTOP"; then
+                       MODULES="$MODULES asus_acpi"
+               fi
+               if is_yes "$TOSHIBA_LAPTOP"; then
+                       MODULES="$MODULES toshiba_acpi"
+               fi
+               if is_yes "$IBM_LAPTOP"; then
+                       MODULES="$MODULES ibm_acpi"
+               fi
+               # strip spaces
+               MODULES=$(echo ${MODULES})
+       fi
+
+       if [ -z "$MODULES" ]; then
+               return
+       fi
+
+       show "Loading ACPI modules..."; busy
+       modprobe --all $MODULES && ok || fail
+}
+
+# Start daemons.
+start() {
+       if [ -f /var/lock/subsys/acpid ]; then
+               msg_already_running "ACPI Event Daemon"
+               return
+       fi
+
+       load_modules
 
+       # starting:
+       msg_starting "ACPI Event Daemon"
+       daemon /usr/sbin/acpid $PROGRAM_ARGS
+       RETVAL=$?
+       [ $RETVAL -eq 0 ] && touch /var/lock/subsys/acpid
+}
+
+# Stop daemons.
+stop() {
+       if [ ! -f /var/lock/subsys/acpid ]; then
+               msg_not_running "ACPI Event Daemon"
+               return
+       fi
+
+       msg_stopping "ACPI Event Daemon"
+       killproc acpid
+       rm -f /var/lock/subsys/acpid >/dev/null 2>&1
+}
+
+condrestart() {
+       if [ ! -f /var/lock/subsys/acpid ]; then
+               msg_not_running "ACPI Event Daemon"
+               RETVAL=$1
+               return
+       fi
+
+       stop
+       start
+}
+
+RETVAL=0
 # See how we were called.
 case "$1" in
-       start)
-       # Start daemons.
-               if [ ! -f /var/lock/subsys/acpid ]; then
-                       if [ ! -f /proc/acpi/event ]; then
-                               modprobe ospm_button
-                       fi
-                       msg_starting acpid $PROGRAM_ARGS
-                       daemon acpid
-                       RETVAL=$?
-                       [ $RETVAL -eq 0 ] && touch /var/lock/subsys/acpid
-               else
-                       msg_already_running acpid
-               fi
-               ;;
-       stop)
-               # Stop daemons.
-               if [ -f /var/lock/subsys/acpid ]; then
-                       msg_stopping acpid
-                       killproc acpid
-                       rm -f /var/lock/subsys/acpid >/dev/null 2>&1
-               else
-                       msg_not_running acpid
-                       exit 1
-               fi
-               ;;
-       reload)
-                if [ -f /var/lock/subsys/acpid ]; then
-                        msg_reloading acpid
-                        killproc acpid -HUP
-                else
-                        msg_not_running acpid
-                        exit 1
-                fi
-               ;;
-       restart)
-               $0 stop
-               $0 start
-               ;;
-       status)
-               status acpid
-               ;;
-       *)
-               msg_Usage "$0 {start|stop|restart|reload|status}"
-               exit 1
+  start)
+       start
+       ;;
+  stop)
+       stop
+       ;;
+  restart)
+       stop
+       start
+       ;;
+  try-restart)
+       condrestart 0
+       ;;
+  reload|force-reload)
+       if [ -f /var/lock/subsys/acpid ]; then
+               msg_reloading "ACPI Event Daemon"
+               killproc acpid -HUP
+               RETVAL=$?
+       else
+               msg_not_running "ACPI Event Daemon"
+               exit 7
+       fi
+       ;;
+  status)
+       status acpid
+       ;;
+  *)
+       msg_usage "$0 {start|stop|restart|try-restart|reload|force-reload|status}"
+       exit 3
 esac
+
+exit $RETVAL
This page took 0.153691 seconds and 4 git commands to generate.