]> gitweb.fluxo.info Git - smartmonster.git/commitdiff
initial hook for sleep, hibernate, wake, and thaw events
authorJacob Appelbaum <jacob@appelbaum.net>
Sat, 30 Apr 2011 22:00:57 +0000 (15:00 -0700)
committerJacob Appelbaum <jacob@appelbaum.net>
Sat, 30 Apr 2011 22:00:57 +0000 (15:00 -0700)
src/99_smartmonster_sleep.d.sh [new file with mode: 0755]

diff --git a/src/99_smartmonster_sleep.d.sh b/src/99_smartmonster_sleep.d.sh
new file mode 100755 (executable)
index 0000000..2977bdb
--- /dev/null
@@ -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 $?