changeset 1063:af288710044a HEAD

updates
author Timo Sirainen <tss@iki.fi>
date Fri, 31 Jan 2003 08:57:40 +0200
parents 0522a0315d2f
children 1577e4cfd569
files src/lib-settings/settings.c src/lib-settings/settings.h src/master/master-settings.c
diffstat 3 files changed, 13 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib-settings/settings.c	Fri Jan 31 08:56:57 2003 +0200
+++ b/src/lib-settings/settings.c	Fri Jan 31 08:57:40 2003 +0200
@@ -59,8 +59,8 @@
 
 #define IS_WHITE(c) ((c) == ' ' || (c) == '\t')
 
-void settings_read(const char *path,
-		   const char *(*callback)(const char *key, const char *value))
+void settings_read(const char *path, settings_callback_t *callback,
+		   void *context)
 {
 	struct istream *input;
 	const char *errormsg;
@@ -114,7 +114,7 @@
 				p--;
 			*p = '\0';
 
-			errormsg = callback(key, line);
+			errormsg = callback(key, line, context);
 		}
 
 		if (errormsg != NULL) {
--- a/src/lib-settings/settings.h	Fri Jan 31 08:56:57 2003 +0200
+++ b/src/lib-settings/settings.h	Fri Jan 31 08:57:40 2003 +0200
@@ -13,11 +13,14 @@
 	size_t offset;
 };
 
+typedef const char *settings_callback_t(const char *key, const char *value,
+					void *context);
+
 const char *
 parse_setting_from_defs(pool_t pool, struct setting_def *defs, void *base,
 			const char *key, const char *value);
 
-void settings_read(const char *path,
-		   const char *(*callback)(const char *key, const char *value));
+void settings_read(const char *path, settings_callback_t *callback,
+		   void *context);
 
 #endif
--- a/src/master/master-settings.c	Fri Jan 31 08:56:57 2003 +0200
+++ b/src/master/master-settings.c	Fri Jan 31 08:57:40 2003 +0200
@@ -451,8 +451,11 @@
 	return NULL;
 }
 
-static const char *parse_setting(const char *key, const char *value)
+static const char *parse_setting(const char *key, const char *value,
+				 void *context)
 {
+	struct settings *set = context;
+
 	if (strcmp(key, "auth") == 0)
 		return parse_new_auth(set, value);
 	if (strncmp(key, "auth_", 5) == 0) {
@@ -484,7 +487,7 @@
 	set = p_new(settings_pool, struct settings, 1);
 	*set = default_settings;
 
-	settings_read(path, parse_setting);
+	settings_read(path, parse_setting, set);
 
         settings_verify(set);
 }