From 1d174cc60ca640146efd73948ff0e81ae0148f3d Mon Sep 17 00:00:00 2001 From: Roy Marples Date: Thu, 10 Dec 2009 22:30:56 +0000 Subject: Move on_ac_power to a shell script. Fixes #204 --- Makefile | 2 +- init.d/fsck.in | 34 +--------------------------------- scripts/Makefile | 5 +++++ scripts/on_ac_power | 33 +++++++++++++++++++++++++++++++++ 4 files changed, 40 insertions(+), 34 deletions(-) create mode 100644 scripts/Makefile create mode 100755 scripts/on_ac_power 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 + +# 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 ] -- cgit v1.2.3