config/output: handle wildcard in get_output_config

In #3916, I overlooked that `get_output_config` does not handle
wildcards unless the config is reloading, which is a remnant of older
iterations of the output config handling that went unnoticed due to
`output_find_config` handling it. With the current version of the
output config handling, having `get_output_config` handle wildcard
configs is actually preferable. This fixes having only a wildcard
output config in the config file or when connecting/enabling a new
output with only a wildcard config existing.
This commit is contained in:
Brian Ashworth 2019-03-16 22:45:06 -04:00 committed by emersion
parent 7b9ae42331
commit 0327c999d7

View file

@ -493,19 +493,20 @@ static struct output_config *get_output_config(char *identifier,
free(result->name); free(result->name);
result->name = strdup(identifier); result->name = strdup(identifier);
merge_output_config(result, oc_id); merge_output_config(result, oc_id);
} else if (config->reloading) { } else {
// Neither config exists, but we need to reset the output so create a
// default config for the output and if a wildcard config exists, merge
// that on top
free(result->name);
result->name = strdup("*");
i = list_seq_find(config->output_configs, output_name_cmp, "*"); i = list_seq_find(config->output_configs, output_name_cmp, "*");
if (i >= 0) { if (i >= 0) {
// No name or identifier config, but there is a wildcard config
free(result->name);
result->name = strdup("*");
merge_output_config(result, config->output_configs->items[i]); merge_output_config(result, config->output_configs->items[i]);
} else if (!config->reloading) {
// No name, identifier, or wildcard config. Since we are not
// reloading with defaults, the output config will be empty, so
// just return NULL
free_output_config(result);
result = NULL;
} }
} else {
free_output_config(result);
result = NULL;
} }
free(id_on_name); free(id_on_name);