dovecot-2.2: lib-settings: Added settings_var_expand_with_funcs()

dovecot at dovecot.org dovecot at dovecot.org
Fri Aug 28 13:46:24 UTC 2015


details:   http://hg.dovecot.org/dovecot-2.2/rev/224f0f61d03f
changeset: 19031:224f0f61d03f
user:      Timo Sirainen <tss at iki.fi>
date:      Fri Aug 28 15:43:45 2015 +0200
description:
lib-settings: Added settings_var_expand_with_funcs()

diffstat:

 src/lib-settings/settings-parser.c |  25 +++++++++++++++++++------
 src/lib-settings/settings-parser.h |   6 ++++++
 2 files changed, 25 insertions(+), 6 deletions(-)

diffs (90 lines):

diff -r 061c21b5c5e4 -r 224f0f61d03f src/lib-settings/settings-parser.c
--- a/src/lib-settings/settings-parser.c	Fri Aug 28 15:07:35 2015 +0200
+++ b/src/lib-settings/settings-parser.c	Fri Aug 28 15:43:45 2015 +0200
@@ -1211,7 +1211,9 @@
 static void ATTR_NULL(3, 4, 5)
 settings_var_expand_info(const struct setting_parser_info *info, void *set,
 			 pool_t pool,
-			 const struct var_expand_table *table, string_t *str)
+			 const struct var_expand_table *table,
+			 const struct var_expand_func_table *func_table,
+			 void *func_context, string_t *str)
 {
 	const struct setting_define *def;
 	void *value, *const *children;
@@ -1242,7 +1244,8 @@
 				*val += 1;
 			} else if (**val == SETTING_STRVAR_UNEXPANDED[0]) {
 				str_truncate(str, 0);
-				var_expand(str, *val + 1, table);
+				var_expand_with_funcs(str, *val + 1, table,
+						      func_table, func_context);
 				*val = p_strdup(pool, str_c(str));
 			} else {
 				i_assert(**val == SETTING_STRVAR_EXPANDED[0]);
@@ -1260,8 +1263,8 @@
 			children = array_get(val, &count);
 			for (i = 0; i < count; i++) {
 				settings_var_expand_info(def->list_info,
-							 children[i], pool,
-							 table, str);
+					children[i], pool, table, func_table,
+					func_context, str);
 			}
 			break;
 		}
@@ -1273,11 +1276,21 @@
 			 void *set, pool_t pool,
 			 const struct var_expand_table *table)
 {
+	return settings_var_expand_with_funcs(info, set, pool, table, NULL, NULL);
+}
+
+void settings_var_expand_with_funcs(const struct setting_parser_info *info,
+				    void *set, pool_t pool,
+				    const struct var_expand_table *table,
+				    const struct var_expand_func_table *func_table,
+				    void *func_context)
+{
 	string_t *str;
 
 	T_BEGIN {
 		str = t_str_new(256);
-		settings_var_expand_info(info, set, pool, table, str);
+		settings_var_expand_info(info, set, pool, table,
+					 func_table, func_context, str);
 	} T_END;
 }
 
@@ -1288,7 +1301,7 @@
 	for (i = 0; i < ctx->root_count; i++) {
 		settings_var_expand_info(ctx->roots[i].info,
 					 ctx->roots[i].set_struct,
-					 NULL, NULL, NULL);
+					 NULL, NULL, NULL, NULL, NULL);
 	}
 }
 
diff -r 061c21b5c5e4 -r 224f0f61d03f src/lib-settings/settings-parser.h
--- a/src/lib-settings/settings-parser.h	Fri Aug 28 15:07:35 2015 +0200
+++ b/src/lib-settings/settings-parser.h	Fri Aug 28 15:43:45 2015 +0200
@@ -2,6 +2,7 @@
 #define SETTINGS_PARSER_H
 
 struct var_expand_table;
+struct var_expand_func_table;
 
 #define SETTINGS_SEPARATOR '/'
 #define SETTINGS_SEPARATOR_S "/"
@@ -178,6 +179,11 @@
 void settings_var_expand(const struct setting_parser_info *info,
 			 void *set, pool_t pool,
 			 const struct var_expand_table *table);
+void settings_var_expand_with_funcs(const struct setting_parser_info *info,
+				    void *set, pool_t pool,
+				    const struct var_expand_table *table,
+				    const struct var_expand_func_table *func_table,
+				    void *func_context);
 /* Go through all the settings and return the first one that has an unexpanded
    setting containing the given %key. */
 bool settings_vars_have_key(const struct setting_parser_info *info, void *set,


More information about the dovecot-cvs mailing list