From: sergey.kitov Date: Tue, 20 Apr 2021 14:06:26 +0000 (+0300) Subject: lib: Add function removing queries from event_filter X-Git-Tag: 2.3.17~159 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=fcacfde02a4800aba5028dfeea624f9565064ff0;p=thirdparty%2Fdovecot%2Fcore.git lib: Add function removing queries from event_filter --- diff --git a/src/lib/event-filter.c b/src/lib/event-filter.c index f720118dad..88a998a6ee 100644 --- a/src/lib/event-filter.c +++ b/src/lib/event-filter.c @@ -266,6 +266,22 @@ event_filter_merge_with_context_internal(struct event_filter *dest, } T_END; } +bool event_filter_remove_queries_with_context(struct event_filter *filter, + void *context) +{ + const struct event_filter_query_internal *int_query; + unsigned int idx; + + array_foreach(&filter->queries, int_query) { + if (int_query->context == context) { + idx = array_foreach_idx(&filter->queries, int_query); + array_delete(&filter->queries, idx, 1); + return TRUE; + } + } + return FALSE; +} + void event_filter_merge(struct event_filter *dest, const struct event_filter *src) { diff --git a/src/lib/event-filter.h b/src/lib/event-filter.h index de2d7c7899..0a55e05755 100644 --- a/src/lib/event-filter.h +++ b/src/lib/event-filter.h @@ -22,6 +22,11 @@ void event_filter_merge_with_context(struct event_filter *dest, const struct event_filter *src, void *new_context); +/* Remove query with given context from filter. + Returns TRUE if query was removed, otherwise FALSE. */ +bool event_filter_remove_queries_with_context(struct event_filter *filter, + void *context); + /* Export the filter into a string. The context pointers aren't exported. */ void event_filter_export(struct event_filter *filter, string_t *dest); /* Add queries to the filter from the given string. The string is expected to