aboutsummaryrefslogtreecommitdiffstats
path: root/pbx/pbx_ael.c
diff options
context:
space:
mode:
authormurf <murf@f38db490-d61c-443f-a65b-d21fe96a405b>2006-08-01 19:03:32 +0000
committermurf <murf@f38db490-d61c-443f-a65b-d21fe96a405b>2006-08-01 19:03:32 +0000
commit0d2c199ecadc029a08dbe799e39f0450e9360989 (patch)
tree11b911e7b6c0e099e7136077725b74138da1b806 /pbx/pbx_ael.c
parentd46e12c4a6e69f8fc4372243d106dd0a9b61b459 (diff)
This branch will resolve the bug 7635.
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@38652 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'pbx/pbx_ael.c')
-rw-r--r--pbx/pbx_ael.c25
1 files changed, 25 insertions, 0 deletions
diff --git a/pbx/pbx_ael.c b/pbx/pbx_ael.c
index 2d40b7152..680d3d855 100644
--- a/pbx/pbx_ael.c
+++ b/pbx/pbx_ael.c
@@ -149,6 +149,8 @@ static void print_pval_list(FILE *fin, pval *item, int depth);
static struct pval *find_label_in_current_extension(const char *label);
static struct pval *find_label_in_current_db(const char *context, const char *exten, const char *label);
+static void remove_spaces_before_equals(char *str);
+
/* PRETTY PRINTER FOR AEL: ============================================================================= */
@@ -2526,6 +2528,25 @@ void linkexten(struct ael_extension *exten, struct ael_extension *add)
exten->next_exten = add;
}
+static void remove_spaces_before_equals(char *str)
+{
+ char *p;
+ while( str && *str && *str != '=' )
+ {
+ if( *str == ' ' || *str == '\n' || *str == '\r' || *str == '\t' )
+ {
+ p = str;
+ while( *p )
+ {
+ *p = *(p+1);
+ p++;
+ }
+ }
+ else
+ str++;
+ }
+}
+
void gen_prios(struct ael_extension *exten, char *label, pval *statement, struct ael_extension *mother_exten )
{
pval *p,*p2,*p3;
@@ -2554,6 +2575,7 @@ void gen_prios(struct ael_extension *exten, char *label, pval *statement, struct
pr->type = AEL_APPCALL;
snprintf(buf1,sizeof(buf1),"%s=$[%s]", p->u1.str, p->u2.val);
pr->app = strdup("Set");
+ remove_spaces_before_equals(buf1);
pr->appargs = strdup(buf1);
pr->origin = p;
linkprio(exten, pr);
@@ -2612,6 +2634,7 @@ void gen_prios(struct ael_extension *exten, char *label, pval *statement, struct
for_init->app = strdup("Set");
strcpy(buf2,p->u1.for_init);
+ remove_spaces_before_equals(buf2);
strp = strchr(buf2, '=');
strp2 = strchr(p->u1.for_init, '=');
if (strp) {
@@ -2626,6 +2649,7 @@ void gen_prios(struct ael_extension *exten, char *label, pval *statement, struct
for_inc->app = strdup("Set");
strcpy(buf2,p->u3.for_inc);
+ remove_spaces_before_equals(buf2);
strp = strchr(buf2, '=');
strp2 = strchr(p->u3.for_inc, '=');
if (strp) {
@@ -3308,6 +3332,7 @@ void ast_compile_ael2(struct ast_context **local_contexts, struct pval *root)
np2->type = AEL_APPCALL;
np2->app = strdup("Set");
snprintf(buf,sizeof(buf),"%s=${ARG%d}", lp->u1.str, argc++);
+ remove_spaces_before_equals(buf);
np2->appargs = strdup(buf);
linkprio(exten, np2);
}