static int pbx_checkcondition(char *condition)
{
- char *s;
- int ret;
-
- s=strdup(condition);
-
- ret=1;
-
- if ((strcasecmp(s,"0")) || ast_strlen_zero(s)) {
- ret=0;
- }
-
- free(s);
- return(ret);
+ return condition ? atoi(condition) : 0;
}
static int pbx_builtin_gotoif(struct ast_channel *chan, void *data)
return 0;
}
- s=strdup(data);
+ s=ast_strdupa(data);
stringp=s;
condition=strsep(&stringp,"?");
branch1=strsep(&stringp,":");
branch2=strsep(&stringp,"");
-
- if (pbx_checkcondition(condition)) {
- branch=branch2;
- } else {
- branch=branch1;
- }
+ branch = pbx_checkcondition(condition) ? branch1 : branch2;
if ((branch==NULL) || ast_strlen_zero(branch)) {
ast_log(LOG_NOTICE, "Not taking any branch\n");
}
rc=pbx_builtin_goto(chan,branch);
- free(s);
+
return(rc);
}