chiark / gitweb /
shell-completion: busctl
[elogind.git] / src / libsystemd-bus / bus-dump.c
index 9545e181d8d1bab2af3b9b10d6c67f482a0d4ef5..ddad4183a2f0b704922b73c3e974c203e5abd09d 100644 (file)
@@ -56,15 +56,21 @@ int bus_message_dump(sd_bus_message *m, FILE *f, bool with_header) {
 
         if (with_header) {
                 fprintf(f,
-                        "%s%s%sType=%s%s%s  Endian=%c  Flags=%u  Version=%u  Serial=%u ",
+                        "%s%s%sType=%s%s%s  Endian=%c  Flags=%u  Version=%u",
                         m->header->type == SD_BUS_MESSAGE_METHOD_ERROR ? ansi_highlight_red() :
                         m->header->type == SD_BUS_MESSAGE_METHOD_RETURN ? ansi_highlight_green() :
                         m->header->type != SD_BUS_MESSAGE_SIGNAL ? ansi_highlight() : "", draw_special_char(DRAW_TRIANGULAR_BULLET), ansi_highlight_off(),
                         ansi_highlight(), bus_message_type_to_string(m->header->type), ansi_highlight_off(),
                         m->header->endian,
                         m->header->flags,
-                        m->header->version,
-                        BUS_MESSAGE_SERIAL(m));
+                        m->header->version);
+
+                /* Display synthetic message serial number in a more readable
+                 * format than (uint32_t) -1 */
+                if (BUS_MESSAGE_SERIAL(m) == 0xFFFFFFFFULL)
+                        fprintf(f, " Serial=-1");
+                else
+                        fprintf(f, " Serial=%u", BUS_MESSAGE_SERIAL(m));
 
                 if (m->reply_serial != 0)
                         fprintf(f, "  ReplySerial=%u", m->reply_serial);
@@ -111,7 +117,7 @@ int bus_message_dump(sd_bus_message *m, FILE *f, bool with_header) {
 
         fprintf(f, "  MESSAGE \"%s\" {\n", strempty(m->root_container.signature));
 
-        for(;;) {
+        for (;;) {
                 _cleanup_free_ char *prefix = NULL;
                 const char *contents = NULL;
                 char type;
@@ -300,7 +306,7 @@ int bus_creds_dump(sd_bus_creds *c, FILE *f) {
         const char *u = NULL, *uu = NULL, *s = NULL, *sl = NULL;
         uid_t owner, audit_loginuid;
         uint32_t audit_sessionid;
-        char **cmdline = NULL;
+        char **cmdline = NULL, **well_known = NULL;
         int r;
 
         assert(c);
@@ -340,7 +346,7 @@ int bus_creds_dump(sd_bus_creds *c, FILE *f) {
         if (sd_bus_creds_get_cmdline(c, &cmdline) >= 0) {
                 char **i;
 
-                fputs("  CommandLine=", f);
+                fputs("  CommandLine={", f);
                 STRV_FOREACH(i, cmdline) {
                         if (i != cmdline)
                                 fputc(' ', f);
@@ -348,7 +354,7 @@ int bus_creds_dump(sd_bus_creds *c, FILE *f) {
                         fputs(*i, f);
                 }
 
-                fputs("\n", f);
+                fputs("}\n", f);
         }
 
         if (c->mask & SD_BUS_CREDS_CGROUP)
@@ -381,6 +387,26 @@ int bus_creds_dump(sd_bus_creds *c, FILE *f) {
         if (audit_loginuid_is_set || audit_sessionid_is_set)
                 fputs("\n", f);
 
+        if (c->mask & SD_BUS_CREDS_UNIQUE_NAME)
+                fprintf(f, "  UniqueName=%s", c->unique_name);
+
+        if (sd_bus_creds_get_well_known_names(c, &well_known) >= 0) {
+                char **i;
+
+                fputs("  WellKnownNames={", f);
+                STRV_FOREACH(i, well_known) {
+                        if (i != well_known)
+                                fputc(' ', f);
+
+                        fputs(*i, f);
+                }
+
+                fputc('}', f);
+        }
+
+        if (c->mask & SD_BUS_CREDS_UNIQUE_NAME || well_known)
+                fputc('\n', f);
+
         dump_capabilities(c, f, "EffectiveCapabilities", sd_bus_creds_has_effective_cap);
         dump_capabilities(c, f, "PermittedCapabilities", sd_bus_creds_has_permitted_cap);
         dump_capabilities(c, f, "InheritableCapabilities", sd_bus_creds_has_inheritable_cap);