dect
/
asterisk
Archived
13
0
Fork 0

This commit closes bug 7605, and half-closes 7638. The AEL code has been redistributed/repartitioned to allow code re-use both inside and outside of Asterisk. This commit introduces the utils/conf2ael program, and an external config-file reader, for both normal config files, and for extensions.conf (context, exten, prio); It provides an API for programs outside of asterisk to use to play with the dialplan and config files.

git-svn-id: http://svn.digium.com/svn/asterisk/trunk@79595 f38db490-d61c-443f-a65b-d21fe96a405b
This commit is contained in:
murf 2007-08-15 19:21:27 +00:00
parent 46d935c8ca
commit e897b4499e
32 changed files with 6028 additions and 3339 deletions

View File

@ -186,6 +186,12 @@ AEL Changes
by saying "local myvar=someval;" or using Set() in this
fashion: Set(LOCAL(myvar)=someval); ("local" is now
an AEL keyword).
* utils/conf2ael introduced. Will convert an extensions.conf
file into extensions.ael. Very crude and unfinished, but
will be improved as time goes by. Should be useful for a
first pass at conversion.
* aelparse will now read extensions.conf to see if a referenced
macro or context is there before issueing a warning.
Zaptel channel driver (chan_zap) Changes
----------------------------------------

View File

@ -17,6 +17,10 @@ AEL:
not include it, but really, you should make sure that all execution
paths within your macros end in "return;".
* The conf2ael program is 'introduced' in this release; it is in a rather
crude state, but deemed useful for making a first pass at converting
extensions.conf code into AEL. More intelligence will come with time.
Core:
* The 'languageprefix' option in asterisk.conf is now deprecated, and

View File

@ -25,6 +25,8 @@
#ifndef _ASTERISK_AEL_STRUCTS_H
#define _ASTERISK_AEL_STRUCTS_H
#include "pval.h"
#if !defined(SOLARIS) && !defined(__CYGWIN__)
/* #include <err.h> */
#else
@ -46,118 +48,15 @@
# endif
typedef enum {
PV_WORD, /* an ident, string, name, label, etc. A user-supplied string. */ /* 0 */
PV_MACRO, /* 1 */
PV_CONTEXT, /* 2 */
PV_MACRO_CALL, /* 3 */
PV_APPLICATION_CALL, /* 4 */
PV_CASE, /* 5 */
PV_PATTERN, /* 6 */
PV_DEFAULT, /* 7 */
PV_CATCH, /* 8 */
PV_SWITCHES, /* 9 */
PV_ESWITCHES, /* 10 */
PV_INCLUDES, /* 11 */
PV_STATEMENTBLOCK, /* 12 */
PV_VARDEC, /* you know, var=val; */ /* 13 */
PV_GOTO, /* 14 */
PV_LABEL, /* 15 */
PV_FOR, /* 16 */
PV_WHILE, /* 17 */
PV_BREAK, /* 18 */
PV_RETURN, /* 19 */
PV_CONTINUE, /* 20 */
PV_IF, /* 21 */
PV_IFTIME, /* 22 */
PV_RANDOM, /* 23 */
PV_SWITCH, /* 24 */
PV_EXTENSION, /* 25 */
PV_IGNOREPAT, /* 26 */
PV_GLOBALS, /* 27 */
PV_LOCALVARDEC, /* you know, local var=val; */ /* 28 */
} pvaltype;
/* why this horrible mess? It's always been a tradeoff-- tons of structs,
each storing it's specific lists of goodies, or a 'simple' single struct,
with lots of fields, that catches all uses at once. Either you have a long
list of struct names and subnames, or you have a long list of field names,
and where/how they are used. I'm going with a single struct, using unions
to reduce storage. Some simple generalizations, and a long list of types,
and a book about what is used with what types.... Sorry!
*/
struct pval
{
pvaltype type;
int startline;
int endline;
int startcol;
int endcol;
char *filename;
union
{
char *str; /* wow, used almost everywhere! */
struct pval *list; /* used in SWITCHES, ESWITCHES, INCLUDES, STATEMENTBLOCK, GOTO */
struct pval *statements;/* used in EXTENSION */
char *for_init; /* used in FOR */
} u1;
struct pval *u1_last; /* to build in-order lists -- looks like we only need one */
union
{
struct pval *arglist; /* used in macro_call, application_call, MACRO def, also attached to PWORD, the 4 timevals for includes */
struct pval *statements; /* used in case, default, catch, while's statement, CONTEXT elements, GLOBALS */
char *val; /* used in VARDEC */
char *for_test; /* used in FOR */
int label_in_case; /* a boolean for LABELs */
struct pval *goto_target; /* used in GOTO */
} u2;
union
{
char *for_inc; /* used in FOR */
struct pval *else_statements; /* used in IF */
struct pval *macro_statements; /* used in MACRO */
int abstract; /* used for context */
char *hints; /* used in EXTENSION */
int goto_target_in_case; /* used in GOTO */
struct ael_extension *compiled_label;
} u3;
union
{
struct pval *for_statements; /* used in PV_FOR */
int regexten; /* used in EXTENSION */
} u4;
struct pval *next; /* the pval at the end of this ptr will ALWAYS be of the same type as this one!
EXCEPT for objects of the different types, that are in the same list, like contexts & macros, etc */
struct pval *dad; /* the 'container' of this struct instance */
struct pval *prev; /* the opposite of the 'next' pointer */
} ;
typedef struct pval pval;
#if 0
pval *npval(pvaltype type, int first_line, int last_line, int first_column, int last_column);
void linku1(pval *head, pval *tail);
void print_pval_list(FILE *f, pval *item, int depth);
void print_pval(FILE *f, pval *item, int depth);
void ael2_semantic_check(pval *item, int *errs, int *warns, int *notes);
struct pval *find_label_in_current_context(char *exten, char *label);
struct pval *find_label_in_current_extension(char *label);
int count_labels_in_current_context(char *label);
struct pval *find_label_in_current_db(char *context, char *exten, char *label);
void ael2_print(char *fname, pval *tree);
#endif
void ael2_semantic_check(pval *item, int *errs, int *warns, int *notes);
pval *npval(pvaltype type, int first_line, int last_line, int first_column, int last_column);
pval *linku1(pval *head, pval *tail);
void ael2_print(char *fname, pval *tree);
struct pval *ael2_parse(char *fname, int *errs); /* in ael.flex */
void destroy_pval(pval *item);
extern char *prev_word; /* in ael.flex */
#ifndef YY_TYPEDEF_YY_SCANNER_T

View File

@ -19,7 +19,6 @@
#ifndef _ASTERISK_EXPR_H
#define _ASTERISK_EXPR_H
#ifndef STANDALONE
#include "asterisk/channel.h"
#endif
#if defined(__cplusplus) || defined(c_plusplus)
extern "C" {

View File

@ -904,6 +904,52 @@ int ast_func_read(struct ast_channel *chan, const char *function, char *workspac
*/
int ast_func_write(struct ast_channel *chan, const char *function, const char *value);
/*!
* When looking up extensions, we can have different requests
* identified by the 'action' argument, as follows.
* Note that the coding is such that the low 4 bits are the
* third argument to extension_match_core.
*/
enum ext_match_t {
E_MATCHMORE = 0x00, /* extension can match but only with more 'digits' */
E_CANMATCH = 0x01, /* extension can match with or without more 'digits' */
E_MATCH = 0x02, /* extension is an exact match */
E_MATCH_MASK = 0x03, /* mask for the argument to extension_match_core() */
E_SPAWN = 0x12, /* want to spawn an extension. Requires exact match */
E_FINDLABEL = 0x22 /* returns the priority for a given label. Requires exact match */
};
#define STATUS_NO_CONTEXT 1
#define STATUS_NO_EXTENSION 2
#define STATUS_NO_PRIORITY 3
#define STATUS_NO_LABEL 4
#define STATUS_SUCCESS 5
#define AST_PBX_MAX_STACK 128
/* request and result for pbx_find_extension */
struct pbx_find_info {
#if 0
const char *context;
const char *exten;
int priority;
#endif
char *incstack[AST_PBX_MAX_STACK]; /* filled during the search */
int stacklen; /* modified during the search */
int status; /* set on return */
struct ast_switch *swo; /* set on return */
const char *data; /* set on return */
const char *foundcontext; /* set on return */
};
struct ast_exten *pbx_find_extension(struct ast_channel *chan,
struct ast_context *bypass, struct pbx_find_info *q,
const char *context, const char *exten, int priority,
const char *label, const char *callerid, enum ext_match_t action);
#if defined(__cplusplus) || defined(c_plusplus)
}
#endif

View File

@ -768,21 +768,6 @@ static int ext_cmp(const char *a, const char *b)
return (ret > 0) ? 1 : -1;
}
/*!
* When looking up extensions, we can have different requests
* identified by the 'action' argument, as follows.
* Note that the coding is such that the low 4 bits are the
* third argument to extension_match_core.
*/
enum ext_match_t {
E_MATCHMORE = 0x00, /*!< extension can match but only with more 'digits' */
E_CANMATCH = 0x01, /*!< extension can match with or without more 'digits' */
E_MATCH = 0x02, /*!< extension is an exact match */
E_MATCH_MASK = 0x03, /*!< mask for the argument to extension_match_core() */
E_SPAWN = 0x12, /*!< want to spawn an extension. Requires exact match */
E_FINDLABEL = 0x22 /*!< returns the priority for a given label. Requires exact match */
};
/*!
* \internal
* \brief used ast_extension_{match|close}
@ -947,23 +932,7 @@ static int matchcid(const char *cidpattern, const char *callerid)
return ast_extension_match(cidpattern, callerid);
}
/*! request and result for pbx_find_extension */
struct pbx_find_info {
#if 0
const char *context;
const char *exten;
int priority;
#endif
char *incstack[AST_PBX_MAX_STACK]; /* filled during the search */
int stacklen; /* modified during the search */
int status; /* set on return */
struct ast_switch *swo; /* set on return */
const char *data; /* set on return */
const char *foundcontext; /* set on return */
};
static struct ast_exten *pbx_find_extension(struct ast_channel *chan,
struct ast_exten *pbx_find_extension(struct ast_channel *chan,
struct ast_context *bypass, struct pbx_find_info *q,
const char *context, const char *exten, int priority,
const char *label, const char *callerid, enum ext_match_t action)

View File

@ -28,20 +28,6 @@ include $(ASTTOPDIR)/Makefile.moddir_rules
clean::
rm -f ael/*.o
ael/ael_lex.o: ael/ael_lex.c ../include/asterisk/ael_structs.h ael/ael.tab.h
ael/ael_lex.o: ASTCFLAGS+=-I.
ael/ael.tab.o: ael/ael.tab.c ael/ael.tab.h ../include/asterisk/ael_structs.h
ael/ael.tab.o: ASTCFLAGS+=-I. -DYYENABLE_NLS=0
$(if $(filter pbx_ael,$(EMBEDDED_MODS)),modules.link,pbx_ael.so): ael/ael.tab.o ael/ael_lex.o
ael/ael_lex.c:
(cd ael; flex ael.flex; sed -i -e "/begin standard C headers/i#include \"asterisk.h\"" ael_lex.c)
ael/ael.tab.c ael/ael.tab.h:
(cd ael; bison -v -d ael.y)
dundi-parser.o: dundi-parser.h
dundi-parser.o: ASTCFLAGS+=-I.

View File

@ -5,27 +5,36 @@
(You can use the -w option to dump extensions.conf format to extensions.conf.aeldump)
LOG: lev:2 file:pbx_ael.c line:4092 func: pbx_load_module Starting AEL load process.
LOG: lev:2 file:pbx_ael.c line:4099 func: pbx_load_module AEL load process: calculated config file name './extensions.ael'.
LOG: lev:2 file:pbx_ael.c line:4107 func: pbx_load_module AEL load process: parsed config file name './extensions.ael'.
LOG: lev:3 file:pbx_ael.c line:739 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:pbx_ael.c line:739 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:pbx_ael.c line:739 func: check_macro_returns Warning: file ./extensions.ael, line 11-26: The macro endcall does not end with a return; I will insert one.
LOG: lev:3 file:pbx_ael.c line:2356 func: check_switch_expr Warning: file ./extensions.ael, line 13-13: A default case was automatically added to the switch.
LOG: lev:3 file:pbx_ael.c line:739 func: check_macro_returns Warning: file ./extensions.ael, line 28-44: The macro endcall2 does not end with a return; I will insert one.
LOG: lev:3 file:pbx_ael.c line:2356 func: check_switch_expr Warning: file ./extensions.ael, line 36-36: A default case was automatically added to the switch.
LOG: lev:3 file:pbx_ael.c line:739 func: check_macro_returns Warning: file ./extensions.ael, line 46-68: The macro endcall3 does not end with a return; I will insert one.
LOG: lev:3 file:pbx_ael.c line:2356 func: check_switch_expr Warning: file ./extensions.ael, line 48-48: A default case was automatically added to the switch.
LOG: lev:3 file:pbx_ael.c line:2356 func: check_switch_expr Warning: file ./extensions.ael, line 60-60: A default case was automatically added to the switch.
LOG: lev:3 file:pbx_ael.c line:739 func: check_macro_returns Warning: file ./extensions.ael, line 70-96: The macro endcall4 does not end with a return; I will insert one.
LOG: lev:3 file:pbx_ael.c line:2356 func: check_switch_expr Warning: file ./extensions.ael, line 72-72: A default case was automatically added to the switch.
LOG: lev:3 file:pbx_ael.c line:2356 func: check_switch_expr Warning: file ./extensions.ael, line 84-84: A default case was automatically added to the switch.
LOG: lev:3 file:pbx_ael.c line:2356 func: check_switch_expr Warning: file ./extensions.ael, line 87-87: A default case was automatically added to the switch.
LOG: lev:3 file:pbx_ael.c line:739 func: check_macro_returns Warning: file ./extensions.ael, line 98-131: The macro endcall5 does not end with a return; I will insert one.
LOG: lev:3 file:pbx_ael.c line:2356 func: check_switch_expr Warning: file ./extensions.ael, line 106-106: A default case was automatically added to the switch.
LOG: lev:3 file:pbx_ael.c line:2356 func: check_switch_expr Warning: file ./extensions.ael, line 119-119: A default case was automatically added to the switch.
LOG: lev:3 file:pbx_ael.c line:2356 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:4110 func: pbx_load_module AEL load process: checked config file name './extensions.ael'.
LOG: lev:2 file:pbx_ael.c line:1680 func: pbx_load_module Starting AEL load process.
LOG: lev:2 file:pbx_ael.c line:1687 func: pbx_load_module AEL load process: calculated config file name './extensions.ael'.
LOG: lev:2 file:pbx_ael.c line:1695 func: pbx_load_module AEL load process: parsed config file name './extensions.ael'.
LOG: lev:3 file:pval.c line:668 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:668 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:668 func: check_macro_returns Warning: file ./extensions.ael, line 11-26: The macro endcall does not end with a return; I will insert one.
LOG: lev:3 file:pval.c line:2280 func: check_switch_expr Warning: file ./extensions.ael, line 13-13: A default case was automatically added to the switch.
LOG: lev:3 file:extconf.c line:3959 func: add_pri Unable to register extension '_', priority 1 in 'test6', already in use
LOG: lev:3 file:extconf.c line:3959 func: add_pri Unable to register extension '_X.', priority 1 in 'test6', already in use
=== Loading extensions.conf ===
Context: test6
Context: test5
Context: macro-funcA
Context: macro-funcB
Context: macro-funcC
=========
LOG: lev:3 file:pval.c line:668 func: check_macro_returns Warning: file ./extensions.ael, line 28-44: The macro endcall2 does not end with a return; I will insert one.
LOG: lev:3 file:pval.c line:2280 func: check_switch_expr Warning: file ./extensions.ael, line 36-36: A default case was automatically added to the switch.
LOG: lev:3 file:pval.c line:668 func: check_macro_returns Warning: file ./extensions.ael, line 46-68: The macro endcall3 does not end with a return; I will insert one.
LOG: lev:3 file:pval.c line:2280 func: check_switch_expr Warning: file ./extensions.ael, line 48-48: A default case was automatically added to the switch.
LOG: lev:3 file:pval.c line:2280 func: check_switch_expr Warning: file ./extensions.ael, line 60-60: A default case was automatically added to the switch.
LOG: lev:3 file:pval.c line:668 func: check_macro_returns Warning: file ./extensions.ael, line 70-96: The macro endcall4 does not end with a return; I will insert one.
LOG: lev:3 file:pval.c line:2280 func: check_switch_expr Warning: file ./extensions.ael, line 72-72: A default case was automatically added to the switch.
LOG: lev:3 file:pval.c line:2280 func: check_switch_expr Warning: file ./extensions.ael, line 84-84: A default case was automatically added to the switch.
LOG: lev:3 file:pval.c line:2280 func: check_switch_expr Warning: file ./extensions.ael, line 87-87: A default case was automatically added to the switch.
LOG: lev:3 file:pval.c line:668 func: check_macro_returns Warning: file ./extensions.ael, line 98-131: The macro endcall5 does not end with a return; I will insert one.
LOG: lev:3 file:pval.c line:2280 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:2280 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:2280 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:1698 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);
@ -154,9 +163,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:4112 func: pbx_load_module AEL load process: compiled config file name './extensions.ael'.
LOG: lev:2 file:pbx_ael.c line:1700 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:4115 func: pbx_load_module AEL load process: merged config file name './extensions.ael'.
LOG: lev:2 file:pbx_ael.c line:1703 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:4118 func: pbx_load_module AEL load process: verified config file name './extensions.ael'.
LOG: lev:4 file:ael2_parse line:522 func: main 7 contexts, 27 extensions, 121 priorities
LOG: lev:2 file:pbx_ael.c line:1706 func: pbx_load_module AEL load process: verified config file name './extensions.ael'.
LOG: lev:4 file:ael2_parse line:521 func: main 7 contexts, 27 extensions, 121 priorities

View File

@ -2,18 +2,18 @@
(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:4092 func: pbx_load_module Starting AEL load process.
LOG: lev:2 file:pbx_ael.c line:4099 func: pbx_load_module AEL load process: calculated config file name './extensions.ael'.
LOG: lev:2 file:pbx_ael.c line:4107 func: pbx_load_module AEL load process: parsed config file name './extensions.ael'.
LOG: lev:3 file:pbx_ael.c line:739 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:pbx_ael.c line:739 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:pbx_ael.c line:1408 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!
LOG: lev:3 file:pbx_ael.c line:1408 func: check_goto Warning: file ./extensions.ael, line 23-23: It's bad form to have a goto in a macro to a target outside the macro!
LOG: lev:3 file:pbx_ael.c line:2356 func: check_switch_expr Warning: file ./extensions.ael, line 58-58: A default case was automatically added to the switch.
LOG: lev:3 file:pbx_ael.c line:989 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:pbx_ael.c line:947 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:4110 func: pbx_load_module AEL load process: checked config file name './extensions.ael'.
LOG: lev:2 file:pbx_ael.c line:4112 func: pbx_load_module AEL load process: compiled config file name './extensions.ael'.
LOG: lev:2 file:pbx_ael.c line:4115 func: pbx_load_module AEL load process: merged config file name './extensions.ael'.
LOG: lev:2 file:pbx_ael.c line:4118 func: pbx_load_module AEL load process: verified config file name './extensions.ael'.
LOG: lev:4 file:ael2_parse line:522 func: main 5 contexts, 14 extensions, 155 priorities
LOG: lev:2 file:pbx_ael.c line:1680 func: pbx_load_module Starting AEL load process.
LOG: lev:2 file:pbx_ael.c line:1687 func: pbx_load_module AEL load process: calculated config file name './extensions.ael'.
LOG: lev:2 file:pbx_ael.c line:1695 func: pbx_load_module AEL load process: parsed config file name './extensions.ael'.
LOG: lev:3 file:pval.c line:668 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:668 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:1358 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!
LOG: lev:3 file:pval.c line:1358 func: check_goto Warning: file ./extensions.ael, line 23-23: It's bad form to have a goto in a macro to a target outside the macro!
LOG: lev:3 file:pval.c line:2280 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:918 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:876 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:1698 func: pbx_load_module AEL load process: checked config file name './extensions.ael'.
LOG: lev:2 file:pbx_ael.c line:1700 func: pbx_load_module AEL load process: compiled config file name './extensions.ael'.
LOG: lev:2 file:pbx_ael.c line:1703 func: pbx_load_module AEL load process: merged config file name './extensions.ael'.
LOG: lev:2 file:pbx_ael.c line:1706 func: pbx_load_module AEL load process: verified config file name './extensions.ael'.
LOG: lev:4 file:ael2_parse line:521 func: main 5 contexts, 14 extensions, 155 priorities

View File

@ -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:4092 func: pbx_load_module Starting AEL load process.
LOG: lev:2 file:pbx_ael.c line:4099 func: pbx_load_module AEL load process: calculated config file name './extensions.ael'.
LOG: lev:2 file:pbx_ael.c line:4107 func: pbx_load_module AEL load process: parsed config file name './extensions.ael'.
LOG: lev:4 file:pbx_ael.c line:1214 func: check_label Error: file ./extensions.ael, line 13-13: Duplicate label lab1! Previously defined at file ./extensions.ael, line 8.
LOG: lev:3 file:pbx_ael.c line:2356 func: check_switch_expr Warning: file ./extensions.ael, line 32-32: A default case was automatically added to the switch.
LOG: lev:3 file:pbx_ael.c line:2356 func: check_switch_expr Warning: file ./extensions.ael, line 44-44: A default case was automatically added to the switch.
LOG: lev:3 file:pbx_ael.c line:2356 func: check_switch_expr Warning: file ./extensions.ael, line 47-47: A default case was automatically added to the switch.
LOG: lev:4 file:pbx_ael.c line:1214 func: check_label Error: file ./extensions.ael, line 49-49: Duplicate label ptr1! Previously defined at file ./extensions.ael, line 33.
LOG: lev:4 file:pbx_ael.c line:4120 func: pbx_load_module Sorry, but 0 syntax errors and 2 semantic errors were detected. It doesn't make sense to compile.
LOG: lev:4 file:ael2_parse line:522 func: main 0 contexts, 0 extensions, 0 priorities
LOG: lev:2 file:pbx_ael.c line:1680 func: pbx_load_module Starting AEL load process.
LOG: lev:2 file:pbx_ael.c line:1687 func: pbx_load_module AEL load process: calculated config file name './extensions.ael'.
LOG: lev:2 file:pbx_ael.c line:1695 func: pbx_load_module AEL load process: parsed config file name './extensions.ael'.
LOG: lev:4 file:pval.c line:1143 func: check_label Error: file ./extensions.ael, line 13-13: Duplicate label lab1! Previously defined at file ./extensions.ael, line 8.
LOG: lev:3 file:pval.c line:2280 func: check_switch_expr Warning: file ./extensions.ael, line 32-32: A default case was automatically added to the switch.
LOG: lev:3 file:pval.c line:2280 func: check_switch_expr Warning: file ./extensions.ael, line 44-44: A default case was automatically added to the switch.
LOG: lev:3 file:pval.c line:2280 func: check_switch_expr Warning: file ./extensions.ael, line 47-47: A default case was automatically added to the switch.
LOG: lev:4 file:pval.c line:1143 func: check_label Error: file ./extensions.ael, line 49-49: Duplicate label ptr1! Previously defined at file ./extensions.ael, line 33.
LOG: lev:4 file:pbx_ael.c line:1708 func: pbx_load_module Sorry, but 0 syntax errors and 2 semantic errors were detected. It doesn't make sense to compile.
LOG: lev:4 file:ael2_parse line:521 func: main 0 contexts, 0 extensions, 0 priorities

View File

@ -2,11 +2,11 @@
(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:4092 func: pbx_load_module Starting AEL load process.
LOG: lev:2 file:pbx_ael.c line:4099 func: pbx_load_module AEL load process: calculated config file name './extensions.ael'.
LOG: lev:2 file:pbx_ael.c line:4107 func: pbx_load_module AEL load process: parsed config file name './extensions.ael'.
LOG: lev:3 file:pbx_ael.c line:2356 func: check_switch_expr Warning: file ./extensions.ael, line 13-13: A default case was automatically added to the switch.
LOG: lev:4 file:pbx_ael.c line:1138 func: check_continue Error: file ./extensions.ael, line 15-15: 'continue' not in 'for' or 'while' statement!
LOG: lev:4 file:pbx_ael.c line:1119 func: check_break Error: file ./extensions.ael, line 17-17: 'break' not in switch, for, or while statement!
LOG: lev:4 file:pbx_ael.c line:4120 func: pbx_load_module Sorry, but 0 syntax errors and 2 semantic errors were detected. It doesn't make sense to compile.
LOG: lev:4 file:ael2_parse line:522 func: main 0 contexts, 0 extensions, 0 priorities
LOG: lev:2 file:pbx_ael.c line:1680 func: pbx_load_module Starting AEL load process.
LOG: lev:2 file:pbx_ael.c line:1687 func: pbx_load_module AEL load process: calculated config file name './extensions.ael'.
LOG: lev:2 file:pbx_ael.c line:1695 func: pbx_load_module AEL load process: parsed config file name './extensions.ael'.
LOG: lev:3 file:pval.c line:2280 func: check_switch_expr Warning: file ./extensions.ael, line 13-13: A default case was automatically added to the switch.
LOG: lev:4 file:pval.c line:1067 func: check_continue Error: file ./extensions.ael, line 15-15: 'continue' not in 'for' or 'while' statement!
LOG: lev:4 file:pval.c line:1048 func: check_break Error: file ./extensions.ael, line 17-17: 'break' not in switch, for, or while statement!
LOG: lev:4 file:pbx_ael.c line:1708 func: pbx_load_module Sorry, but 0 syntax errors and 2 semantic errors were detected. It doesn't make sense to compile.
LOG: lev:4 file:ael2_parse line:521 func: main 0 contexts, 0 extensions, 0 priorities

View File

@ -2,12 +2,12 @@
(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:3910 func: pbx_load_module Starting AEL load process.
LOG: lev:2 file:pbx_ael.c line:3917 func: pbx_load_module AEL load process: calculated config file name './extensions.ael'.
LOG: lev:2 file:pbx_ael.c line:3925 func: pbx_load_module AEL load process: parsed config file name './extensions.ael'.
LOG: lev:2 file:pbx_ael.c line:3928 func: pbx_load_module AEL load process: checked config file name './extensions.ael'.
LOG: lev:3 file:pbx_ael.c line:3813 func: ast_compile_ael2 Warning: file ./extensions.ael, line 8-13: Empty Extension!
LOG: lev:2 file:pbx_ael.c line:3930 func: pbx_load_module AEL load process: compiled config file name './extensions.ael'.
LOG: lev:2 file:pbx_ael.c line:3933 func: pbx_load_module AEL load process: merged config file name './extensions.ael'.
LOG: lev:2 file:pbx_ael.c line:3936 func: pbx_load_module AEL load process: verified config file name './extensions.ael'.
LOG: lev:4 file:ael2_parse line:479 func: main 1 contexts, 0 extensions, 0 priorities
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:120 func: pbx_load_module AEL load process: calculated config file name './extensions.ael'.
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:3 file:pval.c line:3905 func: ast_compile_ael2 Warning: file ./extensions.ael, line 8-13: Empty Extension!
LOG: lev:2 file:pbx_ael.c line:133 func: pbx_load_module AEL load process: compiled config file name './extensions.ael'.
LOG: lev:2 file:pbx_ael.c line:136 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: verified config file name './extensions.ael'.
LOG: lev:4 file:ael2_parse line:499 func: main 1 contexts, 0 extensions, 0 priorities

View File

@ -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:3914 func: pbx_load_module Starting AEL load process.
LOG: lev:2 file:pbx_ael.c line:3921 func: pbx_load_module AEL load process: calculated config file name './extensions.ael'.
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:120 func: pbx_load_module AEL load process: calculated config file name './extensions.ael'.
LOG: lev:3 file:ael.y line:205 func: ael_yyparse ==== File: ./extensions.ael, Line 1, Cols: 19-19: Warning! The empty context real-small will be IGNORED!
LOG: lev:2 file:pbx_ael.c line:3929 func: pbx_load_module AEL load process: parsed config file name './extensions.ael'.
LOG: lev:2 file:pbx_ael.c line:3932 func: pbx_load_module AEL load process: checked config file name './extensions.ael'.
LOG: lev:3 file:pbx_ael.c line:3545 func: add_extensions This file is Empty!
LOG: lev:2 file:pbx_ael.c line:3934 func: pbx_load_module AEL load process: compiled config file name './extensions.ael'.
LOG: lev:2 file:pbx_ael.c line:3937 func: pbx_load_module AEL load process: merged config file name './extensions.ael'.
LOG: lev:2 file:pbx_ael.c line:3940 func: pbx_load_module AEL load process: verified config file name './extensions.ael'.
LOG: lev:4 file:ael2_parse line:479 func: main 0 contexts, 0 extensions, 0 priorities
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:3 file:pval.c line:3633 func: add_extensions This file is Empty!
LOG: lev:2 file:pbx_ael.c line:133 func: pbx_load_module AEL load process: compiled config file name './extensions.ael'.
LOG: lev:2 file:pbx_ael.c line:136 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: verified config file name './extensions.ael'.
LOG: lev:4 file:ael2_parse line:499 func: main 0 contexts, 0 extensions, 0 priorities

View File

@ -2,15 +2,18 @@
(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:4092 func: pbx_load_module Starting AEL load process.
LOG: lev:2 file:pbx_ael.c line:4099 func: pbx_load_module AEL load process: calculated config file name './extensions.ael'.
LOG: lev:2 file:pbx_ael.c line:4107 func: pbx_load_module AEL load process: parsed config file name './extensions.ael'.
LOG: lev:4 file:pbx_ael.c line:2372 func: check_context_names Error: file ./extensions.ael, line 49-62: The context name (incoming) is also declared in file ./extensions.ael, line 62-69!
LOG: lev:3 file:pbx_ael.c line:739 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:pbx_ael.c line:2356 func: check_switch_expr Warning: file ./extensions.ael, line 245-246: A default case was automatically added to the switch.
LOG: lev:3 file:pbx_ael.c line:2472 func: check_pval_item Warning: file ./extensions.ael, line 312-312: macro call to non-existent funcA ! Hopefully it is present in extensions.conf!
LOG: lev:3 file:pbx_ael.c line:2472 func: check_pval_item Warning: file ./extensions.ael, line 313-313: macro call to non-existent funcD ! Hopefully it is present in extensions.conf!
LOG: lev:3 file:pbx_ael.c line:1398 func: check_goto Warning: file ./extensions.ael, line 319-319: goto: no context test5 could be found that matches the goto target!
LOG: lev:3 file:pbx_ael.c line:739 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:4 file:pbx_ael.c line:4120 func: pbx_load_module Sorry, but 0 syntax errors and 1 semantic errors were detected. It doesn't make sense to compile.
LOG: lev:4 file:ael2_parse line:522 func: main 0 contexts, 0 extensions, 0 priorities
LOG: lev:2 file:pbx_ael.c line:1680 func: pbx_load_module Starting AEL load process.
LOG: lev:2 file:pbx_ael.c line:1687 func: pbx_load_module AEL load process: calculated config file name './extensions.ael'.
LOG: lev:2 file:pbx_ael.c line:1695 func: pbx_load_module AEL load process: parsed config file name './extensions.ael'.
LOG: lev:3 file:pval.c line:2296 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!
LOG: lev:3 file:pval.c line:668 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:2280 func: check_switch_expr Warning: file ./extensions.ael, line 245-246: A default case was automatically added to the switch.
LOG: lev:3 file:pval.c line:2422 func: check_pval_item Warning: file ./extensions.ael, line 312-312: macro call to non-existent funcA! (Not even in the extensions.conf stuff!)
LOG: lev:3 file:pval.c line:2422 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:1342 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:668 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:1698 func: pbx_load_module AEL load process: checked config file name './extensions.ael'.
LOG: lev:2 file:pbx_ael.c line:1700 func: pbx_load_module AEL load process: compiled config file name './extensions.ael'.
LOG: lev:2 file:pbx_ael.c line:1703 func: pbx_load_module AEL load process: merged config file name './extensions.ael'.
LOG: lev:2 file:pbx_ael.c line:1706 func: pbx_load_module AEL load process: verified config file name './extensions.ael'.
LOG: lev:4 file:ael2_parse line:521 func: main 13 contexts, 51 extensions, 182 priorities

View File

@ -2,28 +2,28 @@
(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:4092 func: pbx_load_module Starting AEL load process.
LOG: lev:2 file:pbx_ael.c line:4099 func: pbx_load_module AEL load process: calculated config file name './extensions.ael'.
LOG: lev:2 file:pbx_ael.c line:1680 func: pbx_load_module Starting AEL load process.
LOG: lev:2 file:pbx_ael.c line:1687 func: pbx_load_module AEL load process: calculated config file name './extensions.ael'.
LOG: lev:2 file:ael.flex line:430 func: ael_yylex --Read in included file ./apptest.ael2, 3474 chars
LOG: lev:3 file:ael.y line:538 func: ael_yyparse ==== File: ./apptest.ael2, Line 46, Cols: 8-11: Suggestion: Use the goto statement instead of the Goto() application call in AEL.
LOG: lev:2 file:pbx_ael.c line:4107 func: pbx_load_module AEL load process: parsed config file name './extensions.ael'.
LOG: lev:3 file:pbx_ael.c line:2530 func: check_pval_item Warning: file ./apptest.ael2, line 35-35: application call to EndWhile affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
LOG: lev:3 file:pbx_ael.c line:2530 func: check_pval_item Warning: file ./apptest.ael2, line 37-37: application call to ExecIf affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
LOG: lev:3 file:pbx_ael.c line:2530 func: check_pval_item Warning: file ./apptest.ael2, line 38-38: application call to ExecIfTime affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
LOG: lev:3 file:pbx_ael.c line:2530 func: check_pval_item Warning: file ./apptest.ael2, line 44-44: application call to Gosub affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
LOG: lev:3 file:pbx_ael.c line:2530 func: check_pval_item Warning: file ./apptest.ael2, line 45-45: application call to GosubIf affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
LOG: lev:3 file:pbx_ael.c line:1398 func: check_goto Warning: file ./apptest.ael2, line 46-46: goto: no context cont could be found that matches the goto target!
LOG: lev:3 file:pbx_ael.c line:2530 func: check_pval_item Warning: file ./apptest.ael2, line 47-47: application call to GotoIf affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
LOG: lev:3 file:pbx_ael.c line:2530 func: check_pval_item Warning: file ./apptest.ael2, line 48-48: application call to GotoIfTime affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
LOG: lev:3 file:pbx_ael.c line:2530 func: check_pval_item Warning: file ./apptest.ael2, line 58-58: application call to Macro affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
LOG: lev:3 file:pbx_ael.c line:2535 func: check_pval_item Warning: file ./apptest.ael2, line 59-59: I am converting the MacroExit call here to a return statement.
LOG: lev:3 file:pbx_ael.c line:2530 func: check_pval_item Warning: file ./apptest.ael2, line 60-60: application call to MacroIf affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
LOG: lev:3 file:pbx_ael.c line:2530 func: check_pval_item Warning: file ./apptest.ael2, line 85-85: application call to Random affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
LOG: lev:3 file:pbx_ael.c line:2530 func: check_pval_item Warning: file ./apptest.ael2, line 94-94: application call to Return affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
LOG: lev:3 file:pbx_ael.c line:2530 func: check_pval_item Warning: file ./apptest.ael2, line 119-119: application call to StackPop affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
LOG: lev:3 file:pbx_ael.c line:2530 func: check_pval_item Warning: file ./apptest.ael2, line 141-141: application call to While affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
LOG: lev:2 file:pbx_ael.c line:4110 func: pbx_load_module AEL load process: checked config file name './extensions.ael'.
LOG: lev:2 file:pbx_ael.c line:4112 func: pbx_load_module AEL load process: compiled config file name './extensions.ael'.
LOG: lev:2 file:pbx_ael.c line:4115 func: pbx_load_module AEL load process: merged config file name './extensions.ael'.
LOG: lev:2 file:pbx_ael.c line:4118 func: pbx_load_module AEL load process: verified config file name './extensions.ael'.
LOG: lev:4 file:ael2_parse line:522 func: main 1 contexts, 1 extensions, 142 priorities
LOG: lev:2 file:pbx_ael.c line:1695 func: pbx_load_module AEL load process: parsed config file name './extensions.ael'.
LOG: lev:3 file:pval.c line:2503 func: check_pval_item Warning: file ./apptest.ael2, line 35-35: application call to EndWhile affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
LOG: lev:3 file:pval.c line:2503 func: check_pval_item Warning: file ./apptest.ael2, line 37-37: application call to ExecIf affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
LOG: lev:3 file:pval.c line:2503 func: check_pval_item Warning: file ./apptest.ael2, line 38-38: application call to ExecIfTime affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
LOG: lev:3 file:pval.c line:2503 func: check_pval_item Warning: file ./apptest.ael2, line 44-44: application call to Gosub affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
LOG: lev:3 file:pval.c line:2503 func: check_pval_item Warning: file ./apptest.ael2, line 45-45: application call to GosubIf affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
LOG: lev:3 file:pval.c line:1342 func: check_goto Warning: file ./apptest.ael2, line 46-46: goto: Couldn't find goto target cont|exten|prior, not even in extensions.conf!
LOG: lev:3 file:pval.c line:2503 func: check_pval_item Warning: file ./apptest.ael2, line 47-47: application call to GotoIf affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
LOG: lev:3 file:pval.c line:2503 func: check_pval_item Warning: file ./apptest.ael2, line 48-48: application call to GotoIfTime affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
LOG: lev:3 file:pval.c line:2503 func: check_pval_item Warning: file ./apptest.ael2, line 58-58: application call to Macro affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
LOG: lev:3 file:pval.c line:2508 func: check_pval_item Warning: file ./apptest.ael2, line 59-59: I am converting the MacroExit call here to a return statement.
LOG: lev:3 file:pval.c line:2503 func: check_pval_item Warning: file ./apptest.ael2, line 60-60: application call to MacroIf affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
LOG: lev:3 file:pval.c line:2503 func: check_pval_item Warning: file ./apptest.ael2, line 85-85: application call to Random affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
LOG: lev:3 file:pval.c line:2503 func: check_pval_item Warning: file ./apptest.ael2, line 94-94: application call to Return affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
LOG: lev:3 file:pval.c line:2503 func: check_pval_item Warning: file ./apptest.ael2, line 119-119: application call to StackPop affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
LOG: lev:3 file:pval.c line:2503 func: check_pval_item Warning: file ./apptest.ael2, line 141-141: application call to While affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
LOG: lev:2 file:pbx_ael.c line:1698 func: pbx_load_module AEL load process: checked config file name './extensions.ael'.
LOG: lev:2 file:pbx_ael.c line:1700 func: pbx_load_module AEL load process: compiled config file name './extensions.ael'.
LOG: lev:2 file:pbx_ael.c line:1703 func: pbx_load_module AEL load process: merged config file name './extensions.ael'.
LOG: lev:2 file:pbx_ael.c line:1706 func: pbx_load_module AEL load process: verified config file name './extensions.ael'.
LOG: lev:4 file:ael2_parse line:521 func: main 1 contexts, 1 extensions, 142 priorities

View File

@ -2,99 +2,99 @@
(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:4092 func: pbx_load_module Starting AEL load process.
LOG: lev:2 file:pbx_ael.c line:4099 func: pbx_load_module AEL load process: calculated config file name './extensions.ael'.
LOG: lev:2 file:pbx_ael.c line:1680 func: pbx_load_module Starting AEL load process.
LOG: lev:2 file:pbx_ael.c line:1687 func: pbx_load_module AEL load process: calculated config file name './extensions.ael'.
LOG: lev:2 file:ael.flex line:430 func: ael_yylex --Read in included file ./include1.ael2, 78 chars
LOG: lev:2 file:ael.flex line:430 func: ael_yylex --Read in included file ./include2.ael2, 98 chars
LOG: lev:2 file:ael.flex line:430 func: ael_yylex --Read in included file ./include3.ael2, 57 chars
LOG: lev:2 file:ael.flex line:430 func: ael_yylex --Read in included file ./include5.ael2, 56 chars
LOG: lev:2 file:ael.flex line:430 func: ael_yylex --Read in included file ./include4.ael2, 87 chars
LOG: lev:2 file:ael.flex line:430 func: ael_yylex --Read in included file ./telemarket_torture.ael2, 28036 chars
LOG: lev:2 file:pbx_ael.c line:4107 func: pbx_load_module AEL load process: parsed config file name './extensions.ael'.
LOG: lev:3 file:pbx_ael.c line:739 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:pbx_ael.c line:1408 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:pbx_ael.c line:739 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.
LOG: lev:3 file:pbx_ael.c line:739 func: check_macro_returns Warning: file ./extensions.ael, line 62-85: The macro std-priv-exten_2 does not end with a return; I will insert one.
LOG: lev:3 file:pbx_ael.c line:739 func: check_macro_returns Warning: file ./extensions.ael, line 88-111: The macro std-priv-exten_3 does not end with a return; I will insert one.
LOG: lev:3 file:pbx_ael.c line:739 func: check_macro_returns Warning: file ./extensions.ael, line 114-137: The macro std-priv-exten_4 does not end with a return; I will insert one.
LOG: lev:3 file:pbx_ael.c line:739 func: check_macro_returns Warning: file ./extensions.ael, line 140-163: The macro std-priv-exten_5 does not end with a return; I will insert one.
LOG: lev:3 file:pbx_ael.c line:739 func: check_macro_returns Warning: file ./extensions.ael, line 166-189: The macro std-priv-exten_6 does not end with a return; I will insert one.
LOG: lev:3 file:pbx_ael.c line:739 func: check_macro_returns Warning: file ./extensions.ael, line 192-215: The macro std-priv-exten_7 does not end with a return; I will insert one.
LOG: lev:3 file:pbx_ael.c line:739 func: check_macro_returns Warning: file ./extensions.ael, line 218-241: The macro std-priv-exten_8 does not end with a return; I will insert one.
LOG: lev:3 file:pbx_ael.c line:739 func: check_macro_returns Warning: file ./extensions.ael, line 244-267: The macro std-priv-exten_9 does not end with a return; I will insert one.
LOG: lev:3 file:pbx_ael.c line:739 func: check_macro_returns Warning: file ./extensions.ael, line 270-293: The macro std-priv-exten_10 does not end with a return; I will insert one.
LOG: lev:3 file:pbx_ael.c line:739 func: check_macro_returns Warning: file ./extensions.ael, line 296-319: The macro std-priv-exten_11 does not end with a return; I will insert one.
LOG: lev:3 file:pbx_ael.c line:739 func: check_macro_returns Warning: file ./extensions.ael, line 322-345: The macro std-priv-exten_12 does not end with a return; I will insert one.
LOG: lev:3 file:pbx_ael.c line:739 func: check_macro_returns Warning: file ./extensions.ael, line 348-371: The macro std-priv-exten_13 does not end with a return; I will insert one.
LOG: lev:3 file:pbx_ael.c line:739 func: check_macro_returns Warning: file ./extensions.ael, line 374-397: The macro std-priv-exten_14 does not end with a return; I will insert one.
LOG: lev:3 file:pbx_ael.c line:739 func: check_macro_returns Warning: file ./extensions.ael, line 400-423: The macro std-priv-exten_15 does not end with a return; I will insert one.
LOG: lev:3 file:pbx_ael.c line:739 func: check_macro_returns Warning: file ./extensions.ael, line 426-449: The macro std-priv-exten_16 does not end with a return; I will insert one.
LOG: lev:3 file:pbx_ael.c line:739 func: check_macro_returns Warning: file ./extensions.ael, line 452-475: The macro std-priv-exten_17 does not end with a return; I will insert one.
LOG: lev:3 file:pbx_ael.c line:739 func: check_macro_returns Warning: file ./extensions.ael, line 478-501: The macro std-priv-exten_18 does not end with a return; I will insert one.
LOG: lev:3 file:pbx_ael.c line:739 func: check_macro_returns Warning: file ./extensions.ael, line 504-527: The macro std-priv-exten_19 does not end with a return; I will insert one.
LOG: lev:3 file:pbx_ael.c line:739 func: check_macro_returns Warning: file ./extensions.ael, line 530-553: The macro std-priv-exten_20 does not end with a return; I will insert one.
LOG: lev:3 file:pbx_ael.c line:739 func: check_macro_returns Warning: file ./extensions.ael, line 556-579: The macro std-priv-exten_21 does not end with a return; I will insert one.
LOG: lev:3 file:pbx_ael.c line:739 func: check_macro_returns Warning: file ./extensions.ael, line 582-605: The macro std-priv-exten_22 does not end with a return; I will insert one.
LOG: lev:3 file:pbx_ael.c line:739 func: check_macro_returns Warning: file ./extensions.ael, line 608-631: The macro std-priv-exten_23 does not end with a return; I will insert one.
LOG: lev:3 file:pbx_ael.c line:739 func: check_macro_returns Warning: file ./extensions.ael, line 634-657: The macro std-priv-exten_24 does not end with a return; I will insert one.
LOG: lev:3 file:pbx_ael.c line:739 func: check_macro_returns Warning: file ./extensions.ael, line 660-683: The macro std-priv-exten_25 does not end with a return; I will insert one.
LOG: lev:3 file:pbx_ael.c line:739 func: check_macro_returns Warning: file ./extensions.ael, line 686-709: The macro std-priv-exten_26 does not end with a return; I will insert one.
LOG: lev:3 file:pbx_ael.c line:739 func: check_macro_returns Warning: file ./extensions.ael, line 712-735: The macro std-priv-exten_27 does not end with a return; I will insert one.
LOG: lev:3 file:pbx_ael.c line:739 func: check_macro_returns Warning: file ./extensions.ael, line 738-761: The macro std-priv-exten_28 does not end with a return; I will insert one.
LOG: lev:3 file:pbx_ael.c line:739 func: check_macro_returns Warning: file ./extensions.ael, line 764-787: The macro std-priv-exten_29 does not end with a return; I will insert one.
LOG: lev:3 file:pbx_ael.c line:739 func: check_macro_returns Warning: file ./extensions.ael, line 790-813: The macro std-priv-exten_30 does not end with a return; I will insert one.
LOG: lev:3 file:pbx_ael.c line:739 func: check_macro_returns Warning: file ./extensions.ael, line 816-839: The macro std-priv-exten_31 does not end with a return; I will insert one.
LOG: lev:3 file:pbx_ael.c line:739 func: check_macro_returns Warning: file ./extensions.ael, line 842-865: The macro std-priv-exten_32 does not end with a return; I will insert one.
LOG: lev:3 file:pbx_ael.c line:739 func: check_macro_returns Warning: file ./extensions.ael, line 868-891: The macro std-priv-exten_33 does not end with a return; I will insert one.
LOG: lev:3 file:pbx_ael.c line:739 func: check_macro_returns Warning: file ./extensions.ael, line 894-917: The macro std-priv-exten_34 does not end with a return; I will insert one.
LOG: lev:3 file:pbx_ael.c line:739 func: check_macro_returns Warning: file ./extensions.ael, line 920-943: The macro std-priv-exten_35 does not end with a return; I will insert one.
LOG: lev:3 file:pbx_ael.c line:739 func: check_macro_returns Warning: file ./extensions.ael, line 946-969: The macro std-priv-exten_36 does not end with a return; I will insert one.
LOG: lev:3 file:pbx_ael.c line:739 func: check_macro_returns Warning: file ./extensions.ael, line 972-995: The macro std-priv-exten_37 does not end with a return; I will insert one.
LOG: lev:3 file:pbx_ael.c line:739 func: check_macro_returns Warning: file ./extensions.ael, line 998-1021: The macro std-priv-exten_38 does not end with a return; I will insert one.
LOG: lev:3 file:pbx_ael.c line:739 func: check_macro_returns Warning: file ./extensions.ael, line 1024-1047: The macro std-priv-exten_39 does not end with a return; I will insert one.
LOG: lev:3 file:pbx_ael.c line:739 func: check_macro_returns Warning: file ./extensions.ael, line 1050-1073: The macro std-priv-exten_40 does not end with a return; I will insert one.
LOG: lev:3 file:pbx_ael.c line:739 func: check_macro_returns Warning: file ./extensions.ael, line 1076-1099: The macro std-priv-exten_41 does not end with a return; I will insert one.
LOG: lev:3 file:pbx_ael.c line:739 func: check_macro_returns Warning: file ./extensions.ael, line 1102-1125: The macro std-priv-exten_42 does not end with a return; I will insert one.
LOG: lev:3 file:pbx_ael.c line:739 func: check_macro_returns Warning: file ./extensions.ael, line 1128-1151: The macro std-priv-exten_43 does not end with a return; I will insert one.
LOG: lev:3 file:pbx_ael.c line:739 func: check_macro_returns Warning: file ./extensions.ael, line 1154-1177: The macro std-priv-exten_44 does not end with a return; I will insert one.
LOG: lev:3 file:pbx_ael.c line:739 func: check_macro_returns Warning: file ./extensions.ael, line 1180-1203: The macro std-priv-exten_45 does not end with a return; I will insert one.
LOG: lev:3 file:pbx_ael.c line:739 func: check_macro_returns Warning: file ./extensions.ael, line 1206-1229: The macro std-priv-exten_46 does not end with a return; I will insert one.
LOG: lev:3 file:pbx_ael.c line:739 func: check_macro_returns Warning: file ./extensions.ael, line 1232-1255: The macro std-priv-exten_47 does not end with a return; I will insert one.
LOG: lev:3 file:pbx_ael.c line:739 func: check_macro_returns Warning: file ./extensions.ael, line 1258-1281: The macro std-priv-exten_48 does not end with a return; I will insert one.
LOG: lev:3 file:pbx_ael.c line:739 func: check_macro_returns Warning: file ./extensions.ael, line 1284-1307: The macro std-priv-exten_49 does not end with a return; I will insert one.
LOG: lev:3 file:pbx_ael.c line:739 func: check_macro_returns Warning: file ./extensions.ael, line 1310-1333: The macro std-priv-exten_50 does not end with a return; I will insert one.
LOG: lev:3 file:pbx_ael.c line:739 func: check_macro_returns Warning: file ./extensions.ael, line 1336-1359: The macro std-priv-exten_51 does not end with a return; I will insert one.
LOG: lev:3 file:pbx_ael.c line:739 func: check_macro_returns Warning: file ./extensions.ael, line 1362-1385: The macro std-priv-exten_52 does not end with a return; I will insert one.
LOG: lev:3 file:pbx_ael.c line:739 func: check_macro_returns Warning: file ./extensions.ael, line 1388-1411: The macro std-priv-exten_53 does not end with a return; I will insert one.
LOG: lev:3 file:pbx_ael.c line:739 func: check_macro_returns Warning: file ./extensions.ael, line 1414-1437: The macro std-priv-exten_54 does not end with a return; I will insert one.
LOG: lev:3 file:pbx_ael.c line:739 func: check_macro_returns Warning: file ./extensions.ael, line 1440-1463: The macro std-priv-exten_55 does not end with a return; I will insert one.
LOG: lev:3 file:pbx_ael.c line:739 func: check_macro_returns Warning: file ./extensions.ael, line 1466-1489: The macro std-priv-exten_56 does not end with a return; I will insert one.
LOG: lev:3 file:pbx_ael.c line:739 func: check_macro_returns Warning: file ./extensions.ael, line 1492-1515: The macro std-priv-exten_57 does not end with a return; I will insert one.
LOG: lev:3 file:pbx_ael.c line:739 func: check_macro_returns Warning: file ./extensions.ael, line 1518-1541: The macro std-priv-exten_58 does not end with a return; I will insert one.
LOG: lev:3 file:pbx_ael.c line:739 func: check_macro_returns Warning: file ./extensions.ael, line 1544-1567: The macro std-priv-exten_59 does not end with a return; I will insert one.
LOG: lev:3 file:pbx_ael.c line:739 func: check_macro_returns Warning: file ./extensions.ael, line 1570-1593: The macro std-priv-exten_60 does not end with a return; I will insert one.
LOG: lev:3 file:pbx_ael.c line:739 func: check_macro_returns Warning: file ./extensions.ael, line 1596-1619: The macro std-priv-exten_61 does not end with a return; I will insert one.
LOG: lev:3 file:pbx_ael.c line:739 func: check_macro_returns Warning: file ./extensions.ael, line 1622-1645: The macro std-priv-exten_62 does not end with a return; I will insert one.
LOG: lev:3 file:pbx_ael.c line:739 func: check_macro_returns Warning: file ./extensions.ael, line 1648-1671: The macro std-priv-exten_63 does not end with a return; I will insert one.
LOG: lev:3 file:pbx_ael.c line:739 func: check_macro_returns Warning: file ./extensions.ael, line 1674-1697: The macro std-priv-exten_64 does not end with a return; I will insert one.
LOG: lev:3 file:pbx_ael.c line:739 func: check_macro_returns Warning: file ./extensions.ael, line 1700-1723: The macro std-priv-exten_65 does not end with a return; I will insert one.
LOG: lev:3 file:pbx_ael.c line:739 func: check_macro_returns Warning: file ./extensions.ael, line 1726-1749: The macro std-priv-exten_66 does not end with a return; I will insert one.
LOG: lev:3 file:pbx_ael.c line:739 func: check_macro_returns Warning: file ./extensions.ael, line 1752-1775: The macro std-priv-exten_67 does not end with a return; I will insert one.
LOG: lev:3 file:pbx_ael.c line:739 func: check_macro_returns Warning: file ./extensions.ael, line 1778-1801: The macro std-priv-exten_68 does not end with a return; I will insert one.
LOG: lev:3 file:pbx_ael.c line:739 func: check_macro_returns Warning: file ./extensions.ael, line 1804-1827: The macro std-priv-exten_69 does not end with a return; I will insert one.
LOG: lev:3 file:pbx_ael.c line:739 func: check_macro_returns Warning: file ./extensions.ael, line 1830-1853: The macro std-priv-exten_70 does not end with a return; I will insert one.
LOG: lev:3 file:pbx_ael.c line:739 func: check_macro_returns Warning: file ./extensions.ael, line 1856-1879: The macro std-priv-exten_71 does not end with a return; I will insert one.
LOG: lev:3 file:pbx_ael.c line:739 func: check_macro_returns Warning: file ./extensions.ael, line 1882-1905: The macro std-priv-exten_72 does not end with a return; I will insert one.
LOG: lev:3 file:pbx_ael.c line:739 func: check_macro_returns Warning: file ./extensions.ael, line 1908-1931: The macro std-priv-exten_73 does not end with a return; I will insert one.
LOG: lev:3 file:pbx_ael.c line:739 func: check_macro_returns Warning: file ./extensions.ael, line 1934-1957: The macro std-priv-exten does not end with a return; I will insert one.
LOG: lev:3 file:pbx_ael.c line:739 func: check_macro_returns Warning: file ./extensions.ael, line 1959-1995: The macro fillcidname does not end with a return; I will insert one.
LOG: lev:3 file:pbx_ael.c line:739 func: check_macro_returns Warning: file ./extensions.ael, line 1997-2015: The macro ciddial does not end with a return; I will insert one.
LOG: lev:3 file:pbx_ael.c line:739 func: check_macro_returns Warning: file ./extensions.ael, line 2017-2028: The macro ciddial3 does not end with a return; I will insert one.
LOG: lev:3 file:pbx_ael.c line:739 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:pbx_ael.c line:739 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:pbx_ael.c line:739 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:4110 func: pbx_load_module AEL load process: checked config file name './extensions.ael'.
LOG: lev:2 file:pbx_ael.c line:4112 func: pbx_load_module AEL load process: compiled config file name './extensions.ael'.
LOG: lev:2 file:pbx_ael.c line:4115 func: pbx_load_module AEL load process: merged config file name './extensions.ael'.
LOG: lev:2 file:pbx_ael.c line:4118 func: pbx_load_module AEL load process: verified config file name './extensions.ael'.
LOG: lev:4 file:ael2_parse line:522 func: main 172 contexts, 858 extensions, 2406 priorities
LOG: lev:2 file:pbx_ael.c line:1695 func: pbx_load_module AEL load process: parsed config file name './extensions.ael'.
LOG: lev:3 file:pval.c line:668 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:1358 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:668 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.
LOG: lev:3 file:pval.c line:668 func: check_macro_returns Warning: file ./extensions.ael, line 62-85: The macro std-priv-exten_2 does not end with a return; I will insert one.
LOG: lev:3 file:pval.c line:668 func: check_macro_returns Warning: file ./extensions.ael, line 88-111: The macro std-priv-exten_3 does not end with a return; I will insert one.
LOG: lev:3 file:pval.c line:668 func: check_macro_returns Warning: file ./extensions.ael, line 114-137: The macro std-priv-exten_4 does not end with a return; I will insert one.
LOG: lev:3 file:pval.c line:668 func: check_macro_returns Warning: file ./extensions.ael, line 140-163: The macro std-priv-exten_5 does not end with a return; I will insert one.
LOG: lev:3 file:pval.c line:668 func: check_macro_returns Warning: file ./extensions.ael, line 166-189: The macro std-priv-exten_6 does not end with a return; I will insert one.
LOG: lev:3 file:pval.c line:668 func: check_macro_returns Warning: file ./extensions.ael, line 192-215: The macro std-priv-exten_7 does not end with a return; I will insert one.
LOG: lev:3 file:pval.c line:668 func: check_macro_returns Warning: file ./extensions.ael, line 218-241: The macro std-priv-exten_8 does not end with a return; I will insert one.
LOG: lev:3 file:pval.c line:668 func: check_macro_returns Warning: file ./extensions.ael, line 244-267: The macro std-priv-exten_9 does not end with a return; I will insert one.
LOG: lev:3 file:pval.c line:668 func: check_macro_returns Warning: file ./extensions.ael, line 270-293: The macro std-priv-exten_10 does not end with a return; I will insert one.
LOG: lev:3 file:pval.c line:668 func: check_macro_returns Warning: file ./extensions.ael, line 296-319: The macro std-priv-exten_11 does not end with a return; I will insert one.
LOG: lev:3 file:pval.c line:668 func: check_macro_returns Warning: file ./extensions.ael, line 322-345: The macro std-priv-exten_12 does not end with a return; I will insert one.
LOG: lev:3 file:pval.c line:668 func: check_macro_returns Warning: file ./extensions.ael, line 348-371: The macro std-priv-exten_13 does not end with a return; I will insert one.
LOG: lev:3 file:pval.c line:668 func: check_macro_returns Warning: file ./extensions.ael, line 374-397: The macro std-priv-exten_14 does not end with a return; I will insert one.
LOG: lev:3 file:pval.c line:668 func: check_macro_returns Warning: file ./extensions.ael, line 400-423: The macro std-priv-exten_15 does not end with a return; I will insert one.
LOG: lev:3 file:pval.c line:668 func: check_macro_returns Warning: file ./extensions.ael, line 426-449: The macro std-priv-exten_16 does not end with a return; I will insert one.
LOG: lev:3 file:pval.c line:668 func: check_macro_returns Warning: file ./extensions.ael, line 452-475: The macro std-priv-exten_17 does not end with a return; I will insert one.
LOG: lev:3 file:pval.c line:668 func: check_macro_returns Warning: file ./extensions.ael, line 478-501: The macro std-priv-exten_18 does not end with a return; I will insert one.
LOG: lev:3 file:pval.c line:668 func: check_macro_returns Warning: file ./extensions.ael, line 504-527: The macro std-priv-exten_19 does not end with a return; I will insert one.
LOG: lev:3 file:pval.c line:668 func: check_macro_returns Warning: file ./extensions.ael, line 530-553: The macro std-priv-exten_20 does not end with a return; I will insert one.
LOG: lev:3 file:pval.c line:668 func: check_macro_returns Warning: file ./extensions.ael, line 556-579: The macro std-priv-exten_21 does not end with a return; I will insert one.
LOG: lev:3 file:pval.c line:668 func: check_macro_returns Warning: file ./extensions.ael, line 582-605: The macro std-priv-exten_22 does not end with a return; I will insert one.
LOG: lev:3 file:pval.c line:668 func: check_macro_returns Warning: file ./extensions.ael, line 608-631: The macro std-priv-exten_23 does not end with a return; I will insert one.
LOG: lev:3 file:pval.c line:668 func: check_macro_returns Warning: file ./extensions.ael, line 634-657: The macro std-priv-exten_24 does not end with a return; I will insert one.
LOG: lev:3 file:pval.c line:668 func: check_macro_returns Warning: file ./extensions.ael, line 660-683: The macro std-priv-exten_25 does not end with a return; I will insert one.
LOG: lev:3 file:pval.c line:668 func: check_macro_returns Warning: file ./extensions.ael, line 686-709: The macro std-priv-exten_26 does not end with a return; I will insert one.
LOG: lev:3 file:pval.c line:668 func: check_macro_returns Warning: file ./extensions.ael, line 712-735: The macro std-priv-exten_27 does not end with a return; I will insert one.
LOG: lev:3 file:pval.c line:668 func: check_macro_returns Warning: file ./extensions.ael, line 738-761: The macro std-priv-exten_28 does not end with a return; I will insert one.
LOG: lev:3 file:pval.c line:668 func: check_macro_returns Warning: file ./extensions.ael, line 764-787: The macro std-priv-exten_29 does not end with a return; I will insert one.
LOG: lev:3 file:pval.c line:668 func: check_macro_returns Warning: file ./extensions.ael, line 790-813: The macro std-priv-exten_30 does not end with a return; I will insert one.
LOG: lev:3 file:pval.c line:668 func: check_macro_returns Warning: file ./extensions.ael, line 816-839: The macro std-priv-exten_31 does not end with a return; I will insert one.
LOG: lev:3 file:pval.c line:668 func: check_macro_returns Warning: file ./extensions.ael, line 842-865: The macro std-priv-exten_32 does not end with a return; I will insert one.
LOG: lev:3 file:pval.c line:668 func: check_macro_returns Warning: file ./extensions.ael, line 868-891: The macro std-priv-exten_33 does not end with a return; I will insert one.
LOG: lev:3 file:pval.c line:668 func: check_macro_returns Warning: file ./extensions.ael, line 894-917: The macro std-priv-exten_34 does not end with a return; I will insert one.
LOG: lev:3 file:pval.c line:668 func: check_macro_returns Warning: file ./extensions.ael, line 920-943: The macro std-priv-exten_35 does not end with a return; I will insert one.
LOG: lev:3 file:pval.c line:668 func: check_macro_returns Warning: file ./extensions.ael, line 946-969: The macro std-priv-exten_36 does not end with a return; I will insert one.
LOG: lev:3 file:pval.c line:668 func: check_macro_returns Warning: file ./extensions.ael, line 972-995: The macro std-priv-exten_37 does not end with a return; I will insert one.
LOG: lev:3 file:pval.c line:668 func: check_macro_returns Warning: file ./extensions.ael, line 998-1021: The macro std-priv-exten_38 does not end with a return; I will insert one.
LOG: lev:3 file:pval.c line:668 func: check_macro_returns Warning: file ./extensions.ael, line 1024-1047: The macro std-priv-exten_39 does not end with a return; I will insert one.
LOG: lev:3 file:pval.c line:668 func: check_macro_returns Warning: file ./extensions.ael, line 1050-1073: The macro std-priv-exten_40 does not end with a return; I will insert one.
LOG: lev:3 file:pval.c line:668 func: check_macro_returns Warning: file ./extensions.ael, line 1076-1099: The macro std-priv-exten_41 does not end with a return; I will insert one.
LOG: lev:3 file:pval.c line:668 func: check_macro_returns Warning: file ./extensions.ael, line 1102-1125: The macro std-priv-exten_42 does not end with a return; I will insert one.
LOG: lev:3 file:pval.c line:668 func: check_macro_returns Warning: file ./extensions.ael, line 1128-1151: The macro std-priv-exten_43 does not end with a return; I will insert one.
LOG: lev:3 file:pval.c line:668 func: check_macro_returns Warning: file ./extensions.ael, line 1154-1177: The macro std-priv-exten_44 does not end with a return; I will insert one.
LOG: lev:3 file:pval.c line:668 func: check_macro_returns Warning: file ./extensions.ael, line 1180-1203: The macro std-priv-exten_45 does not end with a return; I will insert one.
LOG: lev:3 file:pval.c line:668 func: check_macro_returns Warning: file ./extensions.ael, line 1206-1229: The macro std-priv-exten_46 does not end with a return; I will insert one.
LOG: lev:3 file:pval.c line:668 func: check_macro_returns Warning: file ./extensions.ael, line 1232-1255: The macro std-priv-exten_47 does not end with a return; I will insert one.
LOG: lev:3 file:pval.c line:668 func: check_macro_returns Warning: file ./extensions.ael, line 1258-1281: The macro std-priv-exten_48 does not end with a return; I will insert one.
LOG: lev:3 file:pval.c line:668 func: check_macro_returns Warning: file ./extensions.ael, line 1284-1307: The macro std-priv-exten_49 does not end with a return; I will insert one.
LOG: lev:3 file:pval.c line:668 func: check_macro_returns Warning: file ./extensions.ael, line 1310-1333: The macro std-priv-exten_50 does not end with a return; I will insert one.
LOG: lev:3 file:pval.c line:668 func: check_macro_returns Warning: file ./extensions.ael, line 1336-1359: The macro std-priv-exten_51 does not end with a return; I will insert one.
LOG: lev:3 file:pval.c line:668 func: check_macro_returns Warning: file ./extensions.ael, line 1362-1385: The macro std-priv-exten_52 does not end with a return; I will insert one.
LOG: lev:3 file:pval.c line:668 func: check_macro_returns Warning: file ./extensions.ael, line 1388-1411: The macro std-priv-exten_53 does not end with a return; I will insert one.
LOG: lev:3 file:pval.c line:668 func: check_macro_returns Warning: file ./extensions.ael, line 1414-1437: The macro std-priv-exten_54 does not end with a return; I will insert one.
LOG: lev:3 file:pval.c line:668 func: check_macro_returns Warning: file ./extensions.ael, line 1440-1463: The macro std-priv-exten_55 does not end with a return; I will insert one.
LOG: lev:3 file:pval.c line:668 func: check_macro_returns Warning: file ./extensions.ael, line 1466-1489: The macro std-priv-exten_56 does not end with a return; I will insert one.
LOG: lev:3 file:pval.c line:668 func: check_macro_returns Warning: file ./extensions.ael, line 1492-1515: The macro std-priv-exten_57 does not end with a return; I will insert one.
LOG: lev:3 file:pval.c line:668 func: check_macro_returns Warning: file ./extensions.ael, line 1518-1541: The macro std-priv-exten_58 does not end with a return; I will insert one.
LOG: lev:3 file:pval.c line:668 func: check_macro_returns Warning: file ./extensions.ael, line 1544-1567: The macro std-priv-exten_59 does not end with a return; I will insert one.
LOG: lev:3 file:pval.c line:668 func: check_macro_returns Warning: file ./extensions.ael, line 1570-1593: The macro std-priv-exten_60 does not end with a return; I will insert one.
LOG: lev:3 file:pval.c line:668 func: check_macro_returns Warning: file ./extensions.ael, line 1596-1619: The macro std-priv-exten_61 does not end with a return; I will insert one.
LOG: lev:3 file:pval.c line:668 func: check_macro_returns Warning: file ./extensions.ael, line 1622-1645: The macro std-priv-exten_62 does not end with a return; I will insert one.
LOG: lev:3 file:pval.c line:668 func: check_macro_returns Warning: file ./extensions.ael, line 1648-1671: The macro std-priv-exten_63 does not end with a return; I will insert one.
LOG: lev:3 file:pval.c line:668 func: check_macro_returns Warning: file ./extensions.ael, line 1674-1697: The macro std-priv-exten_64 does not end with a return; I will insert one.
LOG: lev:3 file:pval.c line:668 func: check_macro_returns Warning: file ./extensions.ael, line 1700-1723: The macro std-priv-exten_65 does not end with a return; I will insert one.
LOG: lev:3 file:pval.c line:668 func: check_macro_returns Warning: file ./extensions.ael, line 1726-1749: The macro std-priv-exten_66 does not end with a return; I will insert one.
LOG: lev:3 file:pval.c line:668 func: check_macro_returns Warning: file ./extensions.ael, line 1752-1775: The macro std-priv-exten_67 does not end with a return; I will insert one.
LOG: lev:3 file:pval.c line:668 func: check_macro_returns Warning: file ./extensions.ael, line 1778-1801: The macro std-priv-exten_68 does not end with a return; I will insert one.
LOG: lev:3 file:pval.c line:668 func: check_macro_returns Warning: file ./extensions.ael, line 1804-1827: The macro std-priv-exten_69 does not end with a return; I will insert one.
LOG: lev:3 file:pval.c line:668 func: check_macro_returns Warning: file ./extensions.ael, line 1830-1853: The macro std-priv-exten_70 does not end with a return; I will insert one.
LOG: lev:3 file:pval.c line:668 func: check_macro_returns Warning: file ./extensions.ael, line 1856-1879: The macro std-priv-exten_71 does not end with a return; I will insert one.
LOG: lev:3 file:pval.c line:668 func: check_macro_returns Warning: file ./extensions.ael, line 1882-1905: The macro std-priv-exten_72 does not end with a return; I will insert one.
LOG: lev:3 file:pval.c line:668 func: check_macro_returns Warning: file ./extensions.ael, line 1908-1931: The macro std-priv-exten_73 does not end with a return; I will insert one.
LOG: lev:3 file:pval.c line:668 func: check_macro_returns Warning: file ./extensions.ael, line 1934-1957: The macro std-priv-exten does not end with a return; I will insert one.
LOG: lev:3 file:pval.c line:668 func: check_macro_returns Warning: file ./extensions.ael, line 1959-1995: The macro fillcidname does not end with a return; I will insert one.
LOG: lev:3 file:pval.c line:668 func: check_macro_returns Warning: file ./extensions.ael, line 1997-2015: The macro ciddial does not end with a return; I will insert one.
LOG: lev:3 file:pval.c line:668 func: check_macro_returns Warning: file ./extensions.ael, line 2017-2028: The macro ciddial3 does not end with a return; I will insert one.
LOG: lev:3 file:pval.c line:668 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:668 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:668 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:1698 func: pbx_load_module AEL load process: checked config file name './extensions.ael'.
LOG: lev:2 file:pbx_ael.c line:1700 func: pbx_load_module AEL load process: compiled config file name './extensions.ael'.
LOG: lev:2 file:pbx_ael.c line:1703 func: pbx_load_module AEL load process: merged config file name './extensions.ael'.
LOG: lev:2 file:pbx_ael.c line:1706 func: pbx_load_module AEL load process: verified config file name './extensions.ael'.
LOG: lev:4 file:ael2_parse line:521 func: main 172 contexts, 858 extensions, 2406 priorities

View File

@ -2,28 +2,28 @@
(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:4092 func: pbx_load_module Starting AEL load process.
LOG: lev:2 file:pbx_ael.c line:4099 func: pbx_load_module AEL load process: calculated config file name './extensions.ael'.
LOG: lev:2 file:pbx_ael.c line:1680 func: pbx_load_module Starting AEL load process.
LOG: lev:2 file:pbx_ael.c line:1687 func: pbx_load_module AEL load process: calculated config file name './extensions.ael'.
LOG: lev:2 file:ael.flex line:430 func: ael_yylex --Read in included file ./apptest.ael2, 3474 chars
LOG: lev:3 file:ael.y line:538 func: ael_yyparse ==== File: ./apptest.ael2, Line 46, Cols: 8-11: Suggestion: Use the goto statement instead of the Goto() application call in AEL.
LOG: lev:2 file:pbx_ael.c line:4107 func: pbx_load_module AEL load process: parsed config file name './extensions.ael'.
LOG: lev:3 file:pbx_ael.c line:2530 func: check_pval_item Warning: file ./apptest.ael2, line 35-35: application call to EndWhile affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
LOG: lev:3 file:pbx_ael.c line:2530 func: check_pval_item Warning: file ./apptest.ael2, line 37-37: application call to ExecIf affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
LOG: lev:3 file:pbx_ael.c line:2530 func: check_pval_item Warning: file ./apptest.ael2, line 38-38: application call to ExecIfTime affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
LOG: lev:3 file:pbx_ael.c line:2530 func: check_pval_item Warning: file ./apptest.ael2, line 44-44: application call to Gosub affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
LOG: lev:3 file:pbx_ael.c line:2530 func: check_pval_item Warning: file ./apptest.ael2, line 45-45: application call to GosubIf affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
LOG: lev:3 file:pbx_ael.c line:1398 func: check_goto Warning: file ./apptest.ael2, line 46-46: goto: no context cont could be found that matches the goto target!
LOG: lev:3 file:pbx_ael.c line:2530 func: check_pval_item Warning: file ./apptest.ael2, line 47-47: application call to GotoIf affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
LOG: lev:3 file:pbx_ael.c line:2530 func: check_pval_item Warning: file ./apptest.ael2, line 48-48: application call to GotoIfTime affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
LOG: lev:3 file:pbx_ael.c line:2530 func: check_pval_item Warning: file ./apptest.ael2, line 58-58: application call to Macro affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
LOG: lev:3 file:pbx_ael.c line:2535 func: check_pval_item Warning: file ./apptest.ael2, line 59-59: I am converting the MacroExit call here to a return statement.
LOG: lev:3 file:pbx_ael.c line:2530 func: check_pval_item Warning: file ./apptest.ael2, line 60-60: application call to MacroIf affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
LOG: lev:3 file:pbx_ael.c line:2530 func: check_pval_item Warning: file ./apptest.ael2, line 85-85: application call to Random affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
LOG: lev:3 file:pbx_ael.c line:2530 func: check_pval_item Warning: file ./apptest.ael2, line 94-94: application call to Return affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
LOG: lev:3 file:pbx_ael.c line:2530 func: check_pval_item Warning: file ./apptest.ael2, line 119-119: application call to StackPop affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
LOG: lev:3 file:pbx_ael.c line:2530 func: check_pval_item Warning: file ./apptest.ael2, line 141-141: application call to While affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
LOG: lev:2 file:pbx_ael.c line:4110 func: pbx_load_module AEL load process: checked config file name './extensions.ael'.
LOG: lev:2 file:pbx_ael.c line:4112 func: pbx_load_module AEL load process: compiled config file name './extensions.ael'.
LOG: lev:2 file:pbx_ael.c line:4115 func: pbx_load_module AEL load process: merged config file name './extensions.ael'.
LOG: lev:2 file:pbx_ael.c line:4118 func: pbx_load_module AEL load process: verified config file name './extensions.ael'.
LOG: lev:4 file:ael2_parse line:522 func: main 1 contexts, 1 extensions, 142 priorities
LOG: lev:2 file:pbx_ael.c line:1695 func: pbx_load_module AEL load process: parsed config file name './extensions.ael'.
LOG: lev:3 file:pval.c line:2503 func: check_pval_item Warning: file ./apptest.ael2, line 35-35: application call to EndWhile affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
LOG: lev:3 file:pval.c line:2503 func: check_pval_item Warning: file ./apptest.ael2, line 37-37: application call to ExecIf affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
LOG: lev:3 file:pval.c line:2503 func: check_pval_item Warning: file ./apptest.ael2, line 38-38: application call to ExecIfTime affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
LOG: lev:3 file:pval.c line:2503 func: check_pval_item Warning: file ./apptest.ael2, line 44-44: application call to Gosub affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
LOG: lev:3 file:pval.c line:2503 func: check_pval_item Warning: file ./apptest.ael2, line 45-45: application call to GosubIf affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
LOG: lev:3 file:pval.c line:1342 func: check_goto Warning: file ./apptest.ael2, line 46-46: goto: Couldn't find goto target cont|exten|prior, not even in extensions.conf!
LOG: lev:3 file:pval.c line:2503 func: check_pval_item Warning: file ./apptest.ael2, line 47-47: application call to GotoIf affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
LOG: lev:3 file:pval.c line:2503 func: check_pval_item Warning: file ./apptest.ael2, line 48-48: application call to GotoIfTime affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
LOG: lev:3 file:pval.c line:2503 func: check_pval_item Warning: file ./apptest.ael2, line 58-58: application call to Macro affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
LOG: lev:3 file:pval.c line:2508 func: check_pval_item Warning: file ./apptest.ael2, line 59-59: I am converting the MacroExit call here to a return statement.
LOG: lev:3 file:pval.c line:2503 func: check_pval_item Warning: file ./apptest.ael2, line 60-60: application call to MacroIf affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
LOG: lev:3 file:pval.c line:2503 func: check_pval_item Warning: file ./apptest.ael2, line 85-85: application call to Random affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
LOG: lev:3 file:pval.c line:2503 func: check_pval_item Warning: file ./apptest.ael2, line 94-94: application call to Return affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
LOG: lev:3 file:pval.c line:2503 func: check_pval_item Warning: file ./apptest.ael2, line 119-119: application call to StackPop affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
LOG: lev:3 file:pval.c line:2503 func: check_pval_item Warning: file ./apptest.ael2, line 141-141: application call to While affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
LOG: lev:2 file:pbx_ael.c line:1698 func: pbx_load_module AEL load process: checked config file name './extensions.ael'.
LOG: lev:2 file:pbx_ael.c line:1700 func: pbx_load_module AEL load process: compiled config file name './extensions.ael'.
LOG: lev:2 file:pbx_ael.c line:1703 func: pbx_load_module AEL load process: merged config file name './extensions.ael'.
LOG: lev:2 file:pbx_ael.c line:1706 func: pbx_load_module AEL load process: verified config file name './extensions.ael'.
LOG: lev:4 file:ael2_parse line:521 func: main 1 contexts, 1 extensions, 142 priorities

View File

@ -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:3910 func: pbx_load_module Starting AEL load process.
LOG: lev:2 file:pbx_ael.c line:3917 func: pbx_load_module AEL load process: calculated config file name './extensions.ael'.
LOG: lev:2 file:pbx_ael.c line:3925 func: pbx_load_module AEL load process: parsed config file name './extensions.ael'.
LOG: lev:3 file:pbx_ael.c line:712 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:pbx_ael.c line:712 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:pbx_ael.c line:712 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:3928 func: pbx_load_module AEL load process: checked config file name './extensions.ael'.
LOG: lev:2 file:pbx_ael.c line:3930 func: pbx_load_module AEL load process: compiled config file name './extensions.ael'.
LOG: lev:2 file:pbx_ael.c line:3933 func: pbx_load_module AEL load process: merged config file name './extensions.ael'.
LOG: lev:2 file:pbx_ael.c line:3936 func: pbx_load_module AEL load process: verified config file name './extensions.ael'.
LOG: lev:4 file:ael2_parse line:479 func: main 38 contexts, 90 extensions, 492 priorities
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:120 func: pbx_load_module AEL load process: calculated config file name './extensions.ael'.
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:678 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:678 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:678 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:131 func: pbx_load_module AEL load process: checked config file name './extensions.ael'.
LOG: lev:2 file:pbx_ael.c line:133 func: pbx_load_module AEL load process: compiled config file name './extensions.ael'.
LOG: lev:2 file:pbx_ael.c line:136 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: verified config file name './extensions.ael'.
LOG: lev:4 file:ael2_parse line:499 func: main 38 contexts, 90 extensions, 492 priorities

View File

@ -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:4092 func: pbx_load_module Starting AEL load process.
LOG: lev:2 file:pbx_ael.c line:4099 func: pbx_load_module AEL load process: calculated config file name './extensions.ael'.
LOG: lev:2 file:pbx_ael.c line:1680 func: pbx_load_module Starting AEL load process.
LOG: lev:2 file:pbx_ael.c line:1687 func: pbx_load_module AEL load process: calculated config file name './extensions.ael'.
LOG: lev:4 file:ael.flex line:277 func: ael_yylex File=./extensions.ael, line=165, column=49: Mismatched '}' in expression!
LOG: lev:4 file:ael.y line:764 func: ael_yyerror ==== File: ./extensions.ael, Line 165, Cols: 51-51: Error: syntax error, unexpected '=', expecting ')'
LOG: lev:4 file:ael.y line:764 func: ael_yyerror ==== File: ./extensions.ael, Line 169, Cols: 24-24: Error: syntax error, unexpected '&'
@ -11,14 +11,14 @@ LOG: lev:4 file:ael.flex line:277 func: ael_yylex File=./extensions.ael, line=
LOG: lev:4 file:ael.y line:764 func: ael_yyerror ==== File: ./extensions.ael, Line 222, Cols: 43-43: Error: syntax error, unexpected '=', expecting ')'
LOG: lev:4 file:ael.y line:764 func: ael_yyerror ==== File: ./extensions.ael, Line 226, Cols: 16-16: Error: syntax error, unexpected '&'
LOG: lev:4 file:ael.y line:764 func: ael_yyerror ==== File: ./extensions.ael, Line 291, Cols: 21-28: Error: syntax error, unexpected word, expecting '(' or ';' or '=' or ':'
LOG: lev:2 file:pbx_ael.c line:4107 func: pbx_load_module AEL load process: parsed config file name './extensions.ael'.
LOG: lev:3 file:pbx_ael.c line:739 func: check_macro_returns Warning: file ./extensions.ael, line 116-125: The macro dialout does not end with a return; I will insert one.
LOG: lev:3 file:pbx_ael.c line:739 func: check_macro_returns Warning: file ./extensions.ael, line 129-168: The macro stdexten does not end with a return; I will insert one.
LOG: lev:3 file:pbx_ael.c line:739 func: check_macro_returns Warning: file ./extensions.ael, line 184-191: The macro uvm does not end with a return; I will insert one.
LOG: lev:3 file:pbx_ael.c line:739 func: check_macro_returns Warning: file ./extensions.ael, line 193-200: The macro bvm does not end with a return; I will insert one.
LOG: lev:3 file:pbx_ael.c line:739 func: check_macro_returns Warning: file ./extensions.ael, line 202-207: The macro checkdnd does not end with a return; I will insert one.
LOG: lev:3 file:pbx_ael.c line:739 func: check_macro_returns Warning: file ./extensions.ael, line 209-216: The macro checkcf does not end with a return; I will insert one.
LOG: lev:3 file:pbx_ael.c line:739 func: check_macro_returns Warning: file ./extensions.ael, line 218-225: The macro checkcfb does not end with a return; I will insert one.
LOG: lev:3 file:pbx_ael.c line:739 func: check_macro_returns Warning: file ./extensions.ael, line 688-694: The macro check-psd-exists does not end with a return; I will insert one.
LOG: lev:4 file:pbx_ael.c line:4120 func: pbx_load_module Sorry, but 5 syntax errors and 0 semantic errors were detected. It doesn't make sense to compile.
LOG: lev:4 file:ael2_parse line:522 func: main 0 contexts, 0 extensions, 0 priorities
LOG: lev:2 file:pbx_ael.c line:1695 func: pbx_load_module AEL load process: parsed config file name './extensions.ael'.
LOG: lev:3 file:pval.c line:668 func: check_macro_returns Warning: file ./extensions.ael, line 116-125: The macro dialout does not end with a return; I will insert one.
LOG: lev:3 file:pval.c line:668 func: check_macro_returns Warning: file ./extensions.ael, line 129-168: The macro stdexten does not end with a return; I will insert one.
LOG: lev:3 file:pval.c line:668 func: check_macro_returns Warning: file ./extensions.ael, line 184-191: The macro uvm does not end with a return; I will insert one.
LOG: lev:3 file:pval.c line:668 func: check_macro_returns Warning: file ./extensions.ael, line 193-200: The macro bvm does not end with a return; I will insert one.
LOG: lev:3 file:pval.c line:668 func: check_macro_returns Warning: file ./extensions.ael, line 202-207: The macro checkdnd does not end with a return; I will insert one.
LOG: lev:3 file:pval.c line:668 func: check_macro_returns Warning: file ./extensions.ael, line 209-216: The macro checkcf does not end with a return; I will insert one.
LOG: lev:3 file:pval.c line:668 func: check_macro_returns Warning: file ./extensions.ael, line 218-225: The macro checkcfb does not end with a return; I will insert one.
LOG: lev:3 file:pval.c line:668 func: check_macro_returns Warning: file ./extensions.ael, line 688-694: The macro check-psd-exists does not end with a return; I will insert one.
LOG: lev:4 file:pbx_ael.c line:1708 func: pbx_load_module Sorry, but 5 syntax errors and 0 semantic errors were detected. It doesn't make sense to compile.
LOG: lev:4 file:ael2_parse line:521 func: main 0 contexts, 0 extensions, 0 priorities

View File

@ -2,19 +2,28 @@
(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:4026 func: pbx_load_module Starting AEL load process.
LOG: lev:2 file:pbx_ael.c line:4033 func: pbx_load_module AEL load process: calculated config file name './extensions.ael'.
LOG: lev:2 file:pbx_ael.c line:4041 func: pbx_load_module AEL load process: parsed config file name './extensions.ael'.
LOG: lev:3 file:pbx_ael.c line:734 func: check_macro_returns Warning: file ./extensions.ael, line 22-42: The macro stdexten does not end with a return; I will insert one.
LOG: lev:3 file:pbx_ael.c line:734 func: check_macro_returns Warning: file ./extensions.ael, line 44-49: The macro announce_minutes does not end with a return; I will insert one.
LOG: lev:3 file:pbx_ael.c line:734 func: check_macro_returns Warning: file ./extensions.ael, line 59-89: The macro checkanddial does not end with a return; I will insert one.
LOG: lev:3 file:pbx_ael.c line:734 func: check_macro_returns Warning: file ./extensions.ael, line 91-100: The macro trunkdial does not end with a return; I will insert one.
LOG: lev:4 file:pbx_ael.c line:2459 func: check_pval_item Error: file ./extensions.ael, line 98-98: The macro call to checkanddial has 5 arguments, but the macro definition has 7 arguments
LOG: lev:3 file:pbx_ael.c line:734 func: check_macro_returns Warning: file ./extensions.ael, line 102-112: The macro checklocal does not end with a return; I will insert one.
LOG: lev:4 file:pbx_ael.c line:2459 func: check_pval_item Error: file ./extensions.ael, line 107-107: The macro call to checkanddial has 5 arguments, but the macro definition has 7 arguments
LOG: lev:3 file:pbx_ael.c line:734 func: check_macro_returns Warning: file ./extensions.ael, line 114-119: The macro autodial does not end with a return; I will insert one.
LOG: lev:4 file:pbx_ael.c line:2459 func: check_pval_item Error: file ./extensions.ael, line 284-284: The macro call to checkanddial has 5 arguments, but the macro definition has 7 arguments
LOG: lev:4 file:pbx_ael.c line:2459 func: check_pval_item Error: file ./extensions.ael, line 287-287: The macro call to checkanddial has 5 arguments, but the macro definition has 7 arguments
LOG: lev:3 file:pbx_ael.c line:2440 func: check_pval_item Warning: file ./extensions.ael, line 452-452: macro call to non-existent std-exten-ael ! Hopefully it is present in extensions.conf!
LOG: lev:4 file:pbx_ael.c line:4054 func: pbx_load_module Sorry, but 0 syntax errors and 4 semantic errors were detected. It doesn't make sense to compile.
LOG: lev:4 file:ael2_parse line:512 func: main 0 contexts, 0 extensions, 0 priorities
LOG: lev:2 file:pbx_ael.c line:1680 func: pbx_load_module Starting AEL load process.
LOG: lev:2 file:pbx_ael.c line:1687 func: pbx_load_module AEL load process: calculated config file name './extensions.ael'.
LOG: lev:2 file:pbx_ael.c line:1695 func: pbx_load_module AEL load process: parsed config file name './extensions.ael'.
LOG: lev:3 file:pval.c line:668 func: check_macro_returns Warning: file ./extensions.ael, line 22-42: The macro stdexten does not end with a return; I will insert one.
LOG: lev:3 file:pval.c line:668 func: check_macro_returns Warning: file ./extensions.ael, line 44-49: The macro announce_minutes does not end with a return; I will insert one.
LOG: lev:3 file:pval.c line:668 func: check_macro_returns Warning: file ./extensions.ael, line 59-89: The macro checkanddial does not end with a return; I will insert one.
LOG: lev:3 file:extconf.c line:3959 func: add_pri Unable to register extension '_', priority 1 in 'test6', already in use
LOG: lev:3 file:extconf.c line:3959 func: add_pri Unable to register extension '_X.', priority 1 in 'test6', already in use
=== Loading extensions.conf ===
Context: test6
Context: test5
Context: macro-funcA
Context: macro-funcB
Context: macro-funcC
=========
LOG: lev:3 file:pval.c line:668 func: check_macro_returns Warning: file ./extensions.ael, line 91-100: The macro trunkdial does not end with a return; I will insert one.
LOG: lev:4 file:pval.c line:2464 func: check_pval_item Error: file ./extensions.ael, line 98-98: The macro call to checkanddial has 5 arguments, but the macro definition has 7 arguments
LOG: lev:3 file:pval.c line:668 func: check_macro_returns Warning: file ./extensions.ael, line 102-112: The macro checklocal does not end with a return; I will insert one.
LOG: lev:4 file:pval.c line:2464 func: check_pval_item Error: file ./extensions.ael, line 107-107: The macro call to checkanddial has 5 arguments, but the macro definition has 7 arguments
LOG: lev:3 file:pval.c line:668 func: check_macro_returns Warning: file ./extensions.ael, line 114-119: The macro autodial does not end with a return; I will insert one.
LOG: lev:4 file:pval.c line:2464 func: check_pval_item Error: file ./extensions.ael, line 284-284: The macro call to checkanddial has 5 arguments, but the macro definition has 7 arguments
LOG: lev:4 file:pval.c line:2464 func: check_pval_item Error: file ./extensions.ael, line 287-287: The macro call to checkanddial has 5 arguments, but the macro definition has 7 arguments
LOG: lev:3 file:pval.c line:2422 func: check_pval_item Warning: file ./extensions.ael, line 452-452: macro call to non-existent std-exten-ael! (Not even in the extensions.conf stuff!)
LOG: lev:4 file:pbx_ael.c line:1708 func: pbx_load_module Sorry, but 0 syntax errors and 4 semantic errors were detected. It doesn't make sense to compile.
LOG: lev:4 file:ael2_parse line:521 func: main 0 contexts, 0 extensions, 0 priorities

File diff suppressed because it is too large Load Diff

View File

@ -25,7 +25,24 @@ all: _all
include $(ASTTOPDIR)/Makefile.moddir_rules
ael/ael_lex.o: ael/ael_lex.c ../include/asterisk/ael_structs.h ael/ael.tab.h
ael/ael_lex.o: ASTCFLAGS+=-I. -Iael
ael/ael.tab.o: ael/ael.tab.c ael/ael.tab.h ../include/asterisk/ael_structs.h
ael/ael.tab.o: ASTCFLAGS+=-I. -Iael -DYYENABLE_NLS=0
$(if $(filter res_snmp,$(EMBEDDED_MODS)),modules.link,res_snmp.so): snmp/agent.o
$(if $(filter res_ael_share,$(EMBEDDED_MODS)),modules.link,res_ael_share.so): ael/ael_lex.o ael/ael.tab.o ael/pval.o
ael/ael_lex.c:
(cd ael; flex ael.flex; sed -i -e "/begin standard C headers/i#include \"asterisk.h\"" ael_lex.c)
ael/ael.tab.c ael/ael.tab.h:
(cd ael; bison -v -d ael.y)
ael/pval.o: ael/pval.c
clean::
rm -f snmp/*.o
rm -f ael*.o

View File

@ -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"
@ -188,12 +198,12 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
#include "asterisk/logger.h"
#include "asterisk/ael_structs.h"
static pval * linku1(pval *head, pval *tail);
pval * linku1(pval *head, pval *tail);
static void set_dads(pval *dad, pval *child_list);
void reset_parencount(yyscan_t yyscanner);
void reset_semicount(yyscan_t yyscanner);
void reset_argcount(yyscan_t yyscanner );
#define YYLEX_PARAM ((struct parse_io *)parseio)->scanner
#define YYERROR_VERBOSE 1
@ -231,8 +241,8 @@ typedef union YYSTYPE
char *str; /* strings */
struct pval *pval; /* full objects */
}
/* Line 198 of yacc.c. */
#line 236 "ael.tab.c"
/* Line 187 of yacc.c. */
#line 246 "ael.tab.c"
YYSTYPE;
# define yystype YYSTYPE /* obsolescent; will be withdrawn */
# define YYSTYPE_IS_DECLARED 1
@ -261,7 +271,7 @@ void yyerror(YYLTYPE *locp, struct parse_io *parseio, char const *s);
int ael_yylex (YYSTYPE * yylval_param, YYLTYPE * yylloc_param , void * yyscanner);
/* create a new object with start-end marker */
static pval *npval(pvaltype type, int first_line, int last_line,
pval *npval(pvaltype type, int first_line, int last_line,
int first_column, int last_column);
/* create a new object with start-end marker, simplified interface.
@ -276,8 +286,8 @@ static pval *nword(char *string, YYLTYPE *pos);
static pval *update_last(pval *, YYLTYPE *);
/* Line 221 of yacc.c. */
#line 281 "ael.tab.c"
/* Line 216 of yacc.c. */
#line 291 "ael.tab.c"
#ifdef short
# undef short
@ -407,8 +417,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
@ -424,9 +439,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 */
@ -1039,14 +1051,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, struct parse_io *parseio)
yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp, struct parse_io *parseio)
#else
static void
yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp, parseio)
FILE *yyoutput;
int yytype;
const YYSTYPE * const yyvaluep;
const YYLTYPE * const yylocationp;
YYSTYPE const * const yyvaluep;
YYLTYPE const * const yylocationp;
struct parse_io *parseio;
#endif
{
@ -1075,14 +1087,14 @@ yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp, parseio)
#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, struct parse_io *parseio)
yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp, struct parse_io *parseio)
#else
static void
yy_symbol_print (yyoutput, yytype, yyvaluep, yylocationp, parseio)
FILE *yyoutput;
int yytype;
const YYSTYPE * const yyvaluep;
const YYLTYPE * const yylocationp;
YYSTYPE const * const yyvaluep;
YYLTYPE const * const yylocationp;
struct parse_io *parseio;
#endif
{
@ -1260,7 +1272,7 @@ yytnamerr (char *yyres, const char *yystr)
{
if (*yystr == '"')
{
size_t yyn = 0;
YYSIZE_T yyn = 0;
char const *yyp = yystr;
for (;;)
@ -1307,7 +1319,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
{
@ -1345,7 +1357,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;
@ -1437,7 +1449,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
case 42: /* "word" */
#line 178 "ael.y"
{ free((yyvaluep->str));};
#line 1441 "ael.tab.c"
#line 1453 "ael.tab.c"
break;
case 45: /* "objects" */
#line 165 "ael.y"
@ -1445,7 +1457,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
destroy_pval((yyvaluep->pval));
prev_word=0;
};
#line 1449 "ael.tab.c"
#line 1461 "ael.tab.c"
break;
case 46: /* "object" */
#line 165 "ael.y"
@ -1453,12 +1465,12 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
destroy_pval((yyvaluep->pval));
prev_word=0;
};
#line 1457 "ael.tab.c"
#line 1469 "ael.tab.c"
break;
case 47: /* "context_name" */
#line 178 "ael.y"
{ free((yyvaluep->str));};
#line 1462 "ael.tab.c"
#line 1474 "ael.tab.c"
break;
case 48: /* "context" */
#line 165 "ael.y"
@ -1466,7 +1478,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
destroy_pval((yyvaluep->pval));
prev_word=0;
};
#line 1470 "ael.tab.c"
#line 1482 "ael.tab.c"
break;
case 50: /* "macro" */
#line 165 "ael.y"
@ -1474,7 +1486,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
destroy_pval((yyvaluep->pval));
prev_word=0;
};
#line 1478 "ael.tab.c"
#line 1490 "ael.tab.c"
break;
case 51: /* "globals" */
#line 165 "ael.y"
@ -1482,7 +1494,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
destroy_pval((yyvaluep->pval));
prev_word=0;
};
#line 1486 "ael.tab.c"
#line 1498 "ael.tab.c"
break;
case 52: /* "global_statements" */
#line 165 "ael.y"
@ -1490,7 +1502,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
destroy_pval((yyvaluep->pval));
prev_word=0;
};
#line 1494 "ael.tab.c"
#line 1506 "ael.tab.c"
break;
case 53: /* "assignment" */
#line 165 "ael.y"
@ -1498,7 +1510,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
destroy_pval((yyvaluep->pval));
prev_word=0;
};
#line 1502 "ael.tab.c"
#line 1514 "ael.tab.c"
break;
case 55: /* "local_assignment" */
#line 165 "ael.y"
@ -1506,7 +1518,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
destroy_pval((yyvaluep->pval));
prev_word=0;
};
#line 1510 "ael.tab.c"
#line 1522 "ael.tab.c"
break;
case 57: /* "arglist" */
#line 165 "ael.y"
@ -1514,7 +1526,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
destroy_pval((yyvaluep->pval));
prev_word=0;
};
#line 1518 "ael.tab.c"
#line 1530 "ael.tab.c"
break;
case 58: /* "elements" */
#line 165 "ael.y"
@ -1522,7 +1534,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
destroy_pval((yyvaluep->pval));
prev_word=0;
};
#line 1526 "ael.tab.c"
#line 1538 "ael.tab.c"
break;
case 59: /* "element" */
#line 165 "ael.y"
@ -1530,7 +1542,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
destroy_pval((yyvaluep->pval));
prev_word=0;
};
#line 1534 "ael.tab.c"
#line 1546 "ael.tab.c"
break;
case 60: /* "ignorepat" */
#line 165 "ael.y"
@ -1538,7 +1550,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
destroy_pval((yyvaluep->pval));
prev_word=0;
};
#line 1542 "ael.tab.c"
#line 1554 "ael.tab.c"
break;
case 61: /* "extension" */
#line 165 "ael.y"
@ -1546,7 +1558,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
destroy_pval((yyvaluep->pval));
prev_word=0;
};
#line 1550 "ael.tab.c"
#line 1562 "ael.tab.c"
break;
case 62: /* "statements" */
#line 165 "ael.y"
@ -1554,12 +1566,12 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
destroy_pval((yyvaluep->pval));
prev_word=0;
};
#line 1558 "ael.tab.c"
#line 1570 "ael.tab.c"
break;
case 63: /* "timerange" */
#line 178 "ael.y"
{ free((yyvaluep->str));};
#line 1563 "ael.tab.c"
#line 1575 "ael.tab.c"
break;
case 64: /* "timespec" */
#line 165 "ael.y"
@ -1567,12 +1579,12 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
destroy_pval((yyvaluep->pval));
prev_word=0;
};
#line 1571 "ael.tab.c"
#line 1583 "ael.tab.c"
break;
case 65: /* "test_expr" */
#line 178 "ael.y"
{ free((yyvaluep->str));};
#line 1576 "ael.tab.c"
#line 1588 "ael.tab.c"
break;
case 67: /* "if_like_head" */
#line 165 "ael.y"
@ -1580,22 +1592,22 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
destroy_pval((yyvaluep->pval));
prev_word=0;
};
#line 1584 "ael.tab.c"
#line 1596 "ael.tab.c"
break;
case 68: /* "word_list" */
#line 178 "ael.y"
{ free((yyvaluep->str));};
#line 1589 "ael.tab.c"
#line 1601 "ael.tab.c"
break;
case 70: /* "word3_list" */
#line 178 "ael.y"
{ free((yyvaluep->str));};
#line 1594 "ael.tab.c"
#line 1606 "ael.tab.c"
break;
case 71: /* "goto_word" */
#line 178 "ael.y"
{ free((yyvaluep->str));};
#line 1599 "ael.tab.c"
#line 1611 "ael.tab.c"
break;
case 72: /* "switch_statement" */
#line 165 "ael.y"
@ -1603,7 +1615,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
destroy_pval((yyvaluep->pval));
prev_word=0;
};
#line 1607 "ael.tab.c"
#line 1619 "ael.tab.c"
break;
case 73: /* "statement" */
#line 165 "ael.y"
@ -1611,7 +1623,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
destroy_pval((yyvaluep->pval));
prev_word=0;
};
#line 1615 "ael.tab.c"
#line 1627 "ael.tab.c"
break;
case 78: /* "opt_else" */
#line 165 "ael.y"
@ -1619,7 +1631,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
destroy_pval((yyvaluep->pval));
prev_word=0;
};
#line 1623 "ael.tab.c"
#line 1635 "ael.tab.c"
break;
case 79: /* "target" */
#line 165 "ael.y"
@ -1627,12 +1639,12 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
destroy_pval((yyvaluep->pval));
prev_word=0;
};
#line 1631 "ael.tab.c"
#line 1643 "ael.tab.c"
break;
case 80: /* "opt_pri" */
#line 178 "ael.y"
{ free((yyvaluep->str));};
#line 1636 "ael.tab.c"
#line 1648 "ael.tab.c"
break;
case 81: /* "jumptarget" */
#line 165 "ael.y"
@ -1640,7 +1652,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
destroy_pval((yyvaluep->pval));
prev_word=0;
};
#line 1644 "ael.tab.c"
#line 1656 "ael.tab.c"
break;
case 82: /* "macro_call" */
#line 165 "ael.y"
@ -1648,7 +1660,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
destroy_pval((yyvaluep->pval));
prev_word=0;
};
#line 1652 "ael.tab.c"
#line 1664 "ael.tab.c"
break;
case 84: /* "application_call_head" */
#line 165 "ael.y"
@ -1656,7 +1668,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
destroy_pval((yyvaluep->pval));
prev_word=0;
};
#line 1660 "ael.tab.c"
#line 1672 "ael.tab.c"
break;
case 86: /* "application_call" */
#line 165 "ael.y"
@ -1664,12 +1676,12 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
destroy_pval((yyvaluep->pval));
prev_word=0;
};
#line 1668 "ael.tab.c"
#line 1680 "ael.tab.c"
break;
case 87: /* "opt_word" */
#line 178 "ael.y"
{ free((yyvaluep->str));};
#line 1673 "ael.tab.c"
#line 1685 "ael.tab.c"
break;
case 88: /* "eval_arglist" */
#line 165 "ael.y"
@ -1677,7 +1689,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
destroy_pval((yyvaluep->pval));
prev_word=0;
};
#line 1681 "ael.tab.c"
#line 1693 "ael.tab.c"
break;
case 89: /* "case_statements" */
#line 165 "ael.y"
@ -1685,7 +1697,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
destroy_pval((yyvaluep->pval));
prev_word=0;
};
#line 1689 "ael.tab.c"
#line 1701 "ael.tab.c"
break;
case 90: /* "case_statement" */
#line 165 "ael.y"
@ -1693,7 +1705,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
destroy_pval((yyvaluep->pval));
prev_word=0;
};
#line 1697 "ael.tab.c"
#line 1709 "ael.tab.c"
break;
case 91: /* "macro_statements" */
#line 165 "ael.y"
@ -1701,7 +1713,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
destroy_pval((yyvaluep->pval));
prev_word=0;
};
#line 1705 "ael.tab.c"
#line 1717 "ael.tab.c"
break;
case 92: /* "macro_statement" */
#line 165 "ael.y"
@ -1709,7 +1721,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
destroy_pval((yyvaluep->pval));
prev_word=0;
};
#line 1713 "ael.tab.c"
#line 1725 "ael.tab.c"
break;
case 93: /* "switches" */
#line 165 "ael.y"
@ -1717,7 +1729,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
destroy_pval((yyvaluep->pval));
prev_word=0;
};
#line 1721 "ael.tab.c"
#line 1733 "ael.tab.c"
break;
case 94: /* "eswitches" */
#line 165 "ael.y"
@ -1725,7 +1737,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
destroy_pval((yyvaluep->pval));
prev_word=0;
};
#line 1729 "ael.tab.c"
#line 1741 "ael.tab.c"
break;
case 95: /* "switchlist" */
#line 165 "ael.y"
@ -1733,7 +1745,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
destroy_pval((yyvaluep->pval));
prev_word=0;
};
#line 1737 "ael.tab.c"
#line 1749 "ael.tab.c"
break;
case 96: /* "included_entry" */
#line 165 "ael.y"
@ -1741,7 +1753,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
destroy_pval((yyvaluep->pval));
prev_word=0;
};
#line 1745 "ael.tab.c"
#line 1757 "ael.tab.c"
break;
case 97: /* "includeslist" */
#line 165 "ael.y"
@ -1749,7 +1761,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
destroy_pval((yyvaluep->pval));
prev_word=0;
};
#line 1753 "ael.tab.c"
#line 1765 "ael.tab.c"
break;
case 98: /* "includes" */
#line 165 "ael.y"
@ -1757,7 +1769,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio)
destroy_pval((yyvaluep->pval));
prev_word=0;
};
#line 1761 "ael.tab.c"
#line 1773 "ael.tab.c"
break;
default:
@ -2963,8 +2975,8 @@ yyreduce:
break;
/* Line 1270 of yacc.c. */
#line 2968 "ael.tab.c"
/* Line 1267 of yacc.c. */
#line 2980 "ael.tab.c"
default: break;
}
YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
@ -3179,7 +3191,8 @@ yyreturn:
if (yymsg != yymsgbuf)
YYSTACK_FREE (yymsg);
#endif
return yyresult;
/* Make sure YYID is used. */
return YYID (yyresult);
}
@ -3322,7 +3335,7 @@ void yyerror(YYLTYPE *locp, struct parse_io *parseio, char const *s)
parseio->syntax_error_count++;
}
static struct pval *npval(pvaltype type, int first_line, int last_line,
struct pval *npval(pvaltype type, int first_line, int last_line,
int first_column, int last_column)
{
pval *z = calloc(1, sizeof(struct pval));
@ -3357,23 +3370,6 @@ static pval *nword(char *string, YYLTYPE *pos)
return p;
}
/* append second element to the list in the first one */
static pval * linku1(pval *head, pval *tail)
{
if (!head)
return tail;
if (tail) {
if (!head->next) {
head->next = tail;
} else {
head->u1_last->next = tail;
}
head->u1_last = tail;
tail->prev = head; /* the dad link only points to containers */
}
return head;
}
/* this routine adds a dad ptr to each element in the list */
static void set_dads(struct pval *dad, struct pval *child_list)
{

View File

@ -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
@ -124,8 +134,8 @@ typedef union YYSTYPE
char *str; /* strings */
struct pval *pval; /* full objects */
}
/* Line 1536 of yacc.c. */
#line 129 "ael.tab.h"
/* Line 1489 of yacc.c. */
#line 139 "ael.tab.h"
YYSTYPE;
# define yystype YYSTYPE /* obsolescent; will be withdrawn */
# define YYSTYPE_IS_DECLARED 1
@ -148,5 +158,3 @@ typedef struct YYLTYPE
#endif

View File

@ -33,12 +33,12 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
#include "asterisk/logger.h"
#include "asterisk/ael_structs.h"
static pval * linku1(pval *head, pval *tail);
pval * linku1(pval *head, pval *tail);
static void set_dads(pval *dad, pval *child_list);
void reset_parencount(yyscan_t yyscanner);
void reset_semicount(yyscan_t yyscanner);
void reset_argcount(yyscan_t yyscanner );
#define YYLEX_PARAM ((struct parse_io *)parseio)->scanner
#define YYERROR_VERBOSE 1
@ -63,7 +63,7 @@ void yyerror(YYLTYPE *locp, struct parse_io *parseio, char const *s);
int ael_yylex (YYSTYPE * yylval_param, YYLTYPE * yylloc_param , void * yyscanner);
/* create a new object with start-end marker */
static pval *npval(pvaltype type, int first_line, int last_line,
pval *npval(pvaltype type, int first_line, int last_line,
int first_column, int last_column);
/* create a new object with start-end marker, simplified interface.
@ -769,7 +769,7 @@ void yyerror(YYLTYPE *locp, struct parse_io *parseio, char const *s)
parseio->syntax_error_count++;
}
static struct pval *npval(pvaltype type, int first_line, int last_line,
struct pval *npval(pvaltype type, int first_line, int last_line,
int first_column, int last_column)
{
pval *z = calloc(1, sizeof(struct pval));
@ -804,23 +804,6 @@ static pval *nword(char *string, YYLTYPE *pos)
return p;
}
/* append second element to the list in the first one */
static pval * linku1(pval *head, pval *tail)
{
if (!head)
return tail;
if (tail) {
if (!head->next) {
head->next = tail;
} else {
head->u1_last->next = tail;
}
head->u1_last = tail;
tail->prev = head; /* the dad link only points to containers */
}
return head;
}
/* this routine adds a dad ptr to each element in the list */
static void set_dads(struct pval *dad, struct pval *child_list)
{

View File

@ -891,13 +891,11 @@ static void pbcwhere(const char *text, int *line, int *col )
#define argg 3
#define comment 4
#ifndef YY_NO_UNISTD_H
/* Special case for "unistd.h", since it is non-ANSI. We include it way
* down here because we want the user's section 1 to have been scanned first.
* The user has a chance to override it with an option.
*/
#include <unistd.h>
#endif
#ifndef YY_EXTRA_TYPE
#define YY_EXTRA_TYPE void *
@ -941,8 +939,6 @@ struct yyguts_t
}; /* end struct yyguts_t */
static int yy_init_globals (yyscan_t yyscanner );
/* This must go here because YYSTYPE and YYLTYPE are included
* from bison output in section 1.*/
# define yylval yyg->yylval_r
@ -1093,11 +1089,9 @@ static int input (yyscan_t yyscanner );
#ifndef YY_DECL
#define YY_DECL_IS_OURS 1
extern int ael_yylex \
(YYSTYPE * yylval_param,YYLTYPE * yylloc_param ,yyscan_t yyscanner);
extern int ael_yylex (YYSTYPE * yylval_param,YYLTYPE * yylloc_param ,yyscan_t yyscanner);
#define YY_DECL int ael_yylex \
(YYSTYPE * yylval_param, YYLTYPE * yylloc_param , yyscan_t yyscanner)
#define YY_DECL int ael_yylex (YYSTYPE * yylval_param, YYLTYPE * yylloc_param , yyscan_t yyscanner)
#endif /* !YY_DECL */
/* Code executed at the beginning of each rule, after yytext and yyleng
@ -1127,7 +1121,7 @@ YY_DECL
#line 173 "ael.flex"
#line 1130 "ael_lex.c"
#line 1124 "ael_lex.c"
yylval = yylval_param;
@ -1753,7 +1747,7 @@ YY_RULE_SETUP
#line 461 "ael.flex"
ECHO;
YY_BREAK
#line 1756 "ael_lex.c"
#line 1750 "ael_lex.c"
case YY_END_OF_BUFFER:
{
@ -1939,7 +1933,7 @@ static int yy_get_next_buffer (yyscan_t yyscanner)
else
{
int num_to_read =
size_t num_to_read =
YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
while ( num_to_read <= 0 )
@ -2504,10 +2498,10 @@ YY_BUFFER_STATE ael_yy_scan_buffer (char * base, yy_size_t size , yyscan_t yys
* @note If you want to scan bytes that may contain NUL values, then use
* ael_yy_scan_bytes() instead.
*/
YY_BUFFER_STATE ael_yy_scan_string (yyconst char * yy_str , yyscan_t yyscanner)
YY_BUFFER_STATE ael_yy_scan_string (yyconst char * str , yyscan_t yyscanner)
{
return ael_yy_scan_bytes(yy_str,strlen(yy_str) ,yyscanner);
return ael_yy_scan_bytes(str,strlen(str) ,yyscanner);
}
/** Setup the input buffer state to scan the given bytes. The next call to ael_yylex() will

5344
res/ael/pval.c Normal file

File diff suppressed because it is too large Load Diff

61
res/res_ael_share.c Normal file
View File

@ -0,0 +1,61 @@
/*
* Asterisk -- An open source telephony toolkit.
*
* Copyright (C) 2007, Digium, Inc.
*
* Steve Murphy <murf@digium.com>
*
* See http://www.asterisk.org for more information about
* the Asterisk project. Please do not directly contact
* any of the maintainers of this project for assistance;
* the project provides a web site, mailing lists and IRC
* channels for your use.
*
* This program is free software, distributed under the terms of
* the GNU General Public License Version 2. See the LICENSE file
* at the top of the source tree.
*/
/*! \file
*
* \brief Shareable AEL code -- mainly between internal and external modules
*
* \author Steve Murphy <murf@digium.com>
*
* \ingroup applications
*/
#include "asterisk.h"
ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include "asterisk/file.h"
#include "asterisk/logger.h"
#include "asterisk/channel.h"
#include "asterisk/options.h"
#include "asterisk/pbx.h"
#include "asterisk/config.h"
#include "asterisk/module.h"
#include "asterisk/lock.h"
#include "asterisk/cli.h"
static int unload_module(void)
{
return 0;
}
static int load_module(void)
{
return 0;
}
AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_GLOBAL_SYMBOLS, "share-able code for AEL",
.load = load_module,
.unload = unload_module
);

View File

@ -16,7 +16,7 @@
.PHONY: clean all uninstall
# to get check_expr, add it to the ALL_UTILS list
ALL_UTILS:=astman smsq stereorize streamplayer aelparse muted check_expr
ALL_UTILS:=astman smsq stereorize streamplayer aelparse muted check_expr conf2ael
UTILS:=$(ALL_UTILS)
include $(ASTTOPDIR)/Makefile.rules
@ -40,6 +40,7 @@ endif
ifneq ($(filter pbx_ael,$(MENUSELECT_PBX)),)
UTILS:=$(filter-out aelparse,$(UTILS))
UTILS:=$(filter-out conf2ael,$(UTILS))
endif
all: $(UTILS)
@ -57,8 +58,8 @@ uninstall:
clean:
rm -f *.o $(ALL_UTILS) check_expr
rm -f .*.o.d .*.oo.d
rm -f md5.c strcompat.c ast_expr2.c ast_expr2f.c pbx_ael.c
rm -f aelparse.c aelbison.c
rm -f md5.c strcompat.c ast_expr2.c ast_expr2f.c pbx_ael.c pval.c
rm -f aelparse.c aelbison.c conf2ael
md5.c: ../main/md5.c
@cp $< $@
@ -80,6 +81,9 @@ strcompat.c: ../main/strcompat.c
@echo " [FLEX] ../main/ast_expr2.fl -> $@"
@flex -o $@ --full ../main/ast_expr2.fl
pval.c: ../res/ael/pval.c
@cp $< $@
ast_expr2.c: ../main/ast_expr2.c
@cp $< $@
@ -88,12 +92,14 @@ ast_expr2f.c: ../main/ast_expr2f.c
ast_expr2f.o: ASTCFLAGS+=-DSTANDALONE_AEL -I../main
pval.o : ASTCFLAGS+=-DSTANDALONE
check_expr: check_expr.o ast_expr2.o ast_expr2f.o
aelbison.c: ../pbx/ael/ael.tab.c
aelbison.c: ../res/ael/ael.tab.c
@cp $< $@
aelbison.o: aelbison.c ../pbx/ael/ael.tab.h ../include/asterisk/ael_structs.h
aelbison.o: ASTCFLAGS+=-I../pbx/ael -DYYENABLE_NLS=0
aelbison.o: aelbison.c ../res/ael/ael.tab.h ../include/asterisk/ael_structs.h
aelbison.o: ASTCFLAGS+=-I../res/ael -DYYENABLE_NLS=0
pbx_ael.c: ../pbx/pbx_ael.c
@cp $< $@
@ -101,12 +107,17 @@ pbx_ael.o: ASTCFLAGS+=-DSTANDALONE_AEL
ael_main.o: ael_main.c ../include/asterisk/ael_structs.h
aelparse.c: ../pbx/ael/ael_lex.c
aelparse.c: ../res/ael/ael_lex.c
@cp $< $@
aelparse.o: aelparse.c ../include/asterisk/ael_structs.h ../pbx/ael/ael.tab.h
aelparse.o: ASTCFLAGS+=-I../pbx -DSTANDALONE_AEL
aelparse.o: aelparse.c ../include/asterisk/ael_structs.h ../res/ael/ael.tab.h
aelparse.o: ASTCFLAGS+=-I../res -DSTANDALONE_AEL
aelparse: aelparse.o aelbison.o pbx_ael.o ael_main.o ast_expr2f.o ast_expr2.o strcompat.o pval.o extconf.o
extconf.o : extconf.c
conf2ael: conf2ael.o ast_expr2f.o ast_expr2.o aelbison.o aelparse.o pbx_ael.o pval.o extconf.o
aelparse: aelparse.o aelbison.o pbx_ael.o ael_main.o ast_expr2f.o ast_expr2.o strcompat.o
testexpr2s: ../main/ast_expr2f.c ../main/ast_expr2.c ../main/ast_expr2.h
$(CC) -g -c -I../include -DSTANDALONE_AEL ../main/ast_expr2f.c -o ast_expr2f.o

View File

@ -10,11 +10,13 @@
#include <limits.h>
#include "asterisk/compat.h"
#include "asterisk/ast_expr.h"
#include "asterisk/channel.h"
#include "asterisk/ast_expr.h"
#include "asterisk/ast_expr.h"
#include "asterisk/module.h"
#include "asterisk/app.h"
#include "asterisk/ael_structs.h"
#include "asterisk/extconf.h"
struct namelist
{
@ -106,6 +108,41 @@ static int dump_extensions = 0;
static int FIRST_TIME = 0;
static FILE *dumpfile;
void ast_log(int level, const char *file, int line, const char *function, const char *fmt, ...)
{
va_list vars;
va_start(vars,fmt);
printf("LOG: lev:%d file:%s line:%d func: %s ",
level, file, line, function);
vprintf(fmt, vars);
fflush(stdout);
va_end(vars);
}
struct ast_exten *pbx_find_extension(struct ast_channel *chan,
struct ast_context *bypass,
struct pbx_find_info *q,
const char *context,
const char *exten,
int priority,
const char *label,
const char *callerid,
enum ext_match_t action);
struct ast_exten *pbx_find_extension(struct ast_channel *chan,
struct ast_context *bypass,
struct pbx_find_info *q,
const char *context,
const char *exten,
int priority,
const char *label,
const char *callerid,
enum ext_match_t action)
{
return localized_find_extension(bypass, q, context, exten, priority, label, callerid, action);
}
struct ast_app *pbx_findapp(const char *app)
{
return (struct ast_app*)1; /* so as not to trigger an error */
@ -390,56 +427,6 @@ void ast_context_destroy(void)
printf("Executed ast_context_destroy();\n");
}
void ast_log(int level, const char *file, int line, const char *function, const char *fmt, ...)
{
va_list vars;
va_start(vars,fmt);
if( !quiet || level > 2 ) {
printf("LOG: lev:%d file:%s line:%d func: %s ",
level, file, line, function);
vprintf(fmt, vars);
fflush(stdout);
va_end(vars);
}
}
void ast_verbose(const char *fmt, ...)
{
va_list vars;
va_start(vars,fmt);
printf("VERBOSE: ");
vprintf(fmt, vars);
fflush(stdout);
va_end(vars);
}
char *ast_process_quotes_and_slashes(char *start, char find, char replace_with)
{
char *dataPut = start;
int inEscape = 0;
int inQuotes = 0;
for (; *start; start++) {
if (inEscape) {
*dataPut++ = *start; /* Always goes verbatim */
inEscape = 0;
} else {
if (*start == '\\') {
inEscape = 1; /* Do not copy \ into the data */
} else if (*start == '\'') {
inQuotes = 1-inQuotes; /* Do not copy ' into the data */
} else {
/* Replace , with |, unless in quotes */
*dataPut++ = inQuotes ? *start : ((*start==find) ? replace_with : *start);
}
}
}
if (start != dataPut)
*dataPut = 0;
return dataPut;
}
void filter_leading_space_from_exprs(char *str)
{
/* Mainly for aesthetics */
@ -478,7 +465,8 @@ void filter_newlines(char *str)
extern struct module_symbols mod_data;
extern int ael_external_load_module(void);
int ael_external_load_module(void);
int main(int argc, char **argv)
{
@ -511,9 +499,11 @@ int main(int argc, char **argv)
if( use_curr_dir ) {
strcpy(ast_config_AST_CONFIG_DIR, ".");
localized_use_local_dir();
}
else {
strcpy(ast_config_AST_CONFIG_DIR, "/etc/asterisk");
localized_use_conf_dir();
}
strcpy(ast_config_AST_VAR_DIR, "/var/lib/asterisk");

View File

@ -21,8 +21,67 @@
#include <stdarg.h>
#include <string.h>
#include <stdlib.h>
struct ast_channel
{
char x; /* basically empty! */
};
#include <../include/asterisk/compat.h>
#include <../include/asterisk/ast_expr.h>
#define AST_API_MODULE 1
#include "asterisk/inline_api.h"
#include "asterisk/strings.h"
/* I included this from utils.c, so as not to have everything in that .c
file included */
/*!
* core handler for dynamic strings.
* This is not meant to be called directly, but rather through the
* various wrapper macros
* ast_str_set(...)
* ast_str_append(...)
* ast_str_set_va(...)
* ast_str_append_va(...)
*/
int __ast_str_helper(struct ast_str **buf, size_t max_len,
int append, const char *fmt, va_list ap)
{
int res, need;
int offset = (append && (*buf)->len) ? (*buf)->used : 0;
if (max_len < 0)
max_len = (*buf)->len; /* don't exceed the allocated space */
/*
* Ask vsnprintf how much space we need. Remember that vsnprintf
* does not count the final '\0' so we must add 1.
*/
res = vsnprintf((*buf)->str + offset, (*buf)->len - offset, fmt, ap);
need = res + offset + 1;
/*
* If there is not enough space and we are below the max length,
* reallocate the buffer and return a message telling to retry.
*/
if (need > (*buf)->len && (max_len == 0 || (*buf)->len < max_len) ) {
if (max_len && max_len < need) /* truncate as needed */
need = max_len;
else if (max_len == 0) /* if unbounded, give more room for next time */
need += 16 + need/4;
if (ast_str_make_space(buf, need)) {
return AST_DYNSTR_BUILD_FAILED;
}
(*buf)->str[offset] = '\0'; /* Truncate the partial write. */
/* va_end() and va_start() must be done before calling
* vsnprintf() again. */
return AST_DYNSTR_BUILD_RETRY;
}
/* update space used, keep in mind the truncation */
(*buf)->used = (res + offset > (*buf)->len) ? (*buf)->len : res + offset;
return res;
}
static int global_lineno = 1;
static int global_expr_count=0;
@ -83,6 +142,8 @@ char *find_var(const char *varname) /* the list should be pretty short, if there
return 0;
}
void set_var(const char *varname, const char *varval);
void set_var(const char *varname, const char *varval)
{
struct varz *t = (struct varz*)calloc(1,sizeof(struct varz));
@ -162,6 +223,8 @@ unsigned int check_expr(char* buffer, char* error_report)
return warn_found;
}
int check_eval(char *buffer, char *error_report);
struct ast_custom_function *ast_custom_function_find(const char *name);
struct ast_custom_function *ast_custom_function_find(const char *name)
@ -240,6 +303,8 @@ int check_eval(char *buffer, char *error_report)
}
void parse_file(const char *fname);
void parse_file(const char *fname)
{
FILE *f = fopen(fname,"r");