[asterisk-commits] trunk r25013 - in /trunk/apps: app_exec.c
app_while.c
asterisk-commits at lists.digium.com
asterisk-commits at lists.digium.com
Mon May 8 04:11:00 MST 2006
Author: russell
Date: Fri May 5 15:43:16 2006
New Revision: 25013
URL: http://svn.digium.com/view/asterisk?rev=25013&view=rev
Log:
move ExecIf from app_while.c to app_exec.c (issue #7094, north)
Modified:
trunk/apps/app_exec.c
trunk/apps/app_while.c
Modified: trunk/apps/app_exec.c
URL: http://svn.digium.com/view/asterisk/trunk/apps/app_exec.c?rev=25013&r1=25012&r2=25013&view=diff
==============================================================================
--- trunk/apps/app_exec.c (original)
+++ trunk/apps/app_exec.c Fri May 5 15:43:16 2006
@@ -83,6 +83,14 @@
" NOAPP if the application was not found or was not specified\n"
" NOMEMORY if there was not enough memory to execute.\n";
+static char *app_execif = "ExecIf";
+static char *execif_synopsis = "Executes dialplan application, conditionally";
+static char *execif_descrip =
+"Usage: ExecIF (<expr>|<app>|<data>)\n"
+"If <expr> is true, execute and return the result of <app>(<data>).\n"
+"If <expr> is true, but <app> is not found, then the application\n"
+"will return a non-zero value.\n";
+
LOCAL_USER_DECL;
static int exec_exec(struct ast_channel *chan, void *data)
@@ -160,12 +168,54 @@
return 0;
}
+static int execif_exec(struct ast_channel *chan, void *data) {
+ int res=0;
+ struct localuser *u;
+ char *myapp = NULL;
+ char *mydata = NULL;
+ char *expr = NULL;
+ struct ast_app *app = NULL;
+
+ LOCAL_USER_ADD(u);
+
+ if (!(expr = ast_strdupa(data))) {
+ LOCAL_USER_REMOVE(u);
+ return -1;
+ }
+
+ if ((myapp = strchr(expr,'|'))) {
+ *myapp = '\0';
+ myapp++;
+ if ((mydata = strchr(myapp,'|'))) {
+ *mydata = '\0';
+ mydata++;
+ } else
+ mydata = "";
+
+ if (pbx_checkcondition(expr)) {
+ if ((app = pbx_findapp(myapp))) {
+ res = pbx_exec(chan, app, mydata);
+ } else {
+ ast_log(LOG_WARNING, "Count not find application! (%s)\n", myapp);
+ res = -1;
+ }
+ }
+ } else {
+ ast_log(LOG_ERROR,"Invalid Syntax.\n");
+ res = -1;
+ }
+
+ LOCAL_USER_REMOVE(u);
+ return res;
+}
+
static int unload_module(void *mod)
{
int res;
res = ast_unregister_application(app_exec);
res |= ast_unregister_application(app_tryexec);
+ res |= ast_unregister_application(app_execif);
STANDARD_HANGUP_LOCALUSERS;
@@ -176,6 +226,7 @@
{
int res = ast_register_application(app_exec, exec_exec, exec_synopsis, exec_descrip);
res |= ast_register_application(app_tryexec, tryexec_exec, tryexec_synopsis, tryexec_descrip);
+ res |= ast_register_application(app_execif, execif_exec, execif_synopsis, execif_descrip);
return res;
}
Modified: trunk/apps/app_while.c
URL: http://svn.digium.com/view/asterisk/trunk/apps/app_while.c?rev=25013&r1=25012&r2=25013&view=diff
==============================================================================
--- trunk/apps/app_while.c (original)
+++ trunk/apps/app_while.c Fri May 5 15:43:16 2006
@@ -18,7 +18,7 @@
/*! \file
*
- * \brief While Loop and ExecIf Implementations
+ * \brief While Loop Implementation
*
* \author Anthony Minessale <anthmct at yahoo.com>
*
@@ -47,14 +47,6 @@
#define ALL_DONE(u,ret) {LOCAL_USER_REMOVE(u); return ret;}
-static char *exec_app = "ExecIf";
-static char *exec_desc =
-"Usage: ExecIF (<expr>|<app>|<data>)\n"
-"If <expr> is true, execute and return the result of <app>(<data>).\n"
-"If <expr> is true, but <app> is not found, then the application\n"
-"will return a non-zero value.\n";
-static char *exec_synopsis = "Conditional exec";
-
static char *start_app = "While";
static char *start_desc =
"Usage: While(<expr>)\n"
@@ -86,46 +78,6 @@
static char *tdesc = "While Loops and Conditional Execution";
LOCAL_USER_DECL;
-
-static int execif_exec(struct ast_channel *chan, void *data) {
- int res=0;
- struct localuser *u;
- char *myapp = NULL;
- char *mydata = NULL;
- char *expr = NULL;
- struct ast_app *app = NULL;
-
- LOCAL_USER_ADD(u);
-
- if (!(expr = ast_strdupa(data))) {
- LOCAL_USER_REMOVE(u);
- return -1;
- }
-
- if ((myapp = strchr(expr,'|'))) {
- *myapp = '\0';
- myapp++;
- if ((mydata = strchr(myapp,'|'))) {
- *mydata = '\0';
- mydata++;
- } else
- mydata = "";
-
- if (pbx_checkcondition(expr)) {
- if ((app = pbx_findapp(myapp))) {
- res = pbx_exec(chan, app, mydata);
- } else {
- ast_log(LOG_WARNING, "Count not find application! (%s)\n", myapp);
- res = -1;
- }
- }
- } else {
- ast_log(LOG_ERROR,"Invalid Syntax.\n");
- res = -1;
- }
-
- ALL_DONE(u,res);
-}
#define VAR_SIZE 64
@@ -364,7 +316,6 @@
int res;
res = ast_unregister_application(start_app);
- res |= ast_unregister_application(exec_app);
res |= ast_unregister_application(stop_app);
res |= ast_unregister_application(exit_app);
res |= ast_unregister_application(continue_app);
@@ -379,7 +330,6 @@
int res;
res = ast_register_application(start_app, while_start_exec, start_synopsis, start_desc);
- res |= ast_register_application(exec_app, execif_exec, exec_synopsis, exec_desc);
res |= ast_register_application(stop_app, while_end_exec, stop_synopsis, stop_desc);
res |= ast_register_application(exit_app, while_exit_exec, exit_synopsis, exit_desc);
res |= ast_register_application(continue_app, while_continue_exec, continue_synopsis, continue_desc);
More information about the asterisk-commits
mailing list