diff options
Diffstat (limited to 'src/journal')
-rw-r--r-- | src/journal/journal-internal.h | 3 | ||||
-rw-r--r-- | src/journal/journalctl.c | 11 |
2 files changed, 9 insertions, 5 deletions
diff --git a/src/journal/journal-internal.h b/src/journal/journal-internal.h index c7e585d810..f576a0073d 100644 --- a/src/journal/journal-internal.h +++ b/src/journal/journal-internal.h @@ -139,3 +139,6 @@ static inline void journal_closep(sd_journal **j) { } #define _cleanup_journal_close_ _cleanup_(journal_closep) + +#define JOURNAL_FOREACH_DATA_RETVAL(j, data, l, retval) \ + for (sd_journal_restart_data(j); ((retval) = sd_journal_enumerate_data((j), &(data), &(l))) > 0; ) diff --git a/src/journal/journalctl.c b/src/journal/journalctl.c index eb79c4d853..de972a17db 100644 --- a/src/journal/journalctl.c +++ b/src/journal/journalctl.c @@ -1288,11 +1288,10 @@ int main(int argc, char *argv[]) { log_error("Failed to iterate through journal: %s", strerror(-r)); goto finish; } + if (r == 0) + break; } - if (r == 0) - break; - if (arg_until_set && !arg_reverse) { usec_t usec; @@ -1338,10 +1337,12 @@ int main(int argc, char *argv[]) { arg_catalog * OUTPUT_CATALOG; r = output_journal(stdout, j, arg_output, 0, flags); - if (r < 0 || ferror(stdout)) + need_seek = true; + if (r == -EADDRNOTAVAIL) + break; + else if (r < 0 || ferror(stdout)) goto finish; - need_seek = true; n_shown++; } |