X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Fjournal%2Fcoredumpctl.c;h=fefd02bc9b26ec3a693afa91538a55d2109004fa;hp=541dda022d9849da579d2e6b6f194386eeb91a6f;hb=81cef14fce9c64afed600614403ecae7cd79781d;hpb=31a020ced371fcf2a30c795c0f8ed1361e70904d diff --git a/src/journal/coredumpctl.c b/src/journal/coredumpctl.c index 541dda022..fefd02bc9 100644 --- a/src/journal/coredumpctl.c +++ b/src/journal/coredumpctl.c @@ -280,7 +280,7 @@ static int retrieve(const void *data, return 0; } -#define filename_escape(s) xescape((s), "./") +#define filename_escape(s) xescape((s), "./ ") static int make_coredump_path(sd_journal *j, char **ret) { _cleanup_free_ char @@ -409,9 +409,10 @@ static int print_info(FILE *file, sd_journal *j, bool need_space) { *unit = NULL, *user_unit = NULL, *session = NULL, *boot_id = NULL, *machine_id = NULL, *hostname = NULL, *coredump = NULL, *slice = NULL, *cgroup = NULL, - *owner_uid = NULL, *message = NULL; + *owner_uid = NULL, *message = NULL, *timestamp = NULL; const void *d; size_t l; + int r; assert(file); assert(j); @@ -430,6 +431,7 @@ static int print_info(FILE *file, sd_journal *j, bool need_space) { retrieve(d, l, "COREDUMP_OWNER_UID", &owner_uid); retrieve(d, l, "COREDUMP_SLICE", &slice); retrieve(d, l, "COREDUMP_CGROUP", &cgroup); + retrieve(d, l, "COREDUMP_TIMESTAMP", ×tamp); retrieve(d, l, "_BOOT_ID", &boot_id); retrieve(d, l, "_MACHINE_ID", &machine_id); retrieve(d, l, "_HOSTNAME", &hostname); @@ -439,9 +441,14 @@ static int print_info(FILE *file, sd_journal *j, bool need_space) { if (need_space) fputs("\n", file); - fprintf(file, - " PID: %s%s%s\n", - ansi_highlight(), strna(pid), ansi_highlight_off()); + if (comm) + fprintf(file, + " PID: %s%s%s (%s)\n", + ansi_highlight(), strna(pid), ansi_highlight_off(), comm); + else + fprintf(file, + " PID: %s%s%s\n", + ansi_highlight(), strna(pid), ansi_highlight_off()); if (uid) { uid_t n; @@ -486,12 +493,26 @@ static int print_info(FILE *file, sd_journal *j, bool need_space) { fprintf(file, " Signal: %s\n", sgnl); } - if (exe) - fprintf(file, " Executable: %s%s%s\n", ansi_highlight(), exe, ansi_highlight_off()); - if (comm) - fprintf(file, " Comm: %s\n", comm); + if (timestamp) { + usec_t u; + + r = safe_atou64(timestamp, &u); + if (r >= 0) { + char absolute[FORMAT_TIMESTAMP_MAX], relative[FORMAT_TIMESPAN_MAX]; + + fprintf(file, + " Timestamp: %s (%s)\n", + format_timestamp(absolute, sizeof(absolute), u), + format_timestamp_relative(relative, sizeof(relative), u)); + + } else + fprintf(file, " Timestamp: %s\n", timestamp); + } + if (cmdline) fprintf(file, " Command Line: %s\n", cmdline); + if (exe) + fprintf(file, " Executable: %s%s%s\n", ansi_highlight(), exe, ansi_highlight_off()); if (cgroup) fprintf(file, " Control Group: %s\n", cgroup); if (unit)