X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Flibsystemd-bus%2Fbus-dump.c;h=78e7597ed540bca227f9fb752b2be0e6e485f4be;hb=843f737ade9c73609a2280dd3dd16e18222a5dcb;hp=9545e181d8d1bab2af3b9b10d6c67f482a0d4ef5;hpb=5b12334d35eadf1f45cc3d631fd1a2e72ffaea0a;p=elogind.git diff --git a/src/libsystemd-bus/bus-dump.c b/src/libsystemd-bus/bus-dump.c index 9545e181d..78e7597ed 100644 --- a/src/libsystemd-bus/bus-dump.c +++ b/src/libsystemd-bus/bus-dump.c @@ -19,8 +19,6 @@ along with systemd; If not, see . ***/ -#include - #include "util.h" #include "capability.h" #include "strv.h" @@ -56,18 +54,24 @@ 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_COOKIE(m) == 0xFFFFFFFFULL) + fprintf(f, " Cookie=-1"); + else + fprintf(f, " Cookie=%lu", (unsigned long) BUS_MESSAGE_COOKIE(m)); - if (m->reply_serial != 0) - fprintf(f, " ReplySerial=%u", m->reply_serial); + if (m->reply_cookie != 0) + fprintf(f, " ReplyCookie=%lu", (unsigned long) m->reply_cookie); fputs("\n", f); @@ -111,7 +115,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; @@ -194,7 +198,7 @@ int bus_message_dump(sd_bus_message *m, FILE *f, bool with_header) { break; case SD_BUS_TYPE_BOOLEAN: - fprintf(f, "%sBOOLEAN %s%s%s;\n", prefix, ansi_highlight(), yes_no(basic.i), ansi_highlight_off()); + fprintf(f, "%sBOOLEAN %s%s%s;\n", prefix, ansi_highlight(), true_false(basic.i), ansi_highlight_off()); break; case SD_BUS_TYPE_INT16: @@ -275,12 +279,15 @@ static void dump_capabilities( for (;;) { if (r > 0) { + _cleanup_cap_free_charp_ char *t; + if (n > 0) fputc(' ', f); if (n % 4 == 3) fputs("\n ", f); - fputs(cap_to_name(i), f); + t = cap_to_name(i); + fprintf(f, "%s", t); n++; } @@ -300,7 +307,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 +347,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 +355,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 +388,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);