From 5770adc0a726dab888a3b7267a155b7efab6495a Mon Sep 17 00:00:00 2001 From: Timo Sirainen Date: Thu, 25 Jan 2024 17:38:32 +0200 Subject: [PATCH] config: Split CONFIG_PARSER_CHANGE_INTERNAL to _DEFAULTS and _SERVICE_DEFAULTS They are going to be handled slightly differently. --- src/config/config-parser.c | 12 ++++++------ src/config/config-parser.h | 6 ++++-- src/config/config-request.c | 2 +- 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/src/config/config-parser.c b/src/config/config-parser.c index dac053ac73..cbc793cae0 100644 --- a/src/config/config-parser.c +++ b/src/config/config-parser.c @@ -101,7 +101,7 @@ static struct config_section_stack * config_parser_add_filter_array(struct config_parser_context *ctx, const char *filter_key, const char *name) { - config_parser_set_change_counter(ctx, CONFIG_PARSER_CHANGE_INTERNAL); + config_parser_set_change_counter(ctx, CONFIG_PARSER_CHANGE_SERVICE_DEFAULTS); if (config_apply_exact_line(ctx, NULL, filter_key, name) < 0) { i_panic("Failed to add %s %s: %s", filter_key, name, ctx->error); @@ -133,7 +133,7 @@ config_parser_add_service_default_struct(struct config_parser_context *ctx, const struct setting_parser_info *info = all_infos[service_info_idx]; string_t *value_str = t_str_new(64); - config_parser_set_change_counter(ctx, CONFIG_PARSER_CHANGE_INTERNAL); + config_parser_set_change_counter(ctx, CONFIG_PARSER_CHANGE_SERVICE_DEFAULTS); for (unsigned int i = 0; info->defines[i].key != NULL; i++) { const void *value = CONST_PTR_OFFSET(default_set, info->defines[i].offset); @@ -193,7 +193,7 @@ config_parser_add_service_default_keyvalues(struct config_parser_context *ctx, key = p + 1; } - config_parser_set_change_counter(ctx, CONFIG_PARSER_CHANGE_INTERNAL); + config_parser_set_change_counter(ctx, CONFIG_PARSER_CHANGE_SERVICE_DEFAULTS); if (config_apply_line(ctx, key, defaults[i].value, NULL) < 0) { i_panic("Failed to add default setting %s=%s for service %s: %s", defaults[i].key, defaults[i].value, @@ -249,7 +249,7 @@ config_parser_add_info_defaults_arr(struct config_parser_context *ctx, static void config_parser_add_info_defaults(struct config_parser_context *ctx, const struct setting_parser_info *info) { - config_parser_set_change_counter(ctx, CONFIG_PARSER_CHANGE_INTERNAL); + config_parser_set_change_counter(ctx, CONFIG_PARSER_CHANGE_DEFAULTS); config_parser_add_info_defaults_arr(ctx, info, info->default_settings); config_parser_set_change_counter(ctx, CONFIG_PARSER_CHANGE_EXPLICIT); } @@ -1603,7 +1603,7 @@ config_filter_parser_has_changed_recursive( struct config_module_parser *p = &filter_parser->module_parsers[module_idx]; if (p->change_counters != NULL && - p->change_counters[set_idx] > CONFIG_PARSER_CHANGE_INTERNAL) + p->change_counters[set_idx] == CONFIG_PARSER_CHANGE_EXPLICIT) return TRUE; filter_parser = filter_parser->parent; } @@ -1628,7 +1628,7 @@ config_filter_parser_drop_overridden_default_settings( if (p->change_counters == NULL) continue; for (set_idx = 0; set_idx < p->set_count; set_idx++) { - if (p->change_counters[set_idx] != CONFIG_PARSER_CHANGE_INTERNAL) + if (p->change_counters[set_idx] != CONFIG_PARSER_CHANGE_DEFAULTS) continue; /* Found a default setting. If the same setting is diff --git a/src/config/config-parser.h b/src/config/config-parser.h index 4f1375f4df..e0e3d377a7 100644 --- a/src/config/config-parser.h +++ b/src/config/config-parser.h @@ -6,9 +6,11 @@ #define IS_WHITE(c) ((c) == ' ' || (c) == '\t') /* change_counter used for default settings created internally */ -#define CONFIG_PARSER_CHANGE_INTERNAL 1 +#define CONFIG_PARSER_CHANGE_DEFAULTS 1 +/* change_counter used for default service settings created internally */ +#define CONFIG_PARSER_CHANGE_SERVICE_DEFAULTS 2 /* change_counter used for settings changed by configuration file */ -#define CONFIG_PARSER_CHANGE_EXPLICIT 2 +#define CONFIG_PARSER_CHANGE_EXPLICIT 3 struct config_parsed; diff --git a/src/config/config-request.c b/src/config/config-request.c index 78be50b9be..28e86ecd19 100644 --- a/src/config/config-request.c +++ b/src/config/config-request.c @@ -185,7 +185,7 @@ settings_export(struct config_export_context *ctx, dump_default = TRUE; break; case CONFIG_DUMP_SCOPE_SET_AND_DEFAULT_OVERRIDES: - if (change_value < CONFIG_PARSER_CHANGE_INTERNAL) { + if (change_value == 0) { /* setting is completely unchanged */ continue; } -- 2.47.3