From 61f45f55439e542d8645d1851cb56ffc36cd10f6 Mon Sep 17 00:00:00 2001 From: Timo Sirainen Date: Mon, 5 Apr 2010 03:56:57 +0300 Subject: [PATCH] lib-master: Added master_service_set_has_config_override(). --HG-- branch : HEAD --- src/lib-master/master-service-settings.c | 31 ++++++++++++++++++++++++ src/lib-master/master-service-settings.h | 4 +++ 2 files changed, 35 insertions(+) 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 -- 2.47.3