diff options
author | Lennart Poettering <lennart@poettering.net> | 2012-07-10 21:46:11 +0200 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2012-07-10 21:46:11 +0200 |
commit | e02d1cf72d115d1d61defdca5b551672d876c6bd (patch) | |
tree | c4a5a396b17c67b74eba1d7ca7f9d62eb4928b49 /src/journal | |
parent | 166503dada92d7ca3570a653e07a51ed826b7c8a (diff) |
journal: introduce sd_journal_wait() to simplify writing synchronous clients
Diffstat (limited to 'src/journal')
-rw-r--r-- | src/journal/journalctl.c | 18 | ||||
-rw-r--r-- | src/journal/libsystemd-journal.sym | 5 | ||||
-rw-r--r-- | src/journal/sd-journal.c | 15 |
3 files changed, 23 insertions, 15 deletions
diff --git a/src/journal/journalctl.c b/src/journal/journalctl.c index 6929b76018..7d8b8e51c8 100644 --- a/src/journal/journalctl.c +++ b/src/journal/journalctl.c @@ -210,7 +210,7 @@ static int generate_new_id128(void) { } int main(int argc, char *argv[]) { - int r, i, fd; + int r, i; sd_journal *j = NULL; unsigned line = 0; bool need_seek = false; @@ -301,12 +301,6 @@ int main(int argc, char *argv[]) { } } - fd = sd_journal_get_fd(j); - if (fd < 0) { - log_error("Failed to get wakeup fd: %s", strerror(-fd)); - goto finish; - } - if (!arg_quiet) { usec_t start, end; char start_buf[FORMAT_TIMESTAMP_MAX], end_buf[FORMAT_TIMESTAMP_MAX]; @@ -385,15 +379,9 @@ int main(int argc, char *argv[]) { if (!arg_follow) break; - r = fd_wait_for_event(fd, POLLIN, (usec_t) -1); - if (r < 0) { - log_error("Couldn't wait for event: %s", strerror(-r)); - goto finish; - } - - r = sd_journal_process(j); + r = sd_journal_wait(j, (uint64_t) -1); if (r < 0) { - log_error("Failed to process: %s", strerror(-r)); + log_error("Couldn't wait for log event: %s", strerror(-r)); goto finish; } } diff --git a/src/journal/libsystemd-journal.sym b/src/journal/libsystemd-journal.sym index d291084262..d1ba9e8e31 100644 --- a/src/journal/libsystemd-journal.sym +++ b/src/journal/libsystemd-journal.sym @@ -57,3 +57,8 @@ global: sd_journal_get_cutoff_realtime_usec; sd_journal_get_cutoff_monotonic_usec; } LIBSYSTEMD_JOURNAL_183; + +LIBSYSTEMD_JOURNAL_187 { +global: + sd_journal_wait; +} LIBSYSTEMD_JOURNAL_184; diff --git a/src/journal/sd-journal.c b/src/journal/sd-journal.c index 75884594a1..149dc10bdf 100644 --- a/src/journal/sd-journal.c +++ b/src/journal/sd-journal.c @@ -24,6 +24,7 @@ #include <stddef.h> #include <unistd.h> #include <sys/inotify.h> +#include <sys/poll.h> #include "sd-journal.h" #include "journal-def.h" @@ -1622,6 +1623,20 @@ _public_ int sd_journal_process(sd_journal *j) { } } +_public_ int sd_journal_wait(sd_journal *j, uint64_t timeout_usec) { + int r, k; + + assert(j); + + r = fd_wait_for_event(j->inotify_fd, POLLIN, timeout_usec); + k = sd_journal_process(j); + + if (r < 0) + return r; + + return k; +} + _public_ int sd_journal_get_cutoff_realtime_usec(sd_journal *j, uint64_t *from, uint64_t *to) { Iterator i; JournalFile *f; |