]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib: var-expand - Add support for escaping variables
authorTimo Sirainen <timo.sirainen@open-xchange.com>
Thu, 7 Mar 2024 07:33:38 +0000 (09:33 +0200)
committerAki Tuomi <aki.tuomi@open-xchange.com>
Fri, 17 Jan 2025 08:39:58 +0000 (10:39 +0200)
src/lib/var-expand.c
src/lib/var-expand.h

index 33b98c8ec776bc9fa94c69c45ff121dc920a78ee..51d7938f918cf4a08175dddb647391015aefd349 100644 (file)
@@ -766,6 +766,11 @@ int var_expand(string_t *dest, const char *str,
                        if (final_ret > ret)
                                final_ret = ret;
 
+                       if (params->escape_func != NULL) {
+                               var = params->escape_func(var,
+                                       params->escape_context);
+                       }
+
                        if (ret <= 0)
                                str_append(dest, var);
                        else {
index 7272efe5c5c52791a331f5527c36930df9c84cce..d5c1e8878163fb5bee5028d36b1c78d1a0ef6da0 100644 (file)
@@ -1,6 +1,8 @@
 #ifndef VAR_EXPAND_H
 #define VAR_EXPAND_H
 
+typedef const char *var_expand_escape_t(const char *str, void *context);
+
 struct var_expand_table {
        char key;
        const char *value;
@@ -21,6 +23,10 @@ struct var_expand_params_func {
 };
 
 struct var_expand_params {
+       /* If non-NULL, all variables are escaped with this function. */
+       var_expand_escape_t *escape_func;
+       void *escape_context;
+
        /* Single table: */
        const struct var_expand_table *table;
        const struct var_expand_func_table *func_table;