struct settings_mmap_pool *mpool;
void *set_struct;
ARRAY_TYPE(bool) set_seen;
+ ARRAY_TYPE(settings_override_p) overrides;
string_t *str;
const struct var_expand_table *const *tables;
return 1;
}
-static int
-settings_instance_override(struct settings_apply_ctx *ctx,
- const char **error_r)
+static void
+settings_instance_override_init(struct settings_apply_ctx *ctx)
{
- ARRAY_TYPE(settings_override_p) overrides;
struct settings_override *set;
- t_array_init(&overrides, 64);
+ t_array_init(&ctx->overrides, 64);
if (array_is_created(&ctx->instance->overrides)) {
array_foreach_modifiable(&ctx->instance->overrides, set)
- array_push_back(&overrides, &set);
+ array_push_back(&ctx->overrides, &set);
}
if (array_is_created(&ctx->root->overrides)) {
array_foreach_modifiable(&ctx->root->overrides, set)
- array_push_back(&overrides, &set);
+ array_push_back(&ctx->overrides, &set);
}
/* sort overrides so that the most specific ones are first */
- array_sort(&overrides, settings_override_cmp);
+ array_sort(&ctx->overrides, settings_override_cmp);
+}
+
+static int
+settings_instance_override(struct settings_apply_ctx *ctx,
+ const char **error_r)
+{
+ struct settings_override *set;
bool seen_filter = FALSE;
- array_foreach_elem(&overrides, set) {
+ array_foreach_elem(&ctx->overrides, set) {
const char *key = set->key, *value;
unsigned int key_idx;
int ret;
(ctx->flags & SETTINGS_GET_FLAG_FAKE_EXPAND) == 0)
settings_var_expand_init(ctx);
+ settings_instance_override_init(ctx);
ret = settings_instance_override(ctx, error_r);
if (ret > 0)
seen_filter = TRUE;