aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile2
-rw-r--r--init.d/fsck.in34
-rw-r--r--scripts/Makefile5
-rwxr-xr-xscripts/on_ac_power33
4 files changed, 40 insertions, 34 deletions
diff --git a/Makefile b/Makefile
index 06e48eb1..8f9cc959 100644
--- a/Makefile
+++ b/Makefile
@@ -4,7 +4,7 @@
include Makefile.inc
-SUBDIR= conf.d etc init.d man sh src
+SUBDIR= conf.d etc init.d man scripts sh src
# Build our old net foo or not
_OLDNET_SH= case "${MKOLDNET}" in \
diff --git a/init.d/fsck.in b/init.d/fsck.in
index 220b6492..de44ea8b 100644
--- a/init.d/fsck.in
+++ b/init.d/fsck.in
@@ -30,38 +30,6 @@ _forcefsck()
[ -e /forcefsck ] || get_bootparam forcefsck
}
-_on_ac_power()
-{
- 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
- return 0
- fi
- [ $? != 128 ]
-}
-
start()
{
local fsck_opts= p= check_extra=
@@ -73,7 +41,7 @@ start()
if _forcefsck; then
fsck_opts="$fsck_opts -f"
check_extra="(check forced)"
- elif ! yesno ${fsck_on_battery:-YES} && ! _on_ac_power; then
+ elif ! yesno ${fsck_on_battery:-YES} && ! on_ac_power; then
ewarn "Skipping fsck due to not being on AC power"
return 0
fi
diff --git a/scripts/Makefile b/scripts/Makefile
new file mode 100644
index 00000000..3d41631e
--- /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 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 ]