summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/asterisk/ael_structs.h14
-rw-r--r--pbx/ael/ael.flex16
-rw-r--r--pbx/ael/ael.tab.c517
-rw-r--r--pbx/ael/ael.tab.h2
-rw-r--r--pbx/ael/ael.y21
-rw-r--r--pbx/ael/ael_lex.c158
-rw-r--r--pbx/pbx_ael.c36
7 files changed, 394 insertions, 370 deletions
diff --git a/include/asterisk/ael_structs.h b/include/asterisk/ael_structs.h
index ea10df9b2..104f97482 100644
--- a/include/asterisk/ael_structs.h
+++ b/include/asterisk/ael_structs.h
@@ -1,3 +1,6 @@
+#ifndef _ASTERISK_AEL_STRUCTS_H
+#define _ASTERISK_AEL_STRUCTS_H
+
#if !defined(SOLARIS) && !defined(__CYGWIN__)
#include <err.h>
#else
@@ -113,6 +116,7 @@ struct pval
typedef struct pval pval;
+#if 0
pval *npval(pvaltype type, int first_line, int last_line, int first_column, int last_column);
void linku1(pval *head, pval *tail);
void print_pval_list(FILE *f, pval *item, int depth);
@@ -122,9 +126,13 @@ struct pval *find_label_in_current_context(char *exten, char *label);
struct pval *find_label_in_current_extension(char *label);
int count_labels_in_current_context(char *label);
struct pval *find_label_in_current_db(char *context, char *exten, char *label);
-struct pval *ael2_parse(char *fname, int *errs);
-void destroy_pval(pval *item);
void ael2_print(char *fname, pval *tree);
+#endif
+struct pval *ael2_parse(char *fname, int *errs); /* in ael.flex */
+void destroy_pval(pval *item);
+
+extern char *prev_word; /* in ael.flex */
+
#ifndef YY_TYPEDEF_YY_SCANNER_T
#define YY_TYPEDEF_YY_SCANNER_T
typedef void* yyscan_t;
@@ -175,4 +183,4 @@ struct ael_extension
int return_needed;
};
-
+#endif /* _ASTERISK_AEL_STRUCTS_H */
diff --git a/pbx/ael/ael.flex b/pbx/ael/ael.flex
index d3965c15f..2dc15aa4f 100644
--- a/pbx/ael/ael.flex
+++ b/pbx/ael/ael.flex
@@ -40,17 +40,12 @@ char *my_file = 0;
char *prev_word;
#define MAX_INCLUDE_DEPTH 50
-void reset_parencount(yyscan_t yyscanner );
-void reset_semicount(yyscan_t yyscanner );
-void reset_argcount(yyscan_t yyscanner );
-struct pval *ael2_parse(char *filename, int *errors);
int ael_yyget_column (yyscan_t yyscanner);
void ael_yyset_column (int column_no , yyscan_t yyscanner);
int ael_yyparse (struct parse_io *);
static void pbcpush(char x);
static int pbcpop(char x);
static void pbcwhere(char *text, int *line, int *col );
-static int c_prevword(void);
struct stackelement {
char *fname;
@@ -546,6 +541,7 @@ static int pbcpop(char x)
return 1; /* error */
}
+#if 0
static int c_prevword(void)
{
char *c = prev_word;
@@ -565,6 +561,7 @@ static int c_prevword(void)
}
return 0;
}
+#endif
static void pbcwhere(char *text, int *line, int *col )
{
@@ -583,7 +580,8 @@ static void pbcwhere(char *text, int *line, int *col )
*col = loc_col;
}
-void reset_parencount(yyscan_t yyscanner )
+#if 0
+static void reset_parencount(yyscan_t yyscanner )
{
struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
parencount = 0;
@@ -593,14 +591,14 @@ void reset_parencount(yyscan_t yyscanner )
BEGIN(paren);
}
-void reset_semicount(yyscan_t yyscanner )
+static void reset_semicount(yyscan_t yyscanner )
{
struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
pbcpos = 0;
BEGIN(semic);
}
-void reset_argcount(yyscan_t yyscanner )
+static void reset_argcount(yyscan_t yyscanner )
{
struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
parencount = 0;
@@ -611,7 +609,9 @@ void reset_argcount(yyscan_t yyscanner )
BEGIN(argg);
}
+#endif
+/* used elsewhere, but some local vars */
struct pval *ael2_parse(char *filename, int *errors)
{
struct pval *pval;
diff --git a/pbx/ael/ael.tab.c b/pbx/ael/ael.tab.c
index 75ec78410..3ff5c21ff 100644
--- a/pbx/ael/ael.tab.c
+++ b/pbx/ael/ael.tab.c
@@ -180,9 +180,13 @@
#include "asterisk/logger.h"
#include "asterisk/ael_structs.h"
-extern void reset_parencount(yyscan_t yyscanner);
-extern void reset_semicount(yyscan_t yyscanner);
-extern void reset_argcount(yyscan_t yyscanner );
+static pval *npval(pvaltype type, int first_line, int last_line,
+ int first_column, int last_column);
+static void linku1(pval *head, pval *tail);
+
+void reset_parencount(yyscan_t yyscanner);
+void reset_semicount(yyscan_t yyscanner);
+void reset_argcount(yyscan_t yyscanner );
#define YYLEX_PARAM ((struct parse_io *)parseio)->scanner
#define YYERROR_VERBOSE 1
@@ -191,8 +195,7 @@ extern char *my_file;
#ifdef AAL_ARGCHECK
int ael_is_funcname(char *name);
#endif
- static char *ael_token_subst(char *mess);
- extern char *prev_word;
+static char *ael_token_subst(char *mess);
@@ -215,13 +218,13 @@ int ael_is_funcname(char *name);
#endif
#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
-#line 47 "ael.y"
+#line 50 "ael.y"
typedef union YYSTYPE {
char *str;
struct pval *pval;
} YYSTYPE;
/* Line 196 of yacc.c. */
-#line 225 "ael.tab.c"
+#line 228 "ael.tab.c"
# define yystype YYSTYPE /* obsolescent; will be withdrawn */
# define YYSTYPE_IS_DECLARED 1
# define YYSTYPE_IS_TRIVIAL 1
@@ -242,7 +245,7 @@ typedef struct YYLTYPE
/* Copy the second part of user declarations. */
-#line 52 "ael.y"
+#line 55 "ael.y"
/* declaring these AFTER the union makes things a lot simpler! */
void yyerror(YYLTYPE *locp, struct parse_io *parseio, char const *s);
@@ -251,7 +254,7 @@ int ael_yylex (YYSTYPE * yylval_param, YYLTYPE * yylloc_param , void * yyscanner
/* Line 219 of yacc.c. */
-#line 255 "ael.tab.c"
+#line 258 "ael.tab.c"
#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
# define YYSIZE_T __SIZE_TYPE__
@@ -551,22 +554,22 @@ static const yysigned_char yyrhs[] =
/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
static const unsigned short int yyrline[] =
{
- 0, 126, 126, 129, 130, 133, 136, 137, 138, 139,
- 142, 143, 144, 145, 146, 147, 148, 149, 152, 154,
- 155, 156, 159, 160, 163, 164, 165, 168, 168, 171,
- 172, 173, 176, 177, 178, 181, 184, 185, 186, 187,
- 188, 189, 189, 190, 191, 194, 197, 198, 199, 200,
- 204, 205, 208, 211, 211, 214, 214, 217, 236, 255,
- 256, 258, 259, 260, 263, 264, 265, 268, 268, 273,
- 274, 274, 277, 278, 279, 280, 281, 282, 280, 285,
- 285, 288, 289, 290, 291, 292, 294, 294, 327, 328,
- 329, 330, 331, 332, 333, 334, 335, 336, 339, 340,
- 343, 346, 351, 356, 361, 368, 371, 374, 379, 384,
- 389, 396, 396, 399, 402, 402, 411, 417, 420, 421,
- 422, 423, 426, 427, 432, 433, 434, 435, 436, 437,
- 440, 441, 446, 447, 450, 451, 454, 455, 458, 459,
- 460, 463, 464, 485, 498, 499, 519, 532, 535, 536,
- 539, 540
+ 0, 129, 129, 132, 133, 136, 139, 140, 141, 142,
+ 145, 146, 147, 148, 149, 150, 151, 152, 155, 157,
+ 158, 159, 162, 163, 166, 167, 168, 171, 171, 174,
+ 175, 176, 179, 180, 181, 184, 187, 188, 189, 190,
+ 191, 192, 192, 193, 194, 197, 200, 201, 202, 203,
+ 207, 208, 211, 214, 214, 217, 217, 220, 239, 258,
+ 259, 261, 262, 263, 266, 267, 268, 271, 271, 276,
+ 277, 277, 280, 281, 282, 283, 284, 285, 283, 288,
+ 288, 291, 292, 293, 294, 295, 297, 297, 330, 331,
+ 332, 333, 334, 335, 336, 337, 338, 339, 342, 343,
+ 346, 349, 354, 359, 364, 371, 374, 377, 382, 387,
+ 392, 399, 399, 402, 405, 405, 414, 420, 423, 424,
+ 425, 426, 429, 430, 435, 436, 437, 438, 439, 440,
+ 443, 444, 449, 450, 453, 454, 457, 458, 461, 462,
+ 463, 466, 467, 488, 501, 502, 522, 535, 538, 539,
+ 542, 543
};
#endif
@@ -1303,194 +1306,194 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp)
switch (yytype)
{
case 41: /* "word" */
-#line 121 "ael.y"
+#line 124 "ael.y"
{ free((yyvaluep->str));};
-#line 1309 "ael.tab.c"
+#line 1312 "ael.tab.c"
break;
case 44: /* "objects" */
-#line 118 "ael.y"
+#line 121 "ael.y"
{ if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} };
-#line 1314 "ael.tab.c"
+#line 1317 "ael.tab.c"
break;
case 45: /* "object" */
-#line 118 "ael.y"
+#line 121 "ael.y"
{ if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} };
-#line 1319 "ael.tab.c"
+#line 1322 "ael.tab.c"
break;
case 46: /* "context" */
-#line 118 "ael.y"
+#line 121 "ael.y"
{ if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} };
-#line 1324 "ael.tab.c"
+#line 1327 "ael.tab.c"
break;
case 47: /* "macro" */
-#line 118 "ael.y"
+#line 121 "ael.y"
{ if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} };
-#line 1329 "ael.tab.c"
+#line 1332 "ael.tab.c"
break;
case 48: /* "globals" */
-#line 118 "ael.y"
+#line 121 "ael.y"
{ if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} };
-#line 1334 "ael.tab.c"
+#line 1337 "ael.tab.c"
break;
case 49: /* "global_statements" */
-#line 118 "ael.y"
+#line 121 "ael.y"
{ if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} };
-#line 1339 "ael.tab.c"
+#line 1342 "ael.tab.c"
break;
case 50: /* "global_statement" */
-#line 118 "ael.y"
+#line 121 "ael.y"
{ if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} };
-#line 1344 "ael.tab.c"
+#line 1347 "ael.tab.c"
break;
case 52: /* "arglist" */
-#line 118 "ael.y"
+#line 121 "ael.y"
{ if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} };
-#line 1349 "ael.tab.c"
+#line 1352 "ael.tab.c"
break;
case 53: /* "elements" */
-#line 118 "ael.y"
+#line 121 "ael.y"
{ if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} };
-#line 1354 "ael.tab.c"
+#line 1357 "ael.tab.c"
break;
case 54: /* "element" */
-#line 118 "ael.y"
+#line 121 "ael.y"
{ if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} };
-#line 1359 "ael.tab.c"
+#line 1362 "ael.tab.c"
break;
case 56: /* "ignorepat" */
-#line 118 "ael.y"
+#line 121 "ael.y"
{ if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} };
-#line 1364 "ael.tab.c"
+#line 1367 "ael.tab.c"
break;
case 57: /* "extension" */
-#line 118 "ael.y"
+#line 121 "ael.y"
{ if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} };
-#line 1369 "ael.tab.c"
+#line 1372 "ael.tab.c"
break;
case 58: /* "statements" */
-#line 118 "ael.y"
+#line 121 "ael.y"
{ if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} };
-#line 1374 "ael.tab.c"
+#line 1377 "ael.tab.c"
break;
case 59: /* "if_head" */
-#line 118 "ael.y"
+#line 121 "ael.y"
{ if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} };
-#line 1379 "ael.tab.c"
+#line 1382 "ael.tab.c"
break;
case 61: /* "random_head" */
-#line 118 "ael.y"
+#line 121 "ael.y"
{ if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} };
-#line 1384 "ael.tab.c"
+#line 1387 "ael.tab.c"
break;
case 63: /* "iftime_head" */
-#line 118 "ael.y"
+#line 121 "ael.y"
{ if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} };
-#line 1389 "ael.tab.c"
+#line 1392 "ael.tab.c"
break;
case 64: /* "word_list" */
-#line 121 "ael.y"
+#line 124 "ael.y"
{ free((yyvaluep->str));};
-#line 1394 "ael.tab.c"
+#line 1397 "ael.tab.c"
break;
case 65: /* "word3_list" */
-#line 121 "ael.y"
+#line 124 "ael.y"
{ free((yyvaluep->str));};
-#line 1399 "ael.tab.c"
+#line 1402 "ael.tab.c"
break;
case 66: /* "goto_word" */
-#line 121 "ael.y"
+#line 124 "ael.y"
{ free((yyvaluep->str));};
-#line 1404 "ael.tab.c"
+#line 1407 "ael.tab.c"
break;
case 67: /* "switch_head" */
-#line 118 "ael.y"
+#line 121 "ael.y"
{ if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} };
-#line 1409 "ael.tab.c"
+#line 1412 "ael.tab.c"
break;
case 69: /* "statement" */
-#line 118 "ael.y"
+#line 121 "ael.y"
{ if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} };
-#line 1414 "ael.tab.c"
+#line 1417 "ael.tab.c"
break;
case 76: /* "target" */
-#line 118 "ael.y"
+#line 121 "ael.y"
{ if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} };
-#line 1419 "ael.tab.c"
+#line 1422 "ael.tab.c"
break;
case 77: /* "jumptarget" */
-#line 118 "ael.y"
+#line 121 "ael.y"
{ if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} };
-#line 1424 "ael.tab.c"
+#line 1427 "ael.tab.c"
break;
case 78: /* "macro_call" */
-#line 118 "ael.y"
+#line 121 "ael.y"
{ if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} };
-#line 1429 "ael.tab.c"
+#line 1432 "ael.tab.c"
break;
case 80: /* "application_call_head" */
-#line 118 "ael.y"
+#line 121 "ael.y"
{ if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} };
-#line 1434 "ael.tab.c"
+#line 1437 "ael.tab.c"
break;
case 82: /* "application_call" */
-#line 118 "ael.y"
+#line 121 "ael.y"
{ if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} };
-#line 1439 "ael.tab.c"
+#line 1442 "ael.tab.c"
break;
case 83: /* "eval_arglist" */
-#line 118 "ael.y"
+#line 121 "ael.y"
{ if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} };
-#line 1444 "ael.tab.c"
+#line 1447 "ael.tab.c"
break;
case 84: /* "case_statements" */
-#line 118 "ael.y"
+#line 121 "ael.y"
{ if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} };
-#line 1449 "ael.tab.c"
+#line 1452 "ael.tab.c"
break;
case 85: /* "case_statement" */
-#line 118 "ael.y"
+#line 121 "ael.y"
{ if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} };
-#line 1454 "ael.tab.c"
+#line 1457 "ael.tab.c"
break;
case 86: /* "macro_statements" */
-#line 118 "ael.y"
+#line 121 "ael.y"
{ if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} };
-#line 1459 "ael.tab.c"
+#line 1462 "ael.tab.c"
break;
case 87: /* "macro_statement" */
-#line 118 "ael.y"
+#line 121 "ael.y"
{ if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} };
-#line 1464 "ael.tab.c"
+#line 1467 "ael.tab.c"
break;
case 88: /* "switches" */
-#line 118 "ael.y"
+#line 121 "ael.y"
{ if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} };
-#line 1469 "ael.tab.c"
+#line 1472 "ael.tab.c"
break;
case 89: /* "eswitches" */
-#line 118 "ael.y"
+#line 121 "ael.y"
{ if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} };
-#line 1474 "ael.tab.c"
+#line 1477 "ael.tab.c"
break;
case 90: /* "switchlist" */
-#line 118 "ael.y"
+#line 121 "ael.y"
{ if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} };
-#line 1479 "ael.tab.c"
+#line 1482 "ael.tab.c"
break;
case 91: /* "includeslist" */
-#line 118 "ael.y"
+#line 121 "ael.y"
{ if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} };
-#line 1484 "ael.tab.c"
+#line 1487 "ael.tab.c"
break;
case 92: /* "includedname" */
-#line 121 "ael.y"
+#line 124 "ael.y"
{ free((yyvaluep->str));};
-#line 1489 "ael.tab.c"
+#line 1492 "ael.tab.c"
break;
case 93: /* "includes" */
-#line 118 "ael.y"
+#line 121 "ael.y"
{ if (yymsg[0] != 'C') {destroy_pval((yyvaluep->pval)); prev_word=0;} else {printf("Cleanup destructor called for pvals\n");} };
-#line 1494 "ael.tab.c"
+#line 1497 "ael.tab.c"
break;
default:
@@ -1807,289 +1810,289 @@ yyreduce:
switch (yyn)
{
case 2:
-#line 126 "ael.y"
+#line 129 "ael.y"
{ (yyval.pval) = parseio->pval = (yyvsp[0].pval); ;}
break;
case 3:
-#line 129 "ael.y"
+#line 132 "ael.y"
{(yyval.pval)=(yyvsp[0].pval);;}
break;
case 4:
-#line 130 "ael.y"
+#line 133 "ael.y"
{if ( (yyvsp[-1].pval) && (yyvsp[0].pval) ) {(yyval.pval)=(yyvsp[-1].pval); linku1((yyval.pval),(yyvsp[0].pval));}
else if ( (yyvsp[-1].pval) ) {(yyval.pval)=(yyvsp[-1].pval);}
else if ( (yyvsp[0].pval) ) {(yyval.pval)=(yyvsp[0].pval);} ;}
break;
case 5:
-#line 133 "ael.y"
+#line 136 "ael.y"
{(yyval.pval)=(yyvsp[-1].pval);;}
break;
case 6:
-#line 136 "ael.y"
+#line 139 "ael.y"
{(yyval.pval)=(yyvsp[0].pval);;}
break;
case 7:
-#line 137 "ael.y"
+#line 140 "ael.y"
{(yyval.pval)=(yyvsp[0].pval);;}
break;
case 8:
-#line 138 "ael.y"
+#line 141 "ael.y"
{(yyval.pval)=(yyvsp[0].pval);;}
break;
case 9:
-#line 139 "ael.y"
+#line 142 "ael.y"
{(yyval.pval)=0;/* allow older docs to be read */;}
break;
case 10:
-#line 142 "ael.y"
+#line 145 "ael.y"
{(yyval.pval)=npval(PV_CONTEXT,(yylsp[-4]).first_line,(yylsp[0]).last_line, (yylsp[-4]).first_column, (yylsp[0]).last_column); (yyval.pval)->u1.str = (yyvsp[-3].str); (yyval.pval)->u2.statements = (yyvsp[-1].pval); ;}
break;
case 11:
-#line 143 "ael.y"
+#line 146 "ael.y"
{(yyval.pval)=npval(PV_CONTEXT,(yylsp[-3]).first_line,(yylsp[0]).last_line, (yylsp[-3]).first_column, (yylsp[0]).last_column); (yyval.pval)->u1.str = (yyvsp[-2].str); ;}
break;
case 12:
-#line 144 "ael.y"
+#line 147 "ael.y"
{(yyval.pval)=npval(PV_CONTEXT,(yylsp[-4]).first_line,(yylsp[0]).last_line, (yylsp[-4]).first_column, (yylsp[0]).last_column); (yyval.pval)->u1.str = strdup("default"); (yyval.pval)->u2.statements = (yyvsp[-1].pval); ;}
break;
case 13:
-#line 145 "ael.y"
+#line 148 "ael.y"
{(yyval.pval)=npval(PV_CONTEXT,(yylsp[-3]).first_line,(yylsp[0]).last_line, (yylsp[-3]).first_column, (yylsp[0]).last_column); (yyval.pval)->u1.str = strdup("default"); ;}
break;
case 14:
-#line 146 "ael.y"
+#line 149 "ael.y"
{(yyval.pval)=npval(PV_CONTEXT,(yylsp[-5]).first_line,(yylsp[0]).last_line, (yylsp[-5]).first_column, (yylsp[0]).last_column); (yyval.pval)->u1.str = (yyvsp[-3].str); (yyval.pval)->u2.statements = (yyvsp[-1].pval); (yyval.pval)->u3.abstract = 1;;}
break;
case 15:
-#line 147 "ael.y"
+#line 150 "ael.y"
{(yyval.pval)=npval(PV_CONTEXT,(yylsp[-4]).first_line,(yylsp[0]).last_line, (yylsp[-4]).first_column, (yylsp[0]).last_column); (yyval.pval)->u1.str = (yyvsp[-2].str); (yyval.pval)->u3.abstract = 1; ;}
break;
case 16:
-#line 148 "ael.y"
+#line 151 "ael.y"
{(yyval.pval)=npval(PV_CONTEXT,(yylsp[-5]).first_line,(yylsp[0]).last_line, (yylsp[-5]).first_column, (yylsp[0]).last_column); (yyval.pval)->u1.str = strdup("default"); (yyval.pval)->u2.statements = (yyvsp[-1].pval); (yyval.pval)->u3.abstract = 1; ;}
break;
case 17:
-#line 149 "ael.y"
+#line 152 "ael.y"
{(yyval.pval)=npval(PV_CONTEXT,(yylsp[-4]).first_line,(yylsp[0]).last_line, (yylsp[-4]).first_column, (yylsp[0]).last_column); (yyval.pval)->u1.str = strdup("default"); (yyval.pval)->u3.abstract = 1; ;}
break;
case 18:
-#line 152 "ael.y"
+#line 155 "ael.y"
{(yyval.pval)=npval(PV_MACRO,(yylsp[-7]).first_line,(yylsp[0]).last_line, (yylsp[-7]).first_column, (yylsp[0]).last_column);
(yyval.pval)->u1.str = (yyvsp[-6].str); (yyval.pval)->u2.arglist = (yyvsp[-4].pval); (yyval.pval)->u3.macro_statements = (yyvsp[-1].pval); ;}
break;
case 19:
-#line 154 "ael.y"
+#line 157 "ael.y"
{(yyval.pval)=npval(PV_MACRO,(yylsp[-6]).first_line,(yylsp[0]).last_line, (yylsp[-6]).first_column, (yylsp[0]).last_column); (yyval.pval)->u1.str = (yyvsp[-5].str); (yyval.pval)->u2.arglist = (yyvsp[-3].pval); ;}
break;
case 20:
-#line 155 "ael.y"
+#line 158 "ael.y"
{(yyval.pval)=npval(PV_MACRO,(yylsp[-6]).first_line,(yylsp[0]).last_line, (yylsp[-6]).first_column, (yylsp[0]).last_column); (yyval.pval)->u1.str = (yyvsp[-5].str); (yyval.pval)->u3.macro_statements = (yyvsp[-1].pval); ;}
break;
case 21:
-#line 156 "ael.y"
+#line 159 "ael.y"
{(yyval.pval)=npval(PV_MACRO,(yylsp[-5]).first_line,(yylsp[0]).last_line, (yylsp[-5]).first_column, (yylsp[0]).last_column); (yyval.pval)->u1.str = (yyvsp[-4].str); /* pretty empty! */ ;}
break;
case 22:
-#line 159 "ael.y"
+#line 162 "ael.y"
{(yyval.pval)=npval(PV_GLOBALS,(yylsp[-3]).first_line,(yylsp[0]).last_line, (yylsp[-3]).first_column, (yylsp[0]).last_column); (yyval.pval)->u1.statements = (yyvsp[-1].pval);;}
break;
case 23:
-#line 160 "ael.y"
+#line 163 "ael.y"
{(yyval.pval)=npval(PV_GLOBALS,(yylsp[-2]).first_line,(yylsp[0]).last_line, (yylsp[-2]).first_column, (yylsp[0]).last_column); /* and that's all */ ;}
break;
case 24:
-#line 163 "ael.y"
+#line 166 "ael.y"
{(yyval.pval)=(yyvsp[0].pval);;}
break;
case 25:
-#line 164 "ael.y"
+#line 167 "ael.y"
{(yyval.pval)=(yyvsp[-1].pval); linku1((yyval.pval),(yyvsp[0].pval));;}
break;
case 26:
-#line 165 "ael.y"
+#line 168 "ael.y"
{(yyval.pval)=(yyvsp[-1].pval);;}
break;
case 27:
-#line 168 "ael.y"
+#line 171 "ael.y"
{ reset_semicount(parseio->scanner); ;}
break;
case 28:
-#line 168 "ael.y"
+#line 171 "ael.y"
{(yyval.pval)=npval(PV_VARDEC,(yylsp[-4]).first_line,(yylsp[0]).last_line, (yylsp[-4]).first_column, (yylsp[0]).last_column); (yyval.pval)->u1.str = (yyvsp[-4].str);(yyval.pval)->u2.val = (yyvsp[-1].str); ;}
break;
case 29:
-#line 171 "ael.y"
+#line 174 "ael.y"
{(yyval.pval)= npval(PV_WORD,(yylsp[0]).first_line,(yylsp[0]).last_line, (yylsp[0]).first_column, (yylsp[0]).last_column); (yyval.pval)->u1.str = (yyvsp[0].str); ;}
break;
case 30:
-#line 172 "ael.y"
+#line 175 "ael.y"
{pval *z = npval(PV_WORD,(yylsp[-2]).first_line,(yylsp[0]).last_line, (yylsp[-2]).first_column, (yylsp[0]).last_column); z->u1.str = (yyvsp[0].str); (yyval.pval)=(yyvsp[-2].pval); linku1((yyval.pval),z); ;}
break;
case 31:
-#line 173 "ael.y"
+#line 176 "ael.y"
{(yyval.pval)=(yyvsp[-1].pval);;}
break;
case 32:
-#line 176 "ael.y"
+#line 179 "ael.y"
{ (yyval.pval)=(yyvsp[0].pval);;}
break;
case 33:
-#line 177 "ael.y"
+#line 180 "ael.y"
{(yyval.pval)=0;;}
break;
case 34:
-#line 178 "ael.y"
+#line 181 "ael.y"
{ if ( (yyvsp[-1].pval) && (yyvsp[0].pval) ) {(yyval.pval)=(yyvsp[-1].pval); linku1((yyval.pval),(yyvsp[0].pval));}
else if ( (yyvsp[-1].pval) ) {(yyval.pval)=(yyvsp[-1].pval);}
else if ( (yyvsp[0].pval) ) {(yyval.pval)=(yyvsp[0].pval);} ;}
break;
case 35:
-#line 181 "ael.y"
+#line 184 "ael.y"
{ (yyval.pval)=(yyvsp[-1].pval);;}
break;
case 36:
-#line 184 "ael.y"
+#line 187 "ael.y"
{(yyval.pval)=(yyvsp[0].pval);;}
break;
case 37:
-#line 185 "ael.y"
+#line 188 "ael.y"
{(yyval.pval)=(yyvsp[0].pval);;}
break;
case 38:
-#line 186 "ael.y"
+#line 189 "ael.y"
{(yyval.pval)=(yyvsp[0].pval);;}
break;
case 39:
-#line 187 "ael.y"
+#line 190 "ael.y"
{(yyval.pval)=(yyvsp[0].pval);;}
break;
case 40:
-#line 188 "ael.y"
+#line 191 "ael.y"
{(yyval.pval)=(yyvsp[0].pval);;}
break;
case 41:
-#line 189 "ael.y"
+#line 192 "ael.y"
{ reset_semicount(parseio->scanner); ;}
break;
case 42:
-#line 189 "ael.y"
+#line 192 "ael.y"
{(yyval.pval)=npval(PV_VARDEC,(yylsp[-4]).first_line,(yylsp[0]).last_line, (yylsp[-4]).first_column, (yylsp[0]).last_column); (yyval.pval)->u1.str = (yyvsp[-4].str);(yyval.pval)->u2.val = (yyvsp[-1].str); ;}
break;
case 43:
-#line 190 "ael.y"
+#line 193 "ael.y"
{free((yyvsp[-1].str)); (yyval.pval)=0;;}
break;
case 44:
-#line 191 "ael.y"
+#line 194 "ael.y"
{(yyval.pval)=0;/* allow older docs to be read */;}
break;
case 45:
-#line 194 "ael.y"
+#line 197 "ael.y"
{ (yyval.pval)=npval(PV_IGNOREPAT,(yylsp[-3]).first_line,(yylsp[0]).last_line, (yylsp[-3]).first_column, (yylsp[0]).last_column); (yyval.pval)->u1.str = (yyvsp[-1].str);;}
break;
case 46:
-#line 197 "ael.y"
+#line 200 "ael.y"
{(yyval.pval) = npval(PV_EXTENSION,(yylsp[-2]).first_line,(yylsp[0]).last_line, (yylsp[-2]).first_column, (yylsp[0]).last_column); (yyval.pval)->u1.str = (yyvsp[-2].str); (yyval.pval)->u2.statements = (yyvsp[0].pval); ;}
break;
case 47:
-#line 198 "ael.y"
+#line 201 "ael.y"
{(yyval.pval) = npval(PV_EXTENSION,(yylsp[-3]).first_line,(yylsp[-1]).last_line, (yylsp[-3]).first_column, (yylsp[0]).last_column); (yyval.pval)->u1.str = (yyvsp[-2].str); (yyval.pval)->u2.statements = (yyvsp[0].pval); (yyval.pval)->u4.regexten=1;;}
break;
case 48:
-#line 199 "ael.y"
+#line 202 "ael.y"
{(yyval.pval) = npval(PV_EXTENSION,(yylsp[-6]).first_line,(yylsp[0]).last_line, (yylsp[-6]).first_column, (yylsp[0]).last_column); (yyval.pval)->u1.str = (yyvsp[-2].str); (yyval.pval)->u2.statements = (yyvsp[0].pval); (yyval.pval)->u3.hints = (yyvsp[-4].str);;}
break;
case 49:
-#line 200 "ael.y"
+#line 203 "ael.y"
{(yyval.pval) = npval(PV_EXTENSION,(yylsp[-7]).first_line,(yylsp[-4]).last_line, (yylsp[-7]).first_column, (yylsp[0]).last_column); (yyval.pval)->u1.str = (yyvsp[-2].str); (yyval.pval)->u2.statements = (yyvsp[0].pval); (yyval.pval)->u4.regexten=1;(yyval.pval)->u3.hints = (yyvsp[-4].str);;}
break;
case 50:
-#line 204 "ael.y"
+#line 207 "ael.y"
{(yyval.pval)=(yyvsp[0].pval);;}
break;
case 51:
-#line 205 "ael.y"
+#line 208 "ael.y"
{if ( (yyvsp[-1].pval) && (yyvsp[0].pval) ) {(yyval.pval)=(yyvsp[-1].pval); linku1((yyval.pval),(yyvsp[0].pval));}
else if ( (yyvsp[-1].pval) ) {(yyval.pval)=(yyvsp[-1].pval);}
else if ( (yyvsp[0].pval) ) {(yyval.pval)=(yyvsp[0].pval);} ;}
break;
case 52:
-#line 208 "ael.y"
+#line 211 "ael.y"
{(yyval.pval)=(yyvsp[-1].pval);;}
break;
case 53:
-#line 211 "ael.y"
+#line 214 "ael.y"
{ reset_parencount(parseio->scanner); ;}
break;
case 54:
-#line 211 "ael.y"
+#line 214 "ael.y"
{ (yyval.pval)= npval(PV_IF,(yylsp[-4]).first_line,(yylsp[0]).last_line, (yylsp[-4]).first_column, (yylsp[0]).last_column); (yyval.pval)->u1.str = (yyvsp[-1].str); ;}
break;
case 55:
-#line 214 "ael.y"
+#line 217 "ael.y"
{ reset_parencount(parseio->scanner); ;}
break;
case 56:
-#line 214 "ael.y"
+#line 217 "ael.y"
{ (yyval.pval)= npval(PV_RANDOM,(yylsp[-4]).first_line,(yylsp[0]).last_line, (yylsp[-4]).first_column, (yylsp[0]).last_column); (yyval.pval)->u1.str=(yyvsp[-1].str);;}
break;
case 57:
-#line 217 "ael.y"
+#line 220 "ael.y"
{ (yyval.pval)= npval(PV_IFTIME,(yylsp[-13]).first_line,(yylsp[-9]).last_line, (yylsp[-13]).first_column, (yylsp[-9]).last_column);
(yyval.pval)->u1.list = npval(PV_WORD,(yylsp[-11]).first_line,(yylsp[-11]).last_line, (yylsp[-11]).first_column, (yylsp[-11]).last_column);
(yyval.pval)->u1.list->u1.str = (char*)malloc(strlen((yyvsp[-11].str))+strlen((yyvsp[-9].str))+strlen((yyvsp[-7].str))+4);
@@ -2112,7 +2115,7 @@ yyreduce:
break;
case 58:
-#line 236 "ael.y"
+#line 239 "ael.y"
{ (yyval.pval)= npval(PV_IFTIME,(yylsp[-9]).first_line,(yylsp[-5]).last_line, (yylsp[-9]).first_column, (yylsp[-5]).last_column);
(yyval.pval)->u1.list = npval(PV_WORD,(yylsp[-7]).first_line,(yylsp[-7]).last_line, (yylsp[-7]).first_column, (yylsp[-7]).last_column);
(yyval.pval)->u1.list->u1.str = (yyvsp[-7].str);
@@ -2127,152 +2130,152 @@ yyreduce:
break;
case 59:
-#line 255 "ael.y"
+#line 258 "ael.y"
{ (yyval.str) = (yyvsp[0].str);;}
break;
case 60:
-#line 256 "ael.y"
+#line 259 "ael.y"
{ (yyval.str) = (char*)malloc(strlen((yyvsp[-1].str))+strlen((yyvsp[0].str))+1); strcpy((yyval.str), (yyvsp[-1].str)); strcat((yyval.str), (yyvsp[0].str)); free((yyvsp[-1].str)); free((yyvsp[0].str));prev_word = (yyval.str);;}
break;
case 61:
-#line 258 "ael.y"
+#line 261 "ael.y"
{ (yyval.str) = (yyvsp[0].str);;}
break;
case 62:
-#line 259 "ael.y"
+#line 262 "ael.y"
{ (yyval.str) = (char*)malloc(strlen((yyvsp[-1].str))+strlen((yyvsp[0].str))+1); strcpy((yyval.str), (yyvsp[-1].str)); strcat((yyval.str), (yyvsp[0].str)); free((yyvsp[-1].str)); free((yyvsp[0].str));prev_word = (yyval.str);;}
break;
case 63:
-#line 260 "ael.y"
+#line 263 "ael.y"
{ (yyval.str) = (char*)malloc(strlen((yyvsp[-2].str))+strlen((yyvsp[-1].str))+strlen((yyvsp[0].str))+1); strcpy((yyval.str), (yyvsp[-2].str)); strcat((yyval.str), (yyvsp[-1].str)); strcat((yyval.str), (yyvsp[0].str)); free((yyvsp[-2].str)); free((yyvsp[-1].str)); free((yyvsp[0].str));prev_word=(yyval.str);;}
break;
case 64:
-#line 263 "ael.y"
+#line 266 "ael.y"
{ (yyval.str) = (yyvsp[0].str);;}
break;
case 65:
-#line 264 "ael.y"
+#line 267 "ael.y"
{ (yyval.str) = (char*)malloc(strlen((yyvsp[-1].str))+strlen((yyvsp[0].str))+1); strcpy((yyval.str), (yyvsp[-1].str)); strcat((yyval.str), (yyvsp[0].str)); free((yyvsp[-1].str)); free((yyvsp[0].str));;}
break;
case 66:
-#line 265 "ael.y"
+#line 268 "ael.y"
{ (yyval.str) = (char*)malloc(strlen((yyvsp[-2].str))+strlen((yyvsp[0].str))+2); strcpy((yyval.str), (yyvsp[-2].str)); strcat((yyval.str),":"); strcat((yyval.str), (yyvsp[0].str)); free((yyvsp[-2].str)); free((yyvsp[0].str));;}
break;
case 67:
-#line 268 "ael.y"
+#line 271 "ael.y"
{ reset_parencount(parseio->scanner); ;}
break;
case 68:
-#line 269 "ael.y"
+#line 272 "ael.y"
{(yyval.pval)=npval(PV_SWITCH,(yylsp[-5]).first_line,(yylsp[0]).last_line, (yylsp[-5]).first_column, (yylsp[0]).last_column);
(yyval.pval)->u1.str = (yyvsp[-2].str); ;}
break;
case 69:
-#line 273 "ael.y"
+#line 276 "ael.y"
{(yyval.pval)=npval(PV_STATEMENTBLOCK,(yylsp[-2]).first_line,(yylsp[0]).last_line, (yylsp[-2]).first_column, (yylsp[0]).last_column); (yyval.pval)->u1.list = (yyvsp[-1].pval); ;}
break;
case 70:
-#line 274 "ael.y"
+#line 277 "ael.y"
{reset_semicount(parseio->scanner);;}
break;
case 71:
-#line 275 "ael.y"
+#line 278 "ael.y"
{(yyval.pval)=npval(PV_VARDEC,(yylsp[-4]).first_line,(yylsp[0]).last_line, (yylsp[-4]).first_column, (yylsp[0]).last_column);
(yyval.pval)->u1.str = (yyvsp[-4].str); (yyval.pval)->u2.val = (yyvsp[-1].str); ;}
break;
case 72:
-#line 277 "ael.y"
+#line 280 "ael.y"
{(yyval.pval)=npval(PV_GOTO,(yylsp[-2]).first_line,(yylsp[0]).last_line, (yylsp[-2]).first_column, (yylsp[0]).last_column); (yyval.pval)->u1.list = (yyvsp[-1].pval);;}
break;
case 73:
-#line 278 "ael.y"
+#line 281 "ael.y"
{(yyval.pval)=npval(PV_GOTO,(yylsp[-2]).first_line,(yylsp[0]).last_line, (yylsp[-2]).first_column, (yylsp[0]).last_column); (yyval.pval)->u1.list = (yyvsp[-1].pval);;}
break;
case 74:
-#line 279 "ael.y"
+#line 282 "ael.y"
{(yyval.pval)=npval(PV_LABEL,(yylsp[-1]).first_line,(yylsp[0]).last_line, (yylsp[-1]).first_column, (yylsp[0]).last_column); (yyval.pval)->u1.str = (yyvsp[-1].str); ;}
break;
case 75:
-#line 280 "ael.y"
+#line 283 "ael.y"
{reset_semicount(parseio->scanner);;}
break;
case 76:
-#line 281 "ael.y"
+#line 284 "ael.y"
{reset_semicount(parseio->scanner);;}
break;
case 77:
-#line 282 "ael.y"
+#line 285 "ael.y"
{reset_parencount(parseio->scanner);;}
break;
case 78:
-#line 283 "ael.y"
+#line 286 "ael.y"
{ (yyval.pval)=npval(PV_FOR,(yylsp[-11]).first_line,(yylsp[0]).last_line, (yylsp[-11]).first_column, (yylsp[0]).last_column);
(yyval.pval)->u1.for_init = (yyvsp[-8].str); (yyval.pval)->u2.for_test=(yyvsp[-5].str); (yyval.pval)->u3.for_inc = (yyvsp[-2].str); (yyval.pval)->u4.for_statements = (yyvsp[0].pval);;}
break;
case 79:
-#line 285 "ael.y"
+#line 288 "ael.y"
{reset_parencount(parseio->scanner);;}
break;
case 80:
-#line 286 "ael.y"
+#line 289 "ael.y"
{(yyval.pval)=npval(PV_WHILE,(yylsp[-5]).first_line,(yylsp[0]).last_line, (yylsp[-5]).first_column, (yylsp[0]).last_column);
(yyval.pval)->u1.str = (yyvsp[-2].str); (yyval.pval)->u2.statements = (yyvsp[0].pval); ;}
break;
case 81:
-#line 288 "ael.y"
+#line 291 "ael.y"
{(yyval.pval)=(yyvsp[-1].pval);(yyval.pval)->endline = (yylsp[0]).last_line; (yyval.pval)->endcol = (yylsp[0]).last_column;;}
break;
case 82:
-#line 289 "ael.y"
+#line 292 "ael.y"
{(yyval.pval)=(yyvsp[-2].pval); (yyval.pval)->u2.statements = (yyvsp[-1].pval);(yyval.pval)->endline = (yylsp[0]).last_line; (yyval.pval)->endcol = (yylsp[0]).last_column;;}
break;
case 83:
-#line 290 "ael.y"
+#line 293 "ael.y"
{(yyval.pval) = (yyvsp[-1].pval);(yyval.pval)->endline = (yylsp[-1]).last_line; (yyval.pval)->endcol = (yylsp[-1]).last_column;;}
break;
case 84:
-#line 291 "ael.y"
+#line 294 "ael.y"
{ (yyval.pval) = (yyvsp[-1].pval);(yyval.pval)->endline = (yylsp[0]).last_line; (yyval.pval)->endcol = (yylsp[0]).last_column;;}
break;
case 85:
-#line 292 "ael.y"
+#line 295 "ael.y"
{ (yyval.pval)= npval(PV_APPLICATION_CALL,(yylsp[-1]).first_line,(yylsp[0]).last_line, (yylsp[-1]).first_column, (yylsp[0]).last_column);
(yyval.pval)->u1.str = (yyvsp[-1].str);;}
break;
case 86:
-#line 294 "ael.y"
+#line 297 "ael.y"
{reset_semicount(parseio->scanner);;}
break;
case 87:
-#line 294 "ael.y"
+#line 297 "ael.y"
{
char *bufx;
int tot=0;
@@ -2309,76 +2312,76 @@ yyreduce:
break;
case 88:
-#line 327 "ael.y"
+#line 330 "ael.y"
{ (yyval.pval) = npval(PV_BREAK,(yylsp[-1]).first_line,(yylsp[0]).last_line, (yylsp[-1]).first_column, (yylsp[0]).last_column);;}
break;
case 89:
-#line 328 "ael.y"
+#line 331 "ael.y"
{(yyval.pval) = npval(PV_RETURN,(yylsp[-1]).first_line,(yylsp[0]).last_line, (yylsp[-1]).first_column, (yylsp[0]).last_column);;}
break;
case 90:
-#line 329 "ael.y"
+#line 332 "ael.y"
{(yyval.pval) = npval(PV_CONTINUE,(yylsp[-1]).first_line,(yylsp[0]).last_line, (yylsp[-1]).first_column, (yylsp[0]).last_column);;}
break;
case 91:
-#line 330 "ael.y"
+#line 333 "ael.y"
{(yyval.pval)=(yyvsp[-1].pval); (yyval.pval)->u2.statements = (yyvsp[0].pval);(yyval.pval)->endline = (yylsp[0]).last_line; (yyval.pval)->endcol = (yylsp[0]).last_column;;}
break;
case 92:
-#line 331 "ael.y"
+#line 334 "ael.y"
{(yyval.pval)=(yyvsp[-3].pval); (yyval.pval)->u2.statements = (yyvsp[-2].pval);(yyval.pval)->endline = (yylsp[-2]).last_line; (yyval.pval)->endcol = (yylsp[-2]).last_column; (yyval.pval)->u3.else_statements = (yyvsp[0].pval);;}
break;
case 93:
-#line 332 "ael.y"
+#line 335 "ael.y"
{(yyval.pval)=(yyvsp[-1].pval); (yyval.pval)->u2.statements = (yyvsp[0].pval);(yyval.pval)->endline = (yylsp[0]).last_line; (yyval.pval)->endcol = (yylsp[0]).last_column;;}
break;
case 94:
-#line 333 "ael.y"
+#line 336 "ael.y"
{(yyval.pval)=(yyvsp[-3].pval); (yyval.pval)->u2.statements = (yyvsp[-2].pval);(yyval.pval)->endline = (yylsp[-2]).last_line; (yyval.pval)->endcol = (yylsp[-2]).last_column; (yyval.pval)->u3.else_statements = (yyvsp[0].pval);;}
break;
case 95:
-#line 334 "ael.y"
+#line 337 "ael.y"
{(yyval.pval)=(yyvsp[-1].pval); (yyval.pval)->u2.statements = (yyvsp[0].pval);(yyval.pval)->endline = (yylsp[0]).last_line; (yyval.pval)->endcol = (yylsp[0]).last_column;;}
break;
case 96:
-#line 335 "ael.y"
+#line 338 "ael.y"
{(yyval.pval)=(yyvsp[-3].pval); (yyval.pval)->u2.statements = (yyvsp[-2].pval);(yyval.pval)->endline = (yylsp[-2]).last_line; (yyval.pval)->endcol = (yylsp[-2]).last_column; (yyval.pval)->u3.else_statements = (yyvsp[0].pval);;}
break;
case 97:
-#line 336 "ael.y"
+#line 339 "ael.y"
{ (yyval.pval)=0; ;}
break;
case 98:
-#line 339 "ael.y"
+#line 342 "ael.y"
{ (yyval.pval) = npval(PV_WORD,(yylsp[0]).first_line,(yylsp[0]).last_line, (yylsp[0]).first_column, (yylsp[0]).last_column); (yyval.pval)->u1.str = (yyvsp[0].str);;}
break;
case 99:
-#line 340 "ael.y"
+#line 343 "ael.y"
{(yyval.pval)=npval(PV_WORD,(yylsp[-2]).first_line,(yylsp[-2]).last_line, (yylsp[-2]).first_column, (yylsp[-2]).last_column);
(yyval.pval)->u1.str = (yyvsp[-2].str); (yyval.pval)->next = npval(PV_WORD,(yylsp[0]).first_line,(yylsp[0]).last_line, (yylsp[0]).first_column, (yylsp[0]).last_column);
(yyval.pval)->next->u1.str = (yyvsp[0].str);;}
break;
case 100:
-#line 343 "ael.y"
+#line 346 "ael.y"
{(yyval.pval)=npval(PV_WORD,(yylsp[-2]).first_line,(yylsp[-2]).last_line, (yylsp[-2]).first_column, (yylsp[-2]).last_column);
(yyval.pval)->u1.str = (yyvsp[-2].str); (yyval.pval)->next = npval(PV_WORD,(yylsp[0]).first_line,(yylsp[0]).last_line, (yylsp[0]).first_column, (yylsp[0]).last_column);
(yyval.pval)->next->u1.str = (yyvsp[0].str);;}
break;
case 101:
-#line 346 "ael.y"
+#line 349 "ael.y"
{(yyval.pval)=npval(PV_WORD,(yylsp[-4]).first_line,(yylsp[-4]).last_line, (yylsp[-4]).first_column, (yylsp[-4]).last_column);
(yyval.pval)->u1.str = (yyvsp[-4].str); (yyval.pval)->next = npval(PV_WORD,(yylsp[-2]).first_line,(yylsp[-2]).last_line, (yylsp[-2]).first_column, (yylsp[-2]).last_column);
(yyval.pval)->next->u1.str = (yyvsp[-2].str);
@@ -2387,7 +2390,7 @@ yyreduce:
break;
case 102:
-#line 351 "ael.y"
+#line 354 "ael.y"
{(yyval.pval)=npval(PV_WORD,(yylsp[-4]).first_line,(yylsp[-4]).last_line, (yylsp[-4]).first_column, (yylsp[-4]).last_column);
(yyval.pval)->u1.str = (yyvsp[-4].str); (yyval.pval)->next = npval(PV_WORD,(yylsp[-2]).first_line,(yylsp[-2]).last_line, (yylsp[-2]).first_column, (yylsp[-2]).last_column);
(yyval.pval)->next->u1.str = (yyvsp[-2].str);
@@ -2396,7 +2399,7 @@ yyreduce:
break;
case 103:
-#line 356 "ael.y"
+#line 359 "ael.y"
{(yyval.pval)=npval(PV_WORD,(yylsp[-4]).first_line,(yylsp[-4]).last_line, (yylsp[-4]).first_column, (yylsp[-4]).last_column);
(yyval.pval)->u1.str = strdup("default"); (yyval.pval)->next = npval(PV_WORD,(yylsp[-2]).first_line,(yylsp[-2]).last_line, (yylsp[-2]).first_column, (yylsp[-2]).last_column);
(yyval.pval)->next->u1.str = (yyvsp[-2].str);
@@ -2405,7 +2408,7 @@ yyreduce:
break;
case 104:
-#line 361 "ael.y"
+#line 364 "ael.y"
{(yyval.pval)=npval(PV_WORD,(yylsp[-4]).first_line,(yylsp[-4]).last_line, (yylsp[-4]).first_column, (yylsp[-4]).last_column);
(yyval.pval)->u1.str = strdup("default"); (yyval.pval)->next = npval(PV_WORD,(yylsp[-2]).first_line,(yylsp[-2]).last_line, (yylsp[-2]).first_column, (yylsp[-2]).last_column);
(yyval.pval)->next->u1.str = (yyvsp[-2].str);
@@ -2414,21 +2417,21 @@ yyreduce:
break;
case 105:
-#line 368 "ael.y"
+#line 371 "ael.y"
{(yyval.pval)=npval(PV_WORD,(yylsp[0]).first_line,(yylsp[0]).last_line, (yylsp[0]).first_column, (yylsp[0]).last_column);
(yyval.pval)->u1.str = (yyvsp[0].str); (yyval.pval)->next = npval(PV_WORD,(yylsp[0]).first_line,(yylsp[0]).last_line, (yylsp[0]).first_column, (yylsp[0]).last_column);
(yyval.pval)->next->u1.str = strdup("1");;}
break;
case 106:
-#line 371 "ael.y"
+#line 374 "ael.y"
{(yyval.pval)=npval(PV_WORD,(yylsp[-2]).first_line,(yylsp[-2]).last_line, (yylsp[-2]).first_column, (yylsp[-2]).last_column);
(yyval.pval)->u1.str = (yyvsp[-2].str); (yyval.pval)->next = npval(PV_WORD,(yylsp[0]).first_line,(yylsp[0]).last_line, (yylsp[0]).first_column, (yylsp[0]).last_column);
(yyval.pval)->next->u1.str = (yyvsp[0].str);;}
break;
case 107:
-#line 374 "ael.y"
+#line 377 "ael.y"
{(yyval.pval)=npval(PV_WORD,(yylsp[-4]).first_line,(yylsp[-4]).last_line, (yylsp[-4]).first_column, (yylsp[-4]).last_column);
(yyval.pval)->u1.str = (yyvsp[0].str); (yyval.pval)->next = npval(PV_WORD,(yylsp[-2]).first_line,(yylsp[-2]).last_line, (yylsp[-2]).first_column, (yylsp[-2]).last_column);
(yyval.pval)->next->u1.str = (yyvsp[-4].str);
@@ -2437,7 +2440,7 @@ yyreduce:
break;
case 108:
-#line 379 "ael.y"
+#line 382 "ael.y"
{(yyval.pval)=npval(PV_WORD,(yylsp[-2]).first_line,(yylsp[-2]).last_line, (yylsp[-2]).first_column, (yylsp[-2]).last_column);
(yyval.pval)->u1.str = (yyvsp[0].str); (yyval.pval)->next = npval(PV_WORD,(yylsp[0]).first_line,(yylsp[0]).last_line, (yylsp[0]).first_column, (yylsp[0]).last_column);
(yyval.pval)->next->u1.str = (yyvsp[-2].str);
@@ -2446,7 +2449,7 @@ yyreduce:
break;
case 109:
-#line 384 "ael.y"
+#line 387 "ael.y"
{(yyval.pval)=npval(PV_WORD,(yylsp[-4]).first_line,(yylsp[-4]).last_line, (yylsp[-4]).first_column, (yylsp[-4]).last_column);
(yyval.pval)->u1.str = strdup("default"); (yyval.pval)->next = npval(PV_WORD,(yylsp[-2]).first_line,(yylsp[-2]).last_line, (yylsp[-2]).first_column, (yylsp[-2]).last_column);
(yyval.pval)->next->u1.str = (yyvsp[-4].str);
@@ -2455,7 +2458,7 @@ yyreduce:
break;
case 110:
-#line 389 "ael.y"
+#line 392 "ael.y"
{(yyval.pval)=npval(PV_WORD,(yylsp[-2]).first_line,(yylsp[-2]).last_line, (yylsp[-2]).first_column, (yylsp[-2]).last_column);
(yyval.pval)->u1.str = strdup("default"); (yyval.pval)->next = npval(PV_WORD,(yylsp[0]).first_line,(yylsp[0]).last_line, (yylsp[0]).first_column, (yylsp[0]).last_column);
(yyval.pval)->next->u1.str = (yyvsp[-2].str);
@@ -2464,28 +2467,28 @@ yyreduce:
break;
case 111:
-#line 396 "ael.y"
+#line 399 "ael.y"
{reset_argcount(parseio->scanner);;}
break;
case 112:
-#line 397 "ael.y"
+#line 400 "ael.y"
{(yyval.pval)= npval(PV_MACRO_CALL,(yylsp[-4]).first_line,(yylsp[-3]).last_line, (yylsp[-4]).first_column, (yylsp[-3]).last_column);
(yyval.pval)->u1.str = (yyvsp[-4].str); (yyval.pval)->u2.arglist = (yyvsp[-1].pval);;}
break;
case 113:
-#line 399 "ael.y"
+#line 402 "ael.y"
{(yyval.pval)= npval(PV_MACRO_CALL,(yylsp[-2]).first_line,(yylsp[0]).last_line, (yylsp[-2]).first_column, (yylsp[0]).last_column); (yyval.pval)->u1.str = (yyvsp[-2].str); ;}
break;
case 114:
-#line 402 "ael.y"
+#line 405 "ael.y"
{reset_argcount(parseio->scanner);;}
break;
case 115:
-#line 402 "ael.y"
+#line 405 "ael.y"
{if (strcasecmp((yyvsp[-2].str),"goto") == 0) {
(yyval.pval)= npval(PV_GOTO,(yylsp[-2]).first_line,(yylsp[0]).last_line, (yylsp[-2]).first_column, (yylsp[0]).last_column);
free((yyvsp[-2].str)); /* won't be using this */
@@ -2496,7 +2499,7 @@ yyreduce:
break;
case 116:
-#line 411 "ael.y"
+#line 414 "ael.y"
{(yyval.pval) = (yyvsp[-2].pval);
if( (yyval.pval)->type == PV_GOTO )
(yyval.pval)->u1.list = (yyvsp[-1].pval);
@@ -2506,136 +2509,136 @@ yyreduce:
break;
case 117:
-#line 417 "ael.y"
+#line 420 "ael.y"
{(yyval.pval)=(yyvsp[-1].pval);(yyval.pval)->endline = (yylsp[0]).last_line; (yyval.pval)->endcol = (yylsp[0]).last_column;;}
break;
case 118:
-#line 420 "ael.y"
+#line 423 "ael.y"
{ (yyval.pval)= npval(PV_WORD,(yylsp[0]).first_line,(yylsp[0]).last_line, (yylsp[0]).first_column, (yylsp[0]).last_column); (yyval.pval)->u1.str = (yyvsp[0].str);;}
break;
case 119:
-#line 421 "ael.y"
+#line 424 "ael.y"
{ (yyval.pval)= npval(PV_WORD,0/*@1.first_line*/,0/*@1.last_line*/,0/* @1.first_column*/, 0/*@1.last_column*/); (yyval.pval)->u1.str = strdup(""); ;}
break;
case 120:
-#line 422 "ael.y"
+#line 425 "ael.y"
{ pval *z = npval(PV_WORD,(yylsp[0]).first_line,(yylsp[0]).last_line, (yylsp[0]).first_column, (yylsp[0]).last_column); (yyval.pval) = (yyvsp[-2].pval); linku1((yyvsp[-2].pval),z); z->u1.str = (yyvsp[0].str);;}
break;
case 121:
-#line 423 "ael.y"
+#line 426 "ael.y"
{ pval *z = npval(PV_WORD,(yylsp[0]).first_line,(yylsp[0]).last_line, (yylsp[0]).first_column, (yylsp[0]).last_column); (yyval.pval) = (yyvsp[-1].pval); linku1((yyvsp[-1].pval),z); z->u1.str = strdup("");;}
break;
case 122:
-#line 426 "ael.y"
+#line 429 "ael.y"
{(yyval.pval)=(yyvsp[0].pval);;}
break;
case 123:
-#line 427 "ael.y"
+#line 430 "ael.y"
{ if ( (yyvsp[-1].pval) && (yyvsp[0].pval) ) {(yyval.pval)=(yyvsp[-1].pval); linku1((yyval.pval),(yyvsp[0].pval));}
else if ( (yyvsp[-1].pval) ) {(yyval.pval)=(yyvsp[-1].pval);}
else if ( (yyvsp[0].pval) ) {(yyval.pval)=(yyvsp[0].pval);} ;}
break;
case 124:
-#line 432 "ael.y"
+#line 435 "ael.y"
{(yyval.pval) = npval(PV_CASE,(yylsp[-3]).first_line,(yylsp[-1]).last_line, (yylsp[-3]).first_column, (yylsp[-1]).last_column); (yyval.pval)->u1.str = (yyvsp[-2].str); (yyval.pval)->u2.statements = (yyvsp[0].pval);;}
break;
case 125:
-#line 433 "ael.y"
+#line 436 "ael.y"
{(yyval.pval) = npval(PV_DEFAULT,(yylsp[-2]).first_line,(yylsp[0]).last_line, (yylsp[-2]).first_column, (yylsp[0]).last_column); (yyval.pval)->u1.str = 0; (yyval.pval)->u2.statements = (yyvsp[0].pval);;}
break;
case 126:
-#line 434 "ael.y"
+#line 437 "ael.y"
{(yyval.pval) = npval(PV_PATTERN,(yylsp[-3]).first_line,(yylsp[-1]).last_line, (yylsp[-3]).first_column, (yylsp[-1]).last_column); (yyval.pval)->u1.str = (yyvsp[-2].str); (yyval.pval)->u2.statements = (yyvsp[0].pval);;}
break;
case 127:
-#line 435 "ael.y"
+#line 438 "ael.y"
{(yyval.pval) = npval(PV_CASE,(yylsp[-2]).first_line,(yylsp[0]).last_line, (yylsp[-2]).first_column, (yylsp[0]).last_column); (yyval.pval)->u1.str = (yyvsp[-1].str);;}
break;
case 128:
-#line 436 "ael.y"
+#line 439 "ael.y"
{(yyval.pval) = npval(PV_DEFAULT,(yylsp[-1]).first_line,(yylsp[0]).last_line, (yylsp[-1]).first_column, (yylsp[0]).last_column); (yyval.pval)->u1.str = 0;;}
break;
case 129:
-#line 437 "ael.y"
+#line 440 "ael.y"
{(yyval.pval) = npval(PV_PATTERN,(yylsp[-2]).first_line,(yylsp[0]).last_line, (yylsp[-2]).first_column, (yylsp[0]).last_column); (yyval.pval)->u1.str = (yyvsp[-1].str);;}
break;
case 130:
-#line 440 "ael.y"
+#line 443 "ael.y"
{(yyval.pval) = (yyvsp[0].pval);;}
break;
case 131:
-#line 441 "ael.y"
+#line 444 "ael.y"
{ if ( (yyvsp[-1].pval) && (yyvsp[0].pval) ) {(yyval.pval)=(yyvsp[-1].pval); linku1((yyval.pval),(yyvsp[0].pval));}
else if ( (yyvsp[-1].pval) ) {(yyval.pval)=(yyvsp[-1].pval);}
else if ( (yyvsp[0].pval) ) {(yyval.pval)=(yyvsp[0].pval);} ;}
break;
case 132:
-#line 446 "ael.y"
+#line 449 "ael.y"
{(yyval.pval)=(yyvsp[0].pval);;}
break;
case 133:
-#line 447 "ael.y"
+#line 450 "ael.y"
{(yyval.pval)=npval(PV_CATCH,(yylsp[-4]).first_line,(yylsp[0]).last_line, (yylsp[-4]).first_column, (yylsp[0]).last_column); (yyval.pval)->u1.str = (yyvsp[-3].str); (yyval.pval)->u2.statements = (yyvsp[-1].pval);;}
break;
case 134:
-#line 450 "ael.y"
+#line 453 "ael.y"
{(yyval.pval)= npval(PV_SWITCHES,(yylsp[-3]).first_line,(yylsp[0]).last_line, (yylsp[-3]).first_column, (yylsp[0]).last_column); (yyval.pval)->u1.list = (yyvsp[-1].pval); ;}
break;
case 135:
-#line 451 "ael.y"
+#line 454 "ael.y"
{(yyval.pval)= npval(PV_SWITCHES,(yylsp[-2]).first_line,(yylsp[0]).last_line, (yylsp[-2]).first_column, (yylsp[0]).last_column);;}
break;
case 136:
-#line 454 "ael.y"
+#line 457 "ael.y"
{(yyval.pval)= npval(PV_ESWITCHES,(yylsp[-3]).first_line,(yylsp[0]).last_line, (yylsp[-3]).first_column, (yylsp[0]).last_column); (yyval.pval)->u1.list = (yyvsp[-1].pval); ;}
break;
case 137:
-#line 455 "ael.y"
+#line 458 "ael.y"
{(yyval.pval)= npval(PV_ESWITCHES,(yylsp[-2]).first_line,(yylsp[0]).last_line, (yylsp[-2]).first_column, (yylsp[0]).last_column); ;}
break;
case 138:
-#line 458 "ael.y"
+#line 461 "ael.y"
{(yyval.pval)=npval(PV_WORD,(yylsp[-1]).first_line,(yylsp[0]).last_line, (yylsp[-1]).first_column, (yylsp[0]).last_column); (yyval.pval)->u1.str = (yyvsp[-1].str);;}
break;
case 139:
-#line 459 "ael.y"
+#line 462 "ael.y"
{pval *z = npval(PV_WORD,(yylsp[-1]).first_line,(yylsp[0]).last_line, (yylsp[-1]).first_column, (yylsp[0]).last_column); (yyval.pval)=(yyvsp[-2].pval); z->u1.str = (yyvsp[-1].str); linku1((yyval.pval),z); ;}
break;
case 140:
-#line 460 "ael.y"
+#line 463 "ael.y"
{(yyval.pval)=(yyvsp[-1].pval);;}
break;
case 141:
-#line 463 "ael.y"
+#line 466 "ael.y"
{(yyval.pval)=npval(PV_WORD,(yylsp[-1]).first_line,(yylsp[0]).last_line, (yylsp[-1]).first_column, (yylsp[0]).last_column); (yyval.pval)->u1.str = (yyvsp[-1].str);;}
break;
case 142:
-#line 464 "ael.y"
+#line 467 "ael.y"
{
(yyval.pval)=npval(PV_WORD,(yylsp[-13]).first_line,(yylsp[-12]).last_line, (yylsp[-13]).first_column, (yylsp[-12]).last_column);
(yyval.pval)->u1.str = (yyvsp[-13].str);
@@ -2660,7 +2663,7 @@ yyreduce:
break;
case 143:
-#line 485 "ael.y"
+#line 488 "ael.y"
{
(yyval.pval)=npval(PV_WORD,(yylsp[-9]).first_line,(yylsp[-8]).last_line, (yylsp[-9]).first_column, (yylsp[-8]).last_column);
(yyval.pval)->u1.str = (yyvsp[-9].str);
@@ -2677,12 +2680,12 @@ yyreduce:
break;
case 144:
-#line 498 "ael.y"
+#line 501 "ael.y"
{pval *z = npval(PV_WORD,(yylsp[-1]).first_line,(yylsp[0]).last_line, (yylsp[-1]).first_column, (yylsp[0]).last_column); (yyval.pval)=(yyvsp[-2].pval); z->u1.str = (yyvsp[-1].str); linku1((yyval.pval),z); ;}
break;
case 145:
-#line 499 "ael.y"
+#line 502 "ael.y"
{pval *z = npval(PV_WORD,(yylsp[-13]).first_line,(yylsp[-12]).last_line, (yylsp[-13]).first_column, (yylsp[-12]).last_column);
(yyval.pval)=(yyvsp[-14].pval); z->u1.str = (yyvsp[-13].str); linku1((yyval.pval),z);
z->u2.arglist = npval(PV_WORD,(yylsp[-11]).first_line,(yylsp[-11]).last_line, (yylsp[-11]).first_column, (yylsp[-11]).last_column);
@@ -2706,7 +2709,7 @@ yyreduce:
break;
case 146:
-#line 520 "ael.y"
+#line 523 "ael.y"
{pval *z = npval(PV_WORD,(yylsp[-9]).first_line,(yylsp[-9]).last_line, (yylsp[-9]).first_column, (yylsp[-8]).last_column);
(yyval.pval)=(yyvsp[-10].pval); z->u1.str = (yyvsp[-9].str); linku1((yyval.pval),z);
z->u2.arglist = npval(PV_WORD,(yylsp[-7]).first_line,(yylsp[-7]).last_line, (yylsp[-7]).first_column, (yylsp[-7]).last_column);
@@ -2722,27 +2725,27 @@ yyreduce:
break;
case 147:
-#line 532 "ael.y"
+#line 535 "ael.y"
{(yyval.pval)=(yyvsp[-1].pval);;}
break;
case 148:
-#line 535 "ael.y"
+#line 538 "ael.y"
{ (yyval.str) = (yyvsp[0].str);;}
break;
case 149:
-#line 536 "ael.y"
+#line 539 "ael.y"
{(yyval.str)=strdup("default");;}
break;
case 150:
-#line 539 "ael.y"
+#line 542 "ael.y"
{(yyval.pval)= npval(PV_INCLUDES,(yylsp[-3]).first_line,(yylsp[0]).last_line, (yylsp[-3]).first_column, (yylsp[0]).last_column); (yyval.pval)->u1.list = (yyvsp[-1].pval);;}
break;
case 151:
-#line 540 "ael.y"
+#line 543 "ael.y"
{(yyval.pval)= npval(PV_INCLUDES,(yylsp[-2]).first_line,(yylsp[0]).last_line, (yylsp[-2]).first_column, (yylsp[0]).last_column);;}
break;
@@ -2751,7 +2754,7 @@ yyreduce:
}
/* Line 1126 of yacc.c. */
-#line 2755 "ael.tab.c"
+#line 2758 "ael.tab.c"
yyvsp -= yylen;
yyssp -= yylen;
@@ -3026,7 +3029,7 @@ yyreturn:
}
-#line 544 "ael.y"
+#line 547 "ael.y"
static char *token_equivs1[] =
@@ -3165,7 +3168,7 @@ void yyerror(YYLTYPE *locp, struct parse_io *parseio, char const *s)
parseio->syntax_error_count++;
}
-struct pval *npval(pvaltype type,int first_line, int last_line, int first_column, int last_column)
+static struct pval *npval(pvaltype type,int first_line, int last_line, int first_column, int last_column)
{
extern char *my_file;
pval *z = (pval *)calloc(sizeof(struct pval),1);
@@ -3178,15 +3181,15 @@ struct pval *npval(pvaltype type,int first_line, int last_line, int first_column
return z;
}
-void linku1(pval *head, pval *tail)
+/* append second element to the list in the first one */
+static void linku1(pval *head, pval *tail)
{
if (!head->next) {
head->next = tail;
- head->u1_last = tail;
} else {
head->u1_last->next = tail;
- head->u1_last = tail;
}
+ head->u1_last = tail;
}
diff --git a/pbx/ael/ael.tab.h b/pbx/ael/ael.tab.h
index 48459ee7c..57878d8a9 100644
--- a/pbx/ael/ael.tab.h
+++ b/pbx/ael/ael.tab.h
@@ -115,7 +115,7 @@
#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
-#line 47 "ael.y"
+#line 50 "ael.y"
typedef union YYSTYPE {
char *str;
struct pval *pval;
diff --git a/pbx/ael/ael.y b/pbx/ael/ael.y
index 539216474..5bb6d4d16 100644
--- a/pbx/ael/ael.y
+++ b/pbx/ael/ael.y
@@ -27,9 +27,13 @@
#include "asterisk/logger.h"
#include "asterisk/ael_structs.h"
-extern void reset_parencount(yyscan_t yyscanner);
-extern void reset_semicount(yyscan_t yyscanner);
-extern void reset_argcount(yyscan_t yyscanner );
+static pval *npval(pvaltype type, int first_line, int last_line,
+ int first_column, int last_column);
+static void linku1(pval *head, pval *tail);
+
+void reset_parencount(yyscan_t yyscanner);
+void reset_semicount(yyscan_t yyscanner);
+void reset_argcount(yyscan_t yyscanner );
#define YYLEX_PARAM ((struct parse_io *)parseio)->scanner
#define YYERROR_VERBOSE 1
@@ -38,8 +42,7 @@ extern char *my_file;
#ifdef AAL_ARGCHECK
int ael_is_funcname(char *name);
#endif
- static char *ael_token_subst(char *mess);
- extern char *prev_word;
+static char *ael_token_subst(char *mess);
%}
@@ -679,7 +682,7 @@ void yyerror(YYLTYPE *locp, struct parse_io *parseio, char const *s)
parseio->syntax_error_count++;
}
-struct pval *npval(pvaltype type,int first_line, int last_line, int first_column, int last_column)
+static struct pval *npval(pvaltype type,int first_line, int last_line, int first_column, int last_column)
{
extern char *my_file;
pval *z = (pval *)calloc(sizeof(struct pval),1);
@@ -692,14 +695,14 @@ struct pval *npval(pvaltype type,int first_line, int last_line, int first_column
return z;
}
-void linku1(pval *head, pval *tail)
+/* append second element to the list in the first one */
+static void linku1(pval *head, pval *tail)
{
if (!head->next) {
head->next = tail;
- head->u1_last = tail;
} else {
head->u1_last->next = tail;
- head->u1_last = tail;
}
+ head->u1_last = tail;
}
diff --git a/pbx/ael/ael_lex.c b/pbx/ael/ael_lex.c
index b48aedd28..2e023e322 100644
--- a/pbx/ael/ael_lex.c
+++ b/pbx/ael/ael_lex.c
@@ -675,17 +675,12 @@ char *my_file = 0;
char *prev_word;
#define MAX_INCLUDE_DEPTH 50
-void reset_parencount(yyscan_t yyscanner );
-void reset_semicount(yyscan_t yyscanner );
-void reset_argcount(yyscan_t yyscanner );
-struct pval *ael2_parse(char *filename, int *errors);
int ael_yyget_column (yyscan_t yyscanner);
void ael_yyset_column (int column_no , yyscan_t yyscanner);
int ael_yyparse (struct parse_io *);
static void pbcpush(char x);
static int pbcpop(char x);
static void pbcwhere(char *text, int *line, int *col );
-static int c_prevword(void);
struct stackelement {
char *fname;
@@ -698,7 +693,7 @@ int include_stack_index = 0;
/* %option yylineno I've tried hard, but haven't been able to use this */
-#line 702 "ael_lex.c"
+#line 697 "ael_lex.c"
#define INITIAL 0
#define paren 1
@@ -938,9 +933,9 @@ YY_DECL
register int yy_act;
struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
-#line 76 "ael.flex"
+#line 71 "ael.flex"
-#line 944 "ael_lex.c"
+#line 939 "ael_lex.c"
yylval = yylval_param;
@@ -1031,218 +1026,218 @@ do_action: /* This label is used only to access EOF actions. */
case 1:
YY_RULE_SETUP
-#line 77 "ael.flex"
+#line 72 "ael.flex"
{yylloc->first_line = yylloc->last_line = my_lineno; yylloc->last_column=my_col+yyleng-1; yylloc->first_column=my_col;my_col+=yyleng;return LC;}
YY_BREAK
case 2:
YY_RULE_SETUP
-#line 78 "ael.flex"
+#line 73 "ael.flex"
{yylloc->first_line = yylloc->last_line = my_lineno; yylloc->last_column=my_col+yyleng-1; yylloc->first_column=my_col;my_col+=yyleng;return RC;}
YY_BREAK
case 3:
YY_RULE_SETUP
-#line 79 "ael.flex"
+#line 74 "ael.flex"
{yylloc->first_line = yylloc->last_line = my_lineno; yylloc->last_column=my_col+yyleng-1; yylloc->first_column=my_col;my_col+=yyleng;return LP;}
YY_BREAK
case 4:
YY_RULE_SETUP
-#line 80 "ael.flex"
+#line 75 "ael.flex"
{yylloc->first_line = yylloc->last_line = my_lineno; yylloc->last_column=my_col+yyleng-1; yylloc->first_column=my_col;my_col+=yyleng;return RP;}
YY_BREAK
case 5:
YY_RULE_SETUP
-#line 81 "ael.flex"
+#line 76 "ael.flex"
{yylloc->first_line = yylloc->last_line = my_lineno; yylloc->last_column=my_col+yyleng-1; yylloc->first_column=my_col;my_col+=yyleng;return SEMI;}
YY_BREAK
case 6:
YY_RULE_SETUP
-#line 82 "ael.flex"
+#line 77 "ael.flex"
{yylloc->first_line = yylloc->last_line = my_lineno; yylloc->last_column=my_col+yyleng-1; yylloc->first_column=my_col;my_col+=yyleng;return EQ;}
YY_BREAK
case 7:
YY_RULE_SETUP
-#line 83 "ael.flex"
+#line 78 "ael.flex"
{yylloc->first_line = yylloc->last_line = my_lineno; yylloc->last_column=my_col+yyleng-1; yylloc->first_column=my_col;my_col+=yyleng;return COMMA;}
YY_BREAK
case 8:
YY_RULE_SETUP
-#line 84 "ael.flex"
+#line 79 "ael.flex"
{yylloc->first_line = yylloc->last_line = my_lineno; yylloc->last_column=my_col+yyleng-1; yylloc->first_column=my_col;my_col+=yyleng;return COLON;}
YY_BREAK
case 9:
YY_RULE_SETUP
-#line 85 "ael.flex"
+#line 80 "ael.flex"
{yylloc->first_line = yylloc->last_line = my_lineno; yylloc->last_column=my_col+yyleng-1; yylloc->first_column=my_col;my_col+=yyleng;return AMPER;}
YY_BREAK
case 10:
YY_RULE_SETUP
-#line 86 "ael.flex"
+#line 81 "ael.flex"
{yylloc->first_line = yylloc->last_line = my_lineno; yylloc->last_column=my_col+yyleng-1; yylloc->first_column=my_col;my_col+=yyleng;return BAR;}
YY_BREAK
case 11:
YY_RULE_SETUP
-#line 87 "ael.flex"
+#line 82 "ael.flex"
{yylloc->first_line = yylloc->last_line = my_lineno; yylloc->last_column=my_col+yyleng-1; yylloc->first_column=my_col;my_col+=yyleng;return EXTENMARK;}
YY_BREAK
case 12:
YY_RULE_SETUP
-#line 88 "ael.flex"
+#line 83 "ael.flex"
{yylloc->first_line = yylloc->last_line = my_lineno; yylloc->last_column=my_col+yyleng-1; yylloc->first_column=my_col;my_col+=yyleng;return AT;}
YY_BREAK
case 13:
YY_RULE_SETUP
-#line 89 "ael.flex"
+#line 84 "ael.flex"
{/*comment*/}
YY_BREAK
case 14:
YY_RULE_SETUP
-#line 90 "ael.flex"
+#line 85 "ael.flex"
{yylloc->first_line = yylloc->last_line = my_lineno; yylloc->last_column=my_col+yyleng-1; yylloc->first_column=my_col;my_col+=yyleng;return KW_CONTEXT;}
YY_BREAK
case 15:
YY_RULE_SETUP
-#line 91 "ael.flex"
+#line 86 "ael.flex"
{yylloc->first_line = yylloc->last_line = my_lineno; yylloc->last_column=my_col+yyleng-1; yylloc->first_column=my_col;my_col+=yyleng;return KW_ABSTRACT;}
YY_BREAK
case 16:
YY_RULE_SETUP
-#line 92 "ael.flex"
+#line 87 "ael.flex"
{yylloc->first_line = yylloc->last_line = my_lineno; yylloc->last_column=my_col+yyleng-1; yylloc->first_column=my_col;my_col+=yyleng;return KW_MACRO;};
YY_BREAK
case 17:
YY_RULE_SETUP
-#line 93 "ael.flex"
+#line 88 "ael.flex"
{yylloc->first_line = yylloc->last_line = my_lineno; yylloc->last_column=my_col+yyleng-1; yylloc->first_column=my_col;my_col+=yyleng;return KW_GLOBALS;}
YY_BREAK
case 18:
YY_RULE_SETUP
-#line 94 "ael.flex"
+#line 89 "ael.flex"
{yylloc->first_line = yylloc->last_line = my_lineno; yylloc->last_column=my_col+yyleng-1; yylloc->first_column=my_col;my_col+=yyleng;return KW_IGNOREPAT;}
YY_BREAK
case 19:
YY_RULE_SETUP
-#line 95 "ael.flex"
+#line 90 "ael.flex"
{yylloc->first_line = yylloc->last_line = my_lineno; yylloc->last_column=my_col+yyleng-1; yylloc->first_column=my_col;my_col+=yyleng;return KW_SWITCH;}
YY_BREAK
case 20:
YY_RULE_SETUP
-#line 96 "ael.flex"
+#line 91 "ael.flex"
{yylloc->first_line = yylloc->last_line = my_lineno; yylloc->last_column=my_col+yyleng-1; yylloc->first_column=my_col;my_col+=yyleng;return KW_IF;}
YY_BREAK
case 21:
YY_RULE_SETUP
-#line 97 "ael.flex"
+#line 92 "ael.flex"
{yylloc->first_line = yylloc->last_line = my_lineno; yylloc->last_column=my_col+yyleng-1; yylloc->first_column=my_col;my_col+=yyleng;return KW_IFTIME;}
YY_BREAK
case 22:
YY_RULE_SETUP
-#line 98 "ael.flex"
+#line 93 "ael.flex"
{yylloc->first_line = yylloc->last_line = my_lineno; yylloc->last_column=my_col+yyleng-1; yylloc->first_column=my_col;my_col+=yyleng;return KW_RANDOM;}
YY_BREAK
case 23:
YY_RULE_SETUP
-#line 99 "ael.flex"
+#line 94 "ael.flex"
{yylloc->first_line = yylloc->last_line = my_lineno; yylloc->last_column=my_col+yyleng-1; yylloc->first_column=my_col;my_col+=yyleng;return KW_REGEXTEN;}
YY_BREAK
case 24:
YY_RULE_SETUP
-#line 100 "ael.flex"
+#line 95 "ael.flex"
{yylloc->first_line = yylloc->last_line = my_lineno; yylloc->last_column=my_col+yyleng-1; yylloc->first_column=my_col;my_col+=yyleng;return KW_HINT;}
YY_BREAK
case 25:
YY_RULE_SETUP
-#line 101 "ael.flex"
+#line 96 "ael.flex"
{yylloc->first_line = yylloc->last_line = my_lineno; yylloc->last_column=my_col+yyleng-1; yylloc->first_column=my_col;my_col+=yyleng;return KW_ELSE;}
YY_BREAK
case 26:
YY_RULE_SETUP
-#line 102 "ael.flex"
+#line 97 "ael.flex"
{yylloc->first_line = yylloc->last_line = my_lineno; yylloc->last_column=my_col+yyleng-1; yylloc->first_column=my_col;my_col+=yyleng;return KW_GOTO;}
YY_BREAK
case 27:
YY_RULE_SETUP
-#line 103 "ael.flex"
+#line 98 "ael.flex"
{yylloc->first_line = yylloc->last_line = my_lineno; yylloc->last_column=my_col+yyleng-1; yylloc->first_column=my_col;my_col+=yyleng;return KW_JUMP;}
YY_BREAK
case 28:
YY_RULE_SETUP
-#line 104 "ael.flex"
+#line 99 "ael.flex"
{yylloc->first_line = yylloc->last_line = my_lineno; yylloc->last_column=my_col+yyleng-1; yylloc->first_column=my_col;my_col+=yyleng;return KW_RETURN;}
YY_BREAK
case 29:
YY_RULE_SETUP
-#line 105 "ael.flex"
+#line 100 "ael.flex"
{yylloc->first_line = yylloc->last_line = my_lineno; yylloc->last_column=my_col+yyleng-1; yylloc->first_column=my_col;my_col+=yyleng;return KW_BREAK;}
YY_BREAK
case 30:
YY_RULE_SETUP
-#line 106 "ael.flex"
+#line 101 "ael.flex"
{yylloc->first_line = yylloc->last_line = my_lineno; yylloc->last_column=my_col+yyleng-1; yylloc->first_column=my_col;my_col+=yyleng;return KW_CONTINUE;}
YY_BREAK
case 31:
YY_RULE_SETUP
-#line 107 "ael.flex"
+#line 102 "ael.flex"
{yylloc->first_line = yylloc->last_line = my_lineno; yylloc->last_column=my_col+yyleng-1; yylloc->first_column=my_col;my_col+=yyleng;return KW_FOR;}
YY_BREAK
case 32:
YY_RULE_SETUP
-#line 108 "ael.flex"
+#line 103 "ael.flex"
{yylloc->first_line = yylloc->last_line = my_lineno; yylloc->last_column=my_col+yyleng-1; yylloc->first_column=my_col;my_col+=yyleng;return KW_WHILE;}
YY_BREAK
case 33:
YY_RULE_SETUP
-#line 109 "ael.flex"
+#line 104 "ael.flex"
{yylloc->first_line = yylloc->last_line = my_lineno; yylloc->last_column=my_col+yyleng-1; yylloc->first_column=my_col;my_col+=yyleng;return KW_CASE;}
YY_BREAK
case 34:
YY_RULE_SETUP
-#line 110 "ael.flex"
+#line 105 "ael.flex"
{yylloc->first_line = yylloc->last_line = my_lineno; yylloc->last_column=my_col+yyleng-1; yylloc->first_column=my_col;my_col+=yyleng;return KW_DEFAULT;}
YY_BREAK
case 35:
YY_RULE_SETUP
-#line 111 "ael.flex"
+#line 106 "ael.flex"
{yylloc->first_line = yylloc->last_line = my_lineno; yylloc->last_column=my_col+yyleng-1; yylloc->first_column=my_col;my_col+=yyleng;return KW_PATTERN;}
YY_BREAK
case 36:
YY_RULE_SETUP
-#line 112 "ael.flex"
+#line 107 "ael.flex"
{yylloc->first_line = yylloc->last_line = my_lineno; yylloc->last_column=my_col+yyleng-1; yylloc->first_column=my_col;my_col+=yyleng;return KW_CATCH;}
YY_BREAK
case 37:
YY_RULE_SETUP
-#line 113 "ael.flex"
+#line 108 "ael.flex"
{yylloc->first_line = yylloc->last_line = my_lineno; yylloc->last_column=my_col+yyleng-1; yylloc->first_column=my_col;my_col+=yyleng;return KW_SWITCHES;}
YY_BREAK
case 38:
YY_RULE_SETUP
-#line 114 "ael.flex"
+#line 109 "ael.flex"
{yylloc->first_line = yylloc->last_line = my_lineno; yylloc->last_column=my_col+yyleng-1; yylloc->first_column=my_col;my_col+=yyleng;return KW_ESWITCHES;}
YY_BREAK
case 39:
YY_RULE_SETUP
-#line 115 "ael.flex"
+#line 110 "ael.flex"
{yylloc->first_line = yylloc->last_line = my_lineno; yylloc->last_column=my_col+yyleng-1; yylloc->first_column=my_col;my_col+=yyleng;return KW_INCLUDES;}
YY_BREAK
case 40:
/* rule 40 can match eol */
YY_RULE_SETUP
-#line 117 "ael.flex"
+#line 112 "ael.flex"
{my_lineno++;my_col=0;}
YY_BREAK
case 41:
YY_RULE_SETUP
-#line 118 "ael.flex"
+#line 113 "ael.flex"
{/* nothing */ my_col+=yyleng;}
YY_BREAK
case 42:
YY_RULE_SETUP
-#line 119 "ael.flex"
+#line 114 "ael.flex"
{/* nothing */ int wid = 8-(my_col%8); my_col+=wid;}
YY_BREAK
case 43:
YY_RULE_SETUP
-#line 121 "ael.flex"
+#line 116 "ael.flex"
{
yylloc->first_line = yylloc->last_line = my_lineno;
yylloc->last_column=my_col+yyleng-1;
@@ -1257,7 +1252,7 @@ YY_RULE_SETUP
case 44:
/* rule 44 can match eol */
YY_RULE_SETUP
-#line 132 "ael.flex"
+#line 127 "ael.flex"
{
yylloc->first_line = my_lineno;
yylloc->first_column=my_col;
@@ -1297,7 +1292,7 @@ YY_RULE_SETUP
case 45:
/* rule 45 can match eol */
YY_RULE_SETUP
-#line 168 "ael.flex"
+#line 163 "ael.flex"
{
yylloc->first_line = my_lineno; yylloc->first_column=my_col;
parencount++;
@@ -1308,13 +1303,13 @@ YY_RULE_SETUP
case 46:
/* rule 46 can match eol */
YY_RULE_SETUP
-#line 175 "ael.flex"
+#line 170 "ael.flex"
{yylloc->first_line = my_lineno;yylloc->first_column=my_col; yymore(); pbcpush('['); }
YY_BREAK
case 47:
/* rule 47 can match eol */
YY_RULE_SETUP
-#line 177 "ael.flex"
+#line 172 "ael.flex"
{
yylloc->first_line = my_lineno;yylloc->first_column=my_col;
if ( pbcpop(']') ) {
@@ -1336,13 +1331,13 @@ YY_RULE_SETUP
case 48:
/* rule 48 can match eol */
YY_RULE_SETUP
-#line 195 "ael.flex"
+#line 190 "ael.flex"
{yylloc->first_line = my_lineno;yylloc->first_column=my_col; yymore(); pbcpush('{'); }
YY_BREAK
case 49:
/* rule 49 can match eol */
YY_RULE_SETUP
-#line 197 "ael.flex"
+#line 192 "ael.flex"
{
yylloc->first_line = my_lineno;
yylloc->first_column=my_col;
@@ -1365,7 +1360,7 @@ YY_RULE_SETUP
case 50:
/* rule 50 can match eol */
YY_RULE_SETUP
-#line 216 "ael.flex"
+#line 211 "ael.flex"
{
/* printf("ARGG:%s\n",yytext); */
int linecount = 0;
@@ -1425,7 +1420,7 @@ YY_RULE_SETUP
case 51:
/* rule 51 can match eol */
YY_RULE_SETUP
-#line 272 "ael.flex"
+#line 267 "ael.flex"
{
/* printf("ARGG:%s\n",yytext); */
/* printf("GOT AN LP!!!\n"); */
@@ -1439,7 +1434,7 @@ YY_RULE_SETUP
case 52:
/* rule 52 can match eol */
YY_RULE_SETUP
-#line 282 "ael.flex"
+#line 277 "ael.flex"
{
/* printf("ARGG:%s\n",yytext); */
if( parencount != 0) {
@@ -1489,7 +1484,7 @@ YY_RULE_SETUP
case 53:
/* rule 53 can match eol */
YY_RULE_SETUP
-#line 328 "ael.flex"
+#line 323 "ael.flex"
{
/*printf("ARGG:%s\n",yytext);*/
yylloc->first_line = my_lineno;
@@ -1500,7 +1495,7 @@ YY_RULE_SETUP
case 54:
/* rule 54 can match eol */
YY_RULE_SETUP
-#line 335 "ael.flex"
+#line 330 "ael.flex"
{
/*printf("ARGG:%s\n",yytext);*/yylloc->first_line = my_lineno;yylloc->first_column=my_col;
if ( pbcpop('}') ) {
@@ -1522,13 +1517,13 @@ YY_RULE_SETUP
case 55:
/* rule 55 can match eol */
YY_RULE_SETUP
-#line 353 "ael.flex"
+#line 348 "ael.flex"
{/*printf("ARGG:%s\n",yytext);*/yylloc->first_line = my_lineno;yylloc->first_column=my_col; yymore(); pbcpush('['); }
YY_BREAK
case 56:
/* rule 56 can match eol */
YY_RULE_SETUP
-#line 355 "ael.flex"
+#line 350 "ael.flex"
{/*printf("ARGG:%s\n",yytext);*/yylloc->first_line = my_lineno;yylloc->first_column=my_col;
if ( pbcpop(']') ) {
/* error */
@@ -1549,13 +1544,13 @@ YY_RULE_SETUP
case 57:
/* rule 57 can match eol */
YY_RULE_SETUP
-#line 372 "ael.flex"
+#line 367 "ael.flex"
{/*printf("SEMIC:%s\n",yytext);*/yylloc->first_line = my_lineno;yylloc->first_column=my_col; yymore(); pbcpush('['); }
YY_BREAK
case 58:
/* rule 58 can match eol */
YY_RULE_SETUP
-#line 374 "ael.flex"
+#line 369 "ael.flex"
{/*printf("SEMIC:%s\n",yytext);*/yylloc->first_line = my_lineno;yylloc->first_column=my_col;
if ( pbcpop(']') ) {
/* error */
@@ -1576,13 +1571,13 @@ YY_RULE_SETUP
case 59:
/* rule 59 can match eol */
YY_RULE_SETUP
-#line 391 "ael.flex"
+#line 386 "ael.flex"
{/*printf("SEMIC:%s\n",yytext);*/yylloc->first_line = my_lineno;yylloc->first_column=my_col; yymore(); pbcpush('{');}
YY_BREAK
case 60:
/* rule 60 can match eol */
YY_RULE_SETUP
-#line 393 "ael.flex"
+#line 388 "ael.flex"
{/*printf("SEMIC:%s\n",yytext);*/yylloc->first_line = my_lineno;yylloc->first_column=my_col;
if ( pbcpop('}') ) {
/* error */
@@ -1603,13 +1598,13 @@ YY_RULE_SETUP
case 61:
/* rule 61 can match eol */
YY_RULE_SETUP
-#line 410 "ael.flex"
+#line 405 "ael.flex"
{/*printf("SEMIC:%s\n",yytext);*/yylloc->first_line = my_lineno;yylloc->first_column=my_col; yymore(); pbcpush('(');}
YY_BREAK
case 62:
/* rule 62 can match eol */
YY_RULE_SETUP
-#line 412 "ael.flex"
+#line 407 "ael.flex"
{/*printf("SEMIC:%s\n",yytext);*/yylloc->first_line = my_lineno;yylloc->first_column=my_col;
if ( pbcpop(')') ) {
/* error */
@@ -1630,7 +1625,7 @@ YY_RULE_SETUP
case 63:
/* rule 63 can match eol */
YY_RULE_SETUP
-#line 429 "ael.flex"
+#line 424 "ael.flex"
{
int linecount = 0;
int colcount = my_col;
@@ -1661,7 +1656,7 @@ YY_RULE_SETUP
case 64:
/* rule 64 can match eol */
YY_RULE_SETUP
-#line 456 "ael.flex"
+#line 451 "ael.flex"
{
FILE *in1;
char fnamebuf[1024],*p1,*p2;
@@ -1728,7 +1723,7 @@ case YY_STATE_EOF(INITIAL):
case YY_STATE_EOF(paren):
case YY_STATE_EOF(semic):
case YY_STATE_EOF(argg):
-#line 518 "ael.flex"
+#line 513 "ael.flex"
{
if ( --include_stack_index < 0 ) {
yyterminate();
@@ -1744,10 +1739,10 @@ case YY_STATE_EOF(argg):
YY_BREAK
case 65:
YY_RULE_SETUP
-#line 531 "ael.flex"
+#line 526 "ael.flex"
ECHO;
YY_BREAK
-#line 1751 "ael_lex.c"
+#line 1746 "ael_lex.c"
case YY_END_OF_BUFFER:
{
@@ -2877,7 +2872,7 @@ void ael_yyfree (void * ptr , yyscan_t yyscanner)
#define YYTABLES_NAME "yytables"
-#line 531 "ael.flex"
+#line 526 "ael.flex"
@@ -2897,6 +2892,7 @@ static int pbcpop(char x)
return 1; /* error */
}
+#if 0
static int c_prevword(void)
{
char *c = prev_word;
@@ -2916,6 +2912,7 @@ static int c_prevword(void)
}
return 0;
}
+#endif
static void pbcwhere(char *text, int *line, int *col )
{
@@ -2934,7 +2931,8 @@ static void pbcwhere(char *text, int *line, int *col )
*col = loc_col;
}
-void reset_parencount(yyscan_t yyscanner )
+#if 0
+static void reset_parencount(yyscan_t yyscanner )
{
struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
parencount = 0;
@@ -2944,14 +2942,14 @@ void reset_parencount(yyscan_t yyscanner )
BEGIN(paren);
}
-void reset_semicount(yyscan_t yyscanner )
+static void reset_semicount(yyscan_t yyscanner )
{
struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
pbcpos = 0;
BEGIN(semic);
}
-void reset_argcount(yyscan_t yyscanner )
+static void reset_argcount(yyscan_t yyscanner )
{
struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
parencount = 0;
@@ -2962,7 +2960,9 @@ void reset_argcount(yyscan_t yyscanner )
BEGIN(argg);
}
+#endif
+/* used elsewhere, but some local vars */
struct pval *ael2_parse(char *filename, int *errors)
{
struct pval *pval;
diff --git a/pbx/pbx_ael.c b/pbx/pbx_ael.c
index d2fdd7297..ad5bc674a 100644
--- a/pbx/pbx_ael.c
+++ b/pbx/pbx_ael.c
@@ -29,6 +29,7 @@
#include <ctype.h>
#include <errno.h>
#include <regex.h>
+#include <sys/stat.h>
#include "asterisk.h"
@@ -124,9 +125,9 @@ static pval *current_extension;
static const char *description(void);
static const char *key(void);
-static char *match_context;
-static char *match_exten;
-static char *match_label;
+static const char *match_context;
+static const char *match_exten;
+static const char *match_label;
static int in_abstract_context;
static int count_labels; /* true, put matcher in label counting mode */
static int label_count; /* labels are only meant to be counted in a context or exten */
@@ -138,15 +139,20 @@ static void check_dow(pval *DOW);
static void check_day(pval *DAY);
static void check_month(pval *MON);
static void check_expr2_input(pval *expr, char *str);
-static int extension_matches(pval *here, char *exten, char *pattern);
+static int extension_matches(pval *here, const char *exten, const char *pattern);
static void check_goto(pval *item);
static void find_pval_goto_item(pval *item, int lev);
static void find_pval_gotos(pval *item, int lev);
+static struct pval *find_label_in_current_context(char *exten, char *label);
+static void print_pval_list(FILE *fin, pval *item, int depth);
+
+static struct pval *find_label_in_current_extension(const char *label);
+static struct pval *find_label_in_current_db(const char *context, const char *exten, const char *label);
/* PRETTY PRINTER FOR AEL: ============================================================================= */
-void print_pval(FILE *fin, pval *item, int depth)
+static void print_pval(FILE *fin, pval *item, int depth)
{
int i;
pval *lp;
@@ -400,7 +406,7 @@ void print_pval(FILE *fin, pval *item, int depth)
}
}
-void print_pval_list(FILE *fin, pval *item, int depth)
+static void print_pval_list(FILE *fin, pval *item, int depth)
{
pval *i;
@@ -409,7 +415,8 @@ void print_pval_list(FILE *fin, pval *item, int depth)
}
}
-void ael2_print(char *fname, pval *tree)
+#if 0
+static void ael2_print(char *fname, pval *tree)
{
FILE *fin = fopen(fname,"w");
if ( !fin ) {
@@ -419,6 +426,7 @@ void ael2_print(char *fname, pval *tree)
print_pval_list(fin, tree, 0);
fclose(fin);
}
+#endif
/* EMPTY TEMPLATE FUNCS FOR AEL TRAVERSAL: ============================================================================= */
@@ -677,7 +685,7 @@ void traverse_pval_template(pval *item, int depth) /* depth comes in handy for a
-static int extension_matches(pval *here, char *exten, char *pattern)
+static int extension_matches(pval *here, const char *exten, const char *pattern)
{
int err1;
regex_t preg;
@@ -688,7 +696,8 @@ static int extension_matches(pval *here, char *exten, char *pattern)
if ( pattern[0] == '_' ) {
char reg1[2000];
- char *p,*r=reg1;
+ const char *p;
+ char *r = reg1;
if ( strlen(pattern)*5 >= 2000 ) /* safety valve */ {
ast_log(LOG_ERROR,"Error: The pattern %s is way too big. Pattern matching cancelled.\n",
@@ -1511,7 +1520,7 @@ struct pval *match_pval(pval *item)
return 0;
}
-
+#if 0
int count_labels_in_current_context(char *label)
{
label_count = 0;
@@ -1521,6 +1530,7 @@ int count_labels_in_current_context(char *label)
return label_count;
}
+#endif
struct pval *find_label_in_current_context(char *exten, char *label)
{
@@ -1564,7 +1574,7 @@ struct pval *find_label_in_current_context(char *exten, char *label)
return 0;
}
-struct pval *find_label_in_current_extension(char *label)
+static struct pval *find_label_in_current_extension(const char *label)
{
/* printf(" --- Got args %s\n", label); */
count_labels = 0;
@@ -1577,7 +1587,7 @@ struct pval *find_label_in_current_extension(char *label)
return match_pval(current_extension->u2.statements);
}
-struct pval *find_label_in_current_db(char *context, char *exten, char *label)
+static struct pval *find_label_in_current_db(const char *context, const char *exten, const char *label)
{
/* printf(" --- Got args %s, %s, %s\n", context, exten, label); */
count_labels = 0;
@@ -2408,7 +2418,7 @@ void check_pval(pval *item, struct argapp *apps)
}
}
-void ael2_semantic_check(pval *item, int *arg_errs, int *arg_warns, int *arg_notes)
+static void ael2_semantic_check(pval *item, int *arg_errs, int *arg_warns, int *arg_notes)
{
#ifdef AAL_ARGCHECK