diff options
| author | Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> | 2019-04-21 22:23:45 +0200 |
|---|---|---|
| committer | Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> | 2019-04-23 22:58:29 +0200 |
| commit | d5c8d8233c2efbbd1e600d1a683ea04cd36cbac8 (patch) | |
| tree | 28b79b7987ca44b61d962872801891d4fb3c22a5 /src/busctl | |
| parent | d603324b4b28cfdced6677fa8eb70f0a95b4af4a (diff) | |
| download | systemd-d5c8d8233c2efbbd1e600d1a683ea04cd36cbac8.tar.gz | |
busctl: add introspect --xml-interface
This wraps the call to org.freedesktop.DBus.Introspectable.Introspect.
Using "busctl call" directly is inconvenient because busctl escapes the
string before printing.
Example:
$ busctl introspect --xml org.freedesktop.systemd1 /org/freedesktop/systemd1 | pygmentize -lxml | less -RF
Diffstat (limited to 'src/busctl')
| -rw-r--r-- | src/busctl/busctl.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/busctl/busctl.c b/src/busctl/busctl.c index 02f12dc701..86efc02bd8 100644 --- a/src/busctl/busctl.c +++ b/src/busctl/busctl.c @@ -50,6 +50,7 @@ static size_t arg_snaplen = 4096; static bool arg_list = false; static bool arg_quiet = false; static bool arg_verbose = false; +static bool arg_xml_interface = false; static bool arg_expect_reply = true; static bool arg_auto_start = true; static bool arg_allow_interactive_authorization = true; @@ -948,6 +949,12 @@ static int introspect(int argc, char **argv, void *userdata) { if (r < 0) return bus_log_parse_error(r); + if (arg_xml_interface) { + /* Just dump the received XML and finish */ + puts(xml); + return 0; + } + /* First, get list of all properties */ r = parse_xml_introspect(argv[2], xml, &ops, members); if (r < 0) @@ -2255,6 +2262,7 @@ static int parse_argv(int argc, char *argv[]) { ARG_SIZE, ARG_LIST, ARG_VERBOSE, + ARG_XML_INTERFACE, ARG_EXPECT_REPLY, ARG_AUTO_START, ARG_ALLOW_INTERACTIVE_AUTHORIZATION, @@ -2284,6 +2292,7 @@ static int parse_argv(int argc, char *argv[]) { { "list", no_argument, NULL, ARG_LIST }, { "quiet", no_argument, NULL, 'q' }, { "verbose", no_argument, NULL, ARG_VERBOSE }, + { "xml-interface", no_argument, NULL, ARG_XML_INTERFACE }, { "expect-reply", required_argument, NULL, ARG_EXPECT_REPLY }, { "auto-start", required_argument, NULL, ARG_AUTO_START }, { "allow-interactive-authorization", required_argument, NULL, ARG_ALLOW_INTERACTIVE_AUTHORIZATION }, @@ -2388,6 +2397,10 @@ static int parse_argv(int argc, char *argv[]) { arg_verbose = true; break; + case ARG_XML_INTERFACE: + arg_xml_interface = true; + break; + case ARG_EXPECT_REPLY: r = parse_boolean(optarg); if (r < 0) |
