From de2c390731e563db0ee383bfd0073fdbef643ca2 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Tue, 7 Aug 2012 00:51:17 +0200 Subject: [PATCH] journalctl: include corrupted files in output If a journal file was rotated away because it was corrupted or dirty we should still show its contents via "journalctl". --- TODO | 2 -- src/journal/sd-journal.c | 14 ++++++++++---- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/TODO b/TODO index 6d99afe63..8acf45ede 100644 --- a/TODO +++ b/TODO @@ -47,8 +47,6 @@ Bugfixes: Features: -* .journal~ files should be parsed too - * allow services with no ExecStart= but with an ExecStop= * add proper journal support to "systemctl --user status ..." diff --git a/src/journal/sd-journal.c b/src/journal/sd-journal.c index fd0fb5733..33686ed2b 100644 --- a/src/journal/sd-journal.c +++ b/src/journal/sd-journal.c @@ -1098,7 +1098,9 @@ static int add_file(sd_journal *j, const char *prefix, const char *filename) { if ((j->flags & SD_JOURNAL_SYSTEM_ONLY) && !(streq(filename, "system.journal") || - (startswith(filename, "system@") && endswith(filename, ".journal")))) + streq(filename, "system.journal~") || + (startswith(filename, "system@") && + (endswith(filename, ".journal") || endswith(filename, ".journal~"))))) return 0; path = strjoin(prefix, "/", filename, NULL); @@ -1246,7 +1248,8 @@ static int add_directory(sd_journal *j, const char *prefix, const char *dirname) if (r != 0 || !de) break; - if (dirent_is_file_with_suffix(de, ".journal")) { + if (dirent_is_file_with_suffix(de, ".journal") || + dirent_is_file_with_suffix(de, ".journal~")) { r = add_file(j, m->path, de->d_name); if (r < 0) log_debug("Failed to add file %s/%s: %s", m->path, de->d_name, strerror(-r)); @@ -1324,7 +1327,8 @@ static int add_root_directory(sd_journal *j, const char *p) { if (r != 0 || !de) break; - if (dirent_is_file_with_suffix(de, ".journal")) { + if (dirent_is_file_with_suffix(de, ".journal") || + dirent_is_file_with_suffix(de, ".journal~")) { r = add_file(j, m->path, de->d_name); if (r < 0) log_debug("Failed to add file %s/%s: %s", m->path, de->d_name, strerror(-r)); @@ -1823,7 +1827,9 @@ static void process_inotify_event(sd_journal *j, struct inotify_event *e) { if (d) { sd_id128_t id; - if (!(e->mask & IN_ISDIR) && e->len > 0 && endswith(e->name, ".journal")) { + if (!(e->mask & IN_ISDIR) && e->len > 0 && + (endswith(e->name, ".journal") || + endswith(e->name, ".journal~"))) { /* Event for a journal file */ -- 2.30.2