]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
bus-introspect: list the interfaces with "list"
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Thu, 23 Apr 2020 10:46:23 +0000 (12:46 +0200)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Tue, 5 May 2020 20:36:38 +0000 (22:36 +0200)
The output is not very well formatted, but it is still useful when
testing this.

src/shared/bus-util.c

index 4214aa340ea2cc979c48e36dd33c2743e1f7beb5..df701a3bfe6ec3949e4286740b720f1d998ac567 100644 (file)
@@ -1638,6 +1638,17 @@ static int bus_introspect_implementation(
         return 0;
 }
 
+static void list_paths(
+                FILE *out,
+                const BusObjectImplementation* const* bus_objects) {
+
+        for (size_t i = 0; bus_objects[i]; i++) {
+                fprintf(out, "%s\t%s\n", bus_objects[i]->path, bus_objects[i]->interface);
+                if (bus_objects[i]->children)
+                        list_paths(out, bus_objects[i]->children);
+        }
+}
+
 int bus_introspect_implementations(
                 FILE *out,
                 const char *pattern,
@@ -1647,6 +1658,11 @@ int bus_introspect_implementations(
         _cleanup_free_ char *s = NULL;
         int r;
 
+        if (streq(pattern, "list")) {
+                list_paths(out, bus_objects);
+                return 0;
+        }
+
         struct introspect intro = {};
         bool is_interface = interface_name_is_valid(pattern);