aboutsummaryrefslogtreecommitdiff
path: root/scripts/on_ac_power
diff options
context:
space:
mode:
authorRoy Marples <roy@marples.name>2009-12-10 22:30:56 +0000
committerRoy Marples <roy@marples.name>2009-12-10 22:30:56 +0000
commit1d174cc60ca640146efd73948ff0e81ae0148f3d (patch)
tree32fece5fcbb8005ee73251f9374b2abc7fc80f7b /scripts/on_ac_power
parent12af86395ff3726789f72e96aa1367e2e428b972 (diff)
Move on_ac_power to a shell script.
Fixes #204
Diffstat (limited to 'scripts/on_ac_power')
-rwxr-xr-xscripts/on_ac_power33
1 files changed, 33 insertions, 0 deletions
diff --git a/scripts/on_ac_power b/scripts/on_ac_power
new file mode 100755
index 00000000..08049525
--- /dev/null
+++ b/scripts/on_ac_power
@@ -0,0 +1,33 @@
+#!/bin/sh
+# Detect AC power or not in a portable way
+# Copyright (c) 2007-2009 Roy Marples <roy@marples.name>
+
+# Exit 0 if on AC power, 1 if not and 255 if we don't know how to work it out
+if [ -f /proc/acpi/ac_adapter/AC*/state ]; then
+ cat /proc/acpi/ac_adapter/AC*/state | while read line; do
+ case "$line" in
+ "state:"*"off-line") return 128;;
+ esac
+ done
+elif [ -f /proc/pmu/info ]; then
+ cat /proc/pmu/info | while read line; do
+ case "$line" in
+ "AC Power"*": 0") return 128;;
+ esac
+ done
+elif type envstat >/dev/null 2>&1; then
+ # NetBSD has envstat
+ envstat -d acpiacad0 2>/dev/null | while read line; do
+ case "$line" in
+ "connected:"*"OFF") return 128;;
+ esac
+ done
+elif sysctl -q hw.acpi.acline >/dev/null 2>/dev/null; then
+ case $(sysctl -n hw.acpi.acline) in
+ 0) return 1;;
+ *) return 0;;
+ esac
+else
+ exit 255
+fi
+[ $? != 128 ]