diff options
author | Lennart Poettering <lennart@poettering.net> | 2024-02-16 12:02:09 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-02-16 12:02:09 +0100 |
commit | f03e8f19b736872ebe450d9321b5e7f6fd230f93 (patch) | |
tree | 4cd4489449aa205c34369e9b2a26d360f9e64a78 /src/libsystemd/sd-journal | |
parent | test: properly preserve journal from sd-bsod tests (diff) | |
parent | test: add test for seqnum and seqnum ID (diff) | |
download | systemd-f03e8f19b736872ebe450d9321b5e7f6fd230f93.tar.xz systemd-f03e8f19b736872ebe450d9321b5e7f6fd230f93.zip |
Merge pull request #30263 from msizanoen1/fix-onboot-rotate-2
journal: Reset runtime seqnum data when flushing to system journal
Diffstat (limited to 'src/libsystemd/sd-journal')
-rw-r--r-- | src/libsystemd/sd-journal/journal-internal.h | 1 | ||||
-rw-r--r-- | src/libsystemd/sd-journal/sd-journal.c | 35 |
2 files changed, 36 insertions, 0 deletions
diff --git a/src/libsystemd/sd-journal/journal-internal.h b/src/libsystemd/sd-journal/journal-internal.h index 0293389a78..cddc2316af 100644 --- a/src/libsystemd/sd-journal/journal-internal.h +++ b/src/libsystemd/sd-journal/journal-internal.h @@ -138,6 +138,7 @@ struct sd_journal { char *journal_make_match_string(sd_journal *j); void journal_print_header(sd_journal *j); +int journal_get_directories(sd_journal *j, char ***ret); #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/libsystemd/sd-journal/sd-journal.c b/src/libsystemd/sd-journal/sd-journal.c index 1c2e273841..fba436fbe3 100644 --- a/src/libsystemd/sd-journal/sd-journal.c +++ b/src/libsystemd/sd-journal/sd-journal.c @@ -1594,6 +1594,41 @@ error: return r; } +int journal_get_directories(sd_journal *j, char ***ret) { + _cleanup_strv_free_ char **paths = NULL; + JournalFile *f; + const char *p; + size_t n = SIZE_MAX; + int r; + + assert(j); + assert(ret); + + /* This returns parent directories of opened journal files. */ + + ORDERED_HASHMAP_FOREACH_KEY(f, p, j->files) { + _cleanup_free_ char *d = NULL; + + /* Ignore paths generated from fd. */ + if (path_startswith(p, "/proc/")) + continue; + + r = path_extract_directory(p, &d); + if (r < 0) + return r; + + if (path_strv_contains(paths, d)) + continue; + + r = strv_extend_with_size(&paths, &n, d); + if (r < 0) + return r; + } + + *ret = TAKE_PTR(paths); + return 0; +} + static int add_file_by_name( sd_journal *j, const char *prefix, |