From: Timo Sirainen Date: Mon, 10 Mar 2025 17:04:02 +0000 (+0200) Subject: config: Add config_parsed_get_setting_change_counter() X-Git-Tag: 2.4.1~51 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=f8a136d46003200b1cfa4ad963d8b85b1c61c959;p=thirdparty%2Fdovecot%2Fcore.git config: Add config_parsed_get_setting_change_counter() --- diff --git a/src/config/config-parser.c b/src/config/config-parser.c index 4d80460c2b..356de2d5ac 100644 --- a/src/config/config-parser.c +++ b/src/config/config-parser.c @@ -3081,9 +3081,10 @@ config_parsed_strlist_append(string_t *keyvals, } } -const char * -config_parsed_get_setting(struct config_parsed *config, - const char *info_name, const char *key) +static const char * +config_parsed_get_setting_full(struct config_parsed *config, + const char *info_name, const char *key, + unsigned int *change_counter_r) { struct config_filter_parser *filter_parser = config_parsed_get_global_filter_parser(config); @@ -3106,6 +3107,10 @@ config_parsed_get_setting(struct config_parsed *config, const struct setting_define *def = &l[info_idx].info->defines[key_idx]; + if (change_counter_r != NULL) { + *change_counter_r = l[info_idx].change_counters[key_idx]; + return NULL; + } /* Custom handler for the import_environment strlist setting. The calling function expects a string of key=value pairs. See master_service_get_import_environment_keyvals() for the original @@ -3135,6 +3140,24 @@ config_parsed_get_setting(struct config_parsed *config, return str_c(str); } +const char * +config_parsed_get_setting(struct config_parsed *config, + const char *info_name, const char *key) +{ + return config_parsed_get_setting_full(config, info_name, key, NULL); +} + +unsigned int +config_parsed_get_setting_change_counter(struct config_parsed *config, + const char *info_name, const char *key) +{ + unsigned int change_counter; + + (void)config_parsed_get_setting_full(config, info_name, key, + &change_counter); + return change_counter; +} + const struct setting_define * config_parsed_key_lookup(struct config_parsed *config, const char *key) { diff --git a/src/config/config-parser.h b/src/config/config-parser.h index 7c1bd128b6..949aac100b 100644 --- a/src/config/config-parser.h +++ b/src/config/config-parser.h @@ -102,6 +102,11 @@ void config_fill_set_parser(struct setting_parser_context *parser, const char * config_parsed_get_setting(struct config_parsed *config, const char *info_name, const char *key); +/* Return the change_counter for the specified setting. */ +unsigned int +config_parsed_get_setting_change_counter(struct config_parsed *config, + const char *info_name, + const char *key); /* Lookup setting with the specified key. */ const struct setting_define * config_parsed_key_lookup(struct config_parsed *config, const char *key);