]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
udev-util: assume system is running on AC power when no battery found 24220/head
authorYu Watanabe <watanabe.yu+github@gmail.com>
Fri, 5 Aug 2022 18:42:29 +0000 (03:42 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Fri, 5 Aug 2022 18:42:32 +0000 (03:42 +0900)
Fixes #24214.

src/shared/udev-util.c

index aceb39df6ae352caf49e676b59b040e8e3ea7e4e..0c6dea4264d8119f2d2b0c62da06a10054a58e95 100644 (file)
@@ -661,7 +661,7 @@ static int device_is_power_sink(sd_device *device) {
 
 int on_ac_power(void) {
         _cleanup_(sd_device_enumerator_unrefp) sd_device_enumerator *e = NULL;
-        bool found_offline = false, found_online = false;
+        bool found_offline = false, found_online = false, found_battery = false;
         sd_device *d;
         int r;
 
@@ -692,6 +692,7 @@ int on_ac_power(void) {
                  * for defined power source types. Also see:
                  * https://docs.kernel.org/admin-guide/abi-testing.html#abi-file-testing-sysfs-class-power */
                 if (streq(val, "Battery")) {
+                        found_battery = true;
                         log_device_debug(d, "The power supply is battery, ignoring.");
                         continue;
                 }
@@ -732,10 +733,12 @@ int on_ac_power(void) {
                 log_debug("Found at least one online non-battery power supply, system is running on AC power.");
         else if (!found_offline)
                 log_debug("Found no offline non-battery power supply, assuming system is running on AC power.");
+        else if (!found_battery)
+                log_debug("Found no battery, assuming system is running on AC power.");
         else
                 log_debug("All non-battery power supplies are offline, assuming system is running with battery.");
 
-        return found_online || !found_offline;
+        return found_online || !found_offline || !found_battery;
 }
 
 bool udev_available(void) {