From: Aki Tuomi Date: Thu, 30 Nov 2017 13:46:40 +0000 (+0200) Subject: config: Add config_filter_get_all X-Git-Tag: 2.2.35~28 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=c73b79290b15c15b7cbeece6bada54a4c8520e73;p=thirdparty%2Fdovecot%2Fcore.git config: Add config_filter_get_all Returns all filters --- diff --git a/src/config/config-filter.c b/src/config/config-filter.c index 78d65e8d23..2805e9dbe0 100644 --- a/src/config/config-filter.c +++ b/src/config/config-filter.c @@ -251,6 +251,21 @@ config_filter_find_all(struct config_filter_context *ctx, pool_t pool, return array_idx(&matches, 0); } +struct config_filter_parser *const * +config_filter_get_all(struct config_filter_context *ctx) +{ + ARRAY_TYPE(config_filter_parsers) filters; + unsigned int i; + + t_array_init(&filters, 8); + for (i = 0; ctx->parsers[i] != NULL; i++) { + array_append(&filters, &ctx->parsers[i], 1); + } + array_sort(&filters, config_filter_parser_cmp_rev); + array_append_zero(&filters); + return array_idx(&filters, 0); +} + struct config_filter_parser *const * config_filter_find_subset(struct config_filter_context *ctx, const struct config_filter *filter) diff --git a/src/config/config-filter.h b/src/config/config-filter.h index 7e45fc1a77..fda3182f36 100644 --- a/src/config/config-filter.h +++ b/src/config/config-filter.h @@ -45,6 +45,9 @@ struct config_filter_parser *const * config_filter_find_subset(struct config_filter_context *ctx, const struct config_filter *filter); +struct config_filter_parser *const * +config_filter_get_all(struct config_filter_context *ctx); + /* Returns TRUE if filter matches mask. */ bool config_filter_match(const struct config_filter *mask, const struct config_filter *filter);