From: Mike Yuan Date: Wed, 20 Sep 2023 13:49:31 +0000 (+0800) Subject: sleep/battery-capacity: don't report we have trip alarm if no battery is found X-Git-Tag: v255-rc1~407^2~4 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=fbc1dbf2960c4c6254612898251ca61907b6c4dd;p=thirdparty%2Fsystemd.git sleep/battery-capacity: don't report we have trip alarm if no battery is found --- diff --git a/src/sleep/battery-capacity.c b/src/sleep/battery-capacity.c index c88874b363c..a0cdda4edbf 100644 --- a/src/sleep/battery-capacity.c +++ b/src/sleep/battery-capacity.c @@ -351,6 +351,7 @@ int get_total_suspend_interval(Hashmap *last_capacity, usec_t *ret) { /* Return true if all batteries have acpi_btp support */ int battery_trip_point_alarm_exists(void) { _cleanup_(sd_device_enumerator_unrefp) sd_device_enumerator *e = NULL; + bool has_battery = false; int r; r = battery_enumerator_new(&e); @@ -358,19 +359,23 @@ int battery_trip_point_alarm_exists(void) { return log_debug_errno(r, "Failed to initialize battery enumerator: %m"); FOREACH_DEVICE(e, dev) { - int battery_alarm; - const char *s; + const char *alarm_attr; + int has_alarm; - r = sd_device_get_sysattr_value(dev, "alarm", &s); + has_battery = true; + + r = sd_device_get_sysattr_value(dev, "alarm", &alarm_attr); if (r < 0) - return log_device_debug_errno(dev, r, "Failed to read battery alarm: %m"); + return log_device_debug_errno(dev, r, "Failed to read battery alarm attribute: %m"); - r = safe_atoi(s, &battery_alarm); + r = safe_atoi(alarm_attr, &has_alarm); if (r < 0) - return log_device_debug_errno(dev, r, "Failed to parse battery alarm: %m"); - if (battery_alarm <= 0) + return log_device_debug_errno(dev, r, + "Failed to parse battery alarm attribute '%s': %m", + alarm_attr); + if (has_alarm <= 0) return false; } - return true; + return has_battery; } diff --git a/src/sleep/battery-capacity.h b/src/sleep/battery-capacity.h index 989e67ca180..283b0f26217 100644 --- a/src/sleep/battery-capacity.h +++ b/src/sleep/battery-capacity.h @@ -12,4 +12,5 @@ int estimate_battery_discharge_rate_per_hour( Hashmap *current_capacity, usec_t before_timestamp, usec_t after_timestamp); + int battery_trip_point_alarm_exists(void);