]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib: Add event_filter_get_root_node()
authorTimo Sirainen <timo.sirainen@open-xchange.com>
Thu, 23 Jan 2025 21:17:13 +0000 (23:17 +0200)
committerAki Tuomi <aki.tuomi@open-xchange.com>
Wed, 12 Feb 2025 10:34:16 +0000 (12:34 +0200)
src/lib/event-filter-private.h
src/lib/event-filter.c

index 883d917d132428752946eb5c1cafa365a23d7547..324222820982616f6695951498a75f02624a630d 100644 (file)
@@ -117,6 +117,9 @@ int event_filter_parser_parse(struct event_filter_parser_state *state);
 void event_filter_parser_set_extra(void *user, void *yyscanner);
 void event_filter_parser_error(void *scan, const char *e);
 
+struct event_filter_node *
+event_filter_get_root_node(struct event_filter *filter, unsigned int idx);
+
 /* the following are exposed to allow for unit testing */
 bool
 event_filter_query_match_eval(struct event_filter_node *node,
index a684353e1876f4d746a1034da83d02eb50dda925..5b397b1d85537d2e1d4b4cc69041080d4a393784 100644 (file)
@@ -1132,6 +1132,17 @@ bool event_filter_match_source(struct event_filter *filter, struct event *event,
        return FALSE;
 }
 
+struct event_filter_node *
+event_filter_get_root_node(struct event_filter *filter, unsigned int idx)
+{
+       if (idx >= array_count(&filter->queries))
+               return NULL;
+
+       const struct event_filter_query_internal *query =
+               array_idx(&filter->queries, idx);
+       return query->expr;
+}
+
 struct event_filter_match_iter {
        struct event_filter *filter;
        struct event *event;