]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-settings: Add SET_STR_NOVARS type
authorTimo Sirainen <timo.sirainen@open-xchange.com>
Fri, 26 May 2023 10:37:42 +0000 (13:37 +0300)
committerAki Tuomi <aki.tuomi@open-xchange.com>
Wed, 12 Feb 2025 10:34:08 +0000 (12:34 +0200)
This is in preparation for making SET_STR_VARS the default string type,
except for a few problematic cases.

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

index 1c55880c173f568e7d54beba4240f1d0ae6a373d..711c83c522217c8043a2aed5ddf5ab2355639994 100644 (file)
@@ -1718,7 +1718,8 @@ config_module_parsers_get_setting(const struct config_module_parser *module_pars
                const char *const *value =
                        settings_parse_get_value(l->parser, &key, &type);
                if (value != NULL) {
-                       i_assert(type == SET_STR || type == SET_STR_VARS);
+                       i_assert(type == SET_STR || type == SET_STR_VARS ||
+                                type == SET_STR_NOVARS);
                        return *value;
                }
        }
index 51e6c0fbebb023345fa6c096d6d00f335781e0b7..ec6b1731f450e6d5d5af2a2d0707fed436cda6eb 100644 (file)
@@ -143,6 +143,7 @@ bool config_export_type(string_t *str, const void *value,
                }
                break;
        }
+       case SET_STR_NOVARS:
        case SET_STR: {
                const char *const *val = value;
                const char *const *_dval = default_value;
@@ -244,6 +245,7 @@ settings_export(struct config_export_context *ctx,
                case SET_IN_PORT:
                case SET_STR_VARS:
                case SET_STR:
+               case SET_STR_NOVARS:
                case SET_ENUM:
                        if (!config_export_type(ctx->value, value,
                                                default_value, def->type,
index ba0824a67edbad4e5ab43898d695ab7d4a03e6a9..d77bf759864a5fa972b5d3c0689a61de680058cf 100644 (file)
@@ -372,6 +372,7 @@ settings_parse(struct setting_parser_context *ctx,
                break;
        case SET_STR:
        case SET_STR_VARS:
+       case SET_STR_NOVARS:
                if (dup_value)
                        value = p_strdup(ctx->set_pool, value);
                *((const char **)ptr) = value;
@@ -630,6 +631,7 @@ setting_copy(enum setting_type type, const void *src, void *dest, pool_t pool,
        }
        case SET_STR_VARS:
        case SET_STR:
+       case SET_STR_NOVARS:
        case SET_ENUM: {
                const char *const *src_str = src;
                const char **dest_str = dest;
@@ -757,6 +759,7 @@ settings_changes_dup(const struct setting_parser_info *info,
                case SET_SIZE:
                case SET_IN_PORT:
                case SET_STR_VARS:
+               case SET_STR_NOVARS:
                case SET_STR:
                case SET_ENUM:
                case SET_STRLIST:
index c1980085a3de58668156d1074fc44202c79951cb..964145fcbbca766624e5543e64a0915b2d38d196 100644 (file)
@@ -19,6 +19,7 @@ enum setting_type {
        SET_IN_PORT, /* internet port */
        SET_STR,
        SET_STR_VARS, /* string with %variables */
+       SET_STR_NOVARS, /* string explicitly without %variables */
        SET_ENUM,
        SET_STRLIST, /* of type ARRAY_TYPE(const_string) */
        SET_ALIAS, /* alias name for above setting definition */
@@ -65,6 +66,8 @@ struct setting_define {
        SETTING_DEFINE_STRUCT_TYPE(SET_STR, 0, const char *, key, name, struct_name)
 #define SETTING_DEFINE_STRUCT_STR_VARS(key, name, struct_name) \
        SETTING_DEFINE_STRUCT_TYPE(SET_STR_VARS, 0, const char *, key, name, struct_name)
+#define SETTING_DEFINE_STRUCT_STR_NOVARS(key, name, struct_name) \
+       SETTING_DEFINE_STRUCT_TYPE(SET_STR_NOVARS, 0, const char *, key, name, struct_name)
 #define SETTING_DEFINE_STRUCT_ENUM(key, name, struct_name) \
        SETTING_DEFINE_STRUCT_TYPE(SET_ENUM, 0, const char *, key, name, struct_name)
 
@@ -86,6 +89,8 @@ struct setting_define {
        SETTING_DEFINE_STRUCT_TYPE(SET_STR, SET_FLAG_HIDDEN, const char *, key, name, struct_name)
 #define SETTING_DEFINE_STRUCT_STR_VARS_HIDDEN(key, name, struct_name) \
        SETTING_DEFINE_STRUCT_TYPE(SET_STR_VARS, SET_FLAG_HIDDEN, const char *, key, name, struct_name)
+#define SETTING_DEFINE_STRUCT_STR_NOVARS_HIDDEN(key, name, struct_name) \
+       SETTING_DEFINE_STRUCT_TYPE(SET_STR_NOVARS, SET_FLAG_HIDDEN, const char *, key, name, struct_name)
 #define SETTING_DEFINE_STRUCT_ENUM_HIDDEN(key, name, struct_name) \
        SETTING_DEFINE_STRUCT_TYPE(SET_ENUM, SET_FLAG_HIDDEN, const char *, key, name, struct_name)