mirror of
https://github.com/systemd/systemd.git
synced 2024-11-05 15:21:37 +03:00
40 lines
995 B
C
40 lines
995 B
C
|
#include <stdio.h>
|
||
|
#include <string.h>
|
||
|
#include <systemd/sd-journal.h>
|
||
|
|
||
|
int main(int argc, char *argv[]) {
|
||
|
int r;
|
||
|
sd_journal *j;
|
||
|
r = sd_journal_open(&j, SD_JOURNAL_LOCAL_ONLY);
|
||
|
if (r < 0) {
|
||
|
fprintf(stderr, "Failed to open journal: %s\n", strerror(-r));
|
||
|
return 1;
|
||
|
}
|
||
|
for (;;) {
|
||
|
const void *d;
|
||
|
size_t l;
|
||
|
r = sd_journal_next(j);
|
||
|
if (r < 0) {
|
||
|
fprintf(stderr, "Failed to iterate to next entry: %s\n", strerror(-r));
|
||
|
break;
|
||
|
}
|
||
|
if (r == 0) {
|
||
|
/* Reached the end, let's wait for changes, and try again */
|
||
|
r = sd_journal_wait(j, (uint64_t) -1);
|
||
|
if (r < 0) {
|
||
|
fprintf(stderr, "Failed to wait for changes: %s\n", strerror(-r));
|
||
|
break;
|
||
|
}
|
||
|
continue;
|
||
|
}
|
||
|
r = sd_journal_get_data(j, "MESSAGE", &d, &l);
|
||
|
if (r < 0) {
|
||
|
fprintf(stderr, "Failed to read message field: %s\n", strerror(-r));
|
||
|
continue;
|
||
|
}
|
||
|
printf("%.*s\n", (int) l, (const char*) d);
|
||
|
}
|
||
|
sd_journal_close(j);
|
||
|
return 0;
|
||
|
}
|