File pm-utils-0.99.4-on_ac_power-no-dbus-fallback.diff of Package pm-utils

Index: b/src/on_ac_power
===================================================================
--- a/src/on_ac_power
+++ b/src/on_ac_power
@@ -29,19 +29,30 @@
 # along with this program; if not, write to the Free Software
 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 #
 
 # Check for AC/DC/etc adapters
-ac_adapters=$(hal-find-by-capability --capability ac_adapter)
+ac_adapters=$(hal-find-by-capability --capability ac_adapter 2>/dev/null)
+error=$?
 
-# If there are no AC adapters, it is most likely a desktop.
-# Assume online, since we have no data.
-[ -z "$ac_adapters" ] && exit 0
+if [ $error -eq 0 ]; then # dbus and HAL are there
+	# If there are no AC adapters, it is most likely a desktop.
+	# Assume online, since we have no data.
+	[ -z "$ac_adapters" ] && exit 0
 
-# If any of them are online, then we're done.
-for device in $ac_adapters ; do
-	present=$(hal-get-property --udi $device --key ac_adapter.present)
-	[ "$present" == "true" ] && exit 0
-done
+	# If any of them are online, then we're done.
+	for device in $ac_adapters ; do
+		present=$(hal-get-property --udi $device --key ac_adapter.present)
+		[ "$present" == "true" ] && exit 0
+	done
+else # fall back to /sys/.../ac/... parsing...
+	ADAP=/sys/bus/acpi/drivers/ac/*/power_supply/*/online
+	for i in $ADAP; do
+		# no adapter -> assume online
+		[ $i = "/sys/bus/acpi/drivers/ac/*/power_supply/*/online" ] && exit 0
+		read a < $i
+		[ $a = 1 ] && exit 0
+	done
+fi
 
 # If there are adapters, but none are online, we're not on AC.
 exit 1
openSUSE Build Service is sponsored by