dovecot-2.0: lib-master: Added master_service_set_has_config_ove...

dovecot at dovecot.org dovecot at dovecot.org
Mon Apr 5 03:57:25 EEST 2010


details:   http://hg.dovecot.org/dovecot-2.0/rev/cdef53978a77
changeset: 11056:cdef53978a77
user:      Timo Sirainen <tss at iki.fi>
date:      Mon Apr 05 03:56:57 2010 +0300
description:
lib-master: Added master_service_set_has_config_override().

diffstat:

 src/lib-master/master-service-settings.c |  31 +++++++++++++++++++++++++++++++
 src/lib-master/master-service-settings.h |   4 ++++
 2 files changed, 35 insertions(+), 0 deletions(-)

diffs (50 lines):

diff -r 49c0232047f0 -r cdef53978a77 src/lib-master/master-service-settings.c
--- a/src/lib-master/master-service-settings.c	Mon Apr 05 03:56:46 2010 +0300
+++ b/src/lib-master/master-service-settings.c	Mon Apr 05 03:56:57 2010 +0300
@@ -437,3 +437,34 @@
 {
 	return settings_parse_line(service->set_parser, line);
 }
+
+bool master_service_set_has_config_override(struct master_service *service,
+					    const char *key)
+{
+	const char *const *override, *key_root;
+	bool ret;
+
+	if (!array_is_created(&service->config_overrides))
+		return FALSE;
+
+	key_root = settings_parse_unalias(service->set_parser, key);
+	if (key_root == NULL)
+		key_root = key;
+
+	array_foreach(&service->config_overrides, override) {
+		T_BEGIN {
+			const char *okey, *okey_root;
+
+			okey = t_strcut(*override, '=');
+			okey_root = settings_parse_unalias(service->set_parser,
+							   okey);
+			if (okey_root == NULL)
+				okey_root = okey;
+			ret = strcmp(okey_root, key_root) == 0;
+		} T_END;
+
+		if (ret)
+			return TRUE;
+	}
+	return FALSE;
+}
diff -r 49c0232047f0 -r cdef53978a77 src/lib-master/master-service-settings.h
--- a/src/lib-master/master-service-settings.h	Mon Apr 05 03:56:46 2010 +0300
+++ b/src/lib-master/master-service-settings.h	Mon Apr 05 03:56:57 2010 +0300
@@ -66,4 +66,8 @@
 
 int master_service_set(struct master_service *service, const char *line);
 
+/* Returns TRUE if -o key=value parameter was used. Setting keys in overrides
+   and parameter are unaliased before comparing. */
+bool master_service_set_has_config_override(struct master_service *service,
+					    const char *key);
 #endif


More information about the dovecot-cvs mailing list