]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
config: Move global filter parsers duplication code
authorTimo Sirainen <timo.sirainen@open-xchange.com>
Wed, 3 May 2023 09:57:33 +0000 (12:57 +0300)
committerTimo Sirainen <timo.sirainen@open-xchange.com>
Mon, 20 Nov 2023 12:21:56 +0000 (14:21 +0200)
src/config/config-filter.c
src/config/config-filter.h
src/config/config-request.c

index b161ac258d4c84f98dbf9aa2e0ecd81b50a4168d..c3e95f3b89fd943f630406f0d74283d179a55efb 100644 (file)
@@ -189,22 +189,10 @@ config_filter_find_subset(struct config_filter_context *ctx)
        return array_front(&matches);
 }
 
-struct config_module_parser *
-config_filter_parsers_dup(struct config_filter_context *ctx, pool_t pool)
+struct config_filter_parser *
+config_filter_parser_get_global_filter(struct config_filter_context *ctx)
 {
-       const struct config_filter_parser *global_filter;
-       struct config_module_parser *dest;
-       unsigned int i, count;
-
-       global_filter = ctx->parsers[0];
-       for (count = 0; global_filter->parsers[count].root != NULL; count++) ;
-       dest = p_new(pool, struct config_module_parser, count + 1);
-       for (i = 0; i < count; i++) {
-               dest[i] = global_filter->parsers[i];
-               dest[i].parser =
-                       settings_parser_dup(global_filter->parsers[i].parser, pool);
-       }
-       return dest;
+       return ctx->parsers[0];
 }
 
 void config_filter_add_error(struct config_filter_context *ctx,
index 94f91b43fdfab813f812d9534e18a26a3900e31c..79e036066c22b0f29f14d820d57b455666459d70 100644 (file)
@@ -37,9 +37,8 @@ void config_filter_add_error(struct config_filter_context *ctx,
 const ARRAY_TYPE(const_string) *
 config_filter_get_errors(struct config_filter_context *ctx);
 
-/* Duplicate current parsers. */
-struct config_module_parser *
-config_filter_parsers_dup(struct config_filter_context *ctx, pool_t pool);
+struct config_filter_parser *
+config_filter_parser_get_global_filter(struct config_filter_context *ctx);
 
 /* Return a list of filters that are a subset of the given filter. */
 struct config_filter_parser *const *
index 08cfc1dde30cdfe5363cc9e7178a7e63c812ef82..49e6fd5dd51dc75d0f6747df0f43e0bee9d9be80 100644 (file)
@@ -397,10 +397,29 @@ config_export_init(enum config_dump_scope scope,
        return ctx;
 }
 
+static struct config_module_parser *
+config_filter_parsers_dup(pool_t pool, struct config_filter_parser *global_filter)
+{
+       struct config_module_parser *dest;
+       unsigned int i, count;
+
+       for (count = 0; global_filter->parsers[count].root != NULL; count++) ;
+       dest = p_new(pool, struct config_module_parser, count + 1);
+       for (i = 0; i < count; i++) {
+               dest[i] = global_filter->parsers[i];
+               dest[i].parser =
+                       settings_parser_dup(global_filter->parsers[i].parser, pool);
+       }
+       return dest;
+}
+
 void config_export_dup_parsers(struct config_export_context *ctx,
                               struct config_filter_context *config_filter)
 {
-       ctx->dup_parsers = config_filter_parsers_dup(config_filter, ctx->pool);
+       struct config_filter_parser *global_filter =
+               config_filter_parser_get_global_filter(config_filter);
+
+       ctx->dup_parsers = config_filter_parsers_dup(ctx->pool, global_filter);
        ctx->parsers = ctx->dup_parsers;
 }