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