summaryrefslogtreecommitdiff
path: root/apps
diff options
context:
space:
mode:
authorCorey Farrell <git@cfware.com>2017-12-12 13:55:12 -0500
committerCorey Farrell <git@cfware.com>2017-12-15 10:20:51 -0500
commit501f4dcdd8790283e1db809e23133dbeb3a1f27c (patch)
tree32837e36ec0a183f2045b4877c3a8ad817aece01 /apps
parent7413bcbeb5fc0eaa22de91e8d69714b725567efa (diff)
aco: Minimize use of regex.
Remove nearly all use of regex from ACO users. Still remaining: * app_confbridge has a legitamate use of option name regex. * ast_sorcery_object_fields_register is implemented with regex, all callers use simple prefix based regex. I haven't decided the best way to fix this in both 13/15 and master. Change-Id: Ib5ed478218d8a661ace4d2eaaea98b59a897974b
Diffstat (limited to 'apps')
-rw-r--r--apps/app_agent_pool.c14
-rw-r--r--apps/app_skel.c18
-rw-r--r--apps/confbridge/conf_config_parser.c20
3 files changed, 32 insertions, 20 deletions
diff --git a/apps/app_agent_pool.c b/apps/app_agent_pool.c
index a637bbe5f..ef8b95ec8 100644
--- a/apps/app_agent_pool.c
+++ b/apps/app_agent_pool.c
@@ -457,11 +457,17 @@ struct agents_cfg {
struct ao2_container *agents;
};
+static const char *agent_type_blacklist[] = {
+ "general",
+ "agents",
+ NULL,
+};
+
static struct aco_type agent_type = {
.type = ACO_ITEM,
.name = "agent-id",
- .category_match = ACO_BLACKLIST,
- .category = "^(general|agents)$",
+ .category_match = ACO_BLACKLIST_ARRAY,
+ .category = (const char *)agent_type_blacklist,
.item_alloc = agent_cfg_alloc,
.item_find = agent_cfg_find,
.item_offset = offsetof(struct agents_cfg, agents),
@@ -473,8 +479,8 @@ static struct aco_type *agent_types[] = ACO_TYPES(&agent_type);
static struct aco_type general_type = {
.type = ACO_GLOBAL,
.name = "global",
- .category_match = ACO_WHITELIST,
- .category = "^general$",
+ .category_match = ACO_WHITELIST_EXACT,
+ .category = "general",
};
static struct aco_file agents_conf = {
diff --git a/apps/app_skel.c b/apps/app_skel.c
index 12afdc726..20e6abfcc 100644
--- a/apps/app_skel.c
+++ b/apps/app_skel.c
@@ -244,8 +244,8 @@ static struct aco_type global_option = {
.type = ACO_GLOBAL,
.name = "globals",
.item_offset = offsetof(struct skel_config, global),
- .category_match = ACO_WHITELIST,
- .category = "^general$",
+ .category_match = ACO_WHITELIST_EXACT,
+ .category = "general",
};
struct aco_type *global_options[] = ACO_TYPES(&global_option);
@@ -255,18 +255,24 @@ static struct aco_type sound_option = {
.type = ACO_GLOBAL,
.name = "sounds",
.item_offset = offsetof(struct skel_config, global),
- .category_match = ACO_WHITELIST,
- .category = "^sounds$",
+ .category_match = ACO_WHITELIST_EXACT,
+ .category = "sounds",
};
struct aco_type *sound_options[] = ACO_TYPES(&sound_option);
+static const char *level_categories[] = {
+ "general",
+ "sounds",
+ NULL,
+};
+
/*! \brief An aco_type structure to link the everything but the "general" and "sounds" categories to the skel_level type */
static struct aco_type level_option = {
.type = ACO_ITEM,
.name = "level",
- .category_match = ACO_BLACKLIST,
- .category = "^(general|sounds)$",
+ .category_match = ACO_BLACKLIST_ARRAY,
+ .category = (const char *)level_categories,
.item_alloc = skel_level_alloc,
.item_find = skel_level_find,
.item_offset = offsetof(struct skel_config, levels),
diff --git a/apps/confbridge/conf_config_parser.c b/apps/confbridge/conf_config_parser.c
index 2de1ec238..16d393526 100644
--- a/apps/confbridge/conf_config_parser.c
+++ b/apps/confbridge/conf_config_parser.c
@@ -377,7 +377,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
regardless if this limit is reached or not.
</para></description>
</configOption>
- <configOption name="^sound_">
+ <configOption name="sound_">
<synopsis>Override the various conference bridge sound files</synopsis>
<description><para>
All sounds in the conference are customizable using the bridge profile options below.
@@ -592,8 +592,8 @@ static void *bridge_profile_find(struct ao2_container *container, const char *ca
static struct aco_type bridge_type = {
.type = ACO_ITEM,
.name = "bridge_profile",
- .category_match = ACO_BLACKLIST,
- .category = "^general$",
+ .category_match = ACO_BLACKLIST_EXACT,
+ .category = "general",
.matchfield = "type",
.matchvalue = "bridge",
.item_alloc = bridge_profile_alloc,
@@ -629,8 +629,8 @@ static void *user_profile_find(struct ao2_container *container, const char *cate
static struct aco_type user_type = {
.type = ACO_ITEM,
.name = "user_profile",
- .category_match = ACO_BLACKLIST,
- .category = "^general$",
+ .category_match = ACO_BLACKLIST_EXACT,
+ .category = "general",
.matchfield = "type",
.matchvalue = "user",
.item_alloc = user_profile_alloc,
@@ -660,8 +660,8 @@ static void *menu_find(struct ao2_container *container, const char *category)
static struct aco_type menu_type = {
.type = ACO_ITEM,
.name = "menu",
- .category_match = ACO_BLACKLIST,
- .category = "^general$",
+ .category_match = ACO_BLACKLIST_EXACT,
+ .category = "general",
.matchfield = "type",
.matchvalue = "menu",
.item_alloc = menu_alloc,
@@ -678,8 +678,8 @@ static struct aco_type *user_types[] = ACO_TYPES(&user_type);
static struct aco_type general_type = {
.type = ACO_GLOBAL,
.name = "global",
- .category_match = ACO_WHITELIST,
- .category = "^general$",
+ .category_match = ACO_WHITELIST_EXACT,
+ .category = "general",
};
static struct aco_file confbridge_conf = {
@@ -2149,7 +2149,7 @@ int conf_load_config(void)
aco_option_register(&cfg_info, "record_file", ACO_EXACT, bridge_types, NULL, OPT_CHAR_ARRAY_T, 0, CHARFLDSET(struct bridge_profile, rec_file));
aco_option_register(&cfg_info, "regcontext", ACO_EXACT, bridge_types, NULL, OPT_CHAR_ARRAY_T, 0, CHARFLDSET(struct bridge_profile, regcontext));
aco_option_register(&cfg_info, "language", ACO_EXACT, bridge_types, "en", OPT_CHAR_ARRAY_T, 0, CHARFLDSET(struct bridge_profile, language));
- aco_option_register_custom(&cfg_info, "^sound_", ACO_REGEX, bridge_types, NULL, sound_option_handler, 0);
+ aco_option_register_custom(&cfg_info, "sound_", ACO_PREFIX, bridge_types, NULL, sound_option_handler, 0);
/* This option should only be used with the CONFBRIDGE dialplan function */
aco_option_register_custom(&cfg_info, "template", ACO_EXACT, bridge_types, NULL, bridge_template_handler, 0);