From: Timo Sirainen Date: Fri, 11 Apr 2025 10:47:51 +0000 (+0300) Subject: lib-settings: Add and use SETTINGS_APPEND_KEY_SUFFIX macro X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=6ed47f4ed9a96c92192fd05742bcf8c3697696eb;p=thirdparty%2Fdovecot%2Fcore.git lib-settings: Add and use SETTINGS_APPEND_KEY_SUFFIX macro --- diff --git a/src/lib-settings/settings.c b/src/lib-settings/settings.c index 341eebdeaa..fcf90c08ec 100644 --- a/src/lib-settings/settings.c +++ b/src/lib-settings/settings.c @@ -1885,7 +1885,7 @@ settings_override_get_value(struct settings_apply_ctx *ctx, if (!set->append || ctx->info->defines[key_idx].type != SET_STR) { if (set->append && ctx->info->defines[key_idx].type != SET_FILTER_ARRAY) - *_key = t_strconcat(key, "+", NULL); + *_key = t_strconcat(key, SETTINGS_APPEND_KEY_SUFFIX, NULL); else *_key = key; *key_idx_r = key_idx; @@ -2845,7 +2845,7 @@ settings_override_fill(struct settings_override *set, pool_t pool, set->type = type; size_t len = strlen(key); T_BEGIN { - if (len > 0 && key[len-1] == '+') { + if (len > 0 && key[len-1] == SETTINGS_APPEND_KEY_SUFFIX[0]) { /* key+=value */ set->append = TRUE; len--; @@ -2888,7 +2888,8 @@ settings_override_equals(struct settings_override *set, const char *key, enum settings_override_type type) { size_t key_len = strlen(key); - bool key_append = (key_len > 0 && key[key_len-1] == '+'); + bool key_append = (key_len > 0 && + key[key_len-1] == SETTINGS_APPEND_KEY_SUFFIX[0]); if (set->type != type) return FALSE; diff --git a/src/lib-settings/settings.h b/src/lib-settings/settings.h index 90e0af05ca..5a7ee67230 100644 --- a/src/lib-settings/settings.h +++ b/src/lib-settings/settings.h @@ -70,6 +70,10 @@ struct settings_get_params { #define SETTINGS_INCLUDE_GROUP_PREFIX '@' #define SETTINGS_INCLUDE_GROUP_PREFIX_S "@" +/* If setting key has such suffix, append the value to it. This can be used + for SET_STR and SET_FILTER_ARRAY type settings. */ +#define SETTINGS_APPEND_KEY_SUFFIX "+" + /* Set struct settings_instance to events so settings_get() can use it to get instance-specific settings. */ #define SETTINGS_EVENT_INSTANCE "settings_instance"