summaryrefslogtreecommitdiff
path: root/src/journal/journalctl.c
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2011-10-12 05:29:08 +0200
committerLennart Poettering <lennart@poettering.net>2011-10-12 05:29:08 +0200
commit250d54b5bee6a46fe1c1626211e3a7e238eda628 (patch)
treea65699863bf433344a9499d468a2c1166acd73b4 /src/journal/journalctl.c
parent69e5d42db09dfb638bc74055c33bb2645f81563d (diff)
journalctl: find journal files in right path
Diffstat (limited to 'src/journal/journalctl.c')
-rw-r--r--src/journal/journalctl.c47
1 files changed, 43 insertions, 4 deletions
diff --git a/src/journal/journalctl.c b/src/journal/journalctl.c
index 5f17f45cac..ac376eaf4f 100644
--- a/src/journal/journalctl.c
+++ b/src/journal/journalctl.c
@@ -25,6 +25,48 @@
#include "journal-file.h"
+static int system_journal_open(JournalFile **f) {
+ int r;
+ char *fn;
+ sd_id128_t machine;
+ char ids[33];
+
+ assert(f);
+
+ r = sd_id128_get_machine(&machine);
+ if (r < 0)
+ return r;
+
+ fn = join("/var/log/journal/", sd_id128_to_string(machine, ids), "/system.journal", NULL);
+ if (!fn)
+ return -ENOMEM;
+
+ r = journal_file_open(fn, O_RDONLY, 0640, f);
+ free(fn);
+
+ if (r >= 0)
+ return r;
+
+ if (r < 0 && r != -ENOENT) {
+ log_error("Failed to open system journal: %s", strerror(-r));
+ return r;
+ }
+
+ fn = join("/run/log/journal/", ids, "/system.journal", NULL);
+ if (!fn)
+ return -ENOMEM;
+
+ r = journal_file_open(fn, O_RDONLY, 0640, f);
+ free(fn);
+
+ if (r < 0) {
+ log_error("Failed to open system journal: %s", strerror(-r));
+ return r;
+ }
+
+ return r;
+}
+
int main(int argc, char *argv[]) {
int r;
JournalFile *f;
@@ -33,10 +75,7 @@ int main(int argc, char *argv[]) {
log_parse_environment();
log_open();
- r = journal_file_open("/var/log/journal/system.journal", O_RDONLY, 0644, &f);
- if (r == -ENOENT)
- r = journal_file_open("/run/log/journal/system.journal", O_RDONLY, 0644, &f);
-
+ r = system_journal_open(&f);
if (r < 0) {
log_error("Failed to open journal: %s", strerror(-r));
return EXIT_FAILURE;