diff options
Diffstat (limited to 'src')
-rwxr-xr-x | src/99_smartmonster_sleep.d.sh | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/src/99_smartmonster_sleep.d.sh b/src/99_smartmonster_sleep.d.sh new file mode 100755 index 0000000..2977bdb --- /dev/null +++ b/src/99_smartmonster_sleep.d.sh @@ -0,0 +1,60 @@ +#!/bin/bash +# +# smartmonster_sleep.d.sh - hook sleep, hibernate and shutdown events +# +# + +if [ "$USER" != "root" ]; +then + echo "You must be root!"; + exit 1; +fi + +STATE_DIR="/var/lib/smartmonster"; +HOOK_DIR="/etc/pm/sleep.d/"; +HIBERNATE_DATE_STAMP="$STATE_DIR/hibernate.stamp"; +SUSPEND_DATE_STAMP="$STATE_DIR/suspend.stamp"; +THAW_DATE_STAMP="$STATE_DIR/thaw.stamp"; +RESUME_DATE_STAMP="$STATE_DIR/resume.stamp"; +UNHANDLED_STAMP="$STATE_DIR/unhandled.stamp"; + +# XXX: Hello TOCTOU! +if [ ! -d "$STATE_DIR" ]; +then + echo "You have no $STATE_DIR; creating it!"; + mkdir -p $STATE_DIR; + + if [ $? != 0 ]; + then + echo "Unable to create $STATE_DIR!"; + exit 1; + fi + +fi + +# Load the common power related functions +. /usr/lib/pm-utils/functions + +case "$1" in + hibernate) + update_power_counter.sh; + date -R > $HIBERNATE_DATE_STAMP; + ;; + suspend) + update_power_counter.sh; + date -R > $SUSPEND_DATE_STAMP; + ;; + thaw) + date -R > $THAW_DATE_STAMP; + ;; + resume) + update_power_counter.sh; + date -R > $RESUME_DATE_STAMP; + ;; + + *) + echo "Unhandled case: $1" > $UNHANDLED_STAMP; + ;; +esac + +exit $? |