From 4a92e1b367006cdb13053644550e5eb0fab60845 Mon Sep 17 00:00:00 2001 From: Timo Sirainen Date: Thu, 7 Mar 2024 09:33:38 +0200 Subject: [PATCH] lib: var-expand - Add support for escaping variables --- src/lib/var-expand.c | 5 +++++ src/lib/var-expand.h | 6 ++++++ 2 files changed, 11 insertions(+) diff --git a/src/lib/var-expand.c b/src/lib/var-expand.c index 33b98c8ec7..51d7938f91 100644 --- a/src/lib/var-expand.c +++ b/src/lib/var-expand.c @@ -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 { diff --git a/src/lib/var-expand.h b/src/lib/var-expand.h index 7272efe5c5..d5c1e88781 100644 --- a/src/lib/var-expand.h +++ b/src/lib/var-expand.h @@ -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; -- 2.47.3