]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-settings: Add and use SETTINGS_APPEND_KEY_SUFFIX macro
authorTimo Sirainen <timo.sirainen@open-xchange.com>
Fri, 11 Apr 2025 10:47:51 +0000 (13:47 +0300)
committertimo.sirainen <timo.sirainen@open-xchange.com>
Mon, 12 May 2025 15:51:47 +0000 (15:51 +0000)
src/lib-settings/settings.c
src/lib-settings/settings.h

index 341eebdeaa73bffa16db1e1bf5cd2c7ed41773e6..fcf90c08ec4f692dd5e999a292aa51b6dfcf0930 100644 (file)
@@ -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;
index 90e0af05caa5ad0af5f2cac61de84fa5f463344d..5a7ee6723050e9c3ac6df830b2d8c85ab7aea31a 100644 (file)
@@ -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"