mirror of
				https://github.com/asterisk/asterisk.git
				synced 2025-10-31 02:37:10 +00:00 
			
		
		
		
	(closes issue #12467)
Reported by: atis Tested by: murf This upgrade adds the ~~ (concatenation) string operator to expr2. While not needed in normal runtime pbx operation, it is needed when raw exprs are being syntax checked. This plays into future syntax- unification plans. By permission of atis, this addition in trunk and the reason of why things are as they are will suffice to close this bug. I also added a short note about the previous addition of "sip show sched" to the CLI in CHANGES, which I discovered I forgot in a previous commit. git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@114423 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
		
							
								
								
									
										15
									
								
								CHANGES
									
									
									
									
									
								
							
							
						
						
									
										15
									
								
								CHANGES
									
									
									
									
									
								
							| @@ -167,6 +167,10 @@ CLI Changes | ||||
|   * Added a CLI command, "devstate change", which allows you to set custom device | ||||
|      states from the func_devstate module that provides the DEVICE_STATE() function | ||||
|      and handling of the "Custom:" devices. | ||||
|   * New CLI command: "sip show sched" which shows all ast_sched entries for sip, | ||||
|     sorted into the different possible callbacks, with the number of entries | ||||
|     currently scheduled for each. Gives you a feel for how busy the sip channel | ||||
|     driver is. | ||||
|  | ||||
| SIP changes | ||||
| ----------- | ||||
| @@ -500,6 +504,17 @@ AEL Changes | ||||
|      first pass at conversion. | ||||
|   * aelparse will now read extensions.conf to see if a referenced | ||||
|      macro or context is there before issueing a warning. | ||||
|   * AEL parser sets a local channel variable ~~EXTEN~~, to  | ||||
|     preserve the value of ${EXTEN} thru switch statements. | ||||
|   * New operator in $[...] expressions: the ~~ operator serves | ||||
|     as a concatenation operator. AT THE MOMENT, it is really only | ||||
|     necessary and useful in AEL, especially in if() expressions. | ||||
|     Operation: ${a} ~~ ${b|  with force both a and b to strings, strip  | ||||
|     any enclosing double-quotes, and evaluate to the value of a | ||||
|     concatenated with the value of b.  For example if a is set to | ||||
|     "xyz"  and b has the value "abc", then ${a} ~~ ${b| would | ||||
|     evaluate to xyzabc . | ||||
|  | ||||
|  | ||||
| Call Features (res_features) Changes | ||||
| ------------------------------------ | ||||
|   | ||||
| @@ -38,7 +38,7 @@ AEL is really the merger of 4 different 'languages', or syntaxes: | ||||
|       language, that AEL will compile into. | ||||
| \end{itemize} | ||||
|  | ||||
| Any programmer of AEL should be familiar with it's syntax, of course, | ||||
| Any programmer of AEL should be familiar with its syntax, of course, | ||||
| as well as the Expression syntax, and the Variable syntax. | ||||
|  | ||||
|  | ||||
| @@ -114,9 +114,9 @@ the Asterisk environment! | ||||
|  | ||||
| \section{Getting Started} | ||||
|  | ||||
| The AEL parser (pbx\_ael.so) is completely separate from the module | ||||
| The AEL parser (res\_ael.so) is completely separate from the module | ||||
| that parses extensions.conf (pbx\_config.so). To use AEL, the only | ||||
| thing that has to be done is the module pbx\_ael.so must be loaded by | ||||
| thing that has to be done is the module res\_ael.so must be loaded by | ||||
| Asterisk. This will be done automatically if using 'autoload=yes' in | ||||
| \path{/etc/asterisk/modules.conf}. When the module is loaded, it will look | ||||
| for 'extensions.ael' in \path{/etc/asterisk/}. extensions.conf and | ||||
|   | ||||
| @@ -302,6 +302,27 @@ with equal precedence are grouped within \{ \} symbols. | ||||
|        will be the result of the "evaluation" of this | ||||
|        expression.  expr3 will be the result otherwise. This | ||||
|        operator has the lowest precedence. | ||||
|  | ||||
|    \item \verb!expr1 ~~ expr2! | ||||
|  | ||||
| 	Concatenation operator. The two exprs are evaluated and | ||||
| 	turned into strings, stripped of surrounding double quotes, | ||||
|         and are turned into a single string with no invtervening spaces.  | ||||
|         This operator is new to trunk after 1.6.0; it is not needed  | ||||
| 	in existing extensions.conf code. Because of the way asterisk | ||||
| 	evaluates ${ } and $[ ] constructs (recursively, bottom- | ||||
| 	up), no $[] or ${} is ever present when the contents | ||||
| 	of a ${} or $[] is evaluated. Thus, tokens are usually | ||||
| 	already merged at evaluation time. But, in AEL, various | ||||
| 	exprs are evaluated raw, and ${} and $[] are gathered | ||||
| 	and treated as tokens. And in AEL, no two tokens can | ||||
| 	sit side by side without an intervening operator. | ||||
| 	So, in AEL, concatenation must be explicitly specified | ||||
| 	in expressions. This new operator will play well into | ||||
| 	future plans, where expressions ($[] constructs, and | ||||
| 	variable references (${} constructs) are merged into a  | ||||
| 	single grammar.  | ||||
|  | ||||
| \end{itemize} | ||||
|  | ||||
| Parentheses are used for grouping in the usual manner. | ||||
|   | ||||
							
								
								
									
										435
									
								
								main/ast_expr2.c
									
									
									
									
									
								
							
							
						
						
									
										435
									
								
								main/ast_expr2.c
									
									
									
									
									
								
							| @@ -1,7 +1,9 @@ | ||||
| /* A Bison parser, made by GNU Bison 2.1a.  */ | ||||
| /* A Bison parser, made by GNU Bison 2.3.  */ | ||||
|  | ||||
| /* Skeleton parser for Yacc-like parsing with Bison, | ||||
|    Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. | ||||
| /* 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 | ||||
| @@ -18,10 +20,18 @@ | ||||
|    Foundation, Inc., 51 Franklin Street, Fifth Floor, | ||||
|    Boston, MA 02110-1301, USA.  */ | ||||
|  | ||||
| /* As a special exception, when this file is copied by Bison into a | ||||
|    Bison output file, you may use that output file without restriction. | ||||
|    This special exception was added by the Free Software Foundation | ||||
|    in version 1.24 of Bison.  */ | ||||
| /* As a special exception, you may create a larger work that contains | ||||
|    part or all of the Bison parser skeleton and distribute that work | ||||
|    under terms of your choice, so long as that work isn't itself a | ||||
|    parser generator using the skeleton or a modified version thereof | ||||
|    as a parser skeleton.  Alternatively, if you modify or redistribute | ||||
|    the parser skeleton itself, you may (at your option) remove this | ||||
|    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.  */ | ||||
|  | ||||
| /* C LALR(1) parser skeleton written by Richard Stallman, by | ||||
|    simplifying the original so-called "semantic" parser.  */ | ||||
| @@ -37,7 +47,7 @@ | ||||
| #define YYBISON 1 | ||||
|  | ||||
| /* Bison version.  */ | ||||
| #define YYBISON_VERSION "2.1a" | ||||
| #define YYBISON_VERSION "2.3" | ||||
|  | ||||
| /* Skeleton name.  */ | ||||
| #define YYSKELETON_NAME "yacc.c" | ||||
| @@ -81,11 +91,12 @@ | ||||
|      TOK_DIV = 272, | ||||
|      TOK_MULT = 273, | ||||
|      TOK_COMPL = 274, | ||||
|      TOK_EQTILDE = 275, | ||||
|      TOK_COLON = 276, | ||||
|      TOK_LP = 277, | ||||
|      TOK_RP = 278, | ||||
|      TOKEN = 279 | ||||
|      TOK_TILDETILDE = 275, | ||||
|      TOK_EQTILDE = 276, | ||||
|      TOK_COLON = 277, | ||||
|      TOK_LP = 278, | ||||
|      TOK_RP = 279, | ||||
|      TOKEN = 280 | ||||
|    }; | ||||
| #endif | ||||
| /* Tokens.  */ | ||||
| @@ -106,11 +117,12 @@ | ||||
| #define TOK_DIV 272 | ||||
| #define TOK_MULT 273 | ||||
| #define TOK_COMPL 274 | ||||
| #define TOK_EQTILDE 275 | ||||
| #define TOK_COLON 276 | ||||
| #define TOK_LP 277 | ||||
| #define TOK_RP 278 | ||||
| #define TOKEN 279 | ||||
| #define TOK_TILDETILDE 275 | ||||
| #define TOK_EQTILDE 276 | ||||
| #define TOK_COLON 277 | ||||
| #define TOK_LP 278 | ||||
| #define TOK_RP 279 | ||||
| #define TOKEN 280 | ||||
|  | ||||
|  | ||||
|  | ||||
| @@ -403,6 +415,7 @@ static struct val	*make_str __P((const char *)); | ||||
| static struct val	*op_and __P((struct val *, struct val *)); | ||||
| static struct val	*op_colon __P((struct val *, struct val *)); | ||||
| static struct val	*op_eqtilde __P((struct val *, struct val *)); | ||||
| static struct val	*op_tildetilde __P((struct val *, struct val *)); | ||||
| static struct val	*op_div __P((struct val *, struct val *)); | ||||
| static struct val	*op_eq __P((struct val *, struct val *)); | ||||
| static struct val	*op_ge __P((struct val *, struct val *)); | ||||
| @@ -470,13 +483,13 @@ int		ast_yyerror(const char *,YYLTYPE *, struct parse_io *); | ||||
|  | ||||
| #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED | ||||
| typedef union YYSTYPE | ||||
| #line 341 "ast_expr2.y" | ||||
| #line 342 "ast_expr2.y" | ||||
| { | ||||
| 	struct val *val; | ||||
| 	struct expr_node *arglist; | ||||
| } | ||||
| /* Line 198 of yacc.c.  */ | ||||
| #line 480 "ast_expr2.c" | ||||
| /* Line 187 of yacc.c.  */ | ||||
| #line 493 "ast_expr2.c" | ||||
| 	YYSTYPE; | ||||
| # define yystype YYSTYPE /* obsolescent; will be withdrawn */ | ||||
| # define YYSTYPE_IS_DECLARED 1 | ||||
| @@ -498,13 +511,13 @@ typedef struct YYLTYPE | ||||
|  | ||||
|  | ||||
| /* Copy the second part of user declarations.  */ | ||||
| #line 346 "ast_expr2.y" | ||||
| #line 347 "ast_expr2.y" | ||||
|  | ||||
| extern int		ast_yylex __P((YYSTYPE *, YYLTYPE *, yyscan_t)); | ||||
|  | ||||
|  | ||||
| /* Line 221 of yacc.c.  */ | ||||
| #line 508 "ast_expr2.c" | ||||
| /* Line 216 of yacc.c.  */ | ||||
| #line 521 "ast_expr2.c" | ||||
|  | ||||
| #ifdef short | ||||
| # undef short | ||||
| @@ -634,8 +647,13 @@ YYID (i) | ||||
| #  ifndef YYSTACK_ALLOC_MAXIMUM | ||||
| #   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM | ||||
| #  endif | ||||
| #  ifdef __cplusplus | ||||
| extern "C" { | ||||
| #  if (defined __cplusplus && ! defined _STDLIB_H \ | ||||
|        && ! ((defined YYMALLOC || defined malloc) \ | ||||
| 	     && (defined YYFREE || defined free))) | ||||
| #   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */ | ||||
| #   ifndef _STDLIB_H | ||||
| #    define _STDLIB_H 1 | ||||
| #   endif | ||||
| #  endif | ||||
| #  ifndef YYMALLOC | ||||
| #   define YYMALLOC malloc | ||||
| @@ -651,9 +669,6 @@ void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ | ||||
| void free (void *); /* INFRINGES ON USER NAME SPACE */ | ||||
| #   endif | ||||
| #  endif | ||||
| #  ifdef __cplusplus | ||||
| } | ||||
| #  endif | ||||
| # endif | ||||
| #endif /* ! defined yyoverflow || YYERROR_VERBOSE */ | ||||
|  | ||||
| @@ -719,20 +734,20 @@ union yyalloc | ||||
| /* YYFINAL -- State number of the termination state.  */ | ||||
| #define YYFINAL  11 | ||||
| /* YYLAST -- Last index in YYTABLE.  */ | ||||
| #define YYLAST   150 | ||||
| #define YYLAST   159 | ||||
|  | ||||
| /* YYNTOKENS -- Number of terminals.  */ | ||||
| #define YYNTOKENS  25 | ||||
| #define YYNTOKENS  26 | ||||
| /* YYNNTS -- Number of nonterminals.  */ | ||||
| #define YYNNTS  4 | ||||
| /* YYNRULES -- Number of rules.  */ | ||||
| #define YYNRULES  26 | ||||
| #define YYNRULES  27 | ||||
| /* YYNRULES -- Number of states.  */ | ||||
| #define YYNSTATES  52 | ||||
| #define YYNSTATES  54 | ||||
|  | ||||
| /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */ | ||||
| #define YYUNDEFTOK  2 | ||||
| #define YYMAXUTOK   279 | ||||
| #define YYMAXUTOK   280 | ||||
|  | ||||
| #define YYTRANSLATE(YYX)						\ | ||||
|   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) | ||||
| @@ -767,7 +782,8 @@ static const yytype_uint8 yytranslate[] = | ||||
|        2,     2,     2,     2,     2,     2,     2,     2,     2,     2, | ||||
|        2,     2,     2,     2,     2,     2,     1,     2,     3,     4, | ||||
|        5,     6,     7,     8,     9,    10,    11,    12,    13,    14, | ||||
|       15,    16,    17,    18,    19,    20,    21,    22,    23,    24 | ||||
|       15,    16,    17,    18,    19,    20,    21,    22,    23,    24, | ||||
|       25 | ||||
| }; | ||||
|  | ||||
| #if YYDEBUG | ||||
| @@ -777,30 +793,30 @@ static const yytype_uint8 yyprhs[] = | ||||
| { | ||||
|        0,     0,     3,     5,     6,     8,    12,    17,    19,    23, | ||||
|       27,    31,    35,    39,    43,    47,    51,    55,    59,    63, | ||||
|       66,    69,    73,    77,    81,    85,    89 | ||||
|       66,    69,    73,    77,    81,    85,    89,    95 | ||||
| }; | ||||
|  | ||||
| /* YYRHS -- A `-1'-separated list of the rules' RHS.  */ | ||||
| static const yytype_int8 yyrhs[] = | ||||
| { | ||||
|       26,     0,    -1,    28,    -1,    -1,    28,    -1,    27,     3, | ||||
|       28,    -1,    24,    22,    27,    23,    -1,    24,    -1,    22, | ||||
|       28,    23,    -1,    28,     6,    28,    -1,    28,     7,    28, | ||||
|       -1,    28,    13,    28,    -1,    28,    12,    28,    -1,    28, | ||||
|       11,    28,    -1,    28,    10,    28,    -1,    28,     9,    28, | ||||
|       -1,    28,     8,    28,    -1,    28,    15,    28,    -1,    28, | ||||
|       14,    28,    -1,    14,    28,    -1,    19,    28,    -1,    28, | ||||
|       18,    28,    -1,    28,    17,    28,    -1,    28,    16,    28, | ||||
|       -1,    28,    21,    28,    -1,    28,    20,    28,    -1,    28, | ||||
|        5,    28,     4,    28,    -1 | ||||
|       27,     0,    -1,    29,    -1,    -1,    29,    -1,    28,     3, | ||||
|       29,    -1,    25,    23,    28,    24,    -1,    25,    -1,    23, | ||||
|       29,    24,    -1,    29,     6,    29,    -1,    29,     7,    29, | ||||
|       -1,    29,    13,    29,    -1,    29,    12,    29,    -1,    29, | ||||
|       11,    29,    -1,    29,    10,    29,    -1,    29,     9,    29, | ||||
|       -1,    29,     8,    29,    -1,    29,    15,    29,    -1,    29, | ||||
|       14,    29,    -1,    14,    29,    -1,    19,    29,    -1,    29, | ||||
|       18,    29,    -1,    29,    17,    29,    -1,    29,    16,    29, | ||||
|       -1,    29,    22,    29,    -1,    29,    21,    29,    -1,    29, | ||||
|        5,    29,     4,    29,    -1,    29,    20,    29,    -1 | ||||
| }; | ||||
|  | ||||
| /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */ | ||||
| static const yytype_uint16 yyrline[] = | ||||
| { | ||||
|        0,   372,   372,   380,   387,   388,   397,   403,   404,   408, | ||||
|      412,   416,   420,   424,   428,   432,   436,   440,   444,   448, | ||||
|      452,   456,   460,   464,   468,   472,   476 | ||||
|        0,   371,   371,   379,   386,   387,   396,   402,   403,   407, | ||||
|      411,   415,   419,   423,   427,   431,   435,   439,   443,   447, | ||||
|      451,   455,   459,   463,   467,   471,   475,   480 | ||||
| }; | ||||
| #endif | ||||
|  | ||||
| @@ -812,8 +828,8 @@ static const char *const yytname[] = | ||||
|   "$end", "error", "$undefined", "TOK_COMMA", "TOK_COLONCOLON", | ||||
|   "TOK_COND", "TOK_OR", "TOK_AND", "TOK_NE", "TOK_LE", "TOK_GE", "TOK_LT", | ||||
|   "TOK_GT", "TOK_EQ", "TOK_MINUS", "TOK_PLUS", "TOK_MOD", "TOK_DIV", | ||||
|   "TOK_MULT", "TOK_COMPL", "TOK_EQTILDE", "TOK_COLON", "TOK_LP", "TOK_RP", | ||||
|   "TOKEN", "$accept", "start", "arglist", "expr", 0 | ||||
|   "TOK_MULT", "TOK_COMPL", "TOK_TILDETILDE", "TOK_EQTILDE", "TOK_COLON", | ||||
|   "TOK_LP", "TOK_RP", "TOKEN", "$accept", "start", "arglist", "expr", 0 | ||||
| }; | ||||
| #endif | ||||
|  | ||||
| @@ -824,16 +840,16 @@ static const yytype_uint16 yytoknum[] = | ||||
| { | ||||
|        0,   256,   257,   258,   259,   260,   261,   262,   263,   264, | ||||
|      265,   266,   267,   268,   269,   270,   271,   272,   273,   274, | ||||
|      275,   276,   277,   278,   279 | ||||
|      275,   276,   277,   278,   279,   280 | ||||
| }; | ||||
| # endif | ||||
|  | ||||
| /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */ | ||||
| static const yytype_uint8 yyr1[] = | ||||
| { | ||||
|        0,    25,    26,    26,    27,    27,    28,    28,    28,    28, | ||||
|       28,    28,    28,    28,    28,    28,    28,    28,    28,    28, | ||||
|       28,    28,    28,    28,    28,    28,    28 | ||||
|        0,    26,    27,    27,    28,    28,    29,    29,    29,    29, | ||||
|       29,    29,    29,    29,    29,    29,    29,    29,    29,    29, | ||||
|       29,    29,    29,    29,    29,    29,    29,    29 | ||||
| }; | ||||
|  | ||||
| /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */ | ||||
| @@ -841,7 +857,7 @@ static const yytype_uint8 yyr2[] = | ||||
| { | ||||
|        0,     2,     1,     0,     1,     3,     4,     1,     3,     3, | ||||
|        3,     3,     3,     3,     3,     3,     3,     3,     3,     2, | ||||
|        2,     3,     3,     3,     3,     3,     5 | ||||
|        2,     3,     3,     3,     3,     3,     5,     3 | ||||
| }; | ||||
|  | ||||
| /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state | ||||
| @@ -851,16 +867,16 @@ static const yytype_uint8 yydefact[] = | ||||
| { | ||||
|        3,     0,     0,     0,     7,     0,     2,    19,    20,     0, | ||||
|        0,     1,     0,     0,     0,     0,     0,     0,     0,     0, | ||||
|        0,     0,     0,     0,     0,     0,     0,     0,     8,     0, | ||||
|        4,     0,     9,    10,    16,    15,    14,    13,    12,    11, | ||||
|       18,    17,    23,    22,    21,    25,    24,     0,     6,     0, | ||||
|        5,    26 | ||||
|        0,     0,     0,     0,     0,     0,     0,     0,     0,     8, | ||||
|        0,     4,     0,     9,    10,    16,    15,    14,    13,    12, | ||||
|       11,    18,    17,    23,    22,    21,    27,    25,    24,     0, | ||||
|        6,     0,     5,    26 | ||||
| }; | ||||
|  | ||||
| /* YYDEFGOTO[NTERM-NUM].  */ | ||||
| static const yytype_int8 yydefgoto[] = | ||||
| { | ||||
|       -1,     5,    29,     6 | ||||
|       -1,     5,    30,     6 | ||||
| }; | ||||
|  | ||||
| /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing | ||||
| @@ -868,12 +884,12 @@ static const yytype_int8 yydefgoto[] = | ||||
| #define YYPACT_NINF -18 | ||||
| static const yytype_int16 yypact[] = | ||||
| { | ||||
|      112,   112,   112,   112,   -16,     5,    62,   -17,   -17,    24, | ||||
|      112,   -18,   112,   112,   112,   112,   112,   112,   112,   112, | ||||
|      112,   112,   112,   112,   112,   112,   112,   112,   -18,     4, | ||||
|       62,    45,    93,   107,   123,   123,   123,   123,   123,   123, | ||||
|      129,   129,   -17,   -17,   -17,   -18,   -18,   112,   -18,   112, | ||||
|       62,    78 | ||||
|      118,   118,   118,   118,   -15,     6,    65,   -17,   -17,    25, | ||||
|      118,   -18,   118,   118,   118,   118,   118,   118,   118,   118, | ||||
|      118,   118,   118,   118,   118,   118,   118,   118,   118,   -18, | ||||
|        4,    65,    47,    98,   113,   130,   130,   130,   130,   130, | ||||
|      130,   137,   137,   -17,   -17,   -17,   -18,   -18,   -18,   118, | ||||
|      -18,   118,    65,    82 | ||||
| }; | ||||
|  | ||||
| /* YYPGOTO[NTERM-NUM].  */ | ||||
| @@ -889,54 +905,54 @@ static const yytype_int8 yypgoto[] = | ||||
| #define YYTABLE_NINF -1 | ||||
| static const yytype_uint8 yytable[] = | ||||
| { | ||||
|        7,     8,     9,    26,    27,    11,    10,    47,     0,    30, | ||||
|        0,    31,    32,    33,    34,    35,    36,    37,    38,    39, | ||||
|       40,    41,    42,    43,    44,    45,    46,    48,     0,    12, | ||||
|       13,    14,    15,    16,    17,    18,    19,    20,    21,    22, | ||||
|       23,    24,    25,     0,    26,    27,    50,    28,    51,    49, | ||||
|        7,     8,     9,    26,    27,    28,    11,    49,    10,    31, | ||||
|        0,    32,    33,    34,    35,    36,    37,    38,    39,    40, | ||||
|       41,    42,    43,    44,    45,    46,    47,    48,    50,     0, | ||||
|       12,    13,    14,    15,    16,    17,    18,    19,    20,    21, | ||||
|       22,    23,    24,    25,     0,    26,    27,    12,    13,    14, | ||||
|       22,    23,    24,    25,     0,    26,    27,    28,    52,    29, | ||||
|       53,    51,    12,    13,    14,    15,    16,    17,    18,    19, | ||||
|       20,    21,    22,    23,    24,    25,     0,    26,    27,    28, | ||||
|       12,    13,    14,    15,    16,    17,    18,    19,    20,    21, | ||||
|       22,    23,    24,    25,     0,    26,    27,    28,    13,    14, | ||||
|       15,    16,    17,    18,    19,    20,    21,    22,    23,    24, | ||||
|       25,     0,    26,    27,    13,    14,    15,    16,    17,    18, | ||||
|       25,     0,    26,    27,    28,    14,    15,    16,    17,    18, | ||||
|       19,    20,    21,    22,    23,    24,    25,     0,    26,    27, | ||||
|       14,    15,    16,    17,    18,    19,    20,    21,    22,    23, | ||||
|       24,    25,     0,    26,    27,    15,    16,    17,    18,    19, | ||||
|       20,    21,    22,    23,    24,    25,     1,    26,    27,     0, | ||||
|        0,     2,     0,     0,     3,     0,     4,    21,    22,    23, | ||||
|       24,    25,     0,    26,    27,    23,    24,    25,     0,    26, | ||||
|       27 | ||||
|       28,    15,    16,    17,    18,    19,    20,    21,    22,    23, | ||||
|       24,    25,     1,    26,    27,    28,     0,     2,     0,     0, | ||||
|        0,     3,     0,     4,    21,    22,    23,    24,    25,     0, | ||||
|       26,    27,    28,    23,    24,    25,     0,    26,    27,    28 | ||||
| }; | ||||
|  | ||||
| static const yytype_int8 yycheck[] = | ||||
| { | ||||
|        1,     2,     3,    20,    21,     0,    22,     3,    -1,    10, | ||||
|        1,     2,     3,    20,    21,    22,     0,     3,    23,    10, | ||||
|       -1,    12,    13,    14,    15,    16,    17,    18,    19,    20, | ||||
|       21,    22,    23,    24,    25,    26,    27,    23,    -1,     5, | ||||
|        6,     7,     8,     9,    10,    11,    12,    13,    14,    15, | ||||
|       16,    17,    18,    -1,    20,    21,    47,    23,    49,     4, | ||||
|       21,    22,    23,    24,    25,    26,    27,    28,    24,    -1, | ||||
|        5,     6,     7,     8,     9,    10,    11,    12,    13,    14, | ||||
|       15,    16,    17,    18,    -1,    20,    21,     5,     6,     7, | ||||
|       15,    16,    17,    18,    -1,    20,    21,    22,    49,    24, | ||||
|       51,     4,     5,     6,     7,     8,     9,    10,    11,    12, | ||||
|       13,    14,    15,    16,    17,    18,    -1,    20,    21,    22, | ||||
|        5,     6,     7,     8,     9,    10,    11,    12,    13,    14, | ||||
|       15,    16,    17,    18,    -1,    20,    21,    22,     6,     7, | ||||
|        8,     9,    10,    11,    12,    13,    14,    15,    16,    17, | ||||
|       18,    -1,    20,    21,     6,     7,     8,     9,    10,    11, | ||||
|       18,    -1,    20,    21,    22,     7,     8,     9,    10,    11, | ||||
|       12,    13,    14,    15,    16,    17,    18,    -1,    20,    21, | ||||
|        7,     8,     9,    10,    11,    12,    13,    14,    15,    16, | ||||
|       17,    18,    -1,    20,    21,     8,     9,    10,    11,    12, | ||||
|       13,    14,    15,    16,    17,    18,    14,    20,    21,    -1, | ||||
|       -1,    19,    -1,    -1,    22,    -1,    24,    14,    15,    16, | ||||
|       17,    18,    -1,    20,    21,    16,    17,    18,    -1,    20, | ||||
|       21 | ||||
|       22,     8,     9,    10,    11,    12,    13,    14,    15,    16, | ||||
|       17,    18,    14,    20,    21,    22,    -1,    19,    -1,    -1, | ||||
|       -1,    23,    -1,    25,    14,    15,    16,    17,    18,    -1, | ||||
|       20,    21,    22,    16,    17,    18,    -1,    20,    21,    22 | ||||
| }; | ||||
|  | ||||
| /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing | ||||
|    symbol of state STATE-NUM.  */ | ||||
| static const yytype_uint8 yystos[] = | ||||
| { | ||||
|        0,    14,    19,    22,    24,    26,    28,    28,    28,    28, | ||||
|       22,     0,     5,     6,     7,     8,     9,    10,    11,    12, | ||||
|       13,    14,    15,    16,    17,    18,    20,    21,    23,    27, | ||||
|       28,    28,    28,    28,    28,    28,    28,    28,    28,    28, | ||||
|       28,    28,    28,    28,    28,    28,    28,     3,    23,     4, | ||||
|       28,    28 | ||||
|        0,    14,    19,    23,    25,    27,    29,    29,    29,    29, | ||||
|       23,     0,     5,     6,     7,     8,     9,    10,    11,    12, | ||||
|       13,    14,    15,    16,    17,    18,    20,    21,    22,    24, | ||||
|       28,    29,    29,    29,    29,    29,    29,    29,    29,    29, | ||||
|       29,    29,    29,    29,    29,    29,    29,    29,    29,     3, | ||||
|       24,     4,    29,    29 | ||||
| }; | ||||
|  | ||||
| #define yyerrok		(yyerrstatus = 0) | ||||
| @@ -1063,14 +1079,14 @@ do {									  \ | ||||
| #if (defined __STDC__ || defined __C99__FUNC__ \ | ||||
|      || defined __cplusplus || defined _MSC_VER) | ||||
| static void | ||||
| yy_symbol_value_print (FILE *yyoutput, int yytype, const YYSTYPE * const yyvaluep, const YYLTYPE * const yylocationp) | ||||
| yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp) | ||||
| #else | ||||
| static void | ||||
| yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp) | ||||
|     FILE *yyoutput; | ||||
|     int yytype; | ||||
|     const YYSTYPE * const yyvaluep; | ||||
|     const YYLTYPE * const yylocationp; | ||||
|     YYSTYPE const * const yyvaluep; | ||||
|     YYLTYPE const * const yylocationp; | ||||
| #endif | ||||
| { | ||||
|   if (!yyvaluep) | ||||
| @@ -1097,14 +1113,14 @@ yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp) | ||||
| #if (defined __STDC__ || defined __C99__FUNC__ \ | ||||
|      || defined __cplusplus || defined _MSC_VER) | ||||
| static void | ||||
| yy_symbol_print (FILE *yyoutput, int yytype, const YYSTYPE * const yyvaluep, const YYLTYPE * const yylocationp) | ||||
| yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp) | ||||
| #else | ||||
| static void | ||||
| yy_symbol_print (yyoutput, yytype, yyvaluep, yylocationp) | ||||
|     FILE *yyoutput; | ||||
|     int yytype; | ||||
|     const YYSTYPE * const yyvaluep; | ||||
|     const YYLTYPE * const yylocationp; | ||||
|     YYSTYPE const * const yyvaluep; | ||||
|     YYLTYPE const * const yylocationp; | ||||
| #endif | ||||
| { | ||||
|   if (yytype < YYNTOKENS) | ||||
| @@ -1157,8 +1173,7 @@ static void | ||||
| yy_reduce_print (YYSTYPE *yyvsp, YYLTYPE *yylsp, int yyrule) | ||||
| #else | ||||
| static void | ||||
| yy_reduce_print (yyvsp, yylsp, yyrule | ||||
| 		   ) | ||||
| yy_reduce_print (yyvsp, yylsp, yyrule) | ||||
|     YYSTYPE *yyvsp; | ||||
|     YYLTYPE *yylsp; | ||||
|     int yyrule; | ||||
| @@ -1281,7 +1296,7 @@ yytnamerr (char *yyres, const char *yystr) | ||||
| { | ||||
|   if (*yystr == '"') | ||||
|     { | ||||
|       size_t yyn = 0; | ||||
|       YYSIZE_T yyn = 0; | ||||
|       char const *yyp = yystr; | ||||
|  | ||||
|       for (;;) | ||||
| @@ -1328,7 +1343,7 @@ yysyntax_error (char *yyresult, int yystate, int yychar) | ||||
| { | ||||
|   int yyn = yypact[yystate]; | ||||
|  | ||||
|   if (! (YYPACT_NINF < yyn && yyn < YYLAST)) | ||||
|   if (! (YYPACT_NINF < yyn && yyn <= YYLAST)) | ||||
|     return 0; | ||||
|   else | ||||
|     { | ||||
| @@ -1366,7 +1381,7 @@ yysyntax_error (char *yyresult, int yystate, int yychar) | ||||
|       int yyxbegin = yyn < 0 ? -yyn : 0; | ||||
|  | ||||
|       /* Stay within bounds of both yycheck and yytname.  */ | ||||
|       int yychecklim = YYLAST - yyn; | ||||
|       int yychecklim = YYLAST - yyn + 1; | ||||
|       int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; | ||||
|       int yycount = 1; | ||||
|  | ||||
| @@ -1454,115 +1469,120 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp) | ||||
|   switch (yytype) | ||||
|     { | ||||
|       case 4: /* "TOK_COLONCOLON" */ | ||||
| #line 366 "ast_expr2.y" | ||||
| 	{  free_value((yyvaluep->val)); }; | ||||
| #line 1460 "ast_expr2.c" | ||||
| 	break; | ||||
|       case 5: /* "TOK_COND" */ | ||||
| #line 366 "ast_expr2.y" | ||||
| 	{  free_value((yyvaluep->val)); }; | ||||
| #line 1465 "ast_expr2.c" | ||||
| 	break; | ||||
|       case 6: /* "TOK_OR" */ | ||||
| #line 366 "ast_expr2.y" | ||||
| 	{  free_value((yyvaluep->val)); }; | ||||
| #line 1470 "ast_expr2.c" | ||||
| 	break; | ||||
|       case 7: /* "TOK_AND" */ | ||||
| #line 366 "ast_expr2.y" | ||||
| #line 365 "ast_expr2.y" | ||||
| 	{  free_value((yyvaluep->val)); }; | ||||
| #line 1475 "ast_expr2.c" | ||||
| 	break; | ||||
|       case 8: /* "TOK_NE" */ | ||||
| #line 366 "ast_expr2.y" | ||||
|       case 5: /* "TOK_COND" */ | ||||
| #line 365 "ast_expr2.y" | ||||
| 	{  free_value((yyvaluep->val)); }; | ||||
| #line 1480 "ast_expr2.c" | ||||
| 	break; | ||||
|       case 9: /* "TOK_LE" */ | ||||
| #line 366 "ast_expr2.y" | ||||
|       case 6: /* "TOK_OR" */ | ||||
| #line 365 "ast_expr2.y" | ||||
| 	{  free_value((yyvaluep->val)); }; | ||||
| #line 1485 "ast_expr2.c" | ||||
| 	break; | ||||
|       case 10: /* "TOK_GE" */ | ||||
| #line 366 "ast_expr2.y" | ||||
|       case 7: /* "TOK_AND" */ | ||||
| #line 365 "ast_expr2.y" | ||||
| 	{  free_value((yyvaluep->val)); }; | ||||
| #line 1490 "ast_expr2.c" | ||||
| 	break; | ||||
|       case 11: /* "TOK_LT" */ | ||||
| #line 366 "ast_expr2.y" | ||||
|       case 8: /* "TOK_NE" */ | ||||
| #line 365 "ast_expr2.y" | ||||
| 	{  free_value((yyvaluep->val)); }; | ||||
| #line 1495 "ast_expr2.c" | ||||
| 	break; | ||||
|       case 12: /* "TOK_GT" */ | ||||
| #line 366 "ast_expr2.y" | ||||
|       case 9: /* "TOK_LE" */ | ||||
| #line 365 "ast_expr2.y" | ||||
| 	{  free_value((yyvaluep->val)); }; | ||||
| #line 1500 "ast_expr2.c" | ||||
| 	break; | ||||
|       case 13: /* "TOK_EQ" */ | ||||
| #line 366 "ast_expr2.y" | ||||
|       case 10: /* "TOK_GE" */ | ||||
| #line 365 "ast_expr2.y" | ||||
| 	{  free_value((yyvaluep->val)); }; | ||||
| #line 1505 "ast_expr2.c" | ||||
| 	break; | ||||
|       case 14: /* "TOK_MINUS" */ | ||||
| #line 366 "ast_expr2.y" | ||||
|       case 11: /* "TOK_LT" */ | ||||
| #line 365 "ast_expr2.y" | ||||
| 	{  free_value((yyvaluep->val)); }; | ||||
| #line 1510 "ast_expr2.c" | ||||
| 	break; | ||||
|       case 15: /* "TOK_PLUS" */ | ||||
| #line 366 "ast_expr2.y" | ||||
|       case 12: /* "TOK_GT" */ | ||||
| #line 365 "ast_expr2.y" | ||||
| 	{  free_value((yyvaluep->val)); }; | ||||
| #line 1515 "ast_expr2.c" | ||||
| 	break; | ||||
|       case 16: /* "TOK_MOD" */ | ||||
| #line 366 "ast_expr2.y" | ||||
|       case 13: /* "TOK_EQ" */ | ||||
| #line 365 "ast_expr2.y" | ||||
| 	{  free_value((yyvaluep->val)); }; | ||||
| #line 1520 "ast_expr2.c" | ||||
| 	break; | ||||
|       case 17: /* "TOK_DIV" */ | ||||
| #line 366 "ast_expr2.y" | ||||
|       case 14: /* "TOK_MINUS" */ | ||||
| #line 365 "ast_expr2.y" | ||||
| 	{  free_value((yyvaluep->val)); }; | ||||
| #line 1525 "ast_expr2.c" | ||||
| 	break; | ||||
|       case 18: /* "TOK_MULT" */ | ||||
| #line 366 "ast_expr2.y" | ||||
|       case 15: /* "TOK_PLUS" */ | ||||
| #line 365 "ast_expr2.y" | ||||
| 	{  free_value((yyvaluep->val)); }; | ||||
| #line 1530 "ast_expr2.c" | ||||
| 	break; | ||||
|       case 19: /* "TOK_COMPL" */ | ||||
| #line 366 "ast_expr2.y" | ||||
|       case 16: /* "TOK_MOD" */ | ||||
| #line 365 "ast_expr2.y" | ||||
| 	{  free_value((yyvaluep->val)); }; | ||||
| #line 1535 "ast_expr2.c" | ||||
| 	break; | ||||
|       case 20: /* "TOK_EQTILDE" */ | ||||
| #line 366 "ast_expr2.y" | ||||
|       case 17: /* "TOK_DIV" */ | ||||
| #line 365 "ast_expr2.y" | ||||
| 	{  free_value((yyvaluep->val)); }; | ||||
| #line 1540 "ast_expr2.c" | ||||
| 	break; | ||||
|       case 21: /* "TOK_COLON" */ | ||||
| #line 366 "ast_expr2.y" | ||||
|       case 18: /* "TOK_MULT" */ | ||||
| #line 365 "ast_expr2.y" | ||||
| 	{  free_value((yyvaluep->val)); }; | ||||
| #line 1545 "ast_expr2.c" | ||||
| 	break; | ||||
|       case 22: /* "TOK_LP" */ | ||||
| #line 366 "ast_expr2.y" | ||||
|       case 19: /* "TOK_COMPL" */ | ||||
| #line 365 "ast_expr2.y" | ||||
| 	{  free_value((yyvaluep->val)); }; | ||||
| #line 1550 "ast_expr2.c" | ||||
| 	break; | ||||
|       case 23: /* "TOK_RP" */ | ||||
| #line 366 "ast_expr2.y" | ||||
|       case 20: /* "TOK_TILDETILDE" */ | ||||
| #line 365 "ast_expr2.y" | ||||
| 	{  free_value((yyvaluep->val)); }; | ||||
| #line 1555 "ast_expr2.c" | ||||
| 	break; | ||||
|       case 24: /* "TOKEN" */ | ||||
| #line 366 "ast_expr2.y" | ||||
|       case 21: /* "TOK_EQTILDE" */ | ||||
| #line 365 "ast_expr2.y" | ||||
| 	{  free_value((yyvaluep->val)); }; | ||||
| #line 1560 "ast_expr2.c" | ||||
| 	break; | ||||
|       case 28: /* "expr" */ | ||||
| #line 366 "ast_expr2.y" | ||||
|       case 22: /* "TOK_COLON" */ | ||||
| #line 365 "ast_expr2.y" | ||||
| 	{  free_value((yyvaluep->val)); }; | ||||
| #line 1565 "ast_expr2.c" | ||||
| 	break; | ||||
|       case 23: /* "TOK_LP" */ | ||||
| #line 365 "ast_expr2.y" | ||||
| 	{  free_value((yyvaluep->val)); }; | ||||
| #line 1570 "ast_expr2.c" | ||||
| 	break; | ||||
|       case 24: /* "TOK_RP" */ | ||||
| #line 365 "ast_expr2.y" | ||||
| 	{  free_value((yyvaluep->val)); }; | ||||
| #line 1575 "ast_expr2.c" | ||||
| 	break; | ||||
|       case 25: /* "TOKEN" */ | ||||
| #line 365 "ast_expr2.y" | ||||
| 	{  free_value((yyvaluep->val)); }; | ||||
| #line 1580 "ast_expr2.c" | ||||
| 	break; | ||||
|       case 29: /* "expr" */ | ||||
| #line 365 "ast_expr2.y" | ||||
| 	{  free_value((yyvaluep->val)); }; | ||||
| #line 1585 "ast_expr2.c" | ||||
| 	break; | ||||
|  | ||||
|       default: | ||||
| 	break; | ||||
| @@ -1884,7 +1904,7 @@ yyreduce: | ||||
|   switch (yyn) | ||||
|     { | ||||
|         case 2: | ||||
| #line 372 "ast_expr2.y" | ||||
| #line 371 "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 ) | ||||
| @@ -1896,7 +1916,7 @@ yyreduce: | ||||
|     break; | ||||
|  | ||||
|   case 3: | ||||
| #line 380 "ast_expr2.y" | ||||
| #line 379 "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("");  | ||||
| @@ -1904,12 +1924,12 @@ yyreduce: | ||||
|     break; | ||||
|  | ||||
|   case 4: | ||||
| #line 387 "ast_expr2.y" | ||||
| #line 386 "ast_expr2.y" | ||||
|     { (yyval.arglist) = alloc_expr_node(AST_EXPR_NODE_VAL); (yyval.arglist)->val = (yyvsp[(1) - (1)].val);;} | ||||
|     break; | ||||
|  | ||||
|   case 5: | ||||
| #line 388 "ast_expr2.y" | ||||
| #line 387 "ast_expr2.y" | ||||
|     {struct expr_node *x = alloc_expr_node(AST_EXPR_NODE_VAL); | ||||
|                                  struct expr_node *t; | ||||
| 								 DESTROY((yyvsp[(2) - (3)].val)); | ||||
| @@ -1919,7 +1939,7 @@ yyreduce: | ||||
|     break; | ||||
|  | ||||
|   case 6: | ||||
| #line 397 "ast_expr2.y" | ||||
| #line 396 "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)); | ||||
| @@ -1929,12 +1949,12 @@ yyreduce: | ||||
|     break; | ||||
|  | ||||
|   case 7: | ||||
| #line 403 "ast_expr2.y" | ||||
| #line 402 "ast_expr2.y" | ||||
|     {(yyval.val) = (yyvsp[(1) - (1)].val);;} | ||||
|     break; | ||||
|  | ||||
|   case 8: | ||||
| #line 404 "ast_expr2.y" | ||||
| #line 403 "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; | ||||
| @@ -1942,7 +1962,7 @@ yyreduce: | ||||
|     break; | ||||
|  | ||||
|   case 9: | ||||
| #line 408 "ast_expr2.y" | ||||
| #line 407 "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;  | ||||
| @@ -1950,7 +1970,7 @@ yyreduce: | ||||
|     break; | ||||
|  | ||||
|   case 10: | ||||
| #line 412 "ast_expr2.y" | ||||
| #line 411 "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;  | ||||
| @@ -1958,7 +1978,7 @@ yyreduce: | ||||
|     break; | ||||
|  | ||||
|   case 11: | ||||
| #line 416 "ast_expr2.y" | ||||
| #line 415 "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; | ||||
| @@ -1966,7 +1986,7 @@ yyreduce: | ||||
|     break; | ||||
|  | ||||
|   case 12: | ||||
| #line 420 "ast_expr2.y" | ||||
| #line 419 "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; | ||||
| @@ -1974,7 +1994,7 @@ yyreduce: | ||||
|     break; | ||||
|  | ||||
|   case 13: | ||||
| #line 424 "ast_expr2.y" | ||||
| #line 423 "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;  | ||||
| @@ -1982,7 +2002,7 @@ yyreduce: | ||||
|     break; | ||||
|  | ||||
|   case 14: | ||||
| #line 428 "ast_expr2.y" | ||||
| #line 427 "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;  | ||||
| @@ -1990,7 +2010,7 @@ yyreduce: | ||||
|     break; | ||||
|  | ||||
|   case 15: | ||||
| #line 432 "ast_expr2.y" | ||||
| #line 431 "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;  | ||||
| @@ -1998,7 +2018,7 @@ yyreduce: | ||||
|     break; | ||||
|  | ||||
|   case 16: | ||||
| #line 436 "ast_expr2.y" | ||||
| #line 435 "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;  | ||||
| @@ -2006,7 +2026,7 @@ yyreduce: | ||||
|     break; | ||||
|  | ||||
|   case 17: | ||||
| #line 440 "ast_expr2.y" | ||||
| #line 439 "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;  | ||||
| @@ -2014,7 +2034,7 @@ yyreduce: | ||||
|     break; | ||||
|  | ||||
|   case 18: | ||||
| #line 444 "ast_expr2.y" | ||||
| #line 443 "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;  | ||||
| @@ -2022,7 +2042,7 @@ yyreduce: | ||||
|     break; | ||||
|  | ||||
|   case 19: | ||||
| #line 448 "ast_expr2.y" | ||||
| #line 447 "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;  | ||||
| @@ -2030,7 +2050,7 @@ yyreduce: | ||||
|     break; | ||||
|  | ||||
|   case 20: | ||||
| #line 452 "ast_expr2.y" | ||||
| #line 451 "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;  | ||||
| @@ -2038,7 +2058,7 @@ yyreduce: | ||||
|     break; | ||||
|  | ||||
|   case 21: | ||||
| #line 456 "ast_expr2.y" | ||||
| #line 455 "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;  | ||||
| @@ -2046,7 +2066,7 @@ yyreduce: | ||||
|     break; | ||||
|  | ||||
|   case 22: | ||||
| #line 460 "ast_expr2.y" | ||||
| #line 459 "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;  | ||||
| @@ -2054,7 +2074,7 @@ yyreduce: | ||||
|     break; | ||||
|  | ||||
|   case 23: | ||||
| #line 464 "ast_expr2.y" | ||||
| #line 463 "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;  | ||||
| @@ -2062,7 +2082,7 @@ yyreduce: | ||||
|     break; | ||||
|  | ||||
|   case 24: | ||||
| #line 468 "ast_expr2.y" | ||||
| #line 467 "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;  | ||||
| @@ -2070,7 +2090,7 @@ yyreduce: | ||||
|     break; | ||||
|  | ||||
|   case 25: | ||||
| #line 472 "ast_expr2.y" | ||||
| #line 471 "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;  | ||||
| @@ -2078,7 +2098,7 @@ yyreduce: | ||||
|     break; | ||||
|  | ||||
|   case 26: | ||||
| #line 476 "ast_expr2.y" | ||||
| #line 475 "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));	 | ||||
| @@ -2086,9 +2106,17 @@ yyreduce: | ||||
| 							(yyloc).first_line=0; (yyloc).last_line=0;;} | ||||
|     break; | ||||
|  | ||||
|   case 27: | ||||
| #line 480 "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;  | ||||
| 							(yyloc).first_line=0; (yyloc).last_line=0;;} | ||||
|     break; | ||||
|  | ||||
| /* Line 1270 of yacc.c.  */ | ||||
| #line 2092 "ast_expr2.c" | ||||
|  | ||||
| /* Line 1267 of yacc.c.  */ | ||||
| #line 2120 "ast_expr2.c" | ||||
|       default: break; | ||||
|     } | ||||
|   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); | ||||
| @@ -2303,11 +2331,12 @@ yyreturn: | ||||
|   if (yymsg != yymsgbuf) | ||||
|     YYSTACK_FREE (yymsg); | ||||
| #endif | ||||
|   return yyresult; | ||||
|   /* Make sure YYID is used.  */ | ||||
|   return YYID (yyresult); | ||||
| } | ||||
|  | ||||
|  | ||||
| #line 483 "ast_expr2.y" | ||||
| #line 486 "ast_expr2.y" | ||||
|  | ||||
|  | ||||
| static struct expr_node *alloc_expr_node(enum node_type nt) | ||||
| @@ -3446,3 +3475,29 @@ op_eqtilde (struct val *a, struct val *b) | ||||
| 	return v; | ||||
| } | ||||
|  | ||||
| static struct val *  /* this is a string concat operator */ | ||||
| op_tildetilde (struct val *a, struct val *b) | ||||
| { | ||||
| 	struct val *v; | ||||
| 	char *vs; | ||||
|  | ||||
| 	/* coerce to both arguments to strings */ | ||||
| 	to_string(a); | ||||
| 	to_string(b); | ||||
| 	/* strip double quotes from both -- */ | ||||
| 	strip_quotes(a); | ||||
| 	strip_quotes(b); | ||||
| 	 | ||||
| 	vs = malloc(strlen(a->u.s)+strlen(b->u.s)+1); | ||||
| 	strcpy(vs,a->u.s); | ||||
| 	strcat(vs,b->u.s); | ||||
|  | ||||
| 	v = make_str(vs); | ||||
|  | ||||
| 	/* free arguments */ | ||||
| 	free_value(a); | ||||
| 	free_value(b); | ||||
|  | ||||
| 	return v; | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -133,6 +133,7 @@ static char *expr2_token_subst(const char *mess); | ||||
| \&\&	{ SET_COLUMNS; SET_STRING; return TOK_AND;} | ||||
| \=\=	{ SET_COLUMNS; SET_STRING; return TOK_EQ;} | ||||
| \=~	{ SET_COLUMNS; SET_STRING; return TOK_EQTILDE;} | ||||
| \~~	{ SET_COLUMNS; SET_STRING; return TOK_TILDETILDE;} | ||||
| \>	{ SET_COLUMNS; SET_STRING; return TOK_GT;} | ||||
| \<	{ SET_COLUMNS; SET_STRING; return TOK_LT;} | ||||
| \>\=	{ SET_COLUMNS; SET_STRING; return TOK_GE;} | ||||
| @@ -173,7 +174,7 @@ static char *expr2_token_subst(const char *mess); | ||||
| 		return TOKEN; | ||||
| 	} | ||||
|  | ||||
| ([a-zA-Z0-9\.';\\_^$#@]|[\x80-\xff])+	{ | ||||
| ([a-zA-Z0-9\.';\\_^#@]|[\x80-\xff]|($[^{]))+	{ | ||||
| 		SET_COLUMNS; | ||||
| 		SET_STRING; | ||||
| 		return TOKEN; | ||||
|   | ||||
| @@ -1,7 +1,9 @@ | ||||
| /* A Bison parser, made by GNU Bison 2.1a.  */ | ||||
| /* A Bison parser, made by GNU Bison 2.3.  */ | ||||
|  | ||||
| /* Skeleton parser for Yacc-like parsing with Bison, | ||||
|    Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. | ||||
| /* 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 | ||||
| @@ -18,10 +20,18 @@ | ||||
|    Foundation, Inc., 51 Franklin Street, Fifth Floor, | ||||
|    Boston, MA 02110-1301, USA.  */ | ||||
|  | ||||
| /* As a special exception, when this file is copied by Bison into a | ||||
|    Bison output file, you may use that output file without restriction. | ||||
|    This special exception was added by the Free Software Foundation | ||||
|    in version 1.24 of Bison.  */ | ||||
| /* As a special exception, you may create a larger work that contains | ||||
|    part or all of the Bison parser skeleton and distribute that work | ||||
|    under terms of your choice, so long as that work isn't itself a | ||||
|    parser generator using the skeleton or a modified version thereof | ||||
|    as a parser skeleton.  Alternatively, if you modify or redistribute | ||||
|    the parser skeleton itself, you may (at your option) remove this | ||||
|    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.  */ | ||||
|  | ||||
| /* Tokens.  */ | ||||
| #ifndef YYTOKENTYPE | ||||
| @@ -46,11 +56,12 @@ | ||||
|      TOK_DIV = 272, | ||||
|      TOK_MULT = 273, | ||||
|      TOK_COMPL = 274, | ||||
|      TOK_EQTILDE = 275, | ||||
|      TOK_COLON = 276, | ||||
|      TOK_LP = 277, | ||||
|      TOK_RP = 278, | ||||
|      TOKEN = 279 | ||||
|      TOK_TILDETILDE = 275, | ||||
|      TOK_EQTILDE = 276, | ||||
|      TOK_COLON = 277, | ||||
|      TOK_LP = 278, | ||||
|      TOK_RP = 279, | ||||
|      TOKEN = 280 | ||||
|    }; | ||||
| #endif | ||||
| /* Tokens.  */ | ||||
| @@ -71,24 +82,25 @@ | ||||
| #define TOK_DIV 272 | ||||
| #define TOK_MULT 273 | ||||
| #define TOK_COMPL 274 | ||||
| #define TOK_EQTILDE 275 | ||||
| #define TOK_COLON 276 | ||||
| #define TOK_LP 277 | ||||
| #define TOK_RP 278 | ||||
| #define TOKEN 279 | ||||
| #define TOK_TILDETILDE 275 | ||||
| #define TOK_EQTILDE 276 | ||||
| #define TOK_COLON 277 | ||||
| #define TOK_LP 278 | ||||
| #define TOK_RP 279 | ||||
| #define TOKEN 280 | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
| #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED | ||||
| typedef union YYSTYPE | ||||
| #line 341 "ast_expr2.y" | ||||
| #line 342 "ast_expr2.y" | ||||
| { | ||||
| 	struct val *val; | ||||
| 	struct expr_node *arglist; | ||||
| } | ||||
| /* Line 1536 of yacc.c.  */ | ||||
| #line 92 "ast_expr2.h" | ||||
| /* Line 1489 of yacc.c.  */ | ||||
| #line 104 "ast_expr2.h" | ||||
| 	YYSTYPE; | ||||
| # define yystype YYSTYPE /* obsolescent; will be withdrawn */ | ||||
| # define YYSTYPE_IS_DECLARED 1 | ||||
| @@ -111,5 +123,3 @@ typedef struct YYLTYPE | ||||
| #endif | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|   | ||||
| @@ -284,6 +284,7 @@ static struct val	*make_str __P((const char *)); | ||||
| static struct val	*op_and __P((struct val *, struct val *)); | ||||
| static struct val	*op_colon __P((struct val *, struct val *)); | ||||
| static struct val	*op_eqtilde __P((struct val *, struct val *)); | ||||
| static struct val	*op_tildetilde __P((struct val *, struct val *)); | ||||
| static struct val	*op_div __P((struct val *, struct val *)); | ||||
| static struct val	*op_eq __P((struct val *, struct val *)); | ||||
| static struct val	*op_ge __P((struct val *, struct val *)); | ||||
| @@ -354,18 +355,16 @@ extern int		ast_yylex __P((YYSTYPE *, YYLTYPE *, yyscan_t)); | ||||
| %left <val> TOK_PLUS TOK_MINUS | ||||
| %left <val> TOK_MULT TOK_DIV TOK_MOD  | ||||
| %right <val> TOK_COMPL | ||||
| %left <val> TOK_COLON TOK_EQTILDE | ||||
| %left <val> TOK_COLON TOK_EQTILDE TOK_TILDETILDE | ||||
| %left <val> TOK_RP TOK_LP | ||||
|  | ||||
|  | ||||
| %token <val> TOKEN | ||||
| %type <arglist> arglist | ||||
| %type <val> start expr | ||||
|  | ||||
|  | ||||
| %destructor {  free_value($$); }  expr TOKEN TOK_COND TOK_COLONCOLON TOK_OR TOK_AND TOK_EQ  | ||||
|                                  TOK_GT TOK_LT TOK_GE TOK_LE TOK_NE TOK_PLUS TOK_MINUS TOK_MULT TOK_DIV TOK_MOD TOK_COMPL TOK_COLON TOK_EQTILDE  | ||||
|                                  TOK_RP TOK_LP | ||||
|                                  TOK_RP TOK_LP TOK_TILDETILDE | ||||
|  | ||||
| %% | ||||
|  | ||||
| @@ -478,6 +477,10 @@ expr: | ||||
| 						DESTROY($4);	 | ||||
| 	                        @$.first_column = @1.first_column; @$.last_column = @3.last_column;  | ||||
| 							@$.first_line=0; @$.last_line=0;} | ||||
| 	| expr TOK_TILDETILDE expr { $$ = op_tildetilde ($1, $3);  | ||||
| 						DESTROY($2);	 | ||||
| 	                        @$.first_column = @1.first_column; @$.last_column = @3.last_column;  | ||||
| 							@$.first_line=0; @$.last_line=0;} | ||||
| 	; | ||||
|  | ||||
| %% | ||||
| @@ -1617,3 +1620,29 @@ op_eqtilde (struct val *a, struct val *b) | ||||
|  | ||||
| 	return v; | ||||
| } | ||||
|  | ||||
| static struct val *  /* this is a string concat operator */ | ||||
| op_tildetilde (struct val *a, struct val *b) | ||||
| { | ||||
| 	struct val *v; | ||||
| 	char *vs; | ||||
|  | ||||
| 	/* coerce to both arguments to strings */ | ||||
| 	to_string(a); | ||||
| 	to_string(b); | ||||
| 	/* strip double quotes from both -- */ | ||||
| 	strip_quotes(a); | ||||
| 	strip_quotes(b); | ||||
| 	 | ||||
| 	vs = malloc(strlen(a->u.s)+strlen(b->u.s)+1); | ||||
| 	strcpy(vs,a->u.s); | ||||
| 	strcat(vs,b->u.s); | ||||
|  | ||||
| 	v = make_str(vs); | ||||
|  | ||||
| 	/* free arguments */ | ||||
| 	free_value(a); | ||||
| 	free_value(b); | ||||
|  | ||||
| 	return v; | ||||
| } | ||||
|   | ||||
							
								
								
									
										2396
									
								
								main/ast_expr2f.c
									
									
									
									
									
								
							
							
						
						
									
										2396
									
								
								main/ast_expr2f.c
									
									
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										27
									
								
								pbx/ael/ael-test/ael-ntest24/extensions.ael
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								pbx/ael/ael-test/ael-ntest24/extensions.ael
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,27 @@ | ||||
| context test11 | ||||
| { | ||||
| _X. => { | ||||
|                 Answer(); | ||||
|                 Dial(iax2/test11:nosecret@192.168.134.2522, 15,tTwW); | ||||
|                 Hangup(); | ||||
| 		NoOp($[{GROUP_COUNT(${target_num}@agent_queue_b)}=1]); | ||||
| 		NoOp($[1+0~~${DB(skip_group/${target_num}/agent_queue_b)}]); | ||||
| 		NoOp($[0~~${DB(skip_group/${target_num}/agent_queue_b)}+1]); | ||||
| 		NoOp($[${GROUP_COUNT(${target_num}@agent_queue_b)}=1+0~~${DB(skip_group/${target_num}/agent_queue_b)}]); | ||||
| 		NoOp($[${GROUP_COUNT(${target_num}@agent_queue_b)}=0~~${DB(skip_group/${target_num}/agent_queue_b)}+1]); | ||||
|                 if(${GROUP_COUNT(${target_num}@agent_queue_b)}==1+0~~${DB(skip_group/${target_num}/agent_queue_b)}) | ||||
|                 { | ||||
| 			Set(testif=$[1+0~~${DB(skip_group/${target_num}/agent_queue_b)}]); | ||||
|                 } | ||||
|                 if(${GROUP_COUNT(${target_num}@agent_queue_b)}==0~~${DB(skip_group/${target_num}/agent_queue_b)}+1) | ||||
|                 { | ||||
| 			Set(testif=$[1+0~~${DB(skip_group/${target_num}/agent_queue_b)}]); | ||||
|                 } | ||||
|                 if(${GROUP_COUNT(${target_num}@agent_queue_b)}==1+0~~${DB(skip_group/${target_num}/agent_queue_b)}) | ||||
|                 { | ||||
| 			Set(testif=$[1+0~~${DB(skip_group/${target_num}/agent_queue_b)}]); | ||||
|                 } | ||||
|         } | ||||
| } | ||||
|  | ||||
|  | ||||
| @@ -5,8 +5,8 @@ | ||||
|  | ||||
|  | ||||
| (You can use the -w option to dump extensions.conf format to extensions.conf.aeldump) | ||||
| LOG: lev:2 file:pbx_ael.c  line:113 func: pbx_load_module  Starting AEL load process. | ||||
| LOG: lev:2 file:pbx_ael.c  line:126 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'. | ||||
| LOG: lev:2 file:pbx_ael.c  line:115 func: pbx_load_module  Starting AEL load process. | ||||
| LOG: lev:2 file:pbx_ael.c  line:128 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'. | ||||
| LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 1-4: The macro endsess does not end with a return; I will insert one. | ||||
| LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 6-9: The macro nullchk does not end with a return; I will insert one. | ||||
| LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 11-26: The macro endcall does not end with a return; I will insert one. | ||||
| @@ -24,24 +24,25 @@ LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./exte | ||||
| LOG: lev:3 file:pval.c  line:2284 func: check_switch_expr  Warning: file ./extensions.ael, line 106-106: A default case was automatically added to the switch. | ||||
| LOG: lev:3 file:pval.c  line:2284 func: check_switch_expr  Warning: file ./extensions.ael, line 119-119: A default case was automatically added to the switch. | ||||
| LOG: lev:3 file:pval.c  line:2284 func: check_switch_expr  Warning: file ./extensions.ael, line 122-122: A default case was automatically added to the switch. | ||||
| LOG: lev:2 file:pbx_ael.c  line:129 func: pbx_load_module  AEL load process: checked config file name './extensions.ael'. | ||||
| Executed ast_context_create(conts, name=endsess, registrar=pbx_ael); | ||||
| Executed ast_context_create(conts, name=nullchk, registrar=pbx_ael); | ||||
| Executed ast_context_create(conts, name=endcall, registrar=pbx_ael); | ||||
| Executed ast_context_create(conts, name=endcall2, registrar=pbx_ael); | ||||
| Executed ast_context_create(conts, name=endcall3, registrar=pbx_ael); | ||||
| Executed ast_context_create(conts, name=endcall4, registrar=pbx_ael); | ||||
| Executed ast_context_create(conts, name=endcall5, registrar=pbx_ael); | ||||
| LOG: lev:2 file:pbx_ael.c  line:131 func: pbx_load_module  AEL load process: checked config file name './extensions.ael'. | ||||
| Executed ast_context_find_or_create(conts, name=endsess, registrar=pbx_ael); | ||||
| Executed ast_context_find_or_create(conts, name=nullchk, registrar=pbx_ael); | ||||
| Executed ast_context_find_or_create(conts, name=endcall, registrar=pbx_ael); | ||||
| Executed ast_context_find_or_create(conts, name=endcall2, registrar=pbx_ael); | ||||
| Executed ast_context_find_or_create(conts, name=endcall3, registrar=pbx_ael); | ||||
| Executed ast_context_find_or_create(conts, name=endcall4, registrar=pbx_ael); | ||||
| Executed ast_context_find_or_create(conts, name=endcall5, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endsess, rep=0, exten=s, priority=1, label=(null), callerid=(null), appl=NoOp, data=hithere, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endsess, rep=0, exten=s, priority=2, label=(null), callerid=(null), appl=Return, data=, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=nullchk, rep=0, exten=s, priority=1, label=(null), callerid=(null), appl=Set, data=LOCAL(type)=${ARG1}, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=nullchk, rep=0, exten=s, priority=2, label=(null), callerid=(null), appl=NoOp, data=${type} is this, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=nullchk, rep=0, exten=s, priority=3, label=(null), callerid=(null), appl=Return, data=, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall, rep=0, exten=s, priority=1, label=(null), callerid=(null), appl=Set, data=LOCAL(type)=${ARG1}, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall, rep=0, exten=s, priority=2, label=(null), callerid=(null), appl=Goto, data=sw-1-${type},10, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall, rep=0, exten=s, priority=3, label=(null), callerid=(null), appl=NoOp, data=Finish switch-endcall-1, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall, rep=0, exten=s, priority=4, label=(null), callerid=(null), appl=Return, data=, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall, rep=0, exten=_sw-1-., priority=10, label=(null), callerid=(null), appl=Goto, data=s,3, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall, rep=0, exten=s, priority=2, label=(null), callerid=(null), appl=Set, data=~~EXTEN~~=${EXTEN}, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall, rep=0, exten=s, priority=3, label=(null), callerid=(null), appl=Goto, data=sw-1-${type},10, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall, rep=0, exten=s, priority=4, label=(null), callerid=(null), appl=NoOp, data=Finish switch-endcall-1, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall, rep=0, exten=s, priority=5, label=(null), callerid=(null), appl=Return, data=, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall, rep=0, exten=_sw-1-., priority=10, label=(null), callerid=(null), appl=Goto, data=s,4, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall, rep=0, exten=sw-1-, priority=10, label=(null), callerid=(null), appl=Goto, data=sw-1-.|10, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall, rep=0, exten=sw-1-out, priority=10, label=(null), callerid=(null), appl=Gosub, data=nullchk,s,1(callid), FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall, rep=0, exten=sw-1-out, priority=11, label=(null), callerid=(null), appl=GotoIf, data=$[${testnotnull}]?12:15, FREE, registrar=pbx_ael); | ||||
| @@ -49,18 +50,19 @@ Executed ast_add_extension2(context=endcall, rep=0, exten=sw-1-out, priority=12, | ||||
| Executed ast_add_extension2(context=endcall, rep=0, exten=sw-1-out, priority=13, label=(null), callerid=(null), appl=Goto, data=sw-1-out,ptr1, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall, rep=0, exten=sw-1-out, priority=14, label=(null), callerid=(null), appl=Goto, data=17, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall, rep=0, exten=sw-1-out, priority=15, label=ptr1, callerid=(null), appl=Softhangup, data=${CHANNEL}, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall, rep=0, exten=sw-1-out, priority=16, label=(null), callerid=(null), appl=Goto, data=s,3, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall, rep=0, exten=sw-1-out, priority=16, label=(null), callerid=(null), appl=Goto, data=s,4, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall, rep=0, exten=sw-1-out, priority=17, label=(null), callerid=(null), appl=NoOp, data=Finish if-sw-endcall-out-1-2, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall, rep=0, exten=sw-1-out, priority=18, label=(null), callerid=(null), appl=Noop, data=esac, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall, rep=0, exten=sw-1-out, priority=19, label=(null), callerid=(null), appl=Goto, data=sw-1-.,10, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall2, rep=0, exten=s, priority=1, label=(null), callerid=(null), appl=Set, data=LOCAL(type)=${ARG1}, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall2, rep=0, exten=s, priority=2, label=(null), callerid=(null), appl=Goto, data=sw-3-${type},10, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall2, rep=0, exten=s, priority=3, label=(null), callerid=(null), appl=NoOp, data=Finish switch-endcall2-3, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall2, rep=0, exten=s, priority=4, label=(null), callerid=(null), appl=Return, data=, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall2, rep=0, exten=_sw-3-., priority=10, label=(null), callerid=(null), appl=Goto, data=s,3, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall2, rep=0, exten=s, priority=2, label=(null), callerid=(null), appl=Set, data=~~EXTEN~~=${EXTEN}, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall2, rep=0, exten=s, priority=3, label=(null), callerid=(null), appl=Goto, data=sw-3-${type},10, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall2, rep=0, exten=s, priority=4, label=(null), callerid=(null), appl=NoOp, data=Finish switch-endcall2-3, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall2, rep=0, exten=s, priority=5, label=(null), callerid=(null), appl=Return, data=, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall2, rep=0, exten=_sw-3-., priority=10, label=(null), callerid=(null), appl=Goto, data=s,4, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall2, rep=0, exten=sw-3-, priority=10, label=(null), callerid=(null), appl=Goto, data=sw-3-.|10, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall2, rep=0, exten=sw-3-out2, priority=10, label=ptr1, callerid=(null), appl=Softhangup, data=${CHANNEL}, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall2, rep=0, exten=sw-3-out2, priority=11, label=(null), callerid=(null), appl=Goto, data=s,3, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall2, rep=0, exten=sw-3-out2, priority=11, label=(null), callerid=(null), appl=Goto, data=s,4, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall2, rep=0, exten=sw-3-out2, priority=12, label=(null), callerid=(null), appl=Noop, data=esac, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall2, rep=0, exten=sw-3-out2, priority=13, label=(null), callerid=(null), appl=Goto, data=sw-3-.,10, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall2, rep=0, exten=sw-3-out, priority=10, label=(null), callerid=(null), appl=Gosub, data=nullchk,s,1(callid), FREE, registrar=pbx_ael); | ||||
| @@ -70,23 +72,24 @@ Executed ast_add_extension2(context=endcall2, rep=0, exten=sw-3-out, priority=13 | ||||
| Executed ast_add_extension2(context=endcall2, rep=0, exten=sw-3-out, priority=14, label=(null), callerid=(null), appl=NoOp, data=Finish if-sw-endcall2-out-3-4, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall2, rep=0, exten=sw-3-out, priority=15, label=(null), callerid=(null), appl=Goto, data=sw-3-out2,10, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall3, rep=0, exten=s, priority=1, label=(null), callerid=(null), appl=Set, data=LOCAL(type)=${ARG1}, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall3, rep=0, exten=s, priority=2, label=(null), callerid=(null), appl=Goto, data=sw-5-${type},10, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall3, rep=0, exten=s, priority=3, label=(null), callerid=(null), appl=NoOp, data=Finish switch-endcall3-5, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall3, rep=0, exten=s, priority=4, label=(null), callerid=(null), appl=GotoIf, data=$[${testnotnull}]?5:6, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall3, rep=0, exten=s, priority=5, label=(null), callerid=(null), appl=Goto, data=sw-8-out,ptr1, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall3, rep=0, exten=s, priority=6, label=(null), callerid=(null), appl=NoOp, data=Finish if-endcall3-7, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall3, rep=0, exten=s, priority=7, label=(null), callerid=(null), appl=Goto, data=sw-8-${type},10, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall3, rep=0, exten=s, priority=8, label=(null), callerid=(null), appl=NoOp, data=Finish switch-endcall3-8, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall3, rep=0, exten=s, priority=9, label=(null), callerid=(null), appl=Return, data=, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall3, rep=0, exten=_sw-8-., priority=10, label=(null), callerid=(null), appl=Goto, data=s,8, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall3, rep=0, exten=s, priority=2, label=(null), callerid=(null), appl=Set, data=~~EXTEN~~=${EXTEN}, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall3, rep=0, exten=s, priority=3, label=(null), callerid=(null), appl=Goto, data=sw-5-${type},10, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall3, rep=0, exten=s, priority=4, label=(null), callerid=(null), appl=NoOp, data=Finish switch-endcall3-5, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall3, rep=0, exten=s, priority=5, label=(null), callerid=(null), appl=GotoIf, data=$[${testnotnull}]?6:7, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall3, rep=0, exten=s, priority=6, label=(null), callerid=(null), appl=Goto, data=sw-8-out,ptr1, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall3, rep=0, exten=s, priority=7, label=(null), callerid=(null), appl=NoOp, data=Finish if-endcall3-7, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall3, rep=0, exten=s, priority=8, label=(null), callerid=(null), appl=Goto, data=sw-8-${type},10, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall3, rep=0, exten=s, priority=9, label=(null), callerid=(null), appl=NoOp, data=Finish switch-endcall3-8, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall3, rep=0, exten=s, priority=10, label=(null), callerid=(null), appl=Return, data=, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall3, rep=0, exten=_sw-8-., priority=10, label=(null), callerid=(null), appl=Goto, data=s,9, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall3, rep=0, exten=sw-8-, priority=10, label=(null), callerid=(null), appl=Goto, data=sw-8-.|10, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall3, rep=0, exten=sw-8-out, priority=10, label=(null), callerid=(null), appl=GotoIf, data=$[${testnotnull}]?11:13, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall3, rep=0, exten=sw-8-out, priority=11, label=ptr1, callerid=(null), appl=Softhangup, data=${CHANNEL}, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall3, rep=0, exten=sw-8-out, priority=12, label=(null), callerid=(null), appl=Goto, data=s,8, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall3, rep=0, exten=sw-8-out, priority=12, label=(null), callerid=(null), appl=Goto, data=s,9, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall3, rep=0, exten=sw-8-out, priority=13, label=(null), callerid=(null), appl=NoOp, data=Finish if-sw-endcall3-out-8-9, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall3, rep=0, exten=sw-8-out, priority=14, label=(null), callerid=(null), appl=Noop, data=esac, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall3, rep=0, exten=sw-8-out, priority=15, label=(null), callerid=(null), appl=Goto, data=sw-8-.,10, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall3, rep=0, exten=_sw-5-., priority=10, label=(null), callerid=(null), appl=Goto, data=s,3, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall3, rep=0, exten=_sw-5-., priority=10, label=(null), callerid=(null), appl=Goto, data=s,4, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall3, rep=0, exten=sw-5-, priority=10, label=(null), callerid=(null), appl=Goto, data=sw-5-.|10, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall3, rep=0, exten=sw-5-out, priority=10, label=(null), callerid=(null), appl=Gosub, data=nullchk,s,1(callid), FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall3, rep=0, exten=sw-5-out, priority=11, label=(null), callerid=(null), appl=GotoIf, data=$[${testnotnull}]?12:14, FREE, registrar=pbx_ael); | ||||
| @@ -96,28 +99,30 @@ Executed ast_add_extension2(context=endcall3, rep=0, exten=sw-5-out, priority=14 | ||||
| Executed ast_add_extension2(context=endcall3, rep=0, exten=sw-5-out, priority=15, label=(null), callerid=(null), appl=Noop, data=esac, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall3, rep=0, exten=sw-5-out, priority=16, label=(null), callerid=(null), appl=Goto, data=sw-5-.,10, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall4, rep=0, exten=s, priority=1, label=(null), callerid=(null), appl=Set, data=LOCAL(type)=${ARG1}, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall4, rep=0, exten=s, priority=2, label=(null), callerid=(null), appl=Goto, data=sw-10-${type},10, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall4, rep=0, exten=s, priority=3, label=(null), callerid=(null), appl=NoOp, data=Finish switch-endcall4-10, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall4, rep=0, exten=s, priority=4, label=(null), callerid=(null), appl=GotoIf, data=$[${testnotnull}]?5:6, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall4, rep=0, exten=s, priority=5, label=(null), callerid=(null), appl=Goto, data=sw-14-in,ptr1, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall4, rep=0, exten=s, priority=6, label=(null), callerid=(null), appl=NoOp, data=Finish if-endcall4-12, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall4, rep=0, exten=s, priority=7, label=(null), callerid=(null), appl=Goto, data=sw-13-${type},10, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall4, rep=0, exten=s, priority=8, label=(null), callerid=(null), appl=NoOp, data=Finish switch-endcall4-13, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall4, rep=0, exten=s, priority=9, label=(null), callerid=(null), appl=Return, data=, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall4, rep=0, exten=_sw-13-., priority=10, label=(null), callerid=(null), appl=Goto, data=s,8, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall4, rep=0, exten=s, priority=2, label=(null), callerid=(null), appl=Set, data=~~EXTEN~~=${EXTEN}, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall4, rep=0, exten=s, priority=3, label=(null), callerid=(null), appl=Goto, data=sw-10-${type},10, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall4, rep=0, exten=s, priority=4, label=(null), callerid=(null), appl=NoOp, data=Finish switch-endcall4-10, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall4, rep=0, exten=s, priority=5, label=(null), callerid=(null), appl=GotoIf, data=$[${testnotnull}]?6:7, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall4, rep=0, exten=s, priority=6, label=(null), callerid=(null), appl=Goto, data=sw-14-in,ptr1, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall4, rep=0, exten=s, priority=7, label=(null), callerid=(null), appl=NoOp, data=Finish if-endcall4-12, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall4, rep=0, exten=s, priority=8, label=(null), callerid=(null), appl=Goto, data=sw-13-${type},10, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall4, rep=0, exten=s, priority=9, label=(null), callerid=(null), appl=NoOp, data=Finish switch-endcall4-13, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall4, rep=0, exten=s, priority=10, label=(null), callerid=(null), appl=Return, data=, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall4, rep=0, exten=_sw-13-., priority=10, label=(null), callerid=(null), appl=Goto, data=s,9, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall4, rep=0, exten=sw-13-, priority=10, label=(null), callerid=(null), appl=Goto, data=sw-13-.|10, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall4, rep=0, exten=sw-13-out, priority=10, label=(null), callerid=(null), appl=Goto, data=sw-14-${type},10, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall4, rep=0, exten=sw-13-out, priority=11, label=(null), callerid=(null), appl=NoOp, data=Finish switch-sw-endcall4-out-13-14, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall4, rep=0, exten=sw-13-out, priority=12, label=(null), callerid=(null), appl=Goto, data=sw-13-.,10, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall4, rep=0, exten=_sw-14-., priority=10, label=(null), callerid=(null), appl=Goto, data=sw-13-out,11, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall4, rep=0, exten=sw-13-out, priority=10, label=(null), callerid=(null), appl=Set, data=~~EXTEN~~=${EXTEN}, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall4, rep=0, exten=sw-13-out, priority=11, label=(null), callerid=(null), appl=Goto, data=sw-14-${type},10, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall4, rep=0, exten=sw-13-out, priority=12, label=(null), callerid=(null), appl=NoOp, data=Finish switch-sw-endcall4-out-13-14, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall4, rep=0, exten=sw-13-out, priority=13, label=(null), callerid=(null), appl=Goto, data=sw-13-.,10, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall4, rep=0, exten=_sw-14-., priority=10, label=(null), callerid=(null), appl=Goto, data=sw-13-out,12, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall4, rep=0, exten=sw-14-, priority=10, label=(null), callerid=(null), appl=Goto, data=sw-14-.|10, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall4, rep=0, exten=sw-14-in, priority=10, label=(null), callerid=(null), appl=GotoIf, data=$[${testnotnull}]?11:13, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall4, rep=0, exten=sw-14-in, priority=11, label=ptr1, callerid=(null), appl=Softhangup, data=${CHANNEL}, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall4, rep=0, exten=sw-14-in, priority=12, label=(null), callerid=(null), appl=Goto, data=sw-13-out,11, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall4, rep=0, exten=sw-14-in, priority=12, label=(null), callerid=(null), appl=Goto, data=sw-13-out,12, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall4, rep=0, exten=sw-14-in, priority=13, label=(null), callerid=(null), appl=NoOp, data=Finish if-sw-sw-endcall4-out-13-in-14-15, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall4, rep=0, exten=sw-14-in, priority=14, label=(null), callerid=(null), appl=Noop, data=esac, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall4, rep=0, exten=sw-14-in, priority=15, label=(null), callerid=(null), appl=Goto, data=sw-14-.,10, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall4, rep=0, exten=_sw-10-., priority=10, label=(null), callerid=(null), appl=Goto, data=s,3, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall4, rep=0, exten=_sw-10-., priority=10, label=(null), callerid=(null), appl=Goto, data=s,4, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall4, rep=0, exten=sw-10-, priority=10, label=(null), callerid=(null), appl=Goto, data=sw-10-.|10, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall4, rep=0, exten=sw-10-out, priority=10, label=(null), callerid=(null), appl=Gosub, data=nullchk,s,1(callid), FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall4, rep=0, exten=sw-10-out, priority=11, label=(null), callerid=(null), appl=GotoIf, data=$[${testnotnull}]?12:14, FREE, registrar=pbx_ael); | ||||
| @@ -127,28 +132,30 @@ Executed ast_add_extension2(context=endcall4, rep=0, exten=sw-10-out, priority=1 | ||||
| Executed ast_add_extension2(context=endcall4, rep=0, exten=sw-10-out, priority=15, label=(null), callerid=(null), appl=Noop, data=esac, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall4, rep=0, exten=sw-10-out, priority=16, label=(null), callerid=(null), appl=Goto, data=sw-10-.,10, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall5, rep=0, exten=s, priority=1, label=(null), callerid=(null), appl=Set, data=LOCAL(type)=${ARG1}, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall5, rep=0, exten=s, priority=2, label=(null), callerid=(null), appl=Goto, data=sw-16-${type},10, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall5, rep=0, exten=s, priority=3, label=(null), callerid=(null), appl=NoOp, data=Finish switch-endcall5-16, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall5, rep=0, exten=s, priority=4, label=(null), callerid=(null), appl=GotoIf, data=$[${testnotnull}]?5:6, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall5, rep=0, exten=s, priority=5, label=(null), callerid=(null), appl=Goto, data=sw-21-in,ptr1, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall5, rep=0, exten=s, priority=6, label=(null), callerid=(null), appl=NoOp, data=Finish if-endcall5-19, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall5, rep=0, exten=s, priority=7, label=(null), callerid=(null), appl=Goto, data=sw-20-${type},10, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall5, rep=0, exten=s, priority=8, label=(null), callerid=(null), appl=NoOp, data=Finish switch-endcall5-20, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall5, rep=0, exten=s, priority=9, label=(null), callerid=(null), appl=Return, data=, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall5, rep=0, exten=_sw-20-., priority=10, label=(null), callerid=(null), appl=Goto, data=s,8, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall5, rep=0, exten=s, priority=2, label=(null), callerid=(null), appl=Set, data=~~EXTEN~~=${EXTEN}, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall5, rep=0, exten=s, priority=3, label=(null), callerid=(null), appl=Goto, data=sw-16-${type},10, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall5, rep=0, exten=s, priority=4, label=(null), callerid=(null), appl=NoOp, data=Finish switch-endcall5-16, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall5, rep=0, exten=s, priority=5, label=(null), callerid=(null), appl=GotoIf, data=$[${testnotnull}]?6:7, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall5, rep=0, exten=s, priority=6, label=(null), callerid=(null), appl=Goto, data=sw-21-in,ptr1, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall5, rep=0, exten=s, priority=7, label=(null), callerid=(null), appl=NoOp, data=Finish if-endcall5-19, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall5, rep=0, exten=s, priority=8, label=(null), callerid=(null), appl=Goto, data=sw-20-${type},10, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall5, rep=0, exten=s, priority=9, label=(null), callerid=(null), appl=NoOp, data=Finish switch-endcall5-20, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall5, rep=0, exten=s, priority=10, label=(null), callerid=(null), appl=Return, data=, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall5, rep=0, exten=_sw-20-., priority=10, label=(null), callerid=(null), appl=Goto, data=s,9, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall5, rep=0, exten=sw-20-, priority=10, label=(null), callerid=(null), appl=Goto, data=sw-20-.|10, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall5, rep=0, exten=sw-20-out, priority=10, label=(null), callerid=(null), appl=Goto, data=sw-21-${type},10, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall5, rep=0, exten=sw-20-out, priority=11, label=(null), callerid=(null), appl=NoOp, data=Finish switch-sw-endcall5-out-20-21, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall5, rep=0, exten=sw-20-out, priority=12, label=(null), callerid=(null), appl=Goto, data=sw-20-.,10, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall5, rep=0, exten=_sw-21-., priority=10, label=(null), callerid=(null), appl=Goto, data=sw-20-out,11, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall5, rep=0, exten=sw-20-out, priority=10, label=(null), callerid=(null), appl=Set, data=~~EXTEN~~=${EXTEN}, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall5, rep=0, exten=sw-20-out, priority=11, label=(null), callerid=(null), appl=Goto, data=sw-21-${type},10, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall5, rep=0, exten=sw-20-out, priority=12, label=(null), callerid=(null), appl=NoOp, data=Finish switch-sw-endcall5-out-20-21, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall5, rep=0, exten=sw-20-out, priority=13, label=(null), callerid=(null), appl=Goto, data=sw-20-.,10, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall5, rep=0, exten=_sw-21-., priority=10, label=(null), callerid=(null), appl=Goto, data=sw-20-out,12, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall5, rep=0, exten=sw-21-, priority=10, label=(null), callerid=(null), appl=Goto, data=sw-21-.|10, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall5, rep=0, exten=sw-21-in, priority=10, label=(null), callerid=(null), appl=GotoIf, data=$[${testnotnull}]?11:13, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall5, rep=0, exten=sw-21-in, priority=11, label=ptr1, callerid=(null), appl=Softhangup, data=${CHANNEL}, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall5, rep=0, exten=sw-21-in, priority=12, label=(null), callerid=(null), appl=Goto, data=sw-20-out,11, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall5, rep=0, exten=sw-21-in, priority=12, label=(null), callerid=(null), appl=Goto, data=sw-20-out,12, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall5, rep=0, exten=sw-21-in, priority=13, label=(null), callerid=(null), appl=NoOp, data=Finish if-sw-sw-endcall5-out-20-in-21-22, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall5, rep=0, exten=sw-21-in, priority=14, label=(null), callerid=(null), appl=Noop, data=esac, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall5, rep=0, exten=sw-21-in, priority=15, label=(null), callerid=(null), appl=Goto, data=sw-21-.,10, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall5, rep=0, exten=_sw-16-., priority=10, label=(null), callerid=(null), appl=Goto, data=s,3, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall5, rep=0, exten=_sw-16-., priority=10, label=(null), callerid=(null), appl=Goto, data=s,4, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall5, rep=0, exten=sw-16-, priority=10, label=(null), callerid=(null), appl=Goto, data=sw-16-.|10, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall5, rep=0, exten=sw-16-in, priority=10, label=(null), callerid=(null), appl=Gosub, data=nullchk,s,1(callid), FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall5, rep=0, exten=sw-16-in, priority=11, label=ptr2, callerid=(null), appl=GotoIf, data=$[${testnotnull}]?12:14, FREE, registrar=pbx_ael); | ||||
| @@ -163,9 +170,9 @@ Executed ast_add_extension2(context=endcall5, rep=0, exten=sw-16-out, priority=1 | ||||
| Executed ast_add_extension2(context=endcall5, rep=0, exten=sw-16-out, priority=13, label=(null), callerid=(null), appl=Goto, data=sw-21-in,ptr1, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall5, rep=0, exten=sw-16-out, priority=14, label=(null), callerid=(null), appl=NoOp, data=Finish if-sw-endcall5-out-16-17, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=endcall5, rep=0, exten=sw-16-out, priority=15, label=(null), callerid=(null), appl=Goto, data=sw-16-in,10, FREE, registrar=pbx_ael); | ||||
| LOG: lev:2 file:pbx_ael.c  line:131 func: pbx_load_module  AEL load process: compiled config file name './extensions.ael'. | ||||
| LOG: lev:2 file:pbx_ael.c  line:134 func: pbx_load_module  AEL load process: compiled config file name './extensions.ael'. | ||||
| Executed ast_merge_contexts_and_delete(); | ||||
| LOG: lev:2 file:pbx_ael.c  line:134 func: pbx_load_module  AEL load process: merged config file name './extensions.ael'. | ||||
| LOG: lev:2 file:pbx_ael.c  line:139 func: pbx_load_module  AEL load process: merged config file name './extensions.ael'. | ||||
| Executed ast_walk_contexts(); | ||||
| LOG: lev:2 file:pbx_ael.c  line:137 func: pbx_load_module  AEL load process: verified config file name './extensions.ael'. | ||||
| LOG: lev:4 file:ael2_parse  line:531 func: main  7 contexts, 37 extensions, 131 priorities | ||||
| LOG: lev:2 file:pbx_ael.c  line:142 func: pbx_load_module  AEL load process: verified config file name './extensions.ael'. | ||||
| LOG: lev:4 file:ael2_parse  line:548 func: main  7 contexts, 37 extensions, 138 priorities | ||||
|   | ||||
							
								
								
									
										34
									
								
								pbx/ael/ael-test/ref.ael-ntest24
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								pbx/ael/ael-test/ref.ael-ntest24
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,34 @@ | ||||
|  | ||||
| (If you find progress and other non-error messages irritating, you can use -q to suppress them) | ||||
|  | ||||
| (You can use the -n option if you aren't interested in seeing all the instructions generated by the compiler) | ||||
|  | ||||
|  | ||||
| (You can use the -w option to dump extensions.conf format to extensions.conf.aeldump) | ||||
| LOG: lev:2 file:pbx_ael.c  line:115 func: pbx_load_module  Starting AEL load process. | ||||
| LOG: lev:2 file:pbx_ael.c  line:128 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'. | ||||
| LOG: lev:2 file:pbx_ael.c  line:131 func: pbx_load_module  AEL load process: checked config file name './extensions.ael'. | ||||
| Executed ast_context_find_or_create(conts, name=test11, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=test11, rep=0, exten=_X., priority=1, label=(null), callerid=(null), appl=Answer, data=, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=test11, rep=0, exten=_X., priority=2, label=(null), callerid=(null), appl=Dial, data=iax2/test11:nosecret@192.168.134.2522, 15,tTwW, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=test11, rep=0, exten=_X., priority=3, label=(null), callerid=(null), appl=Hangup, data=, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=test11, rep=0, exten=_X., priority=4, label=(null), callerid=(null), appl=NoOp, data=$[{GROUP_COUNT(${target_num}@agent_queue_b)}=1], FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=test11, rep=0, exten=_X., priority=5, label=(null), callerid=(null), appl=NoOp, data=$[1+0~~${DB(skip_group/${target_num}/agent_queue_b)}], FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=test11, rep=0, exten=_X., priority=6, label=(null), callerid=(null), appl=NoOp, data=$[0~~${DB(skip_group/${target_num}/agent_queue_b)}+1], FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=test11, rep=0, exten=_X., priority=7, label=(null), callerid=(null), appl=NoOp, data=$[${GROUP_COUNT(${target_num}@agent_queue_b)}=1+0~~${DB(skip_group/${target_num}/agent_queue_b)}], FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=test11, rep=0, exten=_X., priority=8, label=(null), callerid=(null), appl=NoOp, data=$[${GROUP_COUNT(${target_num}@agent_queue_b)}=0~~${DB(skip_group/${target_num}/agent_queue_b)}+1], FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=test11, rep=0, exten=_X., priority=9, label=(null), callerid=(null), appl=GotoIf, data=$[${GROUP_COUNT(${target_num}@agent_queue_b)}==1+0~~${DB(skip_group/${target_num}/agent_queue_b)}]?10:11, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=test11, rep=0, exten=_X., priority=10, label=(null), callerid=(null), appl=Set, data=testif=$[1+0~~${DB(skip_group/${target_num}/agent_queue_b)}], FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=test11, rep=0, exten=_X., priority=11, label=(null), callerid=(null), appl=NoOp, data=Finish if-test11-1, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=test11, rep=0, exten=_X., priority=12, label=(null), callerid=(null), appl=GotoIf, data=$[${GROUP_COUNT(${target_num}@agent_queue_b)}==0~~${DB(skip_group/${target_num}/agent_queue_b)}+1]?13:14, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=test11, rep=0, exten=_X., priority=13, label=(null), callerid=(null), appl=Set, data=testif=$[1+0~~${DB(skip_group/${target_num}/agent_queue_b)}], FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=test11, rep=0, exten=_X., priority=14, label=(null), callerid=(null), appl=NoOp, data=Finish if-test11-2, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=test11, rep=0, exten=_X., priority=15, label=(null), callerid=(null), appl=GotoIf, data=$[${GROUP_COUNT(${target_num}@agent_queue_b)}==1+0~~${DB(skip_group/${target_num}/agent_queue_b)}]?16:17, FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=test11, rep=0, exten=_X., priority=16, label=(null), callerid=(null), appl=Set, data=testif=$[1+0~~${DB(skip_group/${target_num}/agent_queue_b)}], FREE, registrar=pbx_ael); | ||||
| Executed ast_add_extension2(context=test11, rep=0, exten=_X., priority=17, label=(null), callerid=(null), appl=NoOp, data=Finish if-test11-3, FREE, registrar=pbx_ael); | ||||
| LOG: lev:2 file:pbx_ael.c  line:134 func: pbx_load_module  AEL load process: compiled config file name './extensions.ael'. | ||||
| Executed ast_merge_contexts_and_delete(); | ||||
| LOG: lev:2 file:pbx_ael.c  line:139 func: pbx_load_module  AEL load process: merged config file name './extensions.ael'. | ||||
| Executed ast_walk_contexts(); | ||||
| LOG: lev:2 file:pbx_ael.c  line:142 func: pbx_load_module  AEL load process: verified config file name './extensions.ael'. | ||||
| LOG: lev:4 file:ael2_parse  line:548 func: main  1 contexts, 1 extensions, 17 priorities | ||||
| @@ -2,8 +2,8 @@ | ||||
| (If you find progress and other non-error messages irritating, you can use -q to suppress them) | ||||
|  | ||||
| (You can use the -w option to dump extensions.conf format to extensions.conf.aeldump) | ||||
| LOG: lev:2 file:pbx_ael.c  line:113 func: pbx_load_module  Starting AEL load process. | ||||
| LOG: lev:2 file:pbx_ael.c  line:126 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'. | ||||
| LOG: lev:2 file:pbx_ael.c  line:115 func: pbx_load_module  Starting AEL load process. | ||||
| LOG: lev:2 file:pbx_ael.c  line:128 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'. | ||||
| LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 2-16: The macro testdial does not end with a return; I will insert one. | ||||
| LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 18-25: The macro exten-gen does not end with a return; I will insert one. | ||||
| LOG: lev:3 file:pval.c  line:1362 func: check_goto  Warning: file ./extensions.ael, line 21-21: It's bad form to have a goto in a macro to a target outside the macro! | ||||
| @@ -11,8 +11,8 @@ LOG: lev:3 file:pval.c  line:1362 func: check_goto  Warning: file ./extensions.a | ||||
| LOG: lev:3 file:pval.c  line:2284 func: check_switch_expr  Warning: file ./extensions.ael, line 58-58: A default case was automatically added to the switch. | ||||
| LOG: lev:3 file:pval.c  line:922 func: check_dow  Warning: file ./extensions.ael, line 67-67: The day (m0n) must be one of 'sun', 'mon', 'tue', 'wed', 'thu', 'fri', or 'sat'! | ||||
| LOG: lev:3 file:pval.c  line:880 func: check_timerange  Warning: file ./extensions.ael, line 78-78: The end time (25:00) is out of range! | ||||
| LOG: lev:2 file:pbx_ael.c  line:129 func: pbx_load_module  AEL load process: checked config file name './extensions.ael'. | ||||
| LOG: lev:2 file:pbx_ael.c  line:131 func: pbx_load_module  AEL load process: compiled config file name './extensions.ael'. | ||||
| LOG: lev:2 file:pbx_ael.c  line:134 func: pbx_load_module  AEL load process: merged config file name './extensions.ael'. | ||||
| LOG: lev:2 file:pbx_ael.c  line:137 func: pbx_load_module  AEL load process: verified config file name './extensions.ael'. | ||||
| LOG: lev:4 file:ael2_parse  line:531 func: main  5 contexts, 16 extensions, 157 priorities | ||||
| LOG: lev:2 file:pbx_ael.c  line:131 func: pbx_load_module  AEL load process: checked config file name './extensions.ael'. | ||||
| LOG: lev:2 file:pbx_ael.c  line:134 func: pbx_load_module  AEL load process: compiled config file name './extensions.ael'. | ||||
| LOG: lev:2 file:pbx_ael.c  line:139 func: pbx_load_module  AEL load process: merged config file name './extensions.ael'. | ||||
| LOG: lev:2 file:pbx_ael.c  line:142 func: pbx_load_module  AEL load process: verified config file name './extensions.ael'. | ||||
| LOG: lev:4 file:ael2_parse  line:548 func: main  5 contexts, 16 extensions, 159 priorities | ||||
|   | ||||
| @@ -2,10 +2,10 @@ | ||||
| (If you find progress and other non-error messages irritating, you can use -q to suppress them) | ||||
|  | ||||
| (You can use the -w option to dump extensions.conf format to extensions.conf.aeldump) | ||||
| LOG: lev:2 file:pbx_ael.c  line:113 func: pbx_load_module  Starting AEL load process. | ||||
| LOG: lev:2 file:pbx_ael.c  line:126 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'. | ||||
| LOG: lev:2 file:pbx_ael.c  line:129 func: pbx_load_module  AEL load process: checked config file name './extensions.ael'. | ||||
| LOG: lev:2 file:pbx_ael.c  line:131 func: pbx_load_module  AEL load process: compiled config file name './extensions.ael'. | ||||
| LOG: lev:2 file:pbx_ael.c  line:134 func: pbx_load_module  AEL load process: merged config file name './extensions.ael'. | ||||
| LOG: lev:2 file:pbx_ael.c  line:137 func: pbx_load_module  AEL load process: verified config file name './extensions.ael'. | ||||
| LOG: lev:4 file:ael2_parse  line:531 func: main  1 contexts, 7 extensions, 27 priorities | ||||
| LOG: lev:2 file:pbx_ael.c  line:115 func: pbx_load_module  Starting AEL load process. | ||||
| LOG: lev:2 file:pbx_ael.c  line:128 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'. | ||||
| LOG: lev:2 file:pbx_ael.c  line:131 func: pbx_load_module  AEL load process: checked config file name './extensions.ael'. | ||||
| LOG: lev:2 file:pbx_ael.c  line:134 func: pbx_load_module  AEL load process: compiled config file name './extensions.ael'. | ||||
| LOG: lev:2 file:pbx_ael.c  line:139 func: pbx_load_module  AEL load process: merged config file name './extensions.ael'. | ||||
| LOG: lev:2 file:pbx_ael.c  line:142 func: pbx_load_module  AEL load process: verified config file name './extensions.ael'. | ||||
| LOG: lev:4 file:ael2_parse  line:548 func: main  1 contexts, 7 extensions, 29 priorities | ||||
|   | ||||
| @@ -2,8 +2,8 @@ | ||||
| (If you find progress and other non-error messages irritating, you can use -q to suppress them) | ||||
|  | ||||
| (You can use the -w option to dump extensions.conf format to extensions.conf.aeldump) | ||||
| LOG: lev:2 file:pbx_ael.c  line:113 func: pbx_load_module  Starting AEL load process. | ||||
| LOG: lev:2 file:pbx_ael.c  line:126 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'. | ||||
| LOG: lev:2 file:pbx_ael.c  line:115 func: pbx_load_module  Starting AEL load process. | ||||
| LOG: lev:2 file:pbx_ael.c  line:128 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'. | ||||
| LOG: lev:3 file:pval.c  line:2300 func: check_context_names  Warning: file ./extensions.ael, line 49-62: The context name (incoming) is also declared in file ./extensions.ael, line 62-69! (and neither is marked 'extend') | ||||
| LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 71-175: The macro std-priv-exten does not end with a return; I will insert one. | ||||
| LOG: lev:3 file:pval.c  line:2284 func: check_switch_expr  Warning: file ./extensions.ael, line 245-246: A default case was automatically added to the switch. | ||||
| @@ -11,8 +11,8 @@ LOG: lev:3 file:pval.c  line:2426 func: check_pval_item  Warning: file ./extensi | ||||
| LOG: lev:3 file:pval.c  line:2426 func: check_pval_item  Warning: file ./extensions.ael, line 313-313: macro call to non-existent funcD! (Not even in the extensions.conf stuff!) | ||||
| LOG: lev:3 file:pval.c  line:1346 func: check_goto  Warning: file ./extensions.ael, line 319-319: goto:  Couldn't find goto target test5|s|1, not even in extensions.conf! | ||||
| LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 363-366: The macro dialoutpstn does not end with a return; I will insert one. | ||||
| LOG: lev:2 file:pbx_ael.c  line:129 func: pbx_load_module  AEL load process: checked config file name './extensions.ael'. | ||||
| LOG: lev:2 file:pbx_ael.c  line:131 func: pbx_load_module  AEL load process: compiled config file name './extensions.ael'. | ||||
| LOG: lev:2 file:pbx_ael.c  line:134 func: pbx_load_module  AEL load process: merged config file name './extensions.ael'. | ||||
| LOG: lev:2 file:pbx_ael.c  line:137 func: pbx_load_module  AEL load process: verified config file name './extensions.ael'. | ||||
| LOG: lev:4 file:ael2_parse  line:531 func: main  13 contexts, 57 extensions, 188 priorities | ||||
| LOG: lev:2 file:pbx_ael.c  line:131 func: pbx_load_module  AEL load process: checked config file name './extensions.ael'. | ||||
| LOG: lev:2 file:pbx_ael.c  line:134 func: pbx_load_module  AEL load process: compiled config file name './extensions.ael'. | ||||
| LOG: lev:2 file:pbx_ael.c  line:139 func: pbx_load_module  AEL load process: merged config file name './extensions.ael'. | ||||
| LOG: lev:2 file:pbx_ael.c  line:142 func: pbx_load_module  AEL load process: verified config file name './extensions.ael'. | ||||
| LOG: lev:4 file:ael2_parse  line:548 func: main  13 contexts, 57 extensions, 194 priorities | ||||
|   | ||||
| @@ -2,14 +2,14 @@ | ||||
| (If you find progress and other non-error messages irritating, you can use -q to suppress them) | ||||
|  | ||||
| (You can use the -w option to dump extensions.conf format to extensions.conf.aeldump) | ||||
| LOG: lev:2 file:pbx_ael.c  line:113 func: pbx_load_module  Starting AEL load process. | ||||
| LOG: lev:2 file:ael.flex  line:662 func: setup_filestack    --Read in included file ././include1.ael2, 78 chars | ||||
| LOG: lev:2 file:ael.flex  line:662 func: setup_filestack    --Read in included file ././include2.ael2, 98 chars | ||||
| LOG: lev:2 file:ael.flex  line:662 func: setup_filestack    --Read in included file ././include3.ael2, 57 chars | ||||
| LOG: lev:2 file:ael.flex  line:662 func: setup_filestack    --Read in included file ././include5.ael2, 56 chars | ||||
| LOG: lev:2 file:ael.flex  line:662 func: setup_filestack    --Read in included file ././include4.ael2, 87 chars | ||||
| LOG: lev:2 file:ael.flex  line:662 func: setup_filestack    --Read in included file ././telemarket_torture.ael2, 28036 chars | ||||
| LOG: lev:2 file:pbx_ael.c  line:126 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'. | ||||
| LOG: lev:2 file:pbx_ael.c  line:115 func: pbx_load_module  Starting AEL load process. | ||||
| LOG: lev:2 file:ael.flex  line:672 func: setup_filestack    --Read in included file ././include1.ael2, 78 chars | ||||
| LOG: lev:2 file:ael.flex  line:672 func: setup_filestack    --Read in included file ././include2.ael2, 98 chars | ||||
| LOG: lev:2 file:ael.flex  line:672 func: setup_filestack    --Read in included file ././include3.ael2, 57 chars | ||||
| LOG: lev:2 file:ael.flex  line:672 func: setup_filestack    --Read in included file ././include5.ael2, 56 chars | ||||
| LOG: lev:2 file:ael.flex  line:672 func: setup_filestack    --Read in included file ././include4.ael2, 87 chars | ||||
| LOG: lev:2 file:ael.flex  line:672 func: setup_filestack    --Read in included file ././telemarket_torture.ael2, 28036 chars | ||||
| LOG: lev:2 file:pbx_ael.c  line:128 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'. | ||||
| LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 14-34: The macro std-exten does not end with a return; I will insert one. | ||||
| LOG: lev:3 file:pval.c  line:1362 func: check_goto  Warning: file ./extensions.ael, line 17-17: It's bad form to have a goto in a macro to a target outside the macro! | ||||
| LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 36-59: The macro std-priv-exten_1 does not end with a return; I will insert one. | ||||
| @@ -92,8 +92,8 @@ LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./exte | ||||
| LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 2030-2048: The macro ciddial2 does not end with a return; I will insert one. | ||||
| LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 2050-2065: The macro callerid-liar does not end with a return; I will insert one. | ||||
| LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 2067-2072: The macro callerid-bad does not end with a return; I will insert one. | ||||
| LOG: lev:2 file:pbx_ael.c  line:129 func: pbx_load_module  AEL load process: checked config file name './extensions.ael'. | ||||
| LOG: lev:2 file:pbx_ael.c  line:131 func: pbx_load_module  AEL load process: compiled config file name './extensions.ael'. | ||||
| LOG: lev:2 file:pbx_ael.c  line:134 func: pbx_load_module  AEL load process: merged config file name './extensions.ael'. | ||||
| LOG: lev:2 file:pbx_ael.c  line:137 func: pbx_load_module  AEL load process: verified config file name './extensions.ael'. | ||||
| LOG: lev:4 file:ael2_parse  line:531 func: main  172 contexts, 934 extensions, 2482 priorities | ||||
| LOG: lev:2 file:pbx_ael.c  line:131 func: pbx_load_module  AEL load process: checked config file name './extensions.ael'. | ||||
| LOG: lev:2 file:pbx_ael.c  line:134 func: pbx_load_module  AEL load process: compiled config file name './extensions.ael'. | ||||
| LOG: lev:2 file:pbx_ael.c  line:139 func: pbx_load_module  AEL load process: merged config file name './extensions.ael'. | ||||
| LOG: lev:2 file:pbx_ael.c  line:142 func: pbx_load_module  AEL load process: verified config file name './extensions.ael'. | ||||
| LOG: lev:4 file:ael2_parse  line:548 func: main  172 contexts, 934 extensions, 2558 priorities | ||||
|   | ||||
| @@ -2,13 +2,13 @@ | ||||
| (If you find progress and other non-error messages irritating, you can use -q to suppress them) | ||||
|  | ||||
| (You can use the -w option to dump extensions.conf format to extensions.conf.aeldump) | ||||
| LOG: lev:2 file:pbx_ael.c  line:113 func: pbx_load_module  Starting AEL load process. | ||||
| LOG: lev:2 file:pbx_ael.c  line:126 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'. | ||||
| LOG: lev:2 file:pbx_ael.c  line:115 func: pbx_load_module  Starting AEL load process. | ||||
| LOG: lev:2 file:pbx_ael.c  line:128 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'. | ||||
| LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 130-183: The macro stdexten does not end with a return; I will insert one. | ||||
| LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 185-192: The macro uvm does not end with a return; I will insert one. | ||||
| LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 194-201: The macro bvm does not end with a return; I will insert one. | ||||
| LOG: lev:2 file:pbx_ael.c  line:129 func: pbx_load_module  AEL load process: checked config file name './extensions.ael'. | ||||
| LOG: lev:2 file:pbx_ael.c  line:131 func: pbx_load_module  AEL load process: compiled config file name './extensions.ael'. | ||||
| LOG: lev:2 file:pbx_ael.c  line:134 func: pbx_load_module  AEL load process: merged config file name './extensions.ael'. | ||||
| LOG: lev:2 file:pbx_ael.c  line:137 func: pbx_load_module  AEL load process: verified config file name './extensions.ael'. | ||||
| LOG: lev:4 file:ael2_parse  line:531 func: main  38 contexts, 91 extensions, 493 priorities | ||||
| LOG: lev:2 file:pbx_ael.c  line:131 func: pbx_load_module  AEL load process: checked config file name './extensions.ael'. | ||||
| LOG: lev:2 file:pbx_ael.c  line:134 func: pbx_load_module  AEL load process: compiled config file name './extensions.ael'. | ||||
| LOG: lev:2 file:pbx_ael.c  line:139 func: pbx_load_module  AEL load process: merged config file name './extensions.ael'. | ||||
| LOG: lev:2 file:pbx_ael.c  line:142 func: pbx_load_module  AEL load process: verified config file name './extensions.ael'. | ||||
| LOG: lev:4 file:ael2_parse  line:548 func: main  38 contexts, 91 extensions, 494 priorities | ||||
|   | ||||
| @@ -2,10 +2,10 @@ | ||||
| (If you find progress and other non-error messages irritating, you can use -q to suppress them) | ||||
|  | ||||
| (You can use the -w option to dump extensions.conf format to extensions.conf.aeldump) | ||||
| LOG: lev:2 file:pbx_ael.c  line:113 func: pbx_load_module  Starting AEL load process. | ||||
| LOG: lev:2 file:pbx_ael.c  line:126 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'. | ||||
| LOG: lev:2 file:pbx_ael.c  line:129 func: pbx_load_module  AEL load process: checked config file name './extensions.ael'. | ||||
| LOG: lev:2 file:pbx_ael.c  line:131 func: pbx_load_module  AEL load process: compiled config file name './extensions.ael'. | ||||
| LOG: lev:2 file:pbx_ael.c  line:134 func: pbx_load_module  AEL load process: merged config file name './extensions.ael'. | ||||
| LOG: lev:2 file:pbx_ael.c  line:137 func: pbx_load_module  AEL load process: verified config file name './extensions.ael'. | ||||
| LOG: lev:4 file:ael2_parse  line:531 func: main  1 contexts, 7 extensions, 17 priorities | ||||
| LOG: lev:2 file:pbx_ael.c  line:115 func: pbx_load_module  Starting AEL load process. | ||||
| LOG: lev:2 file:pbx_ael.c  line:128 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'. | ||||
| LOG: lev:2 file:pbx_ael.c  line:131 func: pbx_load_module  AEL load process: checked config file name './extensions.ael'. | ||||
| LOG: lev:2 file:pbx_ael.c  line:134 func: pbx_load_module  AEL load process: compiled config file name './extensions.ael'. | ||||
| LOG: lev:2 file:pbx_ael.c  line:139 func: pbx_load_module  AEL load process: merged config file name './extensions.ael'. | ||||
| LOG: lev:2 file:pbx_ael.c  line:142 func: pbx_load_module  AEL load process: verified config file name './extensions.ael'. | ||||
| LOG: lev:4 file:ael2_parse  line:548 func: main  1 contexts, 7 extensions, 19 priorities | ||||
|   | ||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -42,9 +42,10 @@ exten => 81,11,Verbose(Which means that the priorities/sec = $[4* ${iterations} | ||||
| exten => 81,12,SayNumber($[4 * ${iterations} / (${time2} - ${time1}) ]) | ||||
| exten => 82,1,Gosub(ndeep\,s\,1(100000)) | ||||
| exten => 82,2,Verbose(Finished 100000 levels deep call!) | ||||
| exten => 83,1,Goto(sw-2-${EXTEN}\,10) | ||||
| exten => 83,2,NoOp(Finish switch-extension-2) | ||||
| exten => _sw-2-.,10,Goto(83\,2) | ||||
| exten => 83,1,Set(~~EXTEN~~=${EXTEN}) | ||||
| exten => 83,2,Goto(sw-2-${~~EXTEN~~}\,10) | ||||
| exten => 83,3,NoOp(Finish switch-extension-2) | ||||
| exten => _sw-2-.,10,Goto(83\,3) | ||||
| exten => sw-2-,10,Goto(sw-2-.|10) | ||||
| exten => _sw-2-[4-7]X,10,Verbose(and this too!) | ||||
| exten => _sw-2-[4-7]X,11,Goto(sw-2-.\,10) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user