summaryrefslogtreecommitdiff
path: root/scripts
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
parent12af86395ff3726789f72e96aa1367e2e428b972 (diff)
downloadopenrc-1d174cc60ca640146efd73948ff0e81ae0148f3d.tar.gz
openrc-1d174cc60ca640146efd73948ff0e81ae0148f3d.tar.bz2
openrc-1d174cc60ca640146efd73948ff0e81ae0148f3d.tar.xz
Move on_ac_power to a shell script.
Fixes #204
Diffstat (limited to 'scripts')
-rw-r--r--scripts/Makefile5
-rwxr-xr-xscripts/on_ac_power33
2 files changed, 38 insertions, 0 deletions
diff --git a/scripts/Makefile b/scripts/Makefile
new file mode 100644
index 0000000..3d41631
--- /dev/null
+++ b/scripts/Makefile
@@ -0,0 +1,5 @@
+DIR= ${LIBEXECDIR}/bin
+BIN= on_ac_power
+
+MK= ../mk
+include ${MK}/scripts.mk
diff --git a/scripts/on_ac_power b/scripts/on_ac_power
new file mode 100755
index 0000000..0804952
--- /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 ]