changeset 11632:8d76b2cef0b5 HEAD

lib-settings: settings_check() now also checks dynamic parsers.
author Timo Sirainen <tss@iki.fi>
date Fri, 25 Jun 2010 15:02:57 +0100
parents d41694c931d0
children 0dc6f14c271d
files src/lib-settings/settings-parser.c
diffstat 1 files changed, 21 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib-settings/settings-parser.c	Fri Jun 25 14:03:20 2010 +0100
+++ b/src/lib-settings/settings-parser.c	Fri Jun 25 15:02:57 2010 +0100
@@ -1027,6 +1027,26 @@
 	return ret;
 }
 
+static bool
+settings_check_dynamic(const struct setting_parser_info *info, pool_t pool,
+		       void *set, const char **error_r)
+{
+	unsigned int i;
+
+	if (info->dynamic_parsers == NULL)
+		return TRUE;
+
+	for (i = 0; info->dynamic_parsers[i].name != NULL; i++) {
+		struct dynamic_settings_parser *dyn = &info->dynamic_parsers[i];
+
+		if (!settings_check(dyn->info, pool,
+				    PTR_OFFSET(set, dyn->struct_offset),
+				    error_r))
+			return FALSE;
+	}
+	return TRUE;
+}
+
 bool settings_check(const struct setting_parser_info *info, pool_t pool,
 		    void *set, const char **error_r)
 {
@@ -1055,7 +1075,7 @@
 				return FALSE;
 		}
 	}
-	return TRUE;
+	return settings_check_dynamic(info, pool, set, error_r);
 }
 
 bool settings_parser_check(struct setting_parser_context *ctx, pool_t pool,