From 8b4933973eada07454816853d9b7cdb48e7f306a Mon Sep 17 00:00:00 2001 From: =?utf8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Thu, 23 Apr 2020 12:46:23 +0200 Subject: [PATCH] bus-introspect: list the interfaces with "list" The output is not very well formatted, but it is still useful when testing this. --- src/shared/bus-util.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) 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); -- 2.47.3