]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
config: Add and use set_str_expanded() to simplify the following changes
authorTimo Sirainen <timo.sirainen@open-xchange.com>
Tue, 29 Jul 2025 09:34:48 +0000 (12:34 +0300)
committeraki.tuomi <aki.tuomi@open-xchange.com>
Sun, 3 Aug 2025 17:22:44 +0000 (17:22 +0000)
src/config/config-parser-private.h
src/config/config-parser.c
src/config/config-request.c

index eb018e7773e110960e4bbbcab2e846ba5693c05e..bcaa0c9971926f6a213a075999ef36ba635f6d62 100644 (file)
@@ -122,6 +122,12 @@ extern int (*hook_config_parser_end)(struct config_parser_context *ctx,
                                     struct config_parsed *new_config,
                                     struct event *event, const char **error_r);
 
+static inline const char *
+set_str_expanded(const union config_module_parser_setting *value)
+{
+       return value->str;
+}
+
 /* Apply a key-value setting. $VARIABLE expansion is not done for the value. */
 int config_apply_key_value(struct config_parser_context *ctx, const char *key,
                           const char *value, const char **full_key_r) ATTR_NULL(4);
index 2c27333ccf1c4b099c60efebd0bece786ab8f6e4..d50a3d1f368fa45e38e4203379890e13ddda01fa 100644 (file)
@@ -414,12 +414,12 @@ config_filter_get_value(struct config_filter_parser *filter_parser,
 
        if (l->change_counters != NULL &&
            l->change_counters[config_key->define_idx] != 0) {
-               str_append(str, l->settings[config_key->define_idx].str);
+               str_append(str, set_str_expanded(&l->settings[config_key->define_idx]));
                return TRUE;
        }
        if (l2 != NULL && l2->change_counters != NULL &&
            l2->change_counters[config_key->define_idx] != 0) {
-               str_append(str, l2->settings[config_key->define_idx].str);
+               str_append(str, set_str_expanded(&l2->settings[config_key->define_idx]));
                return TRUE;
        }
 
@@ -1631,10 +1631,10 @@ void config_fill_set_parser(struct setting_parser_context *parser,
                        break;
                }
                default: {
-                       const char *value = p->settings[i].str;
+                       const char *value = set_str_expanded(&p->settings[i]);
                        if (p->info->defines[i].type != SET_STR_NOVARS &&
                            p->info->defines[i].type != SET_FILE &&
-                           !setting_value_can_check(p->settings[i].str,
+                           !setting_value_can_check(set_str_expanded(&p->settings[i]),
                                                     expand_values)) {
                                /* We don't know what the variables would
                                   expand to. */
@@ -1743,7 +1743,7 @@ get_str_setting(struct config_filter_parser *parser, const char *key,
                        i_assert(module_parser->info->defines[key_idx].type != SET_STRLIST &&
                                 module_parser->info->defines[key_idx].type != SET_BOOLLIST &&
                                 module_parser->info->defines[key_idx].type != SET_FILTER_ARRAY);
-                       return module_parser->settings[key_idx].str;
+                       return set_str_expanded(&module_parser->settings[key_idx]);
                }
        }
        return default_value;
@@ -3427,9 +3427,9 @@ config_parsed_get_setting_full(const struct config_parsed *config,
        i_assert(def->type != SET_STRLIST && def->type != SET_BOOLLIST &&
                 def->type != SET_FILTER_ARRAY);
        if (l[info_idx].change_counters[key_idx] != 0)
-               return l[info_idx].settings[key_idx].str;
+               return set_str_expanded(&l[info_idx].settings[key_idx]);
        if (ldef[info_idx].change_counters[key_idx] != 0)
-               return ldef[info_idx].settings[key_idx].str;
+               return set_str_expanded(&ldef[info_idx].settings[key_idx]);
 
        const void *value = CONST_PTR_OFFSET(l[info_idx].info->defaults, def->offset);
        string_t *str = t_str_new(64);
index b34b0d0e82114937315e989449aa1adfc810e599..cb31d2371cbf2976ef07fe05c7aa314c10ce76b4 100644 (file)
@@ -273,7 +273,7 @@ settings_export(struct config_export_context *ctx,
 
                        if (!dump_default &&
                            strcmp(get_default_value(old_default, info, def),
-                                  module_parser->settings[define_idx].str) == 0) {
+                                  set_str_expanded(&module_parser->settings[define_idx])) == 0) {
                                /* Explicitly set setting value wasn't
                                   actually changed from its default. */
                                break;
@@ -282,16 +282,16 @@ settings_export(struct config_export_context *ctx,
                                        CONFIG_PARSER_CHANGE_DEFAULTS) {
                                /* explicitly set */
                                str_append(ctx->value,
-                                       module_parser->settings[define_idx].str);
+                                          set_str_expanded(&module_parser->settings[define_idx]));
                        } else if (module_parser->change_counters[define_idx] ==
                                   CONFIG_PARSER_CHANGE_DEFAULTS && !default_changed) {
                                /* default not changed by old version checks */
                                str_append(ctx->value,
-                                       module_parser->settings[define_idx].str);
+                                          set_str_expanded(&module_parser->settings[define_idx]));
                        } else if (module_parser->change_counters[define_idx] ==
                                   CONFIG_PARSER_CHANGE_GROUP) {
                                str_append(ctx->value,
-                                       module_parser->settings[define_idx].str);
+                                          set_str_expanded(&module_parser->settings[define_idx]));
                        } else {
                                str_append(ctx->value,
                                        get_default_value(old_default, info, def));