From: Zbigniew Jędrzejewski-Szmek Date: Thu, 23 Apr 2020 10:46:23 +0000 (+0200) Subject: bus-introspect: list the interfaces with "list" X-Git-Tag: v246-rc1~433^2~14 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=8b4933973eada07454816853d9b7cdb48e7f306a;p=thirdparty%2Fsystemd.git bus-introspect: list the interfaces with "list" The output is not very well formatted, but it is still useful when testing this. --- diff --git a/src/shared/bus-util.c b/src/shared/bus-util.c index 4214aa340ea..df701a3bfe6 100644 --- a/src/shared/bus-util.c +++ b/src/shared/bus-util.c @@ -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);