]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
config: Split config_module_parser.array to list and filter_array
authorTimo Sirainen <timo.sirainen@open-xchange.com>
Tue, 29 Jul 2025 09:41:17 +0000 (12:41 +0300)
committeraki.tuomi <aki.tuomi@open-xchange.com>
Sun, 3 Aug 2025 17:22:44 +0000 (17:22 +0000)
The list is used for SET_STRLIST and SET_BOOLLIST, while filter_array is
used for SET_FILTER_ARRAY.

src/config/config-parser.c
src/config/config-parser.h
src/config/config-request.c

index d1d2a31d26da6f0f20f065b867f8b9bd9c555bf9..4b258882e90d156df47ee500f1ec778c6d424ea1 100644 (file)
@@ -527,9 +527,9 @@ config_is_filter_name(struct config_parser_context *ctx, const char *key,
 }
 
 static void
-config_array_add_defaults(struct config_parser_context *ctx,
-                         struct config_parser_key *config_key,
-                         ARRAY_TYPE(const_string) *dest)
+config_list_add_defaults(struct config_parser_context *ctx,
+                        struct config_parser_key *config_key,
+                        ARRAY_TYPE(const_string) *dest)
 {
        struct config_filter filter = ctx->cur_section->filter_parser->filter;
        if (filter.default_settings)
@@ -547,7 +547,7 @@ config_array_add_defaults(struct config_parser_context *ctx,
                return;
 
        const ARRAY_TYPE(const_string) *src =
-               ldef->settings[config_key->define_idx].array.values;
+               ldef->settings[config_key->define_idx].list.values;
        if (src != NULL && array_is_created(src))
                array_append_array(dest, src);
 }
@@ -584,7 +584,7 @@ static int config_apply_strlist(struct config_parser_context *ctx,
        if (*strlistp == NULL) {
                *strlistp = p_new(ctx->pool, ARRAY_TYPE(const_string), 1);
                p_array_init(*strlistp, ctx->pool, 5);
-               config_array_add_defaults(ctx, config_key, *strlistp);
+               config_list_add_defaults(ctx, config_key, *strlistp);
        }
 
        value = p_strdup(ctx->pool, value);
@@ -754,14 +754,14 @@ config_apply_exact_line(struct config_parser_context *ctx,
                switch (l->info->defines[config_key->define_idx].type) {
                case SET_STRLIST:
                        if (config_apply_strlist(ctx, key, value, config_key,
-                                       &l->settings[config_key->define_idx].array.values,
-                                       &l->settings[config_key->define_idx].array.stop_list) < 0)
+                                       &l->settings[config_key->define_idx].list.values,
+                                       &l->settings[config_key->define_idx].list.stop_list) < 0)
                                return -1;
                        break;
                case SET_BOOLLIST:
                        if (config_apply_boollist(ctx, key, value, config_key,
-                                       &l->settings[config_key->define_idx].array.values,
-                                       &l->settings[config_key->define_idx].array.stop_list) < 0)
+                                       &l->settings[config_key->define_idx].list.values,
+                                       &l->settings[config_key->define_idx].list.stop_list) < 0)
                                return -1;
                        break;
                case SET_FILTER_ARRAY:
@@ -773,7 +773,7 @@ config_apply_exact_line(struct config_parser_context *ctx,
                                return -1;
                        }
                        if (config_apply_filter_array(ctx, line, value,
-                                       &l->settings[config_key->define_idx].array.values) < 0)
+                                       &l->settings[config_key->define_idx].filter_array) < 0)
                                return -1;
                        break;
                case SET_FILE: {
@@ -1484,11 +1484,11 @@ void config_fill_set_parser(struct setting_parser_context *parser,
                switch (p->info->defines[i].type) {
                case SET_STRLIST:
                case SET_BOOLLIST: {
-                       if (p->settings[i].array.values == NULL)
+                       if (p->settings[i].list.values == NULL)
                                break;
                        unsigned int j, count;
                        const char *const *strings =
-                               array_get(p->settings[i].array.values, &count);
+                               array_get(p->settings[i].list.values, &count);
                        for (j = 0; j < count; j += 2) T_BEGIN {
                                const char *key = t_strdup_printf("%s/%s",
                                        p->info->defines[i].key,
@@ -1500,7 +1500,7 @@ void config_fill_set_parser(struct setting_parser_context *parser,
                }
                case SET_FILTER_ARRAY: {
                        const char *name;
-                       array_foreach_elem(p->settings[i].array.values, name) T_BEGIN {
+                       array_foreach_elem(p->settings[i].filter_array, name) T_BEGIN {
                                (void)settings_parse_keyidx_value(parser, i,
                                        p->info->defines[i].key,
                                        settings_section_escape(name));
@@ -3326,9 +3326,9 @@ config_parsed_get_setting_full(const struct config_parsed *config,
        if (strcmp(key, "import_environment") == 0) {
                string_t *keyvals = t_str_new(64);
                const ARRAY_TYPE(const_string) *strlist_set =
-                       l[info_idx].settings[key_idx].array.values;
+                       l[info_idx].settings[key_idx].list.values;
                const ARRAY_TYPE(const_string) *strlist_defaults =
-                       ldef[info_idx].settings[key_idx].array.values;
+                       ldef[info_idx].settings[key_idx].list.values;
                config_parsed_strlist_append(keyvals, strlist_set, NULL);
                config_parsed_strlist_append(keyvals, strlist_defaults, strlist_set);
                return str_c(keyvals);
index ed32928def59a0ed12141f9afc79f3f34246536f..1391ca72b8c2c9b9066cea2d040aa3f3c15dab35 100644 (file)
@@ -56,7 +56,8 @@ struct config_module_parser {
                struct {
                        ARRAY_TYPE(const_string) *values;
                        bool stop_list;
-               } array;
+               } list;
+               ARRAY_TYPE(const_string) *filter_array;
        } *settings; /* [set_count] */
        uint8_t *change_counters; /* [set_count] */
        /* Set if CONFIG_PARSE_FLAG_DELAY_ERRORS is enabled. The error won't
index f77718920551e34226a8eef41bef2eb65479d18b..b34b0d0e82114937315e989449aa1adfc810e599 100644 (file)
@@ -302,10 +302,10 @@ settings_export(struct config_export_context *ctx,
                case SET_STRLIST:
                case SET_BOOLLIST: {
                        const ARRAY_TYPE(const_string) *val =
-                               module_parser->settings[define_idx].array.values;
+                               module_parser->settings[define_idx].list.values;
                        const char *const *strings;
 
-                       value_stop_list = module_parser->settings[define_idx].array.stop_list;
+                       value_stop_list = module_parser->settings[define_idx].list.stop_list;
                        if (hash_table_is_created(ctx->keys) &&
                            hash_table_lookup(ctx->keys, def->key) != NULL) {
                                /* already added all of these */
@@ -357,7 +357,7 @@ settings_export(struct config_export_context *ctx,
                }
                case SET_FILTER_ARRAY: {
                        const ARRAY_TYPE(const_string) *val =
-                               module_parser->settings[define_idx].array.values;
+                               module_parser->settings[define_idx].filter_array;
                        const char *name;
 
                        if (val == NULL)