mirror of
https://github.com/systemd/systemd.git
synced 2024-10-30 14:55:37 +03:00
b4096cecff
The need to set errno is very very ugly, but at least it is thread-safe and works correctly. Using strerror() is likely to be wrong, so let's not recommend that. People who do a lot of logging would provide use some wrapper that sets errno like we do, so nudge people towards %m. I tested that all the separate .c files compile cleanly.
32 lines
644 B
C
32 lines
644 B
C
/* SPDX-License-Identifier: CC0-1.0 */
|
|
|
|
#include <errno.h>
|
|
#include <stdio.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) {
|
|
errno = -r;
|
|
fprintf(stderr, "Failed to open journal: %m\n");
|
|
return 1;
|
|
}
|
|
SD_JOURNAL_FOREACH(j) {
|
|
const char *d;
|
|
size_t l;
|
|
|
|
r = sd_journal_get_data(j, "MESSAGE", (const void **)&d, &l);
|
|
if (r < 0) {
|
|
errno = -r;
|
|
fprintf(stderr, "Failed to read message field: %m\n");
|
|
continue;
|
|
}
|
|
|
|
printf("%.*s\n", (int) l, d);
|
|
}
|
|
sd_journal_close(j);
|
|
return 0;
|
|
}
|