aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--pbx/ael/ael-test/ael-ntest23/extensions.ael7
-rw-r--r--pbx/ael/ael-test/ael-ntest23/qq.ael6
-rw-r--r--pbx/ael/ael-test/ael-ntest23/t1/a.ael4
-rw-r--r--pbx/ael/ael-test/ael-ntest23/t1/b.ael6
-rw-r--r--pbx/ael/ael-test/ael-ntest23/t1/c.ael13
-rw-r--r--pbx/ael/ael-test/ael-ntest23/t2/d.ael4
-rw-r--r--pbx/ael/ael-test/ael-ntest23/t2/e.ael6
-rw-r--r--pbx/ael/ael-test/ael-ntest23/t2/f.ael9
-rw-r--r--pbx/ael/ael-test/ael-ntest23/t3/g.ael4
-rw-r--r--pbx/ael/ael-test/ael-ntest23/t3/h.ael6
-rw-r--r--pbx/ael/ael-test/ael-ntest23/t3/i.ael4
-rw-r--r--pbx/ael/ael-test/ael-ntest23/t3/j.ael6
-rw-r--r--pbx/ael/ael-test/ref.ael-ntest2324
-rw-r--r--res/ael/ael.flex20
-rw-r--r--res/ael/ael_lex.c21
15 files changed, 122 insertions, 18 deletions
diff --git a/pbx/ael/ael-test/ael-ntest23/extensions.ael b/pbx/ael/ael-test/ael-ntest23/extensions.ael
new file mode 100644
index 000000000..7128258ed
--- /dev/null
+++ b/pbx/ael/ael-test/ael-ntest23/extensions.ael
@@ -0,0 +1,7 @@
+#include "t1/*.ael"
+
+context z ()
+{
+ 123 => NoOp(hi there, z);
+ 124 => NoOp(hi there, z);
+}
diff --git a/pbx/ael/ael-test/ael-ntest23/qq.ael b/pbx/ael/ael-test/ael-ntest23/qq.ael
new file mode 100644
index 000000000..c446f53fc
--- /dev/null
+++ b/pbx/ael/ael-test/ael-ntest23/qq.ael
@@ -0,0 +1,6 @@
+
+
+context qq
+{
+ 567 => NoOp(hi there, qq);
+}
diff --git a/pbx/ael/ael-test/ael-ntest23/t1/a.ael b/pbx/ael/ael-test/ael-ntest23/t1/a.ael
new file mode 100644
index 000000000..62e3fc588
--- /dev/null
+++ b/pbx/ael/ael-test/ael-ntest23/t1/a.ael
@@ -0,0 +1,4 @@
+context a
+{
+ 134 => NoOp(hi there, a);
+}
diff --git a/pbx/ael/ael-test/ael-ntest23/t1/b.ael b/pbx/ael/ael-test/ael-ntest23/t1/b.ael
new file mode 100644
index 000000000..29d8d1ff4
--- /dev/null
+++ b/pbx/ael/ael-test/ael-ntest23/t1/b.ael
@@ -0,0 +1,6 @@
+
+
+context b
+{
+ 456 => NoOp(hithere, b);
+}
diff --git a/pbx/ael/ael-test/ael-ntest23/t1/c.ael b/pbx/ael/ael-test/ael-ntest23/t1/c.ael
new file mode 100644
index 000000000..d18eb7677
--- /dev/null
+++ b/pbx/ael/ael-test/ael-ntest23/t1/c.ael
@@ -0,0 +1,13 @@
+
+
+context c()
+{
+ 567 => NoOp(hi there, c);
+}
+
+#include "t2/*.ael"
+
+context w()
+{
+ 890 => NoOp(hi there, w);
+}
diff --git a/pbx/ael/ael-test/ael-ntest23/t2/d.ael b/pbx/ael/ael-test/ael-ntest23/t2/d.ael
new file mode 100644
index 000000000..6362278f7
--- /dev/null
+++ b/pbx/ael/ael-test/ael-ntest23/t2/d.ael
@@ -0,0 +1,4 @@
+context d
+{
+ 134 => NoOp(hi there, d);
+}
diff --git a/pbx/ael/ael-test/ael-ntest23/t2/e.ael b/pbx/ael/ael-test/ael-ntest23/t2/e.ael
new file mode 100644
index 000000000..9465c8b4e
--- /dev/null
+++ b/pbx/ael/ael-test/ael-ntest23/t2/e.ael
@@ -0,0 +1,6 @@
+
+
+context e
+{
+ 456 => NoOp(hithere, e);
+}
diff --git a/pbx/ael/ael-test/ael-ntest23/t2/f.ael b/pbx/ael/ael-test/ael-ntest23/t2/f.ael
new file mode 100644
index 000000000..ba15a6389
--- /dev/null
+++ b/pbx/ael/ael-test/ael-ntest23/t2/f.ael
@@ -0,0 +1,9 @@
+#include "qq.ael"
+
+context f
+{
+ 567 => NoOp(hi there, f);
+}
+
+#include "t3/*.ael"
+
diff --git a/pbx/ael/ael-test/ael-ntest23/t3/g.ael b/pbx/ael/ael-test/ael-ntest23/t3/g.ael
new file mode 100644
index 000000000..0f1ecc805
--- /dev/null
+++ b/pbx/ael/ael-test/ael-ntest23/t3/g.ael
@@ -0,0 +1,4 @@
+context g
+{
+ 134 => NoOp(hi there, g);
+}
diff --git a/pbx/ael/ael-test/ael-ntest23/t3/h.ael b/pbx/ael/ael-test/ael-ntest23/t3/h.ael
new file mode 100644
index 000000000..f9e3ca89f
--- /dev/null
+++ b/pbx/ael/ael-test/ael-ntest23/t3/h.ael
@@ -0,0 +1,6 @@
+
+
+context h
+{
+ 456 => NoOp(hithere, h);
+}
diff --git a/pbx/ael/ael-test/ael-ntest23/t3/i.ael b/pbx/ael/ael-test/ael-ntest23/t3/i.ael
new file mode 100644
index 000000000..5639a1e98
--- /dev/null
+++ b/pbx/ael/ael-test/ael-ntest23/t3/i.ael
@@ -0,0 +1,4 @@
+context i
+{
+ 134 => NoOp(hi there, i);
+}
diff --git a/pbx/ael/ael-test/ael-ntest23/t3/j.ael b/pbx/ael/ael-test/ael-ntest23/t3/j.ael
new file mode 100644
index 000000000..8dfc6c05f
--- /dev/null
+++ b/pbx/ael/ael-test/ael-ntest23/t3/j.ael
@@ -0,0 +1,6 @@
+
+
+context j
+{
+ 567 => NoOp(hi there, j);
+}
diff --git a/pbx/ael/ael-test/ref.ael-ntest23 b/pbx/ael/ael-test/ref.ael-ntest23
new file mode 100644
index 000000000..b7b4852ec
--- /dev/null
+++ b/pbx/ael/ael-test/ref.ael-ntest23
@@ -0,0 +1,24 @@
+
+(If you find progress and other non-error messages irritating, you can use -q to suppress them)
+
+(You can use the -n option if you aren't interested in seeing all the instructions generated by the compiler)
+
+
+(You can use the -w option to dump extensions.conf format to extensions.conf.aeldump)
+LOG: lev:2 file:pbx_ael.c line:116 func: pbx_load_module Starting AEL load process.
+LOG: lev:2 file:ael.flex line:672 func: setup_filestack --Read in included file ././t1/a.ael, 41 chars
+LOG: lev:2 file:ael.flex line:672 func: setup_filestack --Read in included file ././t1/b.ael, 42 chars
+LOG: lev:2 file:ael.flex line:672 func: setup_filestack --Read in included file ././t1/c.ael, 110 chars
+LOG: lev:4 file:ael.y line:774 func: ael_yyerror ==== File: ././t1/c.ael, Line 3, Cols: 10-10: Error: syntax error, unexpected '(', expecting '{'
+LOG: lev:2 file:ael.flex line:672 func: setup_filestack --Read in included file ././t2/d.ael, 41 chars
+LOG: lev:2 file:ael.flex line:672 func: setup_filestack --Read in included file ././t2/e.ael, 42 chars
+LOG: lev:2 file:ael.flex line:672 func: setup_filestack --Read in included file ././t2/f.ael, 82 chars
+LOG: lev:2 file:ael.flex line:672 func: setup_filestack --Read in included file ././qq.ael, 45 chars
+LOG: lev:2 file:ael.flex line:672 func: setup_filestack --Read in included file ././t3/g.ael, 41 chars
+LOG: lev:2 file:ael.flex line:672 func: setup_filestack --Read in included file ././t3/h.ael, 42 chars
+LOG: lev:2 file:ael.flex line:672 func: setup_filestack --Read in included file ././t3/i.ael, 41 chars
+LOG: lev:2 file:ael.flex line:672 func: setup_filestack --Read in included file ././t3/j.ael, 43 chars
+LOG: lev:4 file:ael.y line:774 func: ael_yyerror ==== File: ././t1/c.ael, Line 10, Cols: 10-10: Error: syntax error, unexpected '(', expecting '{'
+LOG: lev:2 file:pbx_ael.c line:129 func: pbx_load_module AEL load process: parsed config file name './extensions.ael'.
+LOG: lev:4 file:pbx_ael.c line:145 func: pbx_load_module Sorry, but 2 syntax errors and 0 semantic errors were detected. It doesn't make sense to compile.
+LOG: lev:4 file:ael2_parse line:544 func: main 0 contexts, 0 extensions, 0 priorities
diff --git a/res/ael/ael.flex b/res/ael/ael.flex
index cf2d36a2c..35ca126aa 100644
--- a/res/ael/ael.flex
+++ b/res/ael/ael.flex
@@ -445,8 +445,6 @@ includes { STORE_POS; return KW_INCLUDES;}
<<EOF>> {
char fnamebuf[2048];
if (include_stack_index > 0 && include_stack[include_stack_index-1].globbuf_pos < include_stack[include_stack_index-1].globbuf.gl_pathc-1) {
- free(my_file);
- my_file = 0;
yy_delete_buffer( YY_CURRENT_BUFFER, yyscanner );
include_stack[include_stack_index-1].globbuf_pos++;
setup_filestack(fnamebuf, sizeof(fnamebuf), &include_stack[include_stack_index-1].globbuf, include_stack[include_stack_index-1].globbuf_pos, yyscanner, 0);
@@ -457,13 +455,13 @@ includes { STORE_POS; return KW_INCLUDES;}
free(include_stack[include_stack_index].fname);
include_stack[include_stack_index].fname = 0;
}
+ if (my_file) {
+ free(my_file);
+ my_file = 0;
+ }
if ( --include_stack_index < 0 ) {
yyterminate();
} else {
- if (my_file) {
- free(my_file);
- my_file = 0;
- }
globfree(&include_stack[include_stack_index].globbuf);
include_stack[include_stack_index].globbuf_pos = -1;
@@ -670,12 +668,16 @@ static void setup_filestack(char *fnamebuf2, int fnamebuf_siz, glob_t *globbuf,
buffer[stats.st_size] = 0;
ast_log(LOG_NOTICE," --Read in included file %s, %d chars\n",fnamebuf2, (int)stats.st_size);
fclose(in1);
- if (my_file)
- free(my_file);
- my_file = strdup(fnamebuf2);
+ if (include_stack[include_stack_index].fname) {
+ free(include_stack[include_stack_index].fname);
+ include_stack[include_stack_index].fname = 0;
+ }
include_stack[include_stack_index].fname = strdup(my_file);
include_stack[include_stack_index].lineno = my_lineno;
include_stack[include_stack_index].colno = my_col+yyleng;
+ if (my_file)
+ free(my_file);
+ my_file = strdup(fnamebuf2);
if (create)
include_stack[include_stack_index].globbuf = *globbuf;
diff --git a/res/ael/ael_lex.c b/res/ael/ael_lex.c
index 26206af5d..1f96e3377 100644
--- a/res/ael/ael_lex.c
+++ b/res/ael/ael_lex.c
@@ -793,6 +793,7 @@ static yyconst flex_int16_t yy_chk[1035] =
* bison-locations is probably not needed.
*/
#line 63 "ael.flex"
+#include "asterisk.h"
ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
#include <sys/types.h>
@@ -1745,8 +1746,6 @@ case YY_STATE_EOF(comment):
{
char fnamebuf[2048];
if (include_stack_index > 0 && include_stack[include_stack_index-1].globbuf_pos < include_stack[include_stack_index-1].globbuf.gl_pathc-1) {
- free(my_file);
- my_file = 0;
ael_yy_delete_buffer(YY_CURRENT_BUFFER,yyscanner );
include_stack[include_stack_index-1].globbuf_pos++;
setup_filestack(fnamebuf, sizeof(fnamebuf), &include_stack[include_stack_index-1].globbuf, include_stack[include_stack_index-1].globbuf_pos, yyscanner, 0);
@@ -1757,13 +1756,13 @@ case YY_STATE_EOF(comment):
free(include_stack[include_stack_index].fname);
include_stack[include_stack_index].fname = 0;
}
+ if (my_file) {
+ free(my_file);
+ my_file = 0;
+ }
if ( --include_stack_index < 0 ) {
yyterminate();
} else {
- if (my_file) {
- free(my_file);
- my_file = 0;
- }
globfree(&include_stack[include_stack_index].globbuf);
include_stack[include_stack_index].globbuf_pos = -1;
@@ -3102,12 +3101,16 @@ static void setup_filestack(char *fnamebuf2, int fnamebuf_siz, glob_t *globbuf,
buffer[stats.st_size] = 0;
ast_log(LOG_NOTICE," --Read in included file %s, %d chars\n",fnamebuf2, (int)stats.st_size);
fclose(in1);
- if (my_file)
- free(my_file);
- my_file = strdup(fnamebuf2);
+ if (include_stack[include_stack_index].fname) {
+ free(include_stack[include_stack_index].fname);
+ include_stack[include_stack_index].fname = 0;
+ }
include_stack[include_stack_index].fname = strdup(my_file);
include_stack[include_stack_index].lineno = my_lineno;
include_stack[include_stack_index].colno = my_col+yyleng;
+ if (my_file)
+ free(my_file);
+ my_file = strdup(fnamebuf2);
if (create)
include_stack[include_stack_index].globbuf = *globbuf;