mirror of
https://github.com/systemd/systemd.git
synced 2024-12-18 14:43:33 +08:00
f4d74c6105
Documentation is licensed under LGPL-2.1-or-later. Scripts are MIT to facilitate reuse. Examples are relicensed to CC0-1.0 to maximise copy-and-paste for users, with permission from authors.
42 lines
1.0 KiB
C
42 lines
1.0 KiB
C
/* SPDX-License-Identifier: CC0-1.0 */
|
|
|
|
#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;
|
|
}
|