From: Timo Sirainen Date: Fri, 26 May 2023 10:37:42 +0000 (+0300) Subject: lib-settings: Add SET_STR_NOVARS type X-Git-Tag: 2.4.1~1601 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0586a5cdcfbf540f1833106f83e4e970df5d8892;p=thirdparty%2Fdovecot%2Fcore.git lib-settings: Add SET_STR_NOVARS type This is in preparation for making SET_STR_VARS the default string type, except for a few problematic cases. --- diff --git a/src/config/config-parser.c b/src/config/config-parser.c index 1c55880c17..711c83c522 100644 --- a/src/config/config-parser.c +++ b/src/config/config-parser.c @@ -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; } } diff --git a/src/config/config-request.c b/src/config/config-request.c index 51e6c0fbeb..ec6b1731f4 100644 --- a/src/config/config-request.c +++ b/src/config/config-request.c @@ -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, diff --git a/src/lib-settings/settings-parser.c b/src/lib-settings/settings-parser.c index ba0824a67e..d77bf75986 100644 --- a/src/lib-settings/settings-parser.c +++ b/src/lib-settings/settings-parser.c @@ -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: diff --git a/src/lib-settings/settings-parser.h b/src/lib-settings/settings-parser.h index c1980085a3..964145fcbb 100644 --- a/src/lib-settings/settings-parser.h +++ b/src/lib-settings/settings-parser.h @@ -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)