]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
util: make argument "subsystem" in device_wait_for_initialization() optional
authorYu Watanabe <watanabe.yu+github@gmail.com>
Sat, 1 Jun 2019 15:44:02 +0000 (00:44 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Mon, 3 Jun 2019 16:19:43 +0000 (01:19 +0900)
src/shared/udev-util.c

index 054feeda76128bcf8bbedc4281005fcf12072035..1ca5080d1c802ebf53a1e3fa05050f7563190a36 100644 (file)
@@ -3,6 +3,7 @@
 #include <errno.h>
 
 #include "alloc-util.h"
+#include "device-util.h"
 #include "env-file.h"
 #include "log.h"
 #include "parse-util.h"
@@ -119,7 +120,6 @@ int device_wait_for_initialization(sd_device *device, const char *subsystem, sd_
         int r;
 
         assert(device);
-        assert(subsystem);
 
         if (sd_device_get_is_initialized(device) > 0) {
                 if (ret)
@@ -139,9 +139,17 @@ int device_wait_for_initialization(sd_device *device, const char *subsystem, sd_
         if (r < 0)
                 return log_error_errno(r, "Failed to acquire monitor: %m");
 
-        r = sd_device_monitor_filter_add_match_subsystem_devtype(monitor, subsystem, NULL);
-        if (r < 0)
-                return log_error_errno(r, "Failed to add %s subsystem match to monitor: %m", subsystem);
+        if (!subsystem) {
+                r = sd_device_get_subsystem(device, &subsystem);
+                if (r < 0 && r != -ENOENT)
+                        return log_device_error_errno(device, r, "Failed to get subsystem: %m");
+        }
+
+        if (subsystem) {
+                r = sd_device_monitor_filter_add_match_subsystem_devtype(monitor, subsystem, NULL);
+                if (r < 0)
+                        return log_error_errno(r, "Failed to add %s subsystem match to monitor: %m", subsystem);
+        }
 
         r = sd_device_monitor_attach_event(monitor, event);
         if (r < 0)