92 lines
3.7 KiB
Bash
92 lines
3.7 KiB
Bash
#!/bin/sh
|
|
#
|
|
# apmd_proxy - program dispatcher for APM daemon
|
|
#
|
|
# Written by Craig Markwardt (craigm@lheamail.gsfc.nasa.gov) 21 May 1999
|
|
# Modified for Debian by Avery Pennarun
|
|
#
|
|
# This shell script is called by the APM daemon (apmd) when a power
|
|
# management event occurs. Its first and second arguments describe the
|
|
# event. For example, apmd will call "apmd_proxy suspend system" just
|
|
# before the system is suspended.
|
|
#
|
|
# Here are the possible arguments:
|
|
#
|
|
# start - APM daemon has started
|
|
# stop - APM daemon is shutting down
|
|
# suspend critical - APM system indicates critical suspend (++)
|
|
# suspend system - APM system has requested suspend mode
|
|
# suspend user - User has requested suspend mode
|
|
# standby system - APM system has requested standby mode
|
|
# standby user - User has requested standby mode
|
|
# resume suspend - System has resumed from suspend mode
|
|
# resume standby - System has resumed from standby mode
|
|
# resume critical - System has resumed from critical suspend
|
|
# change battery - APM system reported low battery
|
|
# change power - APM system reported AC/battery change
|
|
# change time - APM system reported time change (*)
|
|
# change capability - APM system reported config. change (+)
|
|
#
|
|
# (*) - APM daemon may be configured to not call these sequences
|
|
# (+) - Available if APM kernel supports it.
|
|
# (++) - "suspend critical" is never passed to apmd from the kernel,
|
|
# so we will never see it here. Scripts that process "resume
|
|
# critical" events need to take this into account.
|
|
#
|
|
# It is the proxy script's responsibility to examine the APM status
|
|
# (via /proc/apm) or other status and to take appropriate actions.
|
|
# For example, the script might unmount network drives before the
|
|
# machine is suspended.
|
|
#
|
|
# In Debian, the usual way of adding functionality to the proxy is to
|
|
# add a script to /etc/apm/event.d. This script will be called by
|
|
# apmd_proxy (via run-parts) with the same arguments.
|
|
#
|
|
# If it is important that a certain set of script be run in a certain
|
|
# order on suspend and in a different order on resume, then put all
|
|
# the scripts in /etc/apm/scripts.d instead of /etc/apm/event.d and
|
|
# symlink to these from /etc/apm/suspend.d, /etc/apm/resume.d and
|
|
# /etc/apm/other.d using names whose lexicographical order is the same
|
|
# as the desired order of execution.
|
|
#
|
|
# If the kernel's APM driver supports it, apmd_proxy can return a non-zero
|
|
# exit status on suspend and standby events, indicating that the suspend
|
|
# or standby event should be rejected.
|
|
#
|
|
# *******************************************************************
|
|
|
|
set -e
|
|
|
|
# The following doesn't yet work, because current kernels (up to at least
|
|
# 2.4.20) do not support rejection of APM events. Supporting this would
|
|
# require substantial modifications to the APM driver. We will re-enable
|
|
# this feature if the driver is ever modified. -- cph@debian.org
|
|
#
|
|
#SUSPEND_ON_AC=false
|
|
#[ -r /etc/apm/apmd_proxy.conf ] && . /etc/apm/apmd_proxy.conf
|
|
#
|
|
#if [ "${SUSPEND_ON_AC}" = "false" -a "${2}" = "system" ] \
|
|
# && on_ac_power >/dev/null; then
|
|
# # Reject system suspends and standbys if we are on AC power
|
|
# exit 1 # Reject (NOTE kernel support must be enabled)
|
|
#fi
|
|
|
|
if [ "${1}" = "suspend" -o "${1}" = "standby" ]; then
|
|
run-parts -a "${1}" -a "${2}" /etc/apm/event.d
|
|
if [ -d /etc/apm/suspend.d ]; then
|
|
run-parts -a "${1}" -a "${2}" /etc/apm/suspend.d
|
|
fi
|
|
elif [ "${1}" = "resume" ]; then
|
|
if [ -d /etc/apm/resume.d ]; then
|
|
run-parts -a "${1}" -a "${2}" /etc/apm/resume.d
|
|
fi
|
|
run-parts -a "${1}" -a "${2}" /etc/apm/event.d
|
|
else
|
|
run-parts -a "${1}" -a "${2}" /etc/apm/event.d
|
|
if [ -d /etc/apm/other.d ]; then
|
|
run-parts -a "${1}" -a "${2}" /etc/apm/other.d
|
|
fi
|
|
fi
|
|
|
|
exit 0
|