[Asterisk-code-review] ael: Regenerate lexers and parsers. (asterisk[20])

Friendly Automation asteriskteam at digium.com
Mon Apr 3 07:13:58 CDT 2023


Friendly Automation has submitted this change. ( https://gerrit.asterisk.org/c/asterisk/+/20022 )

Change subject: ael: Regenerate lexers and parsers.
......................................................................

ael: Regenerate lexers and parsers.

Various changes to ensure that the lexers and parsers can be correctly
generated when REBUILD_PARSERS is enabled.

Some notes:

* Because of the version of flex we are using to generate the lexers
  (2.5.35) some post-processing in the Makefile is still required.

* The generated lexers do not contain the problematic C99 check that
  was being replaced by the call to sed in the respective Makefiles so
  it was removed.

* Since these files are generated, they will include trailing
  whitespace in some places. This does not need to be corrected.

Change-Id: Ibbd343606fcf5c0d285b1599e6e8e59f514f2e4e
---
M main/Makefile
M main/ast_expr2.c
M main/ast_expr2.h
M main/ast_expr2f.c
M res/Makefile
M res/ael/ael.flex
M res/ael/ael.tab.c
M res/ael/ael.tab.h
M res/ael/ael_lex.c
9 files changed, 603 insertions(+), 608 deletions(-)

Approvals:
  Joshua Colp: Looks good to me, but someone else must approve
  George Joseph: Looks good to me, approved
  Friendly Automation: Approved for Submit




diff --git a/main/Makefile b/main/Makefile
index ac47423..2973917 100644
--- a/main/Makefile
+++ b/main/Makefile
@@ -133,13 +133,10 @@
 ast_expr2f.c:
 endif
 	$(ECHO_PREFIX) echo "   [FLEX] $< -> $@"
-	$(CMD_PREFIX) $(FLEX) -o $@ ast_expr2.fl
-	$(CMD_PREFIX) sed 's@#if __STDC_VERSION__ >= 199901L@#if !defined __STDC_VERSION__ || __STDC_VERSION__ >= 199901L@' $@ > $@.fix
 	$(CMD_PREFIX) echo "#define ASTMM_LIBC ASTMM_REDIRECT" > $@
 	$(CMD_PREFIX) echo "#include \"asterisk.h\"" >> $@
 	$(CMD_PREFIX) echo >> $@
-	$(CMD_PREFIX) cat $@.fix >> $@
-	$(CMD_PREFIX) rm $@.fix
+	$(CMD_PREFIX) $(FLEX) -t ast_expr2.fl >> $@
 
 ifneq ($(findstring ENABLE_UPLOADS,$(MENUSELECT_CFLAGS)),)
 GMIMELDFLAGS+=$(GMIME_LIB)
diff --git a/main/ast_expr2.c b/main/ast_expr2.c
index 5b8f6e8..ac02037 100644
--- a/main/ast_expr2.c
+++ b/main/ast_expr2.c
@@ -2,20 +2,20 @@
 /* A Bison parser, made by GNU Bison 2.4.1.  */
 
 /* Skeleton implementation for Bison's Yacc-like parsers in C
-
+   
       Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
    Free Software Foundation, Inc.
-
+   
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.
-
+   
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.
-
+   
    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
@@ -28,7 +28,7 @@
    special exception, which will cause the skeleton and the resulting
    Bison output files to be licensed under the GNU General Public
    License without this special exception.
-
+   
    This special exception was added by the Free Software Foundation in
    version 2.2 of Bison.  */
 
@@ -413,7 +413,7 @@
 
 
 /* Line 189 of yacc.c  */
-#line 419 "ast_expr2.c"
+#line 417 "ast_expr2.c"
 
 /* Enabling traces.  */
 #ifndef YYDEBUG
@@ -473,7 +473,7 @@
 {
 
 /* Line 214 of yacc.c  */
-#line 345 "ast_expr2.y"
+#line 343 "ast_expr2.y"
 
 	struct val *val;
 	struct expr_node *arglist;
@@ -481,7 +481,7 @@
 
 
 /* Line 214 of yacc.c  */
-#line 487 "ast_expr2.c"
+#line 485 "ast_expr2.c"
 } YYSTYPE;
 # define YYSTYPE_IS_TRIVIAL 1
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
@@ -505,13 +505,13 @@
 /* Copy the second part of user declarations.  */
 
 /* Line 264 of yacc.c  */
-#line 350 "ast_expr2.y"
+#line 348 "ast_expr2.y"
 
 extern int		ast_yylex __P((YYSTYPE *, YYLTYPE *, yyscan_t));
 
 
 /* Line 264 of yacc.c  */
-#line 517 "ast_expr2.c"
+#line 515 "ast_expr2.c"
 
 #ifdef short
 # undef short
@@ -809,9 +809,9 @@
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
 static const yytype_uint16 yyrline[] =
 {
-       0,   374,   374,   382,   389,   390,   396,   405,   411,   412,
-     416,   420,   424,   428,   432,   436,   440,   444,   448,   452,
-     456,   460,   464,   468,   472,   476,   480,   484,   489
+       0,   372,   372,   380,   387,   388,   394,   403,   409,   410,
+     414,   418,   422,   426,   430,   434,   438,   442,   446,   450,
+     454,   458,   462,   466,   470,   474,   478,   482,   487
 };
 #endif
 
@@ -1226,7 +1226,7 @@
 # define YYMAXDEPTH 10000
 #endif
 
-
+
 
 #if YYERROR_VERBOSE
 
@@ -1437,7 +1437,7 @@
     }
 }
 #endif /* YYERROR_VERBOSE */
-
+
 
 /*-----------------------------------------------.
 | Release the memory associated to this symbol.  |
@@ -1469,209 +1469,209 @@
       case 4: /* "TOK_COLONCOLON" */
 
 /* Line 1000 of yacc.c  */
-#line 368 "ast_expr2.y"
+#line 366 "ast_expr2.y"
 	{  free_value((yyvaluep->val)); };
 
 /* Line 1000 of yacc.c  */
-#line 1479 "ast_expr2.c"
+#line 1477 "ast_expr2.c"
 	break;
       case 5: /* "TOK_COND" */
 
 /* Line 1000 of yacc.c  */
-#line 368 "ast_expr2.y"
+#line 366 "ast_expr2.y"
 	{  free_value((yyvaluep->val)); };
 
 /* Line 1000 of yacc.c  */
-#line 1488 "ast_expr2.c"
+#line 1486 "ast_expr2.c"
 	break;
       case 6: /* "TOK_OR" */
 
 /* Line 1000 of yacc.c  */
-#line 368 "ast_expr2.y"
+#line 366 "ast_expr2.y"
 	{  free_value((yyvaluep->val)); };
 
 /* Line 1000 of yacc.c  */
-#line 1497 "ast_expr2.c"
+#line 1495 "ast_expr2.c"
 	break;
       case 7: /* "TOK_AND" */
 
 /* Line 1000 of yacc.c  */
-#line 368 "ast_expr2.y"
+#line 366 "ast_expr2.y"
 	{  free_value((yyvaluep->val)); };
 
 /* Line 1000 of yacc.c  */
-#line 1506 "ast_expr2.c"
+#line 1504 "ast_expr2.c"
 	break;
       case 8: /* "TOK_NE" */
 
 /* Line 1000 of yacc.c  */
-#line 368 "ast_expr2.y"
+#line 366 "ast_expr2.y"
 	{  free_value((yyvaluep->val)); };
 
 /* Line 1000 of yacc.c  */
-#line 1515 "ast_expr2.c"
+#line 1513 "ast_expr2.c"
 	break;
       case 9: /* "TOK_LE" */
 
 /* Line 1000 of yacc.c  */
-#line 368 "ast_expr2.y"
+#line 366 "ast_expr2.y"
 	{  free_value((yyvaluep->val)); };
 
 /* Line 1000 of yacc.c  */
-#line 1524 "ast_expr2.c"
+#line 1522 "ast_expr2.c"
 	break;
       case 10: /* "TOK_GE" */
 
 /* Line 1000 of yacc.c  */
-#line 368 "ast_expr2.y"
+#line 366 "ast_expr2.y"
 	{  free_value((yyvaluep->val)); };
 
 /* Line 1000 of yacc.c  */
-#line 1533 "ast_expr2.c"
+#line 1531 "ast_expr2.c"
 	break;
       case 11: /* "TOK_LT" */
 
 /* Line 1000 of yacc.c  */
-#line 368 "ast_expr2.y"
+#line 366 "ast_expr2.y"
 	{  free_value((yyvaluep->val)); };
 
 /* Line 1000 of yacc.c  */
-#line 1542 "ast_expr2.c"
+#line 1540 "ast_expr2.c"
 	break;
       case 12: /* "TOK_GT" */
 
 /* Line 1000 of yacc.c  */
-#line 368 "ast_expr2.y"
+#line 366 "ast_expr2.y"
 	{  free_value((yyvaluep->val)); };
 
 /* Line 1000 of yacc.c  */
-#line 1551 "ast_expr2.c"
+#line 1549 "ast_expr2.c"
 	break;
       case 13: /* "TOK_EQ" */
 
 /* Line 1000 of yacc.c  */
-#line 368 "ast_expr2.y"
+#line 366 "ast_expr2.y"
 	{  free_value((yyvaluep->val)); };
 
 /* Line 1000 of yacc.c  */
-#line 1560 "ast_expr2.c"
+#line 1558 "ast_expr2.c"
 	break;
       case 14: /* "TOK_MINUS" */
 
 /* Line 1000 of yacc.c  */
-#line 368 "ast_expr2.y"
+#line 366 "ast_expr2.y"
 	{  free_value((yyvaluep->val)); };
 
 /* Line 1000 of yacc.c  */
-#line 1569 "ast_expr2.c"
+#line 1567 "ast_expr2.c"
 	break;
       case 15: /* "TOK_PLUS" */
 
 /* Line 1000 of yacc.c  */
-#line 368 "ast_expr2.y"
+#line 366 "ast_expr2.y"
 	{  free_value((yyvaluep->val)); };
 
 /* Line 1000 of yacc.c  */
-#line 1578 "ast_expr2.c"
+#line 1576 "ast_expr2.c"
 	break;
       case 16: /* "TOK_MOD" */
 
 /* Line 1000 of yacc.c  */
-#line 368 "ast_expr2.y"
+#line 366 "ast_expr2.y"
 	{  free_value((yyvaluep->val)); };
 
 /* Line 1000 of yacc.c  */
-#line 1587 "ast_expr2.c"
+#line 1585 "ast_expr2.c"
 	break;
       case 17: /* "TOK_DIV" */
 
 /* Line 1000 of yacc.c  */
-#line 368 "ast_expr2.y"
+#line 366 "ast_expr2.y"
 	{  free_value((yyvaluep->val)); };
 
 /* Line 1000 of yacc.c  */
-#line 1596 "ast_expr2.c"
+#line 1594 "ast_expr2.c"
 	break;
       case 18: /* "TOK_MULT" */
 
 /* Line 1000 of yacc.c  */
-#line 368 "ast_expr2.y"
+#line 366 "ast_expr2.y"
 	{  free_value((yyvaluep->val)); };
 
 /* Line 1000 of yacc.c  */
-#line 1605 "ast_expr2.c"
+#line 1603 "ast_expr2.c"
 	break;
       case 19: /* "TOK_COMPL" */
 
 /* Line 1000 of yacc.c  */
-#line 368 "ast_expr2.y"
+#line 366 "ast_expr2.y"
 	{  free_value((yyvaluep->val)); };
 
 /* Line 1000 of yacc.c  */
-#line 1614 "ast_expr2.c"
+#line 1612 "ast_expr2.c"
 	break;
       case 20: /* "TOK_TILDETILDE" */
 
 /* Line 1000 of yacc.c  */
-#line 368 "ast_expr2.y"
+#line 366 "ast_expr2.y"
 	{  free_value((yyvaluep->val)); };
 
 /* Line 1000 of yacc.c  */
-#line 1623 "ast_expr2.c"
+#line 1621 "ast_expr2.c"
 	break;
       case 21: /* "TOK_EQTILDE" */
 
 /* Line 1000 of yacc.c  */
-#line 368 "ast_expr2.y"
+#line 366 "ast_expr2.y"
 	{  free_value((yyvaluep->val)); };
 
 /* Line 1000 of yacc.c  */
-#line 1632 "ast_expr2.c"
+#line 1630 "ast_expr2.c"
 	break;
       case 22: /* "TOK_COLON" */
 
 /* Line 1000 of yacc.c  */
-#line 368 "ast_expr2.y"
+#line 366 "ast_expr2.y"
 	{  free_value((yyvaluep->val)); };
 
 /* Line 1000 of yacc.c  */
-#line 1641 "ast_expr2.c"
+#line 1639 "ast_expr2.c"
 	break;
       case 23: /* "TOK_LP" */
 
 /* Line 1000 of yacc.c  */
-#line 368 "ast_expr2.y"
+#line 366 "ast_expr2.y"
 	{  free_value((yyvaluep->val)); };
 
 /* Line 1000 of yacc.c  */
-#line 1650 "ast_expr2.c"
+#line 1648 "ast_expr2.c"
 	break;
       case 24: /* "TOK_RP" */
 
 /* Line 1000 of yacc.c  */
-#line 368 "ast_expr2.y"
+#line 366 "ast_expr2.y"
 	{  free_value((yyvaluep->val)); };
 
 /* Line 1000 of yacc.c  */
-#line 1659 "ast_expr2.c"
+#line 1657 "ast_expr2.c"
 	break;
       case 25: /* "TOKEN" */
 
 /* Line 1000 of yacc.c  */
-#line 368 "ast_expr2.y"
+#line 366 "ast_expr2.y"
 	{  free_value((yyvaluep->val)); };
 
 /* Line 1000 of yacc.c  */
-#line 1668 "ast_expr2.c"
+#line 1666 "ast_expr2.c"
 	break;
       case 29: /* "expr" */
 
 /* Line 1000 of yacc.c  */
-#line 368 "ast_expr2.y"
+#line 366 "ast_expr2.y"
 	{  free_value((yyvaluep->val)); };
 
 /* Line 1000 of yacc.c  */
-#line 1677 "ast_expr2.c"
+#line 1675 "ast_expr2.c"
 	break;
 
       default:
@@ -2002,7 +2002,7 @@
         case 2:
 
 /* Line 1455 of yacc.c  */
-#line 374 "ast_expr2.y"
+#line 372 "ast_expr2.y"
     { ((struct parse_io *)parseio)->val = (struct val *)calloc(sizeof(struct val),1);
               ((struct parse_io *)parseio)->val->type = (yyvsp[(1) - (1)].val)->type;
               if( (yyvsp[(1) - (1)].val)->type == AST_EXPR_number )
@@ -2016,7 +2016,7 @@
   case 3:
 
 /* Line 1455 of yacc.c  */
-#line 382 "ast_expr2.y"
+#line 380 "ast_expr2.y"
     {/* nothing */ ((struct parse_io *)parseio)->val = (struct val *)calloc(sizeof(struct val),1);
               ((struct parse_io *)parseio)->val->type = AST_EXPR_string;
 			  ((struct parse_io *)parseio)->val->u.s = strdup("");
@@ -2026,14 +2026,14 @@
   case 4:
 
 /* Line 1455 of yacc.c  */
-#line 389 "ast_expr2.y"
+#line 387 "ast_expr2.y"
     { (yyval.arglist) = alloc_expr_node(AST_EXPR_NODE_VAL); (yyval.arglist)->val = (yyvsp[(1) - (1)].val);;}
     break;
 
   case 5:
 
 /* Line 1455 of yacc.c  */
-#line 390 "ast_expr2.y"
+#line 388 "ast_expr2.y"
     {struct expr_node *x = alloc_expr_node(AST_EXPR_NODE_VAL);
                                  struct expr_node *t;
 								 DESTROY((yyvsp[(2) - (3)].val));
@@ -2045,7 +2045,7 @@
   case 6:
 
 /* Line 1455 of yacc.c  */
-#line 396 "ast_expr2.y"
+#line 394 "ast_expr2.y"
     {struct expr_node *x = alloc_expr_node(AST_EXPR_NODE_VAL);
                                  struct expr_node *t;  /* NULL args should OK */
 								 DESTROY((yyvsp[(2) - (2)].val));
@@ -2057,7 +2057,7 @@
   case 7:
 
 /* Line 1455 of yacc.c  */
-#line 405 "ast_expr2.y"
+#line 403 "ast_expr2.y"
     { (yyval.val) = op_func((yyvsp[(1) - (4)].val),(yyvsp[(3) - (4)].arglist), ((struct parse_io *)parseio)->chan);
 		                            DESTROY((yyvsp[(2) - (4)].val));
 									DESTROY((yyvsp[(4) - (4)].val));
@@ -2069,14 +2069,14 @@
   case 8:
 
 /* Line 1455 of yacc.c  */
-#line 411 "ast_expr2.y"
+#line 409 "ast_expr2.y"
     {(yyval.val) = (yyvsp[(1) - (1)].val);;}
     break;
 
   case 9:
 
 /* Line 1455 of yacc.c  */
-#line 412 "ast_expr2.y"
+#line 410 "ast_expr2.y"
     { (yyval.val) = (yyvsp[(2) - (3)].val);
 	                       (yyloc).first_column = (yylsp[(1) - (3)]).first_column; (yyloc).last_column = (yylsp[(3) - (3)]).last_column;
 						   (yyloc).first_line=0; (yyloc).last_line=0;
@@ -2086,7 +2086,7 @@
   case 10:
 
 /* Line 1455 of yacc.c  */
-#line 416 "ast_expr2.y"
+#line 414 "ast_expr2.y"
     { (yyval.val) = op_or ((yyvsp[(1) - (3)].val), (yyvsp[(3) - (3)].val));
 						DESTROY((yyvsp[(2) - (3)].val));
                          (yyloc).first_column = (yylsp[(1) - (3)]).first_column; (yyloc).last_column = (yylsp[(3) - (3)]).last_column;
@@ -2096,7 +2096,7 @@
   case 11:
 
 /* Line 1455 of yacc.c  */
-#line 420 "ast_expr2.y"
+#line 418 "ast_expr2.y"
     { (yyval.val) = op_and ((yyvsp[(1) - (3)].val), (yyvsp[(3) - (3)].val));
 						DESTROY((yyvsp[(2) - (3)].val));
 	                      (yyloc).first_column = (yylsp[(1) - (3)]).first_column; (yyloc).last_column = (yylsp[(3) - (3)]).last_column;
@@ -2106,7 +2106,7 @@
   case 12:
 
 /* Line 1455 of yacc.c  */
-#line 424 "ast_expr2.y"
+#line 422 "ast_expr2.y"
     { (yyval.val) = op_eq ((yyvsp[(1) - (3)].val), (yyvsp[(3) - (3)].val));
 						DESTROY((yyvsp[(2) - (3)].val));
 	                     (yyloc).first_column = (yylsp[(1) - (3)]).first_column; (yyloc).last_column = (yylsp[(3) - (3)]).last_column;
@@ -2116,7 +2116,7 @@
   case 13:
 
 /* Line 1455 of yacc.c  */
-#line 428 "ast_expr2.y"
+#line 426 "ast_expr2.y"
     { (yyval.val) = op_gt ((yyvsp[(1) - (3)].val), (yyvsp[(3) - (3)].val));
 						DESTROY((yyvsp[(2) - (3)].val));
                          (yyloc).first_column = (yylsp[(1) - (3)]).first_column; (yyloc).last_column = (yylsp[(3) - (3)]).last_column;
@@ -2126,7 +2126,7 @@
   case 14:
 
 /* Line 1455 of yacc.c  */
-#line 432 "ast_expr2.y"
+#line 430 "ast_expr2.y"
     { (yyval.val) = op_lt ((yyvsp[(1) - (3)].val), (yyvsp[(3) - (3)].val));
 						DESTROY((yyvsp[(2) - (3)].val));
 	                     (yyloc).first_column = (yylsp[(1) - (3)]).first_column; (yyloc).last_column = (yylsp[(3) - (3)]).last_column;
@@ -2136,7 +2136,7 @@
   case 15:
 
 /* Line 1455 of yacc.c  */
-#line 436 "ast_expr2.y"
+#line 434 "ast_expr2.y"
     { (yyval.val) = op_ge ((yyvsp[(1) - (3)].val), (yyvsp[(3) - (3)].val));
 						DESTROY((yyvsp[(2) - (3)].val));
 	                      (yyloc).first_column = (yylsp[(1) - (3)]).first_column; (yyloc).last_column = (yylsp[(3) - (3)]).last_column;
@@ -2146,7 +2146,7 @@
   case 16:
 
 /* Line 1455 of yacc.c  */
-#line 440 "ast_expr2.y"
+#line 438 "ast_expr2.y"
     { (yyval.val) = op_le ((yyvsp[(1) - (3)].val), (yyvsp[(3) - (3)].val));
 						DESTROY((yyvsp[(2) - (3)].val));
 	                      (yyloc).first_column = (yylsp[(1) - (3)]).first_column; (yyloc).last_column = (yylsp[(3) - (3)]).last_column;
@@ -2156,7 +2156,7 @@
   case 17:
 
 /* Line 1455 of yacc.c  */
-#line 444 "ast_expr2.y"
+#line 442 "ast_expr2.y"
     { (yyval.val) = op_ne ((yyvsp[(1) - (3)].val), (yyvsp[(3) - (3)].val));
 						DESTROY((yyvsp[(2) - (3)].val));
 	                      (yyloc).first_column = (yylsp[(1) - (3)]).first_column; (yyloc).last_column = (yylsp[(3) - (3)]).last_column;
@@ -2166,7 +2166,7 @@
   case 18:
 
 /* Line 1455 of yacc.c  */
-#line 448 "ast_expr2.y"
+#line 446 "ast_expr2.y"
     { (yyval.val) = op_plus ((yyvsp[(1) - (3)].val), (yyvsp[(3) - (3)].val));
 						DESTROY((yyvsp[(2) - (3)].val));
 	                       (yyloc).first_column = (yylsp[(1) - (3)]).first_column; (yyloc).last_column = (yylsp[(3) - (3)]).last_column;
@@ -2176,7 +2176,7 @@
   case 19:
 
 /* Line 1455 of yacc.c  */
-#line 452 "ast_expr2.y"
+#line 450 "ast_expr2.y"
     { (yyval.val) = op_minus ((yyvsp[(1) - (3)].val), (yyvsp[(3) - (3)].val));
 						DESTROY((yyvsp[(2) - (3)].val));
 	                        (yyloc).first_column = (yylsp[(1) - (3)]).first_column; (yyloc).last_column = (yylsp[(3) - (3)]).last_column;
@@ -2186,7 +2186,7 @@
   case 20:
 
 /* Line 1455 of yacc.c  */
-#line 456 "ast_expr2.y"
+#line 454 "ast_expr2.y"
     { (yyval.val) = op_negate ((yyvsp[(2) - (2)].val));
 						DESTROY((yyvsp[(1) - (2)].val));
 	                        (yyloc).first_column = (yylsp[(1) - (2)]).first_column; (yyloc).last_column = (yylsp[(2) - (2)]).last_column;
@@ -2196,7 +2196,7 @@
   case 21:
 
 /* Line 1455 of yacc.c  */
-#line 460 "ast_expr2.y"
+#line 458 "ast_expr2.y"
     { (yyval.val) = op_compl ((yyvsp[(2) - (2)].val));
 						DESTROY((yyvsp[(1) - (2)].val));
 	                        (yyloc).first_column = (yylsp[(1) - (2)]).first_column; (yyloc).last_column = (yylsp[(2) - (2)]).last_column;
@@ -2206,7 +2206,7 @@
   case 22:
 
 /* Line 1455 of yacc.c  */
-#line 464 "ast_expr2.y"
+#line 462 "ast_expr2.y"
     { (yyval.val) = op_times ((yyvsp[(1) - (3)].val), (yyvsp[(3) - (3)].val));
 						DESTROY((yyvsp[(2) - (3)].val));
 	                       (yyloc).first_column = (yylsp[(1) - (3)]).first_column; (yyloc).last_column = (yylsp[(3) - (3)]).last_column;
@@ -2216,7 +2216,7 @@
   case 23:
 
 /* Line 1455 of yacc.c  */
-#line 468 "ast_expr2.y"
+#line 466 "ast_expr2.y"
     { (yyval.val) = op_div ((yyvsp[(1) - (3)].val), (yyvsp[(3) - (3)].val));
 						DESTROY((yyvsp[(2) - (3)].val));
 	                      (yyloc).first_column = (yylsp[(1) - (3)]).first_column; (yyloc).last_column = (yylsp[(3) - (3)]).last_column;
@@ -2226,7 +2226,7 @@
   case 24:
 
 /* Line 1455 of yacc.c  */
-#line 472 "ast_expr2.y"
+#line 470 "ast_expr2.y"
     { (yyval.val) = op_rem ((yyvsp[(1) - (3)].val), (yyvsp[(3) - (3)].val));
 						DESTROY((yyvsp[(2) - (3)].val));
 	                      (yyloc).first_column = (yylsp[(1) - (3)]).first_column; (yyloc).last_column = (yylsp[(3) - (3)]).last_column;
@@ -2236,7 +2236,7 @@
   case 25:
 
 /* Line 1455 of yacc.c  */
-#line 476 "ast_expr2.y"
+#line 474 "ast_expr2.y"
     { (yyval.val) = op_colon ((yyvsp[(1) - (3)].val), (yyvsp[(3) - (3)].val));
 						DESTROY((yyvsp[(2) - (3)].val));
 	                        (yyloc).first_column = (yylsp[(1) - (3)]).first_column; (yyloc).last_column = (yylsp[(3) - (3)]).last_column;
@@ -2246,7 +2246,7 @@
   case 26:
 
 /* Line 1455 of yacc.c  */
-#line 480 "ast_expr2.y"
+#line 478 "ast_expr2.y"
     { (yyval.val) = op_eqtilde ((yyvsp[(1) - (3)].val), (yyvsp[(3) - (3)].val));
 						DESTROY((yyvsp[(2) - (3)].val));
 	                        (yyloc).first_column = (yylsp[(1) - (3)]).first_column; (yyloc).last_column = (yylsp[(3) - (3)]).last_column;
@@ -2256,7 +2256,7 @@
   case 27:
 
 /* Line 1455 of yacc.c  */
-#line 484 "ast_expr2.y"
+#line 482 "ast_expr2.y"
     { (yyval.val) = op_cond ((yyvsp[(1) - (5)].val), (yyvsp[(3) - (5)].val), (yyvsp[(5) - (5)].val));
 						DESTROY((yyvsp[(2) - (5)].val));
 						DESTROY((yyvsp[(4) - (5)].val));
@@ -2267,7 +2267,7 @@
   case 28:
 
 /* Line 1455 of yacc.c  */
-#line 489 "ast_expr2.y"
+#line 487 "ast_expr2.y"
     { (yyval.val) = op_tildetilde ((yyvsp[(1) - (3)].val), (yyvsp[(3) - (3)].val));
 						DESTROY((yyvsp[(2) - (3)].val));
 	                        (yyloc).first_column = (yylsp[(1) - (3)]).first_column; (yyloc).last_column = (yylsp[(3) - (3)]).last_column;
@@ -2277,7 +2277,7 @@
 
 
 /* Line 1455 of yacc.c  */
-#line 2283 "ast_expr2.c"
+#line 2281 "ast_expr2.c"
       default: break;
     }
   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
@@ -2496,7 +2496,7 @@
 
 
 /* Line 1675 of yacc.c  */
-#line 495 "ast_expr2.y"
+#line 493 "ast_expr2.y"
 
 
 static struct expr_node *alloc_expr_node(enum node_type nt)
@@ -3685,3 +3685,4 @@
 
 	return v;
 }
+
diff --git a/main/ast_expr2.h b/main/ast_expr2.h
index 6282834..0b0ae69 100644
--- a/main/ast_expr2.h
+++ b/main/ast_expr2.h
@@ -2,20 +2,20 @@
 /* A Bison parser, made by GNU Bison 2.4.1.  */
 
 /* Skeleton interface for Bison's Yacc-like parsers in C
-
+   
       Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
    Free Software Foundation, Inc.
-
+   
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.
-
+   
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.
-
+   
    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
@@ -28,7 +28,7 @@
    special exception, which will cause the skeleton and the resulting
    Bison output files to be licensed under the GNU General Public
    License without this special exception.
-
+   
    This special exception was added by the Free Software Foundation in
    version 2.2 of Bison.  */
 
@@ -72,7 +72,7 @@
 {
 
 /* Line 1676 of yacc.c  */
-#line 345 "ast_expr2.y"
+#line 343 "ast_expr2.y"
 
 	struct val *val;
 	struct expr_node *arglist;
@@ -101,3 +101,6 @@
 # define YYLTYPE_IS_DECLARED 1
 # define YYLTYPE_IS_TRIVIAL 1
 #endif
+
+
+
diff --git a/main/ast_expr2f.c b/main/ast_expr2f.c
index 49e2545..9819eb7 100644
--- a/main/ast_expr2f.c
+++ b/main/ast_expr2f.c
@@ -37,7 +37,7 @@
 #if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
 
 /* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
- * if you want the limit (max/min) macros for int types.
+ * if you want the limit (max/min) macros for int types. 
  */
 #ifndef __STDC_LIMIT_MACROS
 #define __STDC_LIMIT_MACROS 1
@@ -54,9 +54,10 @@
 typedef signed char flex_int8_t;
 typedef short int flex_int16_t;
 typedef int flex_int32_t;
-typedef unsigned char flex_uint8_t;
+typedef unsigned char flex_uint8_t; 
 typedef unsigned short int flex_uint16_t;
 typedef unsigned int flex_uint32_t;
+#endif /* ! C99 */
 
 /* Limits of integral types. */
 #ifndef INT8_MIN
@@ -87,8 +88,6 @@
 #define UINT32_MAX             (4294967295U)
 #endif
 
-#endif /* ! C99 */
-
 #endif /* ! FLEXINT_H */
 
 #ifdef __cplusplus
@@ -162,15 +161,7 @@
 
 /* Size of default input buffer. */
 #ifndef YY_BUF_SIZE
-#ifdef __ia64__
-/* On IA-64, the buffer size is 16k, not 8k.
- * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case.
- * Ditto for the __ia64__ case accordingly.
- */
-#define YY_BUF_SIZE 32768
-#else
 #define YY_BUF_SIZE 16384
-#endif /* __ia64__ */
 #endif
 
 /* The state buf must be large enough to hold one state per character in the main buffer.
@@ -187,7 +178,7 @@
 #define EOB_ACT_LAST_MATCH 2
 
     #define YY_LESS_LINENO(n)
-
+    
 /* Return all but the first "n" matched characters back to the input stream. */
 #define yyless(n) \
 	do \
@@ -249,7 +240,7 @@
 
     int yy_bs_lineno; /**< The line count. */
     int yy_bs_column; /**< The column count. */
-
+    
 	/* Whether to try to fill the input buffer when we reach the
 	 * end of it.
 	 */
@@ -602,13 +593,13 @@
 	yyscan_t scanner;
 	struct ast_channel *chan;
 };
-
+ 
 void ast_yyset_column(int column_no, yyscan_t yyscanner);
 int ast_yyget_column(yyscan_t yyscanner);
 static int curlycount = 0;
 static char *expr2_token_subst(const char *mess);
 
-#line 611 "ast_expr2f.c"
+#line 600 "ast_expr2f.c"
 
 #define INITIAL 0
 #define var 1
@@ -669,9 +660,9 @@
     /* This must go here because YYSTYPE and YYLTYPE are included
      * from bison output in section 1.*/
     #    define yylval yyg->yylval_r
-
+    
     #    define yylloc yyg->yylloc_r
-
+    
 int ast_yylex_init (yyscan_t* scanner);
 
 int ast_yylex_init_extra (YY_EXTRA_TYPE user_defined,yyscan_t* scanner);
@@ -710,9 +701,9 @@
 void ast_yyset_lval (YYSTYPE * yylval_param ,yyscan_t yyscanner );
 
        YYLTYPE *ast_yyget_lloc (yyscan_t yyscanner );
-
+    
         void ast_yyset_lloc (YYLTYPE * yylloc_param ,yyscan_t yyscanner );
-
+    
 /* Macros after this point can all be overridden by user definitions in
  * section 1.
  */
@@ -726,7 +717,7 @@
 #endif
 
     static void yyunput (int c,char *buf_ptr  ,yyscan_t yyscanner);
-
+    
 #ifndef yytext_ptr
 static void yy_flex_strncpy (char *,yyconst char *,int ,yyscan_t yyscanner);
 #endif
@@ -747,12 +738,7 @@
 
 /* Amount of stuff to slurp up with each read. */
 #ifndef YY_READ_BUF_SIZE
-#ifdef __ia64__
-/* On IA-64, the buffer size is 16k, not 8k */
-#define YY_READ_BUF_SIZE 16384
-#else
 #define YY_READ_BUF_SIZE 8192
-#endif /* __ia64__ */
 #endif
 
 /* Copy whatever the last rule matched to the standard output. */
@@ -760,7 +746,7 @@
 /* This used to be an fputs(), but since the string might contain NUL's,
  * we now use fwrite().
  */
-#define ECHO do { if (fwrite( yytext, yyleng, 1, yyout )) {} } while (0)
+#define ECHO fwrite( yytext, yyleng, 1, yyout )
 #endif
 
 /* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
@@ -771,7 +757,7 @@
 	if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
 		{ \
 		int c = '*'; \
-		size_t n; \
+		int n; \
 		for ( n = 0; n < max_size && \
 			     (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
 			buf[n] = (char) c; \
@@ -856,10 +842,10 @@
 	register int yy_act;
     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
 
-#line 130 "ast_expr2.fl"
+#line 128 "ast_expr2.fl"
 
 
-#line 862 "ast_expr2f.c"
+#line 846 "ast_expr2f.c"
 
     yylval = yylval_param;
 
@@ -950,132 +936,132 @@
 
 case 1:
 YY_RULE_SETUP
-#line 132 "ast_expr2.fl"
+#line 130 "ast_expr2.fl"
 { SET_COLUMNS; SET_STRING; return TOK_OR;}
 	YY_BREAK
 case 2:
 YY_RULE_SETUP
-#line 133 "ast_expr2.fl"
+#line 131 "ast_expr2.fl"
 { SET_COLUMNS; SET_STRING; return TOK_AND;}
 	YY_BREAK
 case 3:
 YY_RULE_SETUP
-#line 134 "ast_expr2.fl"
+#line 132 "ast_expr2.fl"
 { SET_COLUMNS; SET_STRING; return TOK_EQ;}
 	YY_BREAK
 case 4:
 YY_RULE_SETUP
-#line 135 "ast_expr2.fl"
+#line 133 "ast_expr2.fl"
 { SET_COLUMNS; SET_STRING; return TOK_OR;}
 	YY_BREAK
 case 5:
 YY_RULE_SETUP
-#line 136 "ast_expr2.fl"
+#line 134 "ast_expr2.fl"
 { SET_COLUMNS; SET_STRING; return TOK_AND;}
 	YY_BREAK
 case 6:
 YY_RULE_SETUP
-#line 137 "ast_expr2.fl"
+#line 135 "ast_expr2.fl"
 { SET_COLUMNS; SET_STRING; return TOK_EQ;}
 	YY_BREAK
 case 7:
 YY_RULE_SETUP
-#line 138 "ast_expr2.fl"
+#line 136 "ast_expr2.fl"
 { SET_COLUMNS; SET_STRING; return TOK_EQTILDE;}
 	YY_BREAK
 case 8:
 YY_RULE_SETUP
-#line 139 "ast_expr2.fl"
+#line 137 "ast_expr2.fl"
 { SET_COLUMNS; SET_STRING; return TOK_TILDETILDE;}
 	YY_BREAK
 case 9:
 YY_RULE_SETUP
-#line 140 "ast_expr2.fl"
+#line 138 "ast_expr2.fl"
 { SET_COLUMNS; SET_STRING; return TOK_GT;}
 	YY_BREAK
 case 10:
 YY_RULE_SETUP
-#line 141 "ast_expr2.fl"
+#line 139 "ast_expr2.fl"
 { SET_COLUMNS; SET_STRING; return TOK_LT;}
 	YY_BREAK
 case 11:
 YY_RULE_SETUP
-#line 142 "ast_expr2.fl"
+#line 140 "ast_expr2.fl"
 { SET_COLUMNS; SET_STRING; return TOK_GE;}
 	YY_BREAK
 case 12:
 YY_RULE_SETUP
-#line 143 "ast_expr2.fl"
+#line 141 "ast_expr2.fl"
 { SET_COLUMNS; SET_STRING; return TOK_LE;}
 	YY_BREAK
 case 13:
 YY_RULE_SETUP
-#line 144 "ast_expr2.fl"
+#line 142 "ast_expr2.fl"
 { SET_COLUMNS; SET_STRING; return TOK_NE;}
 	YY_BREAK
 case 14:
 YY_RULE_SETUP
-#line 145 "ast_expr2.fl"
+#line 143 "ast_expr2.fl"
 { SET_COLUMNS; SET_STRING; return TOK_PLUS;}
 	YY_BREAK
 case 15:
 YY_RULE_SETUP
-#line 146 "ast_expr2.fl"
+#line 144 "ast_expr2.fl"
 { SET_COLUMNS; SET_STRING; return TOK_COMMA;}
 	YY_BREAK
 case 16:
 YY_RULE_SETUP
-#line 147 "ast_expr2.fl"
+#line 145 "ast_expr2.fl"
 { SET_COLUMNS; SET_STRING; return TOK_MINUS;}
 	YY_BREAK
 case 17:
 YY_RULE_SETUP
-#line 148 "ast_expr2.fl"
+#line 146 "ast_expr2.fl"
 { SET_COLUMNS; SET_STRING; return TOK_MULT;}
 	YY_BREAK
 case 18:
 YY_RULE_SETUP
-#line 149 "ast_expr2.fl"
+#line 147 "ast_expr2.fl"
 { SET_COLUMNS; SET_STRING; return TOK_DIV;}
 	YY_BREAK
 case 19:
 YY_RULE_SETUP
-#line 150 "ast_expr2.fl"
+#line 148 "ast_expr2.fl"
 { SET_COLUMNS; SET_STRING; return TOK_MOD;}
 	YY_BREAK
 case 20:
 YY_RULE_SETUP
-#line 151 "ast_expr2.fl"
+#line 149 "ast_expr2.fl"
 { SET_COLUMNS; SET_STRING; return TOK_COND;}
 	YY_BREAK
 case 21:
 YY_RULE_SETUP
-#line 152 "ast_expr2.fl"
+#line 150 "ast_expr2.fl"
 { SET_COLUMNS; SET_STRING; return TOK_COMPL;}
 	YY_BREAK
 case 22:
 YY_RULE_SETUP
-#line 153 "ast_expr2.fl"
+#line 151 "ast_expr2.fl"
 { SET_COLUMNS; SET_STRING; return TOK_COLON;}
 	YY_BREAK
 case 23:
 YY_RULE_SETUP
-#line 154 "ast_expr2.fl"
+#line 152 "ast_expr2.fl"
 { SET_COLUMNS; SET_STRING; return TOK_COLONCOLON;}
 	YY_BREAK
 case 24:
 YY_RULE_SETUP
-#line 155 "ast_expr2.fl"
+#line 153 "ast_expr2.fl"
 { SET_COLUMNS; SET_STRING; return TOK_LP;}
 	YY_BREAK
 case 25:
 YY_RULE_SETUP
-#line 156 "ast_expr2.fl"
+#line 154 "ast_expr2.fl"
 { SET_COLUMNS; SET_STRING; return TOK_RP;}
 	YY_BREAK
 case 26:
 YY_RULE_SETUP
-#line 157 "ast_expr2.fl"
+#line 155 "ast_expr2.fl"
 {
 		/* gather the contents of ${} expressions, with trailing stuff,
 		 * into a single TOKEN.
@@ -1088,24 +1074,24 @@
 	YY_BREAK
 case 27:
 YY_RULE_SETUP
-#line 167 "ast_expr2.fl"
+#line 165 "ast_expr2.fl"
 {}
 	YY_BREAK
 case 28:
 /* rule 28 can match eol */
 YY_RULE_SETUP
-#line 168 "ast_expr2.fl"
+#line 166 "ast_expr2.fl"
 {SET_COLUMNS; SET_STRING; return TOKEN;}
 	YY_BREAK
 case 29:
 /* rule 29 can match eol */
 YY_RULE_SETUP
-#line 170 "ast_expr2.fl"
+#line 168 "ast_expr2.fl"
 {/* what to do with eol */}
 	YY_BREAK
 case 30:
 YY_RULE_SETUP
-#line 171 "ast_expr2.fl"
+#line 169 "ast_expr2.fl"
 {
 		SET_COLUMNS;
 		/* the original behavior of the expression parser was
@@ -1118,7 +1104,7 @@
 case 31:
 /* rule 31 can match eol */
 YY_RULE_SETUP
-#line 180 "ast_expr2.fl"
+#line 178 "ast_expr2.fl"
 {
 		SET_COLUMNS;
 		SET_STRING;
@@ -1128,7 +1114,7 @@
 case 32:
 /* rule 32 can match eol */
 YY_RULE_SETUP
-#line 186 "ast_expr2.fl"
+#line 184 "ast_expr2.fl"
 {
 		curlycount = 0;
 		BEGIN(var);
@@ -1138,7 +1124,7 @@
 case 33:
 /* rule 33 can match eol */
 YY_RULE_SETUP
-#line 192 "ast_expr2.fl"
+#line 190 "ast_expr2.fl"
 {
 		curlycount--;
 		if (curlycount < 0) {
@@ -1152,7 +1138,7 @@
 case 34:
 /* rule 34 can match eol */
 YY_RULE_SETUP
-#line 202 "ast_expr2.fl"
+#line 200 "ast_expr2.fl"
 {
 		curlycount++;
 		yymore();
@@ -1160,7 +1146,7 @@
 	YY_BREAK
 case 35:
 YY_RULE_SETUP
-#line 208 "ast_expr2.fl"
+#line 206 "ast_expr2.fl"
 {
 		BEGIN(0);
 		SET_COLUMNS;
@@ -1170,7 +1156,7 @@
 	YY_BREAK
 case 36:
 YY_RULE_SETUP
-#line 215 "ast_expr2.fl"
+#line 213 "ast_expr2.fl"
 {
 		curlycount = 0;
 		BEGIN(var);
@@ -1180,7 +1166,7 @@
 case 37:
 /* rule 37 can match eol */
 YY_RULE_SETUP
-#line 221 "ast_expr2.fl"
+#line 219 "ast_expr2.fl"
 {
 		char c = yytext[yyleng-1];
 		BEGIN(0);
@@ -1191,7 +1177,7 @@
 	}
 	YY_BREAK
 case YY_STATE_EOF(trail):
-#line 230 "ast_expr2.fl"
+#line 228 "ast_expr2.fl"
 {
 		BEGIN(0);
 		SET_COLUMNS;
@@ -1202,10 +1188,10 @@
 	YY_BREAK
 case 38:
 YY_RULE_SETUP
-#line 238 "ast_expr2.fl"
+#line 236 "ast_expr2.fl"
 ECHO;
 	YY_BREAK
-#line 1208 "ast_expr2f.c"
+#line 1192 "ast_expr2f.c"
 case YY_STATE_EOF(INITIAL):
 case YY_STATE_EOF(var):
 	yyterminate();
@@ -1725,7 +1711,7 @@
     YY_BUFFER_STATE ast_yy_create_buffer  (FILE * file, int  size , yyscan_t yyscanner)
 {
 	YY_BUFFER_STATE b;
-
+    
 	b = (YY_BUFFER_STATE) ast_yyalloc(sizeof( struct yy_buffer_state ) ,yyscanner );
 	if ( ! b )
 		YY_FATAL_ERROR( "out of dynamic memory in ast_yy_create_buffer()" );
@@ -1769,7 +1755,7 @@
 #ifndef __cplusplus
 extern int isatty (int );
 #endif /* __cplusplus */
-
+    
 /* Initializes or reinitializes a buffer.
  * This function is sometimes called more than once on the same buffer,
  * such as during a ast_yyrestart() or at EOF.
@@ -1795,7 +1781,7 @@
     }
 
         b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
-
+    
 	errno = oerrno;
 }
 
@@ -1901,9 +1887,9 @@
 								, yyscanner);
 		if ( ! yyg->yy_buffer_stack )
 			YY_FATAL_ERROR( "out of dynamic memory in ast_yyensure_buffer_stack()" );
-
+								  
 		memset(yyg->yy_buffer_stack, 0, num_to_alloc * sizeof(struct yy_buffer_state*));
-
+				
 		yyg->yy_buffer_stack_max = num_to_alloc;
 		yyg->yy_buffer_stack_top = 0;
 		return;
@@ -1932,12 +1918,12 @@
  * @param base the character buffer
  * @param size the size in bytes of the character buffer
  * @param yyscanner The scanner object.
- * @return the newly allocated buffer state object.
+ * @return the newly allocated buffer state object. 
  */
 YY_BUFFER_STATE ast_yy_scan_buffer  (char * base, yy_size_t  size , yyscan_t yyscanner)
 {
 	YY_BUFFER_STATE b;
-
+    
 	if ( size < 2 ||
 	     base[size-2] != YY_END_OF_BUFFER_CHAR ||
 	     base[size-1] != YY_END_OF_BUFFER_CHAR )
@@ -1973,14 +1959,14 @@
  */
 YY_BUFFER_STATE ast_yy_scan_string (yyconst char * yystr , yyscan_t yyscanner)
 {
-
+    
 	return ast_yy_scan_bytes(yystr,strlen(yystr) ,yyscanner);
 }
 
 /** Setup the input buffer state to scan the given bytes. The next call to ast_yylex() will
  * scan from a @e copy of @a bytes.
- * @param yybytes the byte buffer to scan
- * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes.
+ * @param bytes the byte buffer to scan
+ * @param len the number of bytes in the buffer pointed to by @a bytes.
  * @param yyscanner The scanner object.
  * @return the newly allocated buffer state object.
  */
@@ -1990,7 +1976,7 @@
 	char *buf;
 	yy_size_t n;
 	int i;
-
+    
 	/* Get memory for full buffer, including space for trailing EOB's. */
 	n = _yybytes_len + 2;
 	buf = (char *) ast_yyalloc(n ,yyscanner );
@@ -2058,10 +2044,10 @@
 int ast_yyget_lineno  (yyscan_t yyscanner)
 {
     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
-
+    
         if (! YY_CURRENT_BUFFER)
             return 0;
-
+    
     return yylineno;
 }
 
@@ -2071,10 +2057,10 @@
 int ast_yyget_column  (yyscan_t yyscanner)
 {
     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
-
+    
         if (! YY_CURRENT_BUFFER)
             return 0;
-
+    
     return yycolumn;
 }
 
@@ -2135,14 +2121,14 @@
 
         /* lineno is only valid if an input buffer exists. */
         if (! YY_CURRENT_BUFFER )
-           yy_fatal_error( "ast_yyset_lineno called with no buffer" , yyscanner);
-
+           yy_fatal_error( "ast_yyset_lineno called with no buffer" , yyscanner); 
+    
     yylineno = line_number;
 }
 
 /** Set the current column.
- * \param column_no line_number
- * \param yyscanner The scanner object.
+ * @param line_number
+ * @param yyscanner The scanner object.
  */
 void ast_yyset_column (int  column_no , yyscan_t yyscanner)
 {
@@ -2150,8 +2136,8 @@
 
         /* column is only valid if an input buffer exists. */
         if (! YY_CURRENT_BUFFER )
-           yy_fatal_error( "ast_yyset_column called with no buffer" , yyscanner);
-
+           yy_fatal_error( "ast_yyset_column called with no buffer" , yyscanner); 
+    
     yycolumn = column_no;
 }
 
@@ -2204,13 +2190,13 @@
     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
     return yylloc;
 }
-
+    
 void ast_yyset_lloc (YYLTYPE *  yylloc_param , yyscan_t yyscanner)
 {
     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
     yylloc = yylloc_param;
 }
-
+    
 /* User-visible API */
 
 /* ast_yylex_init is special because it creates the scanner itself, so it is
@@ -2258,20 +2244,20 @@
         errno = EINVAL;
         return 1;
     }
-
+	
     *ptr_yy_globals = (yyscan_t) ast_yyalloc ( sizeof( struct yyguts_t ), &dummy_yyguts );
-
+	
     if (*ptr_yy_globals == NULL){
         errno = ENOMEM;
         return 1;
     }
-
+    
     /* By setting to 0xAA, we expose bugs in
     yy_init_globals. Leave at 0x00 for releases. */
     memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t));
-
+    
     ast_yyset_extra (yy_user_defined, *ptr_yy_globals);
-
+    
     return yy_init_globals ( *ptr_yy_globals );
 }
 
@@ -2381,7 +2367,7 @@
 
 #define YYTABLES_NAME "yytables"
 
-#line 238 "ast_expr2.fl"
+#line 236 "ast_expr2.fl"
 
 
 
@@ -2486,7 +2472,7 @@
        extra_error_message[0] = 0;
 }
 
-static const char * const expr2_token_equivs1[] =
+static const char * const expr2_token_equivs1[] = 
 {
 	"TOKEN",
 	"TOK_COND",
@@ -2512,7 +2498,7 @@
 	"TOK_LP"
 };
 
-static const char * const expr2_token_equivs2[] =
+static const char * const expr2_token_equivs2[] = 
 {
 	"<token>",
 	"?",
@@ -2623,3 +2609,4 @@
 	free(s2);
 	return(0);
 }
+
diff --git a/res/Makefile b/res/Makefile
index 0987f43..96c95a6 100644
--- a/res/Makefile
+++ b/res/Makefile
@@ -40,13 +40,10 @@
 ael/ael_lex.c:
 endif
 	$(ECHO_PREFIX) echo "   [FLEX] $< -> $@"
-	$(CMD_PREFIX) (cd ael; $(FLEX) ael.flex)
-	$(CMD_PREFIX) sed 's@#if __STDC_VERSION__ >= 199901L@#if !defined __STDC_VERSION__ || __STDC_VERSION__ >= 199901L@' $@ > $@.fix
 	$(CMD_PREFIX) echo "#define ASTMM_LIBC ASTMM_REDIRECT" > $@
 	$(CMD_PREFIX) echo "#include \"asterisk.h\"" >> $@
 	$(CMD_PREFIX) echo >> $@
-	$(CMD_PREFIX) cat $@.fix >> $@
-	$(CMD_PREFIX) rm $@.fix
+	$(CMD_PREFIX) $(FLEX) -t ael/ael.flex >> $@
 
 ifneq ($(findstring REBUILD_PARSERS,$(MENUSELECT_CFLAGS)),)
 ael/ael.tab.c ael/ael.tab.h: ael/ael.y
diff --git a/res/ael/ael.flex b/res/ael/ael.flex
index 82a5f9e..64cc9b6 100644
--- a/res/ael/ael.flex
+++ b/res/ael/ael.flex
@@ -68,9 +68,6 @@
 %option bison-locations
 
 %{
-#define ASTMM_LIBC ASTMM_REDIRECT
-#include "asterisk.h"
-
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <unistd.h>
diff --git a/res/ael/ael.tab.c b/res/ael/ael.tab.c
index 802e78f..b10de26 100644
--- a/res/ael/ael.tab.c
+++ b/res/ael/ael.tab.c
@@ -1,19 +1,19 @@
 /* A Bison parser, made by GNU Bison 2.5.  */
 
 /* Bison implementation for Yacc-like parsers in C
-
+   
       Copyright (C) 1984, 1989-1990, 2000-2011 Free Software Foundation, Inc.
-
+   
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.
-
+   
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.
-
+   
    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
@@ -26,7 +26,7 @@
    special exception, which will cause the skeleton and the resulting
    Bison output files to be licensed under the GNU General Public
    License without this special exception.
-
+   
    This special exception was added by the Free Software Foundation in
    version 2.2 of Bison.  */
 
@@ -132,7 +132,7 @@
 
 
 /* Line 268 of yacc.c  */
-#line 137 "ael.tab.c"
+#line 136 "ael.tab.c"
 
 /* Enabling traces.  */
 #ifndef YYDEBUG
@@ -210,7 +210,7 @@
 {
 
 /* Line 293 of yacc.c  */
-#line 59 "ael.y"
+#line 58 "ael.y"
 
 	int	intval;		/* integer value, typically flags */
 	char	*str;		/* strings */
@@ -219,7 +219,7 @@
 
 
 /* Line 293 of yacc.c  */
-#line 224 "ael.tab.c"
+#line 223 "ael.tab.c"
 } YYSTYPE;
 # define YYSTYPE_IS_TRIVIAL 1
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
@@ -243,7 +243,7 @@
 /* Copy the second part of user declarations.  */
 
 /* Line 343 of yacc.c  */
-#line 65 "ael.y"
+#line 64 "ael.y"
 
 	/* declaring these AFTER the union makes things a lot simpler! */
 void yyerror(YYLTYPE *locp, struct parse_io *parseio, char const *s);
@@ -266,7 +266,7 @@
 
 
 /* Line 343 of yacc.c  */
-#line 271 "ael.tab.c"
+#line 270 "ael.tab.c"
 
 #ifdef short
 # undef short
@@ -618,21 +618,21 @@
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
 static const yytype_uint16 yyrline[] =
 {
-       0,   191,   191,   194,   195,   196,   199,   200,   201,   202,
-     205,   206,   209,   218,   219,   220,   221,   222,   225,   231,
-     237,   238,   239,   242,   242,   248,   248,   255,   256,   257,
-     258,   261,   262,   263,   266,   267,   268,   269,   270,   271,
-     272,   273,   274,   277,   282,   286,   294,   299,   304,   313,
-     314,   315,   321,   331,   335,   343,   343,   347,   350,   353,
-     364,   365,   377,   378,   387,   396,   405,   416,   417,   427,
-     440,   441,   450,   461,   470,   473,   474,   475,   478,   481,
-     484,   485,   486,   484,   492,   496,   497,   498,   499,   502,
-     502,   535,   536,   537,   538,   542,   545,   546,   549,   550,
-     553,   556,   560,   564,   568,   574,   575,   579,   582,   588,
-     588,   593,   601,   601,   612,   619,   622,   623,   626,   627,
-     630,   633,   634,   637,   641,   645,   651,   652,   655,   656,
-     657,   663,   668,   673,   674,   675,   686,   689,   690,   697,
-     698,   699,   702,   705
+       0,   190,   190,   193,   194,   195,   198,   199,   200,   201,
+     204,   205,   208,   217,   218,   219,   220,   221,   224,   230,
+     236,   237,   238,   241,   241,   247,   247,   254,   255,   256,
+     257,   260,   261,   262,   265,   266,   267,   268,   269,   270,
+     271,   272,   273,   276,   281,   285,   293,   298,   303,   312,
+     313,   314,   320,   330,   334,   342,   342,   346,   349,   352,
+     363,   364,   376,   377,   386,   395,   404,   415,   416,   426,
+     439,   440,   449,   460,   469,   472,   473,   474,   477,   480,
+     483,   484,   485,   483,   491,   495,   496,   497,   498,   501,
+     501,   534,   535,   536,   537,   541,   544,   545,   548,   549,
+     552,   555,   559,   563,   567,   573,   574,   578,   581,   587,
+     587,   592,   600,   600,   611,   618,   621,   622,   625,   626,
+     629,   632,   633,   636,   640,   644,   650,   651,   654,   655,
+     656,   662,   667,   672,   673,   674,   685,   688,   689,   696,
+     697,   698,   701,   704
 };
 #endif
 
@@ -1497,503 +1497,503 @@
       case 43: /* "word" */
 
 /* Line 1391 of yacc.c  */
-#line 183 "ael.y"
+#line 182 "ael.y"
 	{ free((yyvaluep->str));};
 
 /* Line 1391 of yacc.c  */
-#line 1506 "ael.tab.c"
+#line 1505 "ael.tab.c"
 	break;
       case 46: /* "objects" */
 
 /* Line 1391 of yacc.c  */
-#line 170 "ael.y"
+#line 169 "ael.y"
 	{
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
 
 /* Line 1391 of yacc.c  */
-#line 1518 "ael.tab.c"
+#line 1517 "ael.tab.c"
 	break;
       case 47: /* "object" */
 
 /* Line 1391 of yacc.c  */
-#line 170 "ael.y"
+#line 169 "ael.y"
 	{
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
 
 /* Line 1391 of yacc.c  */
-#line 1530 "ael.tab.c"
+#line 1529 "ael.tab.c"
 	break;
       case 48: /* "context_name" */
 
 /* Line 1391 of yacc.c  */
-#line 183 "ael.y"
+#line 182 "ael.y"
 	{ free((yyvaluep->str));};
 
 /* Line 1391 of yacc.c  */
-#line 1539 "ael.tab.c"
+#line 1538 "ael.tab.c"
 	break;
       case 49: /* "context" */
 
 /* Line 1391 of yacc.c  */
-#line 170 "ael.y"
+#line 169 "ael.y"
 	{
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
 
 /* Line 1391 of yacc.c  */
-#line 1551 "ael.tab.c"
+#line 1550 "ael.tab.c"
 	break;
       case 51: /* "macro" */
 
 /* Line 1391 of yacc.c  */
-#line 170 "ael.y"
+#line 169 "ael.y"
 	{
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
 
 /* Line 1391 of yacc.c  */
-#line 1563 "ael.tab.c"
+#line 1562 "ael.tab.c"
 	break;
       case 52: /* "globals" */
 
 /* Line 1391 of yacc.c  */
-#line 170 "ael.y"
+#line 169 "ael.y"
 	{
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
 
 /* Line 1391 of yacc.c  */
-#line 1575 "ael.tab.c"
+#line 1574 "ael.tab.c"
 	break;
       case 53: /* "global_statements" */
 
 /* Line 1391 of yacc.c  */
-#line 170 "ael.y"
+#line 169 "ael.y"
 	{
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
 
 /* Line 1391 of yacc.c  */
-#line 1587 "ael.tab.c"
+#line 1586 "ael.tab.c"
 	break;
       case 54: /* "assignment" */
 
 /* Line 1391 of yacc.c  */
-#line 170 "ael.y"
+#line 169 "ael.y"
 	{
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
 
 /* Line 1391 of yacc.c  */
-#line 1599 "ael.tab.c"
+#line 1598 "ael.tab.c"
 	break;
       case 56: /* "local_assignment" */
 
 /* Line 1391 of yacc.c  */
-#line 170 "ael.y"
+#line 169 "ael.y"
 	{
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
 
 /* Line 1391 of yacc.c  */
-#line 1611 "ael.tab.c"
+#line 1610 "ael.tab.c"
 	break;
       case 58: /* "arglist" */
 
 /* Line 1391 of yacc.c  */
-#line 170 "ael.y"
+#line 169 "ael.y"
 	{
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
 
 /* Line 1391 of yacc.c  */
-#line 1623 "ael.tab.c"
+#line 1622 "ael.tab.c"
 	break;
       case 59: /* "elements" */
 
 /* Line 1391 of yacc.c  */
-#line 170 "ael.y"
+#line 169 "ael.y"
 	{
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
 
 /* Line 1391 of yacc.c  */
-#line 1635 "ael.tab.c"
+#line 1634 "ael.tab.c"
 	break;
       case 60: /* "element" */
 
 /* Line 1391 of yacc.c  */
-#line 170 "ael.y"
+#line 169 "ael.y"
 	{
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
 
 /* Line 1391 of yacc.c  */
-#line 1647 "ael.tab.c"
+#line 1646 "ael.tab.c"
 	break;
       case 61: /* "ignorepat" */
 
 /* Line 1391 of yacc.c  */
-#line 170 "ael.y"
+#line 169 "ael.y"
 	{
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
 
 /* Line 1391 of yacc.c  */
-#line 1659 "ael.tab.c"
+#line 1658 "ael.tab.c"
 	break;
       case 62: /* "extension" */
 
 /* Line 1391 of yacc.c  */
-#line 170 "ael.y"
+#line 169 "ael.y"
 	{
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
 
 /* Line 1391 of yacc.c  */
-#line 1671 "ael.tab.c"
+#line 1670 "ael.tab.c"
 	break;
       case 63: /* "statements" */
 
 /* Line 1391 of yacc.c  */
-#line 170 "ael.y"
+#line 169 "ael.y"
 	{
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
 
 /* Line 1391 of yacc.c  */
-#line 1683 "ael.tab.c"
+#line 1682 "ael.tab.c"
 	break;
       case 64: /* "timerange" */
 
 /* Line 1391 of yacc.c  */
-#line 183 "ael.y"
+#line 182 "ael.y"
 	{ free((yyvaluep->str));};
 
 /* Line 1391 of yacc.c  */
-#line 1692 "ael.tab.c"
+#line 1691 "ael.tab.c"
 	break;
       case 65: /* "timespec" */
 
 /* Line 1391 of yacc.c  */
-#line 170 "ael.y"
+#line 169 "ael.y"
 	{
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
 
 /* Line 1391 of yacc.c  */
-#line 1704 "ael.tab.c"
+#line 1703 "ael.tab.c"
 	break;
       case 66: /* "test_expr" */
 
 /* Line 1391 of yacc.c  */
-#line 183 "ael.y"
+#line 182 "ael.y"
 	{ free((yyvaluep->str));};
 
 /* Line 1391 of yacc.c  */
-#line 1713 "ael.tab.c"
+#line 1712 "ael.tab.c"
 	break;
       case 68: /* "if_like_head" */
 
 /* Line 1391 of yacc.c  */
-#line 170 "ael.y"
+#line 169 "ael.y"
 	{
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
 
 /* Line 1391 of yacc.c  */
-#line 1725 "ael.tab.c"
+#line 1724 "ael.tab.c"
 	break;
       case 69: /* "word_list" */
 
 /* Line 1391 of yacc.c  */
-#line 183 "ael.y"
+#line 182 "ael.y"
 	{ free((yyvaluep->str));};
 
 /* Line 1391 of yacc.c  */
-#line 1734 "ael.tab.c"
+#line 1733 "ael.tab.c"
 	break;
       case 71: /* "word3_list" */
 
 /* Line 1391 of yacc.c  */
-#line 183 "ael.y"
+#line 182 "ael.y"
 	{ free((yyvaluep->str));};
 
 /* Line 1391 of yacc.c  */
-#line 1743 "ael.tab.c"
+#line 1742 "ael.tab.c"
 	break;
       case 72: /* "goto_word" */
 
 /* Line 1391 of yacc.c  */
-#line 183 "ael.y"
+#line 182 "ael.y"
 	{ free((yyvaluep->str));};
 
 /* Line 1391 of yacc.c  */
-#line 1752 "ael.tab.c"
+#line 1751 "ael.tab.c"
 	break;
       case 73: /* "switch_statement" */
 
 /* Line 1391 of yacc.c  */
-#line 170 "ael.y"
+#line 169 "ael.y"
 	{
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
 
 /* Line 1391 of yacc.c  */
-#line 1764 "ael.tab.c"
+#line 1763 "ael.tab.c"
 	break;
       case 74: /* "statement" */
 
 /* Line 1391 of yacc.c  */
-#line 170 "ael.y"
+#line 169 "ael.y"
 	{
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
 
 /* Line 1391 of yacc.c  */
-#line 1776 "ael.tab.c"
+#line 1775 "ael.tab.c"
 	break;
       case 79: /* "opt_else" */
 
 /* Line 1391 of yacc.c  */
-#line 170 "ael.y"
+#line 169 "ael.y"
 	{
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
 
 /* Line 1391 of yacc.c  */
-#line 1788 "ael.tab.c"
+#line 1787 "ael.tab.c"
 	break;
       case 80: /* "target" */
 
 /* Line 1391 of yacc.c  */
-#line 170 "ael.y"
+#line 169 "ael.y"
 	{
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
 
 /* Line 1391 of yacc.c  */
-#line 1800 "ael.tab.c"
+#line 1799 "ael.tab.c"
 	break;
       case 81: /* "opt_pri" */
 
 /* Line 1391 of yacc.c  */
-#line 183 "ael.y"
+#line 182 "ael.y"
 	{ free((yyvaluep->str));};
 
 /* Line 1391 of yacc.c  */
-#line 1809 "ael.tab.c"
+#line 1808 "ael.tab.c"
 	break;
       case 82: /* "jumptarget" */
 
 /* Line 1391 of yacc.c  */
-#line 170 "ael.y"
+#line 169 "ael.y"
 	{
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
 
 /* Line 1391 of yacc.c  */
-#line 1821 "ael.tab.c"
+#line 1820 "ael.tab.c"
 	break;
       case 83: /* "macro_call" */
 
 /* Line 1391 of yacc.c  */
-#line 170 "ael.y"
+#line 169 "ael.y"
 	{
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
 
 /* Line 1391 of yacc.c  */
-#line 1833 "ael.tab.c"
+#line 1832 "ael.tab.c"
 	break;
       case 85: /* "application_call_head" */
 
 /* Line 1391 of yacc.c  */
-#line 170 "ael.y"
+#line 169 "ael.y"
 	{
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
 
 /* Line 1391 of yacc.c  */
-#line 1845 "ael.tab.c"
+#line 1844 "ael.tab.c"
 	break;
       case 87: /* "application_call" */
 
 /* Line 1391 of yacc.c  */
-#line 170 "ael.y"
+#line 169 "ael.y"
 	{
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
 
 /* Line 1391 of yacc.c  */
-#line 1857 "ael.tab.c"
+#line 1856 "ael.tab.c"
 	break;
       case 88: /* "opt_word" */
 
 /* Line 1391 of yacc.c  */
-#line 183 "ael.y"
+#line 182 "ael.y"
 	{ free((yyvaluep->str));};
 
 /* Line 1391 of yacc.c  */
-#line 1866 "ael.tab.c"
+#line 1865 "ael.tab.c"
 	break;
       case 89: /* "eval_arglist" */
 
 /* Line 1391 of yacc.c  */
-#line 170 "ael.y"
+#line 169 "ael.y"
 	{
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
 
 /* Line 1391 of yacc.c  */
-#line 1878 "ael.tab.c"
+#line 1877 "ael.tab.c"
 	break;
       case 90: /* "case_statements" */
 
 /* Line 1391 of yacc.c  */
-#line 170 "ael.y"
+#line 169 "ael.y"
 	{
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
 
 /* Line 1391 of yacc.c  */
-#line 1890 "ael.tab.c"
+#line 1889 "ael.tab.c"
 	break;
       case 91: /* "case_statement" */
 
 /* Line 1391 of yacc.c  */
-#line 170 "ael.y"
+#line 169 "ael.y"
 	{
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
 
 /* Line 1391 of yacc.c  */
-#line 1902 "ael.tab.c"
+#line 1901 "ael.tab.c"
 	break;
       case 92: /* "macro_statements" */
 
 /* Line 1391 of yacc.c  */
-#line 170 "ael.y"
+#line 169 "ael.y"
 	{
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
 
 /* Line 1391 of yacc.c  */
-#line 1914 "ael.tab.c"
+#line 1913 "ael.tab.c"
 	break;
       case 93: /* "macro_statement" */
 
 /* Line 1391 of yacc.c  */
-#line 170 "ael.y"
+#line 169 "ael.y"
 	{
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
 
 /* Line 1391 of yacc.c  */
-#line 1926 "ael.tab.c"
+#line 1925 "ael.tab.c"
 	break;
       case 94: /* "switches" */
 
 /* Line 1391 of yacc.c  */
-#line 170 "ael.y"
+#line 169 "ael.y"
 	{
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
 
 /* Line 1391 of yacc.c  */
-#line 1938 "ael.tab.c"
+#line 1937 "ael.tab.c"
 	break;
       case 95: /* "eswitches" */
 
 /* Line 1391 of yacc.c  */
-#line 170 "ael.y"
+#line 169 "ael.y"
 	{
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
 
 /* Line 1391 of yacc.c  */
-#line 1950 "ael.tab.c"
+#line 1949 "ael.tab.c"
 	break;
       case 96: /* "switchlist" */
 
 /* Line 1391 of yacc.c  */
-#line 170 "ael.y"
+#line 169 "ael.y"
 	{
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
 
 /* Line 1391 of yacc.c  */
-#line 1962 "ael.tab.c"
+#line 1961 "ael.tab.c"
 	break;
       case 97: /* "included_entry" */
 
 /* Line 1391 of yacc.c  */
-#line 170 "ael.y"
+#line 169 "ael.y"
 	{
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
 
 /* Line 1391 of yacc.c  */
-#line 1974 "ael.tab.c"
+#line 1973 "ael.tab.c"
 	break;
       case 98: /* "includeslist" */
 
 /* Line 1391 of yacc.c  */
-#line 170 "ael.y"
+#line 169 "ael.y"
 	{
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
 
 /* Line 1391 of yacc.c  */
-#line 1986 "ael.tab.c"
+#line 1985 "ael.tab.c"
 	break;
       case 99: /* "includes" */
 
 /* Line 1391 of yacc.c  */
-#line 170 "ael.y"
+#line 169 "ael.y"
 	{
 		destroy_pval((yyvaluep->pval));
 		prev_word=0;
 	};
 
 /* Line 1391 of yacc.c  */
-#line 1998 "ael.tab.c"
+#line 1997 "ael.tab.c"
 	break;
 
       default:
@@ -2322,77 +2322,77 @@
         case 2:
 
 /* Line 1806 of yacc.c  */
-#line 191 "ael.y"
+#line 190 "ael.y"
     { (yyval.pval) = parseio->pval = (yyvsp[(1) - (1)].pval); }
     break;
 
   case 3:
 
 /* Line 1806 of yacc.c  */
-#line 194 "ael.y"
+#line 193 "ael.y"
     {(yyval.pval)=(yyvsp[(1) - (1)].pval);}
     break;
 
   case 4:
 
 /* Line 1806 of yacc.c  */
-#line 195 "ael.y"
+#line 194 "ael.y"
     { (yyval.pval) = linku1((yyvsp[(1) - (2)].pval), (yyvsp[(2) - (2)].pval)); }
     break;
 
   case 5:
 
 /* Line 1806 of yacc.c  */
-#line 196 "ael.y"
+#line 195 "ael.y"
     {(yyval.pval)=(yyvsp[(1) - (2)].pval);}
     break;
 
   case 6:
 
 /* Line 1806 of yacc.c  */
-#line 199 "ael.y"
+#line 198 "ael.y"
     {(yyval.pval)=(yyvsp[(1) - (1)].pval);}
     break;
 
   case 7:
 
 /* Line 1806 of yacc.c  */
-#line 200 "ael.y"
+#line 199 "ael.y"
     {(yyval.pval)=(yyvsp[(1) - (1)].pval);}
     break;
 
   case 8:
 
 /* Line 1806 of yacc.c  */
-#line 201 "ael.y"
+#line 200 "ael.y"
     {(yyval.pval)=(yyvsp[(1) - (1)].pval);}
     break;
 
   case 9:
 
 /* Line 1806 of yacc.c  */
-#line 202 "ael.y"
+#line 201 "ael.y"
     {(yyval.pval)=0;/* allow older docs to be read */}
     break;
 
   case 10:
 
 /* Line 1806 of yacc.c  */
-#line 205 "ael.y"
+#line 204 "ael.y"
     { (yyval.str) = (yyvsp[(1) - (1)].str); }
     break;
 
   case 11:
 
 /* Line 1806 of yacc.c  */
-#line 206 "ael.y"
+#line 205 "ael.y"
     { (yyval.str) = strdup("default"); }
     break;
 
   case 12:
 
 /* Line 1806 of yacc.c  */
-#line 209 "ael.y"
+#line 208 "ael.y"
     {
 		(yyval.pval) = npval2(PV_CONTEXT, &(yylsp[(1) - (6)]), &(yylsp[(6) - (6)]));
 		(yyval.pval)->u1.str = (yyvsp[(3) - (6)].str);
@@ -2404,42 +2404,42 @@
   case 13:
 
 /* Line 1806 of yacc.c  */
-#line 218 "ael.y"
+#line 217 "ael.y"
     { (yyval.intval) = 1; }
     break;
 
   case 14:
 
 /* Line 1806 of yacc.c  */
-#line 219 "ael.y"
+#line 218 "ael.y"
     { (yyval.intval) = 0; }
     break;
 
   case 15:
 
 /* Line 1806 of yacc.c  */
-#line 220 "ael.y"
+#line 219 "ael.y"
     { (yyval.intval) = 2; }
     break;
 
   case 16:
 
 /* Line 1806 of yacc.c  */
-#line 221 "ael.y"
+#line 220 "ael.y"
     { (yyval.intval)=3; }
     break;
 
   case 17:
 
 /* Line 1806 of yacc.c  */
-#line 222 "ael.y"
+#line 221 "ael.y"
     { (yyval.intval)=3; }
     break;
 
   case 18:
 
 /* Line 1806 of yacc.c  */
-#line 225 "ael.y"
+#line 224 "ael.y"
     {
 		(yyval.pval) = npval2(PV_MACRO, &(yylsp[(1) - (8)]), &(yylsp[(8) - (8)]));
 		(yyval.pval)->u1.str = (yyvsp[(2) - (8)].str); (yyval.pval)->u2.arglist = (yyvsp[(4) - (8)].pval); (yyval.pval)->u3.macro_statements = (yyvsp[(7) - (8)].pval);
@@ -2449,7 +2449,7 @@
   case 19:
 
 /* Line 1806 of yacc.c  */
-#line 231 "ael.y"
+#line 230 "ael.y"
     {
 		(yyval.pval) = npval2(PV_GLOBALS, &(yylsp[(1) - (4)]), &(yylsp[(4) - (4)]));
 		(yyval.pval)->u1.statements = (yyvsp[(3) - (4)].pval);
@@ -2459,35 +2459,35 @@
   case 20:
 
 /* Line 1806 of yacc.c  */
-#line 237 "ael.y"
+#line 236 "ael.y"
     { (yyval.pval) = NULL; }
     break;
 
   case 21:
 
 /* Line 1806 of yacc.c  */
-#line 238 "ael.y"
+#line 237 "ael.y"
     {(yyval.pval) = linku1((yyvsp[(1) - (2)].pval), (yyvsp[(2) - (2)].pval)); }
     break;
 
   case 22:
 
 /* Line 1806 of yacc.c  */
-#line 239 "ael.y"
+#line 238 "ael.y"
     {(yyval.pval)=(yyvsp[(2) - (2)].pval);}
     break;
 
   case 23:
 
 /* Line 1806 of yacc.c  */
-#line 242 "ael.y"
+#line 241 "ael.y"
     { reset_semicount(parseio->scanner); }
     break;
 
   case 24:
 
 /* Line 1806 of yacc.c  */
-#line 242 "ael.y"
+#line 241 "ael.y"
     {
 		(yyval.pval) = npval2(PV_VARDEC, &(yylsp[(1) - (5)]), &(yylsp[(5) - (5)]));
 		(yyval.pval)->u1.str = (yyvsp[(1) - (5)].str);
@@ -2497,14 +2497,14 @@
   case 25:
 
 /* Line 1806 of yacc.c  */
-#line 248 "ael.y"
+#line 247 "ael.y"
     { reset_semicount(parseio->scanner); }
     break;
 
   case 26:
 
 /* Line 1806 of yacc.c  */
-#line 248 "ael.y"
+#line 247 "ael.y"
     {
 		(yyval.pval) = npval2(PV_LOCALVARDEC, &(yylsp[(1) - (6)]), &(yylsp[(6) - (6)]));
 		(yyval.pval)->u1.str = (yyvsp[(2) - (6)].str);
@@ -2514,119 +2514,119 @@
   case 27:
 
 /* Line 1806 of yacc.c  */
-#line 255 "ael.y"
+#line 254 "ael.y"
     { (yyval.pval) = NULL; }
     break;
 
   case 28:
 
 /* Line 1806 of yacc.c  */
-#line 256 "ael.y"
+#line 255 "ael.y"
     { (yyval.pval) = nword((yyvsp[(1) - (1)].str), &(yylsp[(1) - (1)])); }
     break;
 
   case 29:
 
 /* Line 1806 of yacc.c  */
-#line 257 "ael.y"
+#line 256 "ael.y"
     { (yyval.pval) = linku1((yyvsp[(1) - (3)].pval), nword((yyvsp[(3) - (3)].str), &(yylsp[(3) - (3)]))); }
     break;
 
   case 30:
 
 /* Line 1806 of yacc.c  */
-#line 258 "ael.y"
+#line 257 "ael.y"
     {(yyval.pval)=(yyvsp[(1) - (2)].pval);}
     break;
 
   case 31:
 
 /* Line 1806 of yacc.c  */
-#line 261 "ael.y"
+#line 260 "ael.y"
     {(yyval.pval)=0;}
     break;
 
   case 32:
 
 /* Line 1806 of yacc.c  */
-#line 262 "ael.y"
+#line 261 "ael.y"
     { (yyval.pval) = linku1((yyvsp[(1) - (2)].pval), (yyvsp[(2) - (2)].pval)); }
     break;
 
   case 33:
 
 /* Line 1806 of yacc.c  */
-#line 263 "ael.y"
+#line 262 "ael.y"
     { (yyval.pval)=(yyvsp[(2) - (2)].pval);}
     break;
 
   case 34:
 
 /* Line 1806 of yacc.c  */
-#line 266 "ael.y"
+#line 265 "ael.y"
     {(yyval.pval)=(yyvsp[(1) - (1)].pval);}
     break;
 
   case 35:
 
 /* Line 1806 of yacc.c  */
-#line 267 "ael.y"
+#line 266 "ael.y"
     {(yyval.pval)=(yyvsp[(1) - (1)].pval);}
     break;
 
   case 36:
 
 /* Line 1806 of yacc.c  */
-#line 268 "ael.y"
+#line 267 "ael.y"
     {(yyval.pval)=(yyvsp[(1) - (1)].pval);}
     break;
 
   case 37:
 
 /* Line 1806 of yacc.c  */
-#line 269 "ael.y"
+#line 268 "ael.y"
     {(yyval.pval)=(yyvsp[(1) - (1)].pval);}
     break;
 
   case 38:
 
 /* Line 1806 of yacc.c  */
-#line 270 "ael.y"
+#line 269 "ael.y"
     {(yyval.pval)=(yyvsp[(1) - (1)].pval);}
     break;
 
   case 39:
 
 /* Line 1806 of yacc.c  */
-#line 271 "ael.y"
+#line 270 "ael.y"
     {(yyval.pval)=(yyvsp[(1) - (1)].pval);}
     break;
 
   case 40:
 
 /* Line 1806 of yacc.c  */
-#line 272 "ael.y"
+#line 271 "ael.y"
     {(yyval.pval)=(yyvsp[(1) - (1)].pval);}
     break;
 
   case 41:
 
 /* Line 1806 of yacc.c  */
-#line 273 "ael.y"
+#line 272 "ael.y"
     {free((yyvsp[(1) - (2)].str)); (yyval.pval)=0;}
     break;
 
   case 42:
 
 /* Line 1806 of yacc.c  */
-#line 274 "ael.y"
+#line 273 "ael.y"
     {(yyval.pval)=0;/* allow older docs to be read */}
     break;
 
   case 43:
 
 /* Line 1806 of yacc.c  */
-#line 277 "ael.y"
+#line 276 "ael.y"
     {
 		(yyval.pval) = npval2(PV_IGNOREPAT, &(yylsp[(1) - (4)]), &(yylsp[(4) - (4)]));
 		(yyval.pval)->u1.str = (yyvsp[(3) - (4)].str);}
@@ -2635,7 +2635,7 @@
   case 44:
 
 /* Line 1806 of yacc.c  */
-#line 282 "ael.y"
+#line 281 "ael.y"
     {
 		(yyval.pval) = npval2(PV_EXTENSION, &(yylsp[(1) - (3)]), &(yylsp[(3) - (3)]));
 		(yyval.pval)->u1.str = (yyvsp[(1) - (3)].str);
@@ -2645,7 +2645,7 @@
   case 45:
 
 /* Line 1806 of yacc.c  */
-#line 286 "ael.y"
+#line 285 "ael.y"
     {
 		(yyval.pval) = npval2(PV_EXTENSION, &(yylsp[(1) - (5)]), &(yylsp[(3) - (5)]));
 		(yyval.pval)->u1.str = malloc(strlen((yyvsp[(1) - (5)].str))+strlen((yyvsp[(3) - (5)].str))+2);
@@ -2659,7 +2659,7 @@
   case 46:
 
 /* Line 1806 of yacc.c  */
-#line 294 "ael.y"
+#line 293 "ael.y"
     {
 		(yyval.pval) = npval2(PV_EXTENSION, &(yylsp[(1) - (4)]), &(yylsp[(4) - (4)]));
 		(yyval.pval)->u1.str = (yyvsp[(2) - (4)].str);
@@ -2670,7 +2670,7 @@
   case 47:
 
 /* Line 1806 of yacc.c  */
-#line 299 "ael.y"
+#line 298 "ael.y"
     {
 		(yyval.pval) = npval2(PV_EXTENSION, &(yylsp[(1) - (7)]), &(yylsp[(7) - (7)]));
 		(yyval.pval)->u1.str = (yyvsp[(5) - (7)].str);
@@ -2681,7 +2681,7 @@
   case 48:
 
 /* Line 1806 of yacc.c  */
-#line 304 "ael.y"
+#line 303 "ael.y"
     {
 		(yyval.pval) = npval2(PV_EXTENSION, &(yylsp[(1) - (8)]), &(yylsp[(8) - (8)]));
 		(yyval.pval)->u1.str = (yyvsp[(6) - (8)].str);
@@ -2693,28 +2693,28 @@
   case 49:
 
 /* Line 1806 of yacc.c  */
-#line 313 "ael.y"
+#line 312 "ael.y"
     { (yyval.pval) = NULL; }
     break;
 
   case 50:
 
 /* Line 1806 of yacc.c  */
-#line 314 "ael.y"
+#line 313 "ael.y"
     { (yyval.pval) = linku1((yyvsp[(1) - (2)].pval), (yyvsp[(2) - (2)].pval)); }
     break;
 
   case 51:
 
 /* Line 1806 of yacc.c  */
-#line 315 "ael.y"
+#line 314 "ael.y"
     {(yyval.pval)=(yyvsp[(2) - (2)].pval);}
     break;
 
   case 52:
 
 /* Line 1806 of yacc.c  */
-#line 321 "ael.y"
+#line 320 "ael.y"
     {
 		if (asprintf(&(yyval.str), "%s:%s:%s", (yyvsp[(1) - (5)].str), (yyvsp[(3) - (5)].str), (yyvsp[(5) - (5)].str)) < 0) {
 			ast_log(LOG_WARNING, "asprintf() failed\n");
@@ -2730,14 +2730,14 @@
   case 53:
 
 /* Line 1806 of yacc.c  */
-#line 331 "ael.y"
+#line 330 "ael.y"
     { (yyval.str) = (yyvsp[(1) - (1)].str); }
     break;
 
   case 54:
 
 /* Line 1806 of yacc.c  */
-#line 335 "ael.y"
+#line 334 "ael.y"
     {
 		(yyval.pval) = nword((yyvsp[(1) - (7)].str), &(yylsp[(1) - (7)]));
 		(yyval.pval)->next = nword((yyvsp[(3) - (7)].str), &(yylsp[(3) - (7)]));
@@ -2748,21 +2748,21 @@
   case 55:
 
 /* Line 1806 of yacc.c  */
-#line 343 "ael.y"
+#line 342 "ael.y"
     { reset_parencount(parseio->scanner); }
     break;
 
   case 56:
 
 /* Line 1806 of yacc.c  */
-#line 343 "ael.y"
+#line 342 "ael.y"
     { (yyval.str) = (yyvsp[(3) - (4)].str); }
     break;
 
   case 57:
 
 /* Line 1806 of yacc.c  */
-#line 347 "ael.y"
+#line 346 "ael.y"
     {
 		(yyval.pval)= npval2(PV_IF, &(yylsp[(1) - (2)]), &(yylsp[(2) - (2)]));
 		(yyval.pval)->u1.str = (yyvsp[(2) - (2)].str); }
@@ -2771,7 +2771,7 @@
   case 58:
 
 /* Line 1806 of yacc.c  */
-#line 350 "ael.y"
+#line 349 "ael.y"
     {
 		(yyval.pval) = npval2(PV_RANDOM, &(yylsp[(1) - (2)]), &(yylsp[(2) - (2)]));
 		(yyval.pval)->u1.str=(yyvsp[(2) - (2)].str);}
@@ -2780,7 +2780,7 @@
   case 59:
 
 /* Line 1806 of yacc.c  */
-#line 353 "ael.y"
+#line 352 "ael.y"
     {
 		(yyval.pval) = npval2(PV_IFTIME, &(yylsp[(1) - (4)]), &(yylsp[(4) - (4)]));
 		(yyval.pval)->u1.list = (yyvsp[(3) - (4)].pval);
@@ -2790,14 +2790,14 @@
   case 60:
 
 /* Line 1806 of yacc.c  */
-#line 364 "ael.y"
+#line 363 "ael.y"
     { (yyval.str) = (yyvsp[(1) - (1)].str);}
     break;
 
   case 61:
 
 /* Line 1806 of yacc.c  */
-#line 365 "ael.y"
+#line 364 "ael.y"
     {
 		if (asprintf(&((yyval.str)), "%s%s", (yyvsp[(1) - (2)].str), (yyvsp[(2) - (2)].str)) < 0) {
 			ast_log(LOG_WARNING, "asprintf() failed\n");
@@ -2813,14 +2813,14 @@
   case 62:
 
 /* Line 1806 of yacc.c  */
-#line 377 "ael.y"
+#line 376 "ael.y"
     { (yyval.str) = (yyvsp[(1) - (1)].str); }
     break;
 
   case 63:
 
 /* Line 1806 of yacc.c  */
-#line 378 "ael.y"
+#line 377 "ael.y"
     {
 		if (asprintf(&((yyval.str)), "%s %s", (yyvsp[(1) - (2)].str), (yyvsp[(2) - (2)].str)) < 0) {
 			ast_log(LOG_WARNING, "asprintf() failed\n");
@@ -2835,7 +2835,7 @@
   case 64:
 
 /* Line 1806 of yacc.c  */
-#line 387 "ael.y"
+#line 386 "ael.y"
     {
 		if (asprintf(&((yyval.str)), "%s:%s", (yyvsp[(1) - (3)].str), (yyvsp[(3) - (3)].str)) < 0) {
 			ast_log(LOG_WARNING, "asprintf() failed\n");
@@ -2850,7 +2850,7 @@
   case 65:
 
 /* Line 1806 of yacc.c  */
-#line 396 "ael.y"
+#line 395 "ael.y"
     {  /* there are often '&' in hints */
 		if (asprintf(&((yyval.str)), "%s&%s", (yyvsp[(1) - (3)].str), (yyvsp[(3) - (3)].str)) < 0) {
 			ast_log(LOG_WARNING, "asprintf() failed\n");
@@ -2865,7 +2865,7 @@
   case 66:
 
 /* Line 1806 of yacc.c  */
-#line 405 "ael.y"
+#line 404 "ael.y"
     {
 		if (asprintf(&((yyval.str)), "%s@%s", (yyvsp[(1) - (3)].str), (yyvsp[(3) - (3)].str)) < 0) {
 			ast_log(LOG_WARNING, "asprintf() failed\n");
@@ -2880,14 +2880,14 @@
   case 67:
 
 /* Line 1806 of yacc.c  */
-#line 416 "ael.y"
+#line 415 "ael.y"
     { (yyval.str) = (yyvsp[(1) - (1)].str);}
     break;
 
   case 68:
 
 /* Line 1806 of yacc.c  */
-#line 417 "ael.y"
+#line 416 "ael.y"
     {
 		if (asprintf(&((yyval.str)), "%s%s", (yyvsp[(1) - (2)].str), (yyvsp[(2) - (2)].str)) < 0) {
 			ast_log(LOG_WARNING, "asprintf() failed\n");
@@ -2903,7 +2903,7 @@
   case 69:
 
 /* Line 1806 of yacc.c  */
-#line 427 "ael.y"
+#line 426 "ael.y"
     {
 		if (asprintf(&((yyval.str)), "%s%s%s", (yyvsp[(1) - (3)].str), (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str)) < 0) {
 			ast_log(LOG_WARNING, "asprintf() failed\n");
@@ -2920,14 +2920,14 @@
   case 70:
 
 /* Line 1806 of yacc.c  */
-#line 440 "ael.y"
+#line 439 "ael.y"
     { (yyval.str) = (yyvsp[(1) - (1)].str);}
     break;
 
   case 71:
 
 /* Line 1806 of yacc.c  */
-#line 441 "ael.y"
+#line 440 "ael.y"
     {
 		if (asprintf(&((yyval.str)), "%s%s", (yyvsp[(1) - (2)].str), (yyvsp[(2) - (2)].str)) < 0) {
 			ast_log(LOG_WARNING, "asprintf() failed\n");
@@ -2942,7 +2942,7 @@
   case 72:
 
 /* Line 1806 of yacc.c  */
-#line 450 "ael.y"
+#line 449 "ael.y"
     {
 		if (asprintf(&((yyval.str)), "%s:%s", (yyvsp[(1) - (3)].str), (yyvsp[(3) - (3)].str)) < 0) {
 			ast_log(LOG_WARNING, "asprintf() failed\n");
@@ -2957,7 +2957,7 @@
   case 73:
 
 /* Line 1806 of yacc.c  */
-#line 461 "ael.y"
+#line 460 "ael.y"
     {
 		(yyval.pval) = npval2(PV_SWITCH, &(yylsp[(1) - (5)]), &(yylsp[(5) - (5)]));
 		(yyval.pval)->u1.str = (yyvsp[(2) - (5)].str);
@@ -2967,7 +2967,7 @@
   case 74:
 
 /* Line 1806 of yacc.c  */
-#line 470 "ael.y"
+#line 469 "ael.y"
     {
 		(yyval.pval) = npval2(PV_STATEMENTBLOCK, &(yylsp[(1) - (3)]), &(yylsp[(3) - (3)]));
 		(yyval.pval)->u1.list = (yyvsp[(2) - (3)].pval); set_dads((yyval.pval),(yyvsp[(2) - (3)].pval));}
@@ -2976,21 +2976,21 @@
   case 75:
 
 /* Line 1806 of yacc.c  */
-#line 473 "ael.y"
+#line 472 "ael.y"
     { (yyval.pval) = (yyvsp[(1) - (1)].pval); }
     break;
 
   case 76:
 
 /* Line 1806 of yacc.c  */
-#line 474 "ael.y"
+#line 473 "ael.y"
     { (yyval.pval) = (yyvsp[(1) - (1)].pval); }
     break;
 
   case 77:
 
 /* Line 1806 of yacc.c  */
-#line 475 "ael.y"
+#line 474 "ael.y"
     {
 		(yyval.pval) = npval2(PV_GOTO, &(yylsp[(1) - (3)]), &(yylsp[(3) - (3)]));
 		(yyval.pval)->u1.list = (yyvsp[(2) - (3)].pval);}
@@ -2999,7 +2999,7 @@
   case 78:
 
 /* Line 1806 of yacc.c  */
-#line 478 "ael.y"
+#line 477 "ael.y"
     {
 		(yyval.pval) = npval2(PV_GOTO, &(yylsp[(1) - (3)]), &(yylsp[(3) - (3)]));
 		(yyval.pval)->u1.list = (yyvsp[(2) - (3)].pval);}
@@ -3008,7 +3008,7 @@
   case 79:
 
 /* Line 1806 of yacc.c  */
-#line 481 "ael.y"
+#line 480 "ael.y"
     {
 		(yyval.pval) = npval2(PV_LABEL, &(yylsp[(1) - (2)]), &(yylsp[(2) - (2)]));
 		(yyval.pval)->u1.str = (yyvsp[(1) - (2)].str); }
@@ -3017,28 +3017,28 @@
   case 80:
 
 /* Line 1806 of yacc.c  */
-#line 484 "ael.y"
+#line 483 "ael.y"
     {reset_semicount(parseio->scanner);}
     break;
 
   case 81:
 
 /* Line 1806 of yacc.c  */
-#line 485 "ael.y"
+#line 484 "ael.y"
     {reset_semicount(parseio->scanner);}
     break;
 
   case 82:
 
 /* Line 1806 of yacc.c  */
-#line 486 "ael.y"
+#line 485 "ael.y"
     {reset_parencount(parseio->scanner);}
     break;
 
   case 83:
 
 /* Line 1806 of yacc.c  */
-#line 486 "ael.y"
+#line 485 "ael.y"
     { /* XXX word_list maybe ? */
 		(yyval.pval) = npval2(PV_FOR, &(yylsp[(1) - (12)]), &(yylsp[(12) - (12)]));
 		(yyval.pval)->u1.for_init = (yyvsp[(4) - (12)].str);
@@ -3050,7 +3050,7 @@
   case 84:
 
 /* Line 1806 of yacc.c  */
-#line 492 "ael.y"
+#line 491 "ael.y"
     {
 		(yyval.pval) = npval2(PV_WHILE, &(yylsp[(1) - (3)]), &(yylsp[(3) - (3)]));
 		(yyval.pval)->u1.str = (yyvsp[(2) - (3)].str);
@@ -3060,28 +3060,28 @@
   case 85:
 
 /* Line 1806 of yacc.c  */
-#line 496 "ael.y"
+#line 495 "ael.y"
     { (yyval.pval) = (yyvsp[(1) - (1)].pval); }
     break;
 
   case 86:
 
 /* Line 1806 of yacc.c  */
-#line 497 "ael.y"
+#line 496 "ael.y"
     { (yyval.pval) = update_last((yyvsp[(2) - (3)].pval), &(yylsp[(2) - (3)])); }
     break;
 
   case 87:
 
 /* Line 1806 of yacc.c  */
-#line 498 "ael.y"
+#line 497 "ael.y"
     { (yyval.pval) = update_last((yyvsp[(1) - (2)].pval), &(yylsp[(2) - (2)])); }
     break;
 
   case 88:
 
 /* Line 1806 of yacc.c  */
-#line 499 "ael.y"
+#line 498 "ael.y"
     {
 		(yyval.pval)= npval2(PV_APPLICATION_CALL, &(yylsp[(1) - (2)]), &(yylsp[(2) - (2)]));
 		(yyval.pval)->u1.str = (yyvsp[(1) - (2)].str);}
@@ -3090,14 +3090,14 @@
   case 89:
 
 /* Line 1806 of yacc.c  */
-#line 502 "ael.y"
+#line 501 "ael.y"
     {reset_semicount(parseio->scanner);}
     break;
 
   case 90:
 
 /* Line 1806 of yacc.c  */
-#line 502 "ael.y"
+#line 501 "ael.y"
     {
 		char *bufx;
 		int tot=0;
@@ -3136,28 +3136,28 @@
   case 91:
 
 /* Line 1806 of yacc.c  */
-#line 535 "ael.y"
+#line 534 "ael.y"
     { (yyval.pval) = npval2(PV_BREAK, &(yylsp[(1) - (2)]), &(yylsp[(2) - (2)])); }
     break;
 
   case 92:
 
 /* Line 1806 of yacc.c  */
-#line 536 "ael.y"
+#line 535 "ael.y"
     { (yyval.pval) = npval2(PV_RETURN, &(yylsp[(1) - (2)]), &(yylsp[(2) - (2)])); }
     break;
 
   case 93:
 
 /* Line 1806 of yacc.c  */
-#line 537 "ael.y"
+#line 536 "ael.y"
     { (yyval.pval) = npval2(PV_CONTINUE, &(yylsp[(1) - (2)]), &(yylsp[(2) - (2)])); }
     break;
 
   case 94:
 
 /* Line 1806 of yacc.c  */
-#line 538 "ael.y"
+#line 537 "ael.y"
     {
 		(yyval.pval) = update_last((yyvsp[(1) - (3)].pval), &(yylsp[(2) - (3)]));
 		(yyval.pval)->u2.statements = (yyvsp[(2) - (3)].pval); set_dads((yyval.pval),(yyvsp[(2) - (3)].pval));
@@ -3167,35 +3167,35 @@
   case 95:
 
 /* Line 1806 of yacc.c  */
-#line 542 "ael.y"
+#line 541 "ael.y"
     { (yyval.pval)=0; }
     break;
 
   case 96:
 
 /* Line 1806 of yacc.c  */
-#line 545 "ael.y"
+#line 544 "ael.y"
     { (yyval.pval) = (yyvsp[(2) - (2)].pval); }
     break;
 
   case 97:
 
 /* Line 1806 of yacc.c  */
-#line 546 "ael.y"
+#line 545 "ael.y"
     { (yyval.pval) = NULL ; }
     break;
 
   case 98:
 
 /* Line 1806 of yacc.c  */
-#line 549 "ael.y"
+#line 548 "ael.y"
     { (yyval.pval) = nword((yyvsp[(1) - (1)].str), &(yylsp[(1) - (1)])); }
     break;
 
   case 99:
 
 /* Line 1806 of yacc.c  */
-#line 550 "ael.y"
+#line 549 "ael.y"
     {
 		(yyval.pval) = nword((yyvsp[(1) - (3)].str), &(yylsp[(1) - (3)]));
 		(yyval.pval)->next = nword((yyvsp[(3) - (3)].str), &(yylsp[(3) - (3)])); }
@@ -3204,7 +3204,7 @@
   case 100:
 
 /* Line 1806 of yacc.c  */
-#line 553 "ael.y"
+#line 552 "ael.y"
     {
 		(yyval.pval) = nword((yyvsp[(1) - (3)].str), &(yylsp[(1) - (3)]));
 		(yyval.pval)->next = nword((yyvsp[(3) - (3)].str), &(yylsp[(3) - (3)])); }
@@ -3213,7 +3213,7 @@
   case 101:
 
 /* Line 1806 of yacc.c  */
-#line 556 "ael.y"
+#line 555 "ael.y"
     {
 		(yyval.pval) = nword((yyvsp[(1) - (5)].str), &(yylsp[(1) - (5)]));
 		(yyval.pval)->next = nword((yyvsp[(3) - (5)].str), &(yylsp[(3) - (5)]));
@@ -3223,7 +3223,7 @@
   case 102:
 
 /* Line 1806 of yacc.c  */
-#line 560 "ael.y"
+#line 559 "ael.y"
     {
 		(yyval.pval) = nword((yyvsp[(1) - (5)].str), &(yylsp[(1) - (5)]));
 		(yyval.pval)->next = nword((yyvsp[(3) - (5)].str), &(yylsp[(3) - (5)]));
@@ -3233,7 +3233,7 @@
   case 103:
 
 /* Line 1806 of yacc.c  */
-#line 564 "ael.y"
+#line 563 "ael.y"
     {
 		(yyval.pval) = nword(strdup("default"), &(yylsp[(1) - (5)]));
 		(yyval.pval)->next = nword((yyvsp[(3) - (5)].str), &(yylsp[(3) - (5)]));
@@ -3243,7 +3243,7 @@
   case 104:
 
 /* Line 1806 of yacc.c  */
-#line 568 "ael.y"
+#line 567 "ael.y"
     {
 		(yyval.pval) = nword(strdup("default"), &(yylsp[(1) - (5)]));
 		(yyval.pval)->next = nword((yyvsp[(3) - (5)].str), &(yylsp[(3) - (5)]));
@@ -3253,21 +3253,21 @@
   case 105:
 
 /* Line 1806 of yacc.c  */
-#line 574 "ael.y"
+#line 573 "ael.y"
     { (yyval.str) = strdup("1"); }
     break;
 
   case 106:
 
 /* Line 1806 of yacc.c  */
-#line 575 "ael.y"
+#line 574 "ael.y"
     { (yyval.str) = (yyvsp[(2) - (2)].str); }
     break;
 
   case 107:
 
 /* Line 1806 of yacc.c  */
-#line 579 "ael.y"
+#line 578 "ael.y"
     {			/* ext[, pri] default 1 */
 		(yyval.pval) = nword((yyvsp[(1) - (2)].str), &(yylsp[(1) - (2)]));
 		(yyval.pval)->next = nword((yyvsp[(2) - (2)].str), &(yylsp[(2) - (2)])); }
@@ -3276,7 +3276,7 @@
   case 108:
 
 /* Line 1806 of yacc.c  */
-#line 582 "ael.y"
+#line 581 "ael.y"
     {	/* context, ext, pri */
 		(yyval.pval) = nword((yyvsp[(4) - (4)].str), &(yylsp[(4) - (4)]));
 		(yyval.pval)->next = nword((yyvsp[(1) - (4)].str), &(yylsp[(1) - (4)]));
@@ -3286,14 +3286,14 @@
   case 109:
 
 /* Line 1806 of yacc.c  */
-#line 588 "ael.y"
+#line 587 "ael.y"
     {reset_argcount(parseio->scanner);}
     break;
 
   case 110:
 
 /* Line 1806 of yacc.c  */
-#line 588 "ael.y"
+#line 587 "ael.y"
     {
 		/* XXX original code had @2 but i think we need @5 */
 		(yyval.pval) = npval2(PV_MACRO_CALL, &(yylsp[(1) - (5)]), &(yylsp[(5) - (5)]));
@@ -3304,7 +3304,7 @@
   case 111:
 
 /* Line 1806 of yacc.c  */
-#line 593 "ael.y"
+#line 592 "ael.y"
     {
 		(yyval.pval)= npval2(PV_MACRO_CALL, &(yylsp[(1) - (3)]), &(yylsp[(3) - (3)]));
 		(yyval.pval)->u1.str = (yyvsp[(1) - (3)].str); }
@@ -3313,14 +3313,14 @@
   case 112:
 
 /* Line 1806 of yacc.c  */
-#line 601 "ael.y"
+#line 600 "ael.y"
     {reset_argcount(parseio->scanner);}
     break;
 
   case 113:
 
 /* Line 1806 of yacc.c  */
-#line 601 "ael.y"
+#line 600 "ael.y"
     {
 		if (strcasecmp((yyvsp[(1) - (3)].str),"goto") == 0) {
 			(yyval.pval) = npval2(PV_GOTO, &(yylsp[(1) - (3)]), &(yylsp[(2) - (3)]));
@@ -3335,7 +3335,7 @@
   case 114:
 
 /* Line 1806 of yacc.c  */
-#line 612 "ael.y"
+#line 611 "ael.y"
     {
 		(yyval.pval) = update_last((yyvsp[(1) - (3)].pval), &(yylsp[(3) - (3)]));
  		if( (yyval.pval)->type == PV_GOTO )
@@ -3348,35 +3348,35 @@
   case 115:
 
 /* Line 1806 of yacc.c  */
-#line 619 "ael.y"
+#line 618 "ael.y"
     { (yyval.pval) = update_last((yyvsp[(1) - (2)].pval), &(yylsp[(2) - (2)])); }
     break;
 
   case 116:
 
 /* Line 1806 of yacc.c  */
-#line 622 "ael.y"
+#line 621 "ael.y"
     { (yyval.str) = (yyvsp[(1) - (1)].str) ;}
     break;
 
   case 117:
 
 /* Line 1806 of yacc.c  */
-#line 623 "ael.y"
+#line 622 "ael.y"
     { (yyval.str) = strdup(""); }
     break;
 
   case 118:
 
 /* Line 1806 of yacc.c  */
-#line 626 "ael.y"
+#line 625 "ael.y"
     { (yyval.pval) = nword((yyvsp[(1) - (1)].str), &(yylsp[(1) - (1)])); }
     break;
 
   case 119:
 
 /* Line 1806 of yacc.c  */
-#line 627 "ael.y"
+#line 626 "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(""); }
@@ -3385,28 +3385,28 @@
   case 120:
 
 /* Line 1806 of yacc.c  */
-#line 630 "ael.y"
+#line 629 "ael.y"
     { (yyval.pval) = linku1((yyvsp[(1) - (3)].pval), nword((yyvsp[(3) - (3)].str), &(yylsp[(3) - (3)]))); }
     break;
 
   case 121:
 
 /* Line 1806 of yacc.c  */
-#line 633 "ael.y"
+#line 632 "ael.y"
     { (yyval.pval) = NULL; }
     break;
 
   case 122:
 
 /* Line 1806 of yacc.c  */
-#line 634 "ael.y"
+#line 633 "ael.y"
     { (yyval.pval) = linku1((yyvsp[(1) - (2)].pval), (yyvsp[(2) - (2)].pval)); }
     break;
 
   case 123:
 
 /* Line 1806 of yacc.c  */
-#line 637 "ael.y"
+#line 636 "ael.y"
     {
 		(yyval.pval) = npval2(PV_CASE, &(yylsp[(1) - (4)]), &(yylsp[(3) - (4)])); /* XXX 3 or 4 ? */
 		(yyval.pval)->u1.str = (yyvsp[(2) - (4)].str);
@@ -3416,7 +3416,7 @@
   case 124:
 
 /* Line 1806 of yacc.c  */
-#line 641 "ael.y"
+#line 640 "ael.y"
     {
 		(yyval.pval) = npval2(PV_DEFAULT, &(yylsp[(1) - (3)]), &(yylsp[(3) - (3)]));
 		(yyval.pval)->u1.str = NULL;
@@ -3426,7 +3426,7 @@
   case 125:
 
 /* Line 1806 of yacc.c  */
-#line 645 "ael.y"
+#line 644 "ael.y"
     {
 		(yyval.pval) = npval2(PV_PATTERN, &(yylsp[(1) - (4)]), &(yylsp[(4) - (4)])); /* XXX at 3 or @4 ? */
 		(yyval.pval)->u1.str = (yyvsp[(2) - (4)].str);
@@ -3436,35 +3436,35 @@
   case 126:
 
 /* Line 1806 of yacc.c  */
-#line 651 "ael.y"
+#line 650 "ael.y"
     { (yyval.pval) = NULL; }
     break;
 
   case 127:
 
 /* Line 1806 of yacc.c  */
-#line 652 "ael.y"
+#line 651 "ael.y"
     { (yyval.pval) = linku1((yyvsp[(1) - (2)].pval), (yyvsp[(2) - (2)].pval)); }
     break;
 
   case 128:
 
 /* Line 1806 of yacc.c  */
-#line 655 "ael.y"
+#line 654 "ael.y"
     {(yyval.pval)=(yyvsp[(1) - (1)].pval);}
     break;
 
   case 129:
 
 /* Line 1806 of yacc.c  */
-#line 656 "ael.y"
+#line 655 "ael.y"
     { (yyval.pval)=(yyvsp[(1) - (1)].pval);}
     break;
 
   case 130:
 
 /* Line 1806 of yacc.c  */
-#line 657 "ael.y"
+#line 656 "ael.y"
     {
 		(yyval.pval) = npval2(PV_CATCH, &(yylsp[(1) - (5)]), &(yylsp[(5) - (5)]));
 		(yyval.pval)->u1.str = (yyvsp[(2) - (5)].str);
@@ -3474,7 +3474,7 @@
   case 131:
 
 /* Line 1806 of yacc.c  */
-#line 663 "ael.y"
+#line 662 "ael.y"
     {
 		(yyval.pval) = npval2(PV_SWITCHES, &(yylsp[(1) - (4)]), &(yylsp[(2) - (4)]));
 		(yyval.pval)->u1.list = (yyvsp[(3) - (4)].pval); set_dads((yyval.pval),(yyvsp[(3) - (4)].pval));}
@@ -3483,7 +3483,7 @@
   case 132:
 
 /* Line 1806 of yacc.c  */
-#line 668 "ael.y"
+#line 667 "ael.y"
     {
 		(yyval.pval) = npval2(PV_ESWITCHES, &(yylsp[(1) - (4)]), &(yylsp[(2) - (4)]));
 		(yyval.pval)->u1.list = (yyvsp[(3) - (4)].pval); set_dads((yyval.pval),(yyvsp[(3) - (4)].pval));}
@@ -3492,21 +3492,21 @@
   case 133:
 
 /* Line 1806 of yacc.c  */
-#line 673 "ael.y"
+#line 672 "ael.y"
     { (yyval.pval) = NULL; }
     break;
 
   case 134:
 
 /* Line 1806 of yacc.c  */
-#line 674 "ael.y"
+#line 673 "ael.y"
     { (yyval.pval) = linku1((yyvsp[(1) - (3)].pval),nword((yyvsp[(2) - (3)].str), &(yylsp[(2) - (3)]))); }
     break;
 
   case 135:
 
 /* Line 1806 of yacc.c  */
-#line 675 "ael.y"
+#line 674 "ael.y"
     {
 	  char *x;
 	  if (asprintf(&x,"%s@%s", (yyvsp[(2) - (5)].str), (yyvsp[(4) - (5)].str)) < 0) {
@@ -3523,21 +3523,21 @@
   case 136:
 
 /* Line 1806 of yacc.c  */
-#line 686 "ael.y"
+#line 685 "ael.y"
     {(yyval.pval)=(yyvsp[(2) - (2)].pval);}
     break;
 
   case 137:
 
 /* Line 1806 of yacc.c  */
-#line 689 "ael.y"
+#line 688 "ael.y"
     { (yyval.pval) = nword((yyvsp[(1) - (1)].str), &(yylsp[(1) - (1)])); }
     break;
 
   case 138:
 
 /* Line 1806 of yacc.c  */
-#line 690 "ael.y"
+#line 689 "ael.y"
     {
 		(yyval.pval) = nword((yyvsp[(1) - (3)].str), &(yylsp[(1) - (3)]));
 		(yyval.pval)->u2.arglist = (yyvsp[(3) - (3)].pval);
@@ -3547,28 +3547,28 @@
   case 139:
 
 /* Line 1806 of yacc.c  */
-#line 697 "ael.y"
+#line 696 "ael.y"
     { (yyval.pval) = (yyvsp[(1) - (2)].pval); }
     break;
 
   case 140:
 
 /* Line 1806 of yacc.c  */
-#line 698 "ael.y"
+#line 697 "ael.y"
     { (yyval.pval) = linku1((yyvsp[(1) - (3)].pval), (yyvsp[(2) - (3)].pval)); }
     break;
 
   case 141:
 
 /* Line 1806 of yacc.c  */
-#line 699 "ael.y"
+#line 698 "ael.y"
     {(yyval.pval)=(yyvsp[(1) - (2)].pval);}
     break;
 
   case 142:
 
 /* Line 1806 of yacc.c  */
-#line 702 "ael.y"
+#line 701 "ael.y"
     {
 		(yyval.pval) = npval2(PV_INCLUDES, &(yylsp[(1) - (4)]), &(yylsp[(4) - (4)]));
 		(yyval.pval)->u1.list = (yyvsp[(3) - (4)].pval);set_dads((yyval.pval),(yyvsp[(3) - (4)].pval));}
@@ -3577,7 +3577,7 @@
   case 143:
 
 /* Line 1806 of yacc.c  */
-#line 705 "ael.y"
+#line 704 "ael.y"
     {
 		(yyval.pval) = npval2(PV_INCLUDES, &(yylsp[(1) - (3)]), &(yylsp[(3) - (3)]));}
     break;
@@ -3585,7 +3585,7 @@
 
 
 /* Line 1806 of yacc.c  */
-#line 3590 "ael.tab.c"
+#line 3589 "ael.tab.c"
       default: break;
     }
   /* User semantic actions sometimes alter yychar, and that requires
@@ -3823,7 +3823,7 @@
 
 
 /* Line 2067 of yacc.c  */
-#line 710 "ael.y"
+#line 709 "ael.y"
 
 
 static char *token_equivs1[] =
@@ -4005,3 +4005,4 @@
 	for(t=child_list;t;t=t->next)  /* simple stuff */
 		t->dad = dad;
 }
+
diff --git a/res/ael/ael.tab.h b/res/ael/ael.tab.h
index 1647649..5ea6c0f 100644
--- a/res/ael/ael.tab.h
+++ b/res/ael/ael.tab.h
@@ -1,19 +1,19 @@
 /* A Bison parser, made by GNU Bison 2.5.  */
 
 /* Bison interface for Yacc-like parsers in C
-
+   
       Copyright (C) 1984, 1989-1990, 2000-2011 Free Software Foundation, Inc.
-
+   
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.
-
+   
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.
-
+   
    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
@@ -26,7 +26,7 @@
    special exception, which will cause the skeleton and the resulting
    Bison output files to be licensed under the GNU General Public
    License without this special exception.
-
+   
    This special exception was added by the Free Software Foundation in
    version 2.2 of Bison.  */
 
@@ -88,7 +88,7 @@
 {
 
 /* Line 2068 of yacc.c  */
-#line 59 "ael.y"
+#line 58 "ael.y"
 
 	int	intval;		/* integer value, typically flags */
 	char	*str;		/* strings */
@@ -118,3 +118,6 @@
 # define YYLTYPE_IS_DECLARED 1
 # define YYLTYPE_IS_TRIVIAL 1
 #endif
+
+
+
diff --git a/res/ael/ael_lex.c b/res/ael/ael_lex.c
index 04821fe..b54a272 100644
--- a/res/ael/ael_lex.c
+++ b/res/ael/ael_lex.c
@@ -37,7 +37,7 @@
 #if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
 
 /* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
- * if you want the limit (max/min) macros for int types.
+ * if you want the limit (max/min) macros for int types. 
  */
 #ifndef __STDC_LIMIT_MACROS
 #define __STDC_LIMIT_MACROS 1
@@ -54,9 +54,10 @@
 typedef signed char flex_int8_t;
 typedef short int flex_int16_t;
 typedef int flex_int32_t;
-typedef unsigned char flex_uint8_t;
+typedef unsigned char flex_uint8_t; 
 typedef unsigned short int flex_uint16_t;
 typedef unsigned int flex_uint32_t;
+#endif /* ! C99 */
 
 /* Limits of integral types. */
 #ifndef INT8_MIN
@@ -87,8 +88,6 @@
 #define UINT32_MAX             (4294967295U)
 #endif
 
-#endif /* ! C99 */
-
 #endif /* ! FLEXINT_H */
 
 #ifdef __cplusplus
@@ -162,15 +161,7 @@
 
 /* Size of default input buffer. */
 #ifndef YY_BUF_SIZE
-#ifdef __ia64__
-/* On IA-64, the buffer size is 16k, not 8k.
- * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case.
- * Ditto for the __ia64__ case accordingly.
- */
-#define YY_BUF_SIZE 32768
-#else
 #define YY_BUF_SIZE 16384
-#endif /* __ia64__ */
 #endif
 
 /* The state buf must be large enough to hold one state per character in the main buffer.
@@ -187,7 +178,7 @@
 #define EOB_ACT_LAST_MATCH 2
 
     #define YY_LESS_LINENO(n)
-
+    
 /* Return all but the first "n" matched characters back to the input stream. */
 #define yyless(n) \
 	do \
@@ -249,7 +240,7 @@
 
     int yy_bs_lineno; /**< The line count. */
     int yy_bs_column; /**< The column count. */
-
+    
 	/* Whether to try to fill the input buffer when we reach the
 	 * end of it.
 	 */
@@ -828,8 +819,6 @@
  * bison-locations is probably not needed.
  */
 #line 71 "ael.flex"
-#include "asterisk.h"
-
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <unistd.h>
@@ -967,7 +956,7 @@
 #define	STORE_POS
 #define	STORE_LOC
 #endif
-#line 963 "ael_lex.c"
+#line 957 "ael_lex.c"
 
 #define INITIAL 0
 #define paren 1
@@ -1033,9 +1022,9 @@
     /* This must go here because YYSTYPE and YYLTYPE are included
      * from bison output in section 1.*/
     #    define yylval yyg->yylval_r
-
+    
     #    define yylloc yyg->yylloc_r
-
+    
 int ael_yylex_init (yyscan_t* scanner);
 
 int ael_yylex_init_extra (YY_EXTRA_TYPE user_defined,yyscan_t* scanner);
@@ -1074,9 +1063,9 @@
 void ael_yyset_lval (YYSTYPE * yylval_param ,yyscan_t yyscanner );
 
        YYLTYPE *ael_yyget_lloc (yyscan_t yyscanner );
-
+    
         void ael_yyset_lloc (YYLTYPE * yylloc_param ,yyscan_t yyscanner );
-
+    
 /* Macros after this point can all be overridden by user definitions in
  * section 1.
  */
@@ -1090,7 +1079,7 @@
 #endif
 
     static void yyunput (int c,char *buf_ptr  ,yyscan_t yyscanner);
-
+    
 #ifndef yytext_ptr
 static void yy_flex_strncpy (char *,yyconst char *,int ,yyscan_t yyscanner);
 #endif
@@ -1111,12 +1100,7 @@
 
 /* Amount of stuff to slurp up with each read. */
 #ifndef YY_READ_BUF_SIZE
-#ifdef __ia64__
-/* On IA-64, the buffer size is 16k, not 8k */
-#define YY_READ_BUF_SIZE 16384
-#else
 #define YY_READ_BUF_SIZE 8192
-#endif /* __ia64__ */
 #endif
 
 /* Copy whatever the last rule matched to the standard output. */
@@ -1124,7 +1108,7 @@
 /* This used to be an fputs(), but since the string might contain NUL's,
  * we now use fwrite().
  */
-#define ECHO do { if (fwrite( yytext, yyleng, 1, yyout )) {} } while (0)
+#define ECHO fwrite( yytext, yyleng, 1, yyout )
 #endif
 
 /* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
@@ -1135,7 +1119,7 @@
 	if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
 		{ \
 		int c = '*'; \
-		size_t n; \
+		int n; \
 		for ( n = 0; n < max_size && \
 			     (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
 			buf[n] = (char) c; \
@@ -1220,10 +1204,10 @@
 	register int yy_act;
     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
 
-#line 217 "ael.flex"
+#line 220 "ael.flex"
 
 
-#line 1219 "ael_lex.c"
+#line 1208 "ael_lex.c"
 
     yylval = yylval_param;
 
@@ -1314,260 +1298,260 @@
 
 case 1:
 YY_RULE_SETUP
-#line 219 "ael.flex"
+#line 222 "ael.flex"
 { STORE_POS; return LC;}
 	YY_BREAK
 case 2:
 YY_RULE_SETUP
-#line 220 "ael.flex"
+#line 223 "ael.flex"
 { STORE_POS; return RC;}
 	YY_BREAK
 case 3:
 YY_RULE_SETUP
-#line 221 "ael.flex"
+#line 224 "ael.flex"
 { STORE_POS; return LP;}
 	YY_BREAK
 case 4:
 YY_RULE_SETUP
-#line 222 "ael.flex"
+#line 225 "ael.flex"
 { STORE_POS; return RP;}
 	YY_BREAK
 case 5:
 YY_RULE_SETUP
-#line 223 "ael.flex"
+#line 226 "ael.flex"
 { STORE_POS; return SEMI;}
 	YY_BREAK
 case 6:
 YY_RULE_SETUP
-#line 224 "ael.flex"
+#line 227 "ael.flex"
 { STORE_POS; return EQ;}
 	YY_BREAK
 case 7:
 YY_RULE_SETUP
-#line 225 "ael.flex"
+#line 228 "ael.flex"
 { STORE_POS; return COMMA;}
 	YY_BREAK
 case 8:
 YY_RULE_SETUP
-#line 226 "ael.flex"
+#line 229 "ael.flex"
 { STORE_POS; return COLON;}
 	YY_BREAK
 case 9:
 YY_RULE_SETUP
-#line 227 "ael.flex"
+#line 230 "ael.flex"
 { STORE_POS; return AMPER;}
 	YY_BREAK
 case 10:
 YY_RULE_SETUP
-#line 228 "ael.flex"
+#line 231 "ael.flex"
 { STORE_POS; return BAR;}
 	YY_BREAK
 case 11:
 YY_RULE_SETUP
-#line 229 "ael.flex"
+#line 232 "ael.flex"
 { STORE_POS; return EXTENMARK;}
 	YY_BREAK
 case 12:
 YY_RULE_SETUP
-#line 230 "ael.flex"
+#line 233 "ael.flex"
 { STORE_POS; return AT;}
 	YY_BREAK
 case 13:
 YY_RULE_SETUP
-#line 231 "ael.flex"
+#line 234 "ael.flex"
 {/*comment*/}
 	YY_BREAK
 case 14:
 YY_RULE_SETUP
-#line 232 "ael.flex"
+#line 235 "ael.flex"
 { STORE_POS; return KW_CONTEXT;}
 	YY_BREAK
 case 15:
 YY_RULE_SETUP
-#line 233 "ael.flex"
+#line 236 "ael.flex"
 { STORE_POS; return KW_ABSTRACT;}
 	YY_BREAK
 case 16:
 YY_RULE_SETUP
-#line 234 "ael.flex"
+#line 237 "ael.flex"
 { STORE_POS; return KW_EXTEND;}
 	YY_BREAK
 case 17:
 YY_RULE_SETUP
-#line 235 "ael.flex"
+#line 238 "ael.flex"
 { STORE_POS; return KW_MACRO;};
 	YY_BREAK
 case 18:
 YY_RULE_SETUP
-#line 236 "ael.flex"
+#line 239 "ael.flex"
 { STORE_POS; return KW_GLOBALS;}
 	YY_BREAK
 case 19:
 YY_RULE_SETUP
-#line 237 "ael.flex"
+#line 240 "ael.flex"
 { STORE_POS; return KW_LOCAL;}
 	YY_BREAK
 case 20:
 YY_RULE_SETUP
-#line 238 "ael.flex"
+#line 241 "ael.flex"
 { STORE_POS; return KW_IGNOREPAT;}
 	YY_BREAK
 case 21:
 YY_RULE_SETUP
-#line 239 "ael.flex"
+#line 242 "ael.flex"
 { STORE_POS; return KW_SWITCH;}
 	YY_BREAK
 case 22:
 YY_RULE_SETUP
-#line 240 "ael.flex"
+#line 243 "ael.flex"
 { STORE_POS; return KW_IF;}
 	YY_BREAK
 case 23:
 YY_RULE_SETUP
-#line 241 "ael.flex"
+#line 244 "ael.flex"
 { STORE_POS; return KW_IFTIME;}
 	YY_BREAK
 case 24:
 YY_RULE_SETUP
-#line 242 "ael.flex"
+#line 245 "ael.flex"
 { STORE_POS; return KW_RANDOM;}
 	YY_BREAK
 case 25:
 YY_RULE_SETUP
-#line 243 "ael.flex"
+#line 246 "ael.flex"
 { STORE_POS; return KW_REGEXTEN;}
 	YY_BREAK
 case 26:
 YY_RULE_SETUP
-#line 244 "ael.flex"
+#line 247 "ael.flex"
 { STORE_POS; return KW_HINT;}
 	YY_BREAK
 case 27:
 YY_RULE_SETUP
-#line 245 "ael.flex"
+#line 248 "ael.flex"
 { STORE_POS; return KW_ELSE;}
 	YY_BREAK
 case 28:
 YY_RULE_SETUP
-#line 246 "ael.flex"
+#line 249 "ael.flex"
 { STORE_POS; return KW_GOTO;}
 	YY_BREAK
 case 29:
 YY_RULE_SETUP
-#line 247 "ael.flex"
+#line 250 "ael.flex"
 { STORE_POS; return KW_JUMP;}
 	YY_BREAK
 case 30:
 YY_RULE_SETUP
-#line 248 "ael.flex"
+#line 251 "ael.flex"
 { STORE_POS; return KW_RETURN;}
 	YY_BREAK
 case 31:
 YY_RULE_SETUP
-#line 249 "ael.flex"
+#line 252 "ael.flex"
 { STORE_POS; return KW_BREAK;}
 	YY_BREAK
 case 32:
 YY_RULE_SETUP
-#line 250 "ael.flex"
+#line 253 "ael.flex"
 { STORE_POS; return KW_CONTINUE;}
 	YY_BREAK
 case 33:
 YY_RULE_SETUP
-#line 251 "ael.flex"
+#line 254 "ael.flex"
 { STORE_POS; return KW_FOR;}
 	YY_BREAK
 case 34:
 YY_RULE_SETUP
-#line 252 "ael.flex"
+#line 255 "ael.flex"
 { STORE_POS; return KW_WHILE;}
 	YY_BREAK
 case 35:
 YY_RULE_SETUP
-#line 253 "ael.flex"
+#line 256 "ael.flex"
 { STORE_POS; return KW_CASE;}
 	YY_BREAK
 case 36:
 YY_RULE_SETUP
-#line 254 "ael.flex"
+#line 257 "ael.flex"
 { STORE_POS; return KW_DEFAULT;}
 	YY_BREAK
 case 37:
 YY_RULE_SETUP
-#line 255 "ael.flex"
+#line 258 "ael.flex"
 { STORE_POS; return KW_PATTERN;}
 	YY_BREAK
 case 38:
 YY_RULE_SETUP
-#line 256 "ael.flex"
+#line 259 "ael.flex"
 { STORE_POS; return KW_CATCH;}
 	YY_BREAK
 case 39:
 YY_RULE_SETUP
-#line 257 "ael.flex"
+#line 260 "ael.flex"
 { STORE_POS; return KW_SWITCHES;}
 	YY_BREAK
 case 40:
 YY_RULE_SETUP
-#line 258 "ael.flex"
+#line 261 "ael.flex"
 { STORE_POS; return KW_ESWITCHES;}
 	YY_BREAK
 case 41:
 YY_RULE_SETUP
-#line 259 "ael.flex"
+#line 262 "ael.flex"
 { STORE_POS; return KW_INCLUDES;}
 	YY_BREAK
 case 42:
 YY_RULE_SETUP
-#line 260 "ael.flex"
+#line 263 "ael.flex"
 { BEGIN(comment); my_col += 2; }
 	YY_BREAK
 case 43:
 YY_RULE_SETUP
-#line 262 "ael.flex"
+#line 265 "ael.flex"
 { my_col += yyleng; }
 	YY_BREAK
 case 44:
 /* rule 44 can match eol */
 YY_RULE_SETUP
-#line 263 "ael.flex"
+#line 266 "ael.flex"
 { ++my_lineno; my_col=1;}
 	YY_BREAK
 case 45:
 YY_RULE_SETUP
-#line 264 "ael.flex"
+#line 267 "ael.flex"
 { my_col += yyleng; }
 	YY_BREAK
 case 46:
 /* rule 46 can match eol */
 YY_RULE_SETUP
-#line 265 "ael.flex"
+#line 268 "ael.flex"
 { ++my_lineno; my_col=1;}
 	YY_BREAK
 case 47:
 YY_RULE_SETUP
-#line 266 "ael.flex"
+#line 269 "ael.flex"
 { my_col += 2; BEGIN(INITIAL); } /* the nice thing about comments is that you know exactly what ends them */
 	YY_BREAK
 case 48:
 /* rule 48 can match eol */
 YY_RULE_SETUP
-#line 268 "ael.flex"
+#line 271 "ael.flex"
 { my_lineno++; my_col = 1; }
 	YY_BREAK
 case 49:
 YY_RULE_SETUP
-#line 269 "ael.flex"
+#line 272 "ael.flex"
 { my_col += yyleng; }
 	YY_BREAK
 case 50:
 YY_RULE_SETUP
-#line 270 "ael.flex"
+#line 273 "ael.flex"
 { my_col += (yyleng*8)-(my_col%8); }
 	YY_BREAK
 case 51:
 YY_RULE_SETUP
-#line 272 "ael.flex"
+#line 275 "ael.flex"
 {
       /* boy did I open a can of worms when I changed the lexical token "word".
   	  	 all the above keywords can be used as a beginning to a "word".-
@@ -1596,22 +1580,22 @@
 	YY_BREAK
 case 52:
 YY_RULE_SETUP
-#line 298 "ael.flex"
+#line 301 "ael.flex"
 { yymore(); /* Keep going */ }
 	YY_BREAK
 case 53:
 YY_RULE_SETUP
-#line 299 "ael.flex"
+#line 302 "ael.flex"
 { yymore(); /* Keep going */ }
 	YY_BREAK
 case 54:
 YY_RULE_SETUP
-#line 300 "ael.flex"
+#line 303 "ael.flex"
 { yymore(); /* Keep Going */ }
 	YY_BREAK
 case 55:
 YY_RULE_SETUP
-#line 301 "ael.flex"
+#line 304 "ael.flex"
 { /* the beginning of a ${} construct. prepare and pop into curlystate */
 	   	parencount2 = 0;
 		pbcpos2 = 0;
@@ -1622,7 +1606,7 @@
 	YY_BREAK
 case 56:
 YY_RULE_SETUP
-#line 308 "ael.flex"
+#line 311 "ael.flex"
 { /* the beginning of a $[] construct. prepare and pop into brackstate */
 	   	parencount3 = 0;
 		pbcpos3 = 0;
@@ -1634,7 +1618,7 @@
 case 57:
 /* rule 57 can match eol */
 YY_RULE_SETUP
-#line 315 "ael.flex"
+#line 318 "ael.flex"
 {
 		/* a non-word constituent char, like a space, tab, curly, paren, etc */
 		char c = yytext[yyleng-1];
@@ -1650,7 +1634,7 @@
 case 58:
 /* rule 58 can match eol */
 YY_RULE_SETUP
-#line 328 "ael.flex"
+#line 331 "ael.flex"
 {
 		if ( pbcpop2('}') ) {	/* error */
 			STORE_LOC;
@@ -1673,7 +1657,7 @@
 case 59:
 /* rule 59 can match eol */
 YY_RULE_SETUP
-#line 347 "ael.flex"
+#line 350 "ael.flex"
 {
 		char c = yytext[yyleng-1];
 		if (c == '{')
@@ -1685,7 +1669,7 @@
 case 60:
 /* rule 60 can match eol */
 YY_RULE_SETUP
-#line 355 "ael.flex"
+#line 358 "ael.flex"
 {
 		char c = yytext[yyleng-1];
 		if ( pbcpop2(c))  { /* error */
@@ -1704,7 +1688,7 @@
 case 61:
 /* rule 61 can match eol */
 YY_RULE_SETUP
-#line 371 "ael.flex"
+#line 374 "ael.flex"
 {
 		if ( pbcpop3(']') ) {	/* error */
 			STORE_LOC;
@@ -1727,7 +1711,7 @@
 case 62:
 /* rule 62 can match eol */
 YY_RULE_SETUP
-#line 390 "ael.flex"
+#line 393 "ael.flex"
 {
 		char c = yytext[yyleng-1];
 		if (c == '[')
@@ -1739,7 +1723,7 @@
 case 63:
 /* rule 63 can match eol */
 YY_RULE_SETUP
-#line 398 "ael.flex"
+#line 401 "ael.flex"
 {
 		char c = yytext[yyleng-1];
 		if ( pbcpop3(c))  { /* error */
@@ -1765,7 +1749,7 @@
 case 64:
 /* rule 64 can match eol */
 YY_RULE_SETUP
-#line 421 "ael.flex"
+#line 424 "ael.flex"
 {
 		if ( pbcpop(')') ) {	/* error */
 			STORE_LOC;
@@ -1794,7 +1778,7 @@
 case 65:
 /* rule 65 can match eol */
 YY_RULE_SETUP
-#line 446 "ael.flex"
+#line 449 "ael.flex"
 {
 		char c = yytext[yyleng-1];
 		if (c == '(')
@@ -1806,7 +1790,7 @@
 case 66:
 /* rule 66 can match eol */
 YY_RULE_SETUP
-#line 454 "ael.flex"
+#line 457 "ael.flex"
 {
 		char c = yytext[yyleng-1];
 		if ( pbcpop(c))  { /* error */
@@ -1833,7 +1817,7 @@
 case 67:
 /* rule 67 can match eol */
 YY_RULE_SETUP
-#line 478 "ael.flex"
+#line 481 "ael.flex"
 {
 		char c = yytext[yyleng-1];
 		if (c == '(')
@@ -1845,7 +1829,7 @@
 case 68:
 /* rule 68 can match eol */
 YY_RULE_SETUP
-#line 486 "ael.flex"
+#line 489 "ael.flex"
 {
 		if ( pbcpop(')') ) { /* error */
 			STORE_LOC;
@@ -1876,7 +1860,7 @@
 case 69:
 /* rule 69 can match eol */
 YY_RULE_SETUP
-#line 513 "ael.flex"
+#line 516 "ael.flex"
 {
 		if( parencount != 0) { /* ast_log(LOG_NOTICE,"Folding in a comma!\n"); */
 			yymore();
@@ -1895,7 +1879,7 @@
 case 70:
 /* rule 70 can match eol */
 YY_RULE_SETUP
-#line 528 "ael.flex"
+#line 531 "ael.flex"
 {
 		char c = yytext[yyleng-1];
 		if ( pbcpop(c) ) { /* error */
@@ -1918,7 +1902,7 @@
 case 71:
 /* rule 71 can match eol */
 YY_RULE_SETUP
-#line 547 "ael.flex"
+#line 550 "ael.flex"
 {
 		char c = yytext[yyleng-1];
 		yymore();
@@ -1928,7 +1912,7 @@
 case 72:
 /* rule 72 can match eol */
 YY_RULE_SETUP
-#line 553 "ael.flex"
+#line 556 "ael.flex"
 {
 		char c = yytext[yyleng-1];
 		if ( pbcpop(c) ) { /* error */
@@ -1946,7 +1930,7 @@
 case 73:
 /* rule 73 can match eol */
 YY_RULE_SETUP
-#line 567 "ael.flex"
+#line 570 "ael.flex"
 {
 		STORE_LOC;
 		yylval->str = malloc(yyleng);
@@ -1960,7 +1944,7 @@
 case 74:
 /* rule 74 can match eol */
 YY_RULE_SETUP
-#line 577 "ael.flex"
+#line 580 "ael.flex"
 {
 		char fnamebuf[1024],*p1,*p2;
 		int glob_ret;
@@ -2013,7 +1997,7 @@
 case YY_STATE_EOF(curlystate):
 case YY_STATE_EOF(wordstate):
 case YY_STATE_EOF(brackstate):
-#line 622 "ael.flex"
+#line 625 "ael.flex"
 {
 		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) {
@@ -2049,15 +2033,15 @@
 case 75:
 /* rule 75 can match eol */
 YY_RULE_SETUP
-#line 654 "ael.flex"
+#line 657 "ael.flex"
 { /* default rule */ ast_log(LOG_ERROR,"Unhandled char(s): %s\n", yytext); }
 	YY_BREAK
 case 76:
 YY_RULE_SETUP
-#line 656 "ael.flex"
+#line 659 "ael.flex"
 YY_FATAL_ERROR( "flex scanner jammed" );
 	YY_BREAK
-#line 2053 "ael_lex.c"
+#line 2042 "ael_lex.c"
 
 	case YY_END_OF_BUFFER:
 		{
@@ -2574,7 +2558,7 @@
     YY_BUFFER_STATE ael_yy_create_buffer  (FILE * file, int  size , yyscan_t yyscanner)
 {
 	YY_BUFFER_STATE b;
-
+    
 	b = (YY_BUFFER_STATE) ael_yyalloc(sizeof( struct yy_buffer_state ) ,yyscanner );
 	if ( ! b )
 		YY_FATAL_ERROR( "out of dynamic memory in ael_yy_create_buffer()" );
@@ -2618,7 +2602,7 @@
 #ifndef __cplusplus
 extern int isatty (int );
 #endif /* __cplusplus */
-
+    
 /* Initializes or reinitializes a buffer.
  * This function is sometimes called more than once on the same buffer,
  * such as during a ael_yyrestart() or at EOF.
@@ -2644,7 +2628,7 @@
     }
 
         b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
-
+    
 	errno = oerrno;
 }
 
@@ -2750,9 +2734,9 @@
 								, yyscanner);
 		if ( ! yyg->yy_buffer_stack )
 			YY_FATAL_ERROR( "out of dynamic memory in ael_yyensure_buffer_stack()" );
-
+								  
 		memset(yyg->yy_buffer_stack, 0, num_to_alloc * sizeof(struct yy_buffer_state*));
-
+				
 		yyg->yy_buffer_stack_max = num_to_alloc;
 		yyg->yy_buffer_stack_top = 0;
 		return;
@@ -2781,12 +2765,12 @@
  * @param base the character buffer
  * @param size the size in bytes of the character buffer
  * @param yyscanner The scanner object.
- * @return the newly allocated buffer state object.
+ * @return the newly allocated buffer state object. 
  */
 YY_BUFFER_STATE ael_yy_scan_buffer  (char * base, yy_size_t  size , yyscan_t yyscanner)
 {
 	YY_BUFFER_STATE b;
-
+    
 	if ( size < 2 ||
 	     base[size-2] != YY_END_OF_BUFFER_CHAR ||
 	     base[size-1] != YY_END_OF_BUFFER_CHAR )
@@ -2822,14 +2806,14 @@
  */
 YY_BUFFER_STATE ael_yy_scan_string (yyconst char * yystr , yyscan_t yyscanner)
 {
-
+    
 	return ael_yy_scan_bytes(yystr,strlen(yystr) ,yyscanner);
 }
 
 /** Setup the input buffer state to scan the given bytes. The next call to ael_yylex() will
  * scan from a @e copy of @a bytes.
- * @param yybytes the byte buffer to scan
- * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes.
+ * @param bytes the byte buffer to scan
+ * @param len the number of bytes in the buffer pointed to by @a bytes.
  * @param yyscanner The scanner object.
  * @return the newly allocated buffer state object.
  */
@@ -2839,7 +2823,7 @@
 	char *buf;
 	yy_size_t n;
 	int i;
-
+    
 	/* Get memory for full buffer, including space for trailing EOB's. */
 	n = _yybytes_len + 2;
 	buf = (char *) ael_yyalloc(n ,yyscanner );
@@ -2907,10 +2891,10 @@
 int ael_yyget_lineno  (yyscan_t yyscanner)
 {
     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
-
+    
         if (! YY_CURRENT_BUFFER)
             return 0;
-
+    
     return yylineno;
 }
 
@@ -2920,10 +2904,10 @@
 int ael_yyget_column  (yyscan_t yyscanner)
 {
     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
-
+    
         if (! YY_CURRENT_BUFFER)
             return 0;
-
+    
     return yycolumn;
 }
 
@@ -2984,13 +2968,13 @@
 
         /* lineno is only valid if an input buffer exists. */
         if (! YY_CURRENT_BUFFER )
-           yy_fatal_error( "ael_yyset_lineno called with no buffer" , yyscanner);
-
+           yy_fatal_error( "ael_yyset_lineno called with no buffer" , yyscanner); 
+    
     yylineno = line_number;
 }
 
 /** Set the current column.
- * @param column_no
+ * @param line_number
  * @param yyscanner The scanner object.
  */
 void ael_yyset_column (int  column_no , yyscan_t yyscanner)
@@ -2999,8 +2983,8 @@
 
         /* column is only valid if an input buffer exists. */
         if (! YY_CURRENT_BUFFER )
-           yy_fatal_error( "ael_yyset_column called with no buffer" , yyscanner);
-
+           yy_fatal_error( "ael_yyset_column called with no buffer" , yyscanner); 
+    
     yycolumn = column_no;
 }
 
@@ -3053,13 +3037,13 @@
     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
     return yylloc;
 }
-
+    
 void ael_yyset_lloc (YYLTYPE *  yylloc_param , yyscan_t yyscanner)
 {
     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
     yylloc = yylloc_param;
 }
-
+    
 /* User-visible API */
 
 /* ael_yylex_init is special because it creates the scanner itself, so it is
@@ -3107,20 +3091,20 @@
         errno = EINVAL;
         return 1;
     }
-
+	
     *ptr_yy_globals = (yyscan_t) ael_yyalloc ( sizeof( struct yyguts_t ), &dummy_yyguts );
-
+	
     if (*ptr_yy_globals == NULL){
         errno = ENOMEM;
         return 1;
     }
-
+    
     /* By setting to 0xAA, we expose bugs in
     yy_init_globals. Leave at 0x00 for releases. */
     memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t));
-
+    
     ael_yyset_extra (yy_user_defined, *ptr_yy_globals);
-
+    
     return yy_init_globals ( *ptr_yy_globals );
 }
 
@@ -3230,7 +3214,7 @@
 
 #define YYTABLES_NAME "yytables"
 
-#line 656 "ael.flex"
+#line 659 "ael.flex"
 
 
 
@@ -3492,3 +3476,4 @@
 		}
 	}
 }
+

-- 
To view, visit https://gerrit.asterisk.org/c/asterisk/+/20022
To unsubscribe, or for help writing mail filters, visit https://gerrit.asterisk.org/settings

Gerrit-Project: asterisk
Gerrit-Branch: 20
Gerrit-Change-Id: Ibbd343606fcf5c0d285b1599e6e8e59f514f2e4e
Gerrit-Change-Number: 20022
Gerrit-PatchSet: 2
Gerrit-Owner: Sean Bright <sean at seanbright.com>
Gerrit-Reviewer: Friendly Automation
Gerrit-Reviewer: George Joseph <gjoseph at digium.com>
Gerrit-Reviewer: Joshua Colp <jcolp at sangoma.com>
Gerrit-MessageType: merged
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.digium.com/pipermail/asterisk-code-review/attachments/20230403/9fe71e9e/attachment-0001.html>


More information about the asterisk-code-review mailing list