summaryrefslogtreecommitdiff
path: root/main/config_options.c
diff options
context:
space:
mode:
Diffstat (limited to 'main/config_options.c')
-rw-r--r--main/config_options.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/main/config_options.c b/main/config_options.c
index 39a3fbe61..3c2a41204 100644
--- a/main/config_options.c
+++ b/main/config_options.c
@@ -435,12 +435,23 @@ static int process_category(struct ast_config *cfg, struct aco_info *info, struc
* We do not grab a reference to these objects, as the info already holds references to them. This
* pointer is just a convenience. Do not actually store it somewhere. */
void **field;
+ regex_t *regex_skip;
/* Skip preloaded categories if we aren't preloading */
if (!preload && is_preload(file, cat)) {
return 0;
}
+ /* Skip the category if we've been told to ignore it */
+ if (!ast_strlen_zero(file->skip_category)) {
+ regex_skip = build_regex(file->skip_category);
+ if (!regexec(regex_skip, cat, 0, NULL, 0)) {
+ ast_free(regex_skip);
+ return 0;
+ }
+ ast_free(regex_skip);
+ }
+
/* Find aco_type by category, if not found it is an error */
if (!(type = internal_aco_type_find(file, cfg, cat))) {
ast_log(LOG_ERROR, "Could not find config type for category '%s' in '%s'\n", cat, file->filename);