From: Timo Sirainen Date: Mon, 5 Apr 2010 00:56:57 +0000 (+0300) Subject: lib-master: Added master_service_set_has_config_override(). X-Git-Tag: 2.0.beta5~218 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=61f45f55439e542d8645d1851cb56ffc36cd10f6;p=thirdparty%2Fdovecot%2Fcore.git lib-master: Added master_service_set_has_config_override(). --HG-- branch : HEAD --- diff --git a/src/lib-master/master-service-settings.c b/src/lib-master/master-service-settings.c index 7c1a70511c..842d732018 100644 --- a/src/lib-master/master-service-settings.c +++ b/src/lib-master/master-service-settings.c @@ -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; +} diff --git a/src/lib-master/master-service-settings.h b/src/lib-master/master-service-settings.h index 78a8a4af48..0ddde37f85 100644 --- a/src/lib-master/master-service-settings.h +++ b/src/lib-master/master-service-settings.h @@ -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