]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
sleep/battery-capacity: don't report we have trip alarm if no battery is found
authorMike Yuan <me@yhndnzj.com>
Wed, 20 Sep 2023 13:49:31 +0000 (21:49 +0800)
committerMike Yuan <me@yhndnzj.com>
Wed, 27 Sep 2023 13:48:39 +0000 (21:48 +0800)
src/sleep/battery-capacity.c
src/sleep/battery-capacity.h

index c88874b363c99f4d4a29a2ab988600e3bf734338..a0cdda4edbf01efdde03674be6da533ec0bf5a49 100644 (file)
@@ -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;
 }
index 989e67ca1808405a09ddbab490822d94f882c586..283b0f26217eec3c89919d8d658276f411ccb1c4 100644 (file)
@@ -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);