const struct setting_parser_info *info)
{
config_parser_set_change_counter(ctx, CONFIG_PARSER_CHANGE_INTERNAL);
- config_parser_add_info_defaults_arr(ctx, info, info->default_settings);
config_parser_add_info_defaults_arr(ctx, info, info->default_filter_settings);
config_parser_set_change_counter(ctx, CONFIG_PARSER_CHANGE_EXPLICIT);
}
if (/struct .*_settings \{/ ||
/struct setting_define.*\{/ ||
/struct .*_default_settings = \{/ ||
- /struct setting_keyvalue.*_default_settings_keyvalue\[\] = \{/ ||
/struct setting_keyvalue.*_default_filter_settings_keyvalue\[\] = \{/) {
# settings-related structure - copy.
$state = "copy-to-end-of-block";
}
}
-static void
-setting_parser_fill_defaults_strings(struct setting_parser_context *ctx)
-{
- const struct setting_keyvalue *defaults = ctx->info->default_settings;
- if (defaults == NULL)
- return;
-
- for (unsigned int i = 0; defaults[i].key != NULL; i++) {
- const char *key = defaults[i].key;
- const char *value = defaults[i].value;
- if (settings_parse_keyvalue_nodup(ctx, key, value) <= 0) {
- i_panic("Failed to add default setting %s=%s: %s",
- key, value, settings_parser_get_error(ctx));
- }
- }
-}
-
struct setting_parser_context *
settings_parser_init(pool_t set_pool, const struct setting_parser_info *root,
enum settings_parser_flags flags)
ctx->set_struct =
p_malloc(ctx->set_pool, root->struct_size);
setting_parser_copy_defaults(ctx, root);
- setting_parser_fill_defaults_strings(ctx);
}
pool_ref(ctx->set_pool);
const struct setting_define *defines;
const void *defaults;
- /* Add defaults via strings on top of the of defaults struct. */
- const struct setting_keyvalue *default_settings;
/* Add defaults to named filters. These are applied while parsing
the configuration. */
const struct setting_keyvalue *default_filter_settings;