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:
parent
46d935c8ca
commit
e897b4499e
6
CHANGES
6
CHANGES
|
@ -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
|
||||
----------------------------------------
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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" {
|
||||
|
|
|
@ -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
|
||||
|
|
33
main/pbx.c
33
main/pbx.c
|
@ -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)
|
||||
|
|
14
pbx/Makefile
14
pbx/Makefile
|
@ -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.
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
2728
pbx/pbx_ael.c
2728
pbx/pbx_ael.c
File diff suppressed because it is too large
Load Diff
17
res/Makefile
17
res/Makefile
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
{
|
|
@ -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
|
||||
|
||||
|
||||
|
||||
|
|
@ -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)
|
||||
{
|
|
@ -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
|
File diff suppressed because it is too large
Load Diff
|
@ -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
|
||||
);
|
|
@ -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
|
||||
|
|
|
@ -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");
|
||||
|
||||
|
|
|
@ -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");
|
||||
|
|
Reference in New Issue