diff -up pm-utils-1.2.6.1/src/on_ac_power.jx pm-utils-1.2.6.1/src/on_ac_power --- pm-utils-1.2.6.1/src/on_ac_power.jx 2009-06-13 21:56:09.000000000 -0400 +++ pm-utils-1.2.6.1/src/on_ac_power 2010-03-11 14:21:32.000000000 -0500 @@ -8,8 +8,9 @@ # NOTE: Batteries are not good indicators unless we also check their type, # as some peripherals have batteries. # -# Copyright 2006 Red Hat, Inc. -# Copyright 2006 Richard Hughes +# Copyright 2010 Red Hat, Inc. +# +# Author: Adam Jackson <ajax@redhat.com> # # Based on work from: # Richard Hughes <hughsient@gmail.com> @@ -28,20 +29,22 @@ # You should have received a copy of the GNU General Public License # 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)" +adaptors_present=0 + +for i in /sys/class/power_supply/* ; do + # check that it exists; the glob might not expand, after all. + [ -d "$i" ] || continue + + # if it's not an AC adaptor, ignore it + grep -qi mains "$i"/type || continue + + adaptors_present=1 -# 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 + # if it's an AC adaptor and it's online, we're done + [ `cat "$i"/online` -eq 1 ] && exit 0 done -# If there are adapters, but none are online, we're not on AC. -exit 1 +# if there are adaptors, they're offline. +# if there aren't, assume AC. +exit $adaptors_present