summaryrefslogtreecommitdiff
path: root/utils/ael_main.c
diff options
context:
space:
mode:
authorSteve Murphy <murf@digium.com>2007-10-26 17:39:39 +0000
committerSteve Murphy <murf@digium.com>2007-10-26 17:39:39 +0000
commitc9f3efc3819c2939101b6fad9f659690c8a325a4 (patch)
tree684099f02056498804e98698f642101c1af2ebfa /utils/ael_main.c
parentcf861b38c79e99feaa66d17c9e6c1d6b75fd988c (diff)
Merged revisions 87168 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r87168 | murf | 2007-10-26 10:34:02 -0600 (Fri, 26 Oct 2007) | 1 line closes issue #11086 where a user complains that references to following contexts report a problem; The problem was REALLy that he was referring to empty contexts, which were being ignored. Reporter stated that empty contexts should be OK. I checked it out against extensions.conf, and sure enough, empty contexts ARE ok. So, I removed the restriction from AEL. This, though, highlighted a problem with multiple contexts of the same name. This should be OK, also. So, I added the extend keyword to AEL, and it can preceed the 'context' keyword (mixed with 'abstract', if nec.). This will turn off the warnings in AEL if the same context name is used 2 or more times. Also, I now call ast_context_find_or_create for contexts now, instead of just ast_context_create; I did this because pbx_config does this. The 'extend' keyword thus becomes a statement of intent. AEL can now duplicate the behavior of pbx_config, ........ git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@87187 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'utils/ael_main.c')
-rw-r--r--utils/ael_main.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/utils/ael_main.c b/utils/ael_main.c
index 58939f9a0..8955aa045 100644
--- a/utils/ael_main.c
+++ b/utils/ael_main.c
@@ -91,6 +91,7 @@ int ast_add_extension2(struct ast_context *con,
const char *registrar);
void pbx_builtin_setvar(void *chan, void *data);
struct ast_context * ast_context_create(void **extcontexts, const char *name, const char *registrar);
+struct ast_context * ast_context_find_or_create(void **extcontexts, const char *name, const char *registrar);
void ast_context_add_ignorepat2(struct ast_context *con, const char *value, const char *registrar);
void ast_context_add_include2(struct ast_context *con, const char *value, const char *registrar);
void ast_context_add_switch2(struct ast_context *con, const char *value, const char *data, int eval, const char *registrar);
@@ -359,6 +360,21 @@ struct ast_context * ast_context_create(void **extcontexts, const char *name, co
return x;
}
+struct ast_context * ast_context_find_or_create(void **extcontexts, const char *name, const char *registrar)
+{
+ struct ast_context *x = calloc(1, sizeof(*x));
+ if (!x)
+ return NULL;
+ x->next = context_list;
+ context_list = x;
+ if (!no_comp)
+ printf("Executed ast_context_find_or_create(conts, name=%s, registrar=%s);\n", name, registrar);
+ conts++;
+ strncpy(x->name, name, sizeof(x->name) - 1);
+ strncpy(x->registrar, registrar, sizeof(x->registrar) - 1);
+ return x;
+}
+
void ast_context_add_ignorepat2(struct ast_context *con, const char *value, const char *registrar)
{
if(!no_comp)