From e21ad9c1361a97c7b308b1a7390d9cc8ca9abffb Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Fri, 22 Mar 2024 04:43:31 +0900 Subject: [PATCH] sd-journal: introduce two helper functions for adding filter --- src/libsystemd/sd-journal/journal-internal.h | 3 ++ src/libsystemd/sd-journal/sd-journal.c | 31 ++++++++++++++++++++ 2 files changed, 34 insertions(+) diff --git a/src/libsystemd/sd-journal/journal-internal.h b/src/libsystemd/sd-journal/journal-internal.h index cddc2316af4..b95080c527a 100644 --- a/src/libsystemd/sd-journal/journal-internal.h +++ b/src/libsystemd/sd-journal/journal-internal.h @@ -140,6 +140,9 @@ char *journal_make_match_string(sd_journal *j); void journal_print_header(sd_journal *j); int journal_get_directories(sd_journal *j, char ***ret); +int journal_add_match_pair(sd_journal *j, const char *field, const char *value); +int journal_add_matchf(sd_journal *j, const char *format, ...) _printf_(2, 3); + #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 ef57f156ac5..383f3e5d572 100644 --- a/src/libsystemd/sd-journal/sd-journal.c +++ b/src/libsystemd/sd-journal/sd-journal.c @@ -325,6 +325,37 @@ fail: return -ENOMEM; } +int journal_add_match_pair(sd_journal *j, const char *field, const char *value) { + _cleanup_free_ char *s = NULL; + + assert(j); + assert(field); + assert(value); + + s = strjoin(field, "=", value); + if (!s) + return -ENOMEM; + + return sd_journal_add_match(j, s, 0); +} + +int journal_add_matchf(sd_journal *j, const char *format, ...) { + _cleanup_free_ char *s = NULL; + va_list ap; + int r; + + assert(j); + assert(format); + + va_start(ap, format); + r = vasprintf(&s, format, ap); + va_end(ap); + if (r < 0) + return -ENOMEM; + + return sd_journal_add_match(j, s, 0); +} + _public_ int sd_journal_add_conjunction(sd_journal *j) { assert_return(j, -EINVAL); assert_return(!journal_origin_changed(j), -ECHILD); -- 2.47.3