]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-master: Added master_service_set_has_config_override().
authorTimo Sirainen <tss@iki.fi>
Mon, 5 Apr 2010 00:56:57 +0000 (03:56 +0300)
committerTimo Sirainen <tss@iki.fi>
Mon, 5 Apr 2010 00:56:57 +0000 (03:56 +0300)
--HG--
branch : HEAD

src/lib-master/master-service-settings.c
src/lib-master/master-service-settings.h

index 7c1a70511ccd4fddd2609323cadd4d8230bfa58f..842d7320186cff4ff294827bff95abd3f9d5b74e 100644 (file)
@@ -437,3 +437,34 @@ int master_service_set(struct master_service *service, const char *line)
 {
        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;
+}
index 78a8a4af48b74b36865d4be865048770695971f3..0ddde37f85b3d35616eb3b22597bbca3ce5bba99 100644 (file)
@@ -66,4 +66,8 @@ void **master_service_settings_get_others(struct master_service *service);
 
 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