[asterisk-commits] trunk r26656 - /trunk/pbx/pbx_realtime.c
asterisk-commits at lists.digium.com
asterisk-commits at lists.digium.com
Wed May 10 14:55:26 MST 2006
Author: rizzo
Date: Wed May 10 16:55:25 2006
New Revision: 26656
URL: http://svn.digium.com/view/asterisk?rev=26656&view=rev
Log:
change macro into a function, remove unused code.
Modified:
trunk/pbx/pbx_realtime.c
Modified: trunk/pbx/pbx_realtime.c
URL: http://svn.digium.com/view/asterisk/trunk/pbx/pbx_realtime.c?rev=26656&r1=26655&r2=26656&view=diff
==============================================================================
--- trunk/pbx/pbx_realtime.c (original)
+++ trunk/pbx/pbx_realtime.c Wed May 10 16:55:25 2006
@@ -76,28 +76,6 @@
*/
-#define REALTIME_COMMON(mode) \
- const char *ctx = NULL; \
- char *table; \
- int res = -1; \
- struct ast_variable *var=NULL; \
- char *buf = ast_strdupa(data); \
- if (buf) { \
- char *opts = strchr(buf, '/'); \
- if (opts) \
- *opts++ = '\0'; \
- else \
- opts=""; \
- table = strchr(buf, '@'); \
- if (table) { \
- *table++ = '\0'; \
- ctx = buf; \
- } \
- ctx = S_OR(ctx, context); \
- table = S_OR(table, "extensions"); \
- var = realtime_switch_common(table, ctx, exten, priority, mode); \
- }
-
static struct ast_variable *realtime_switch_common(const char *table, const char *context, const char *exten, int priority, int mode)
{
struct ast_variable *var;
@@ -151,38 +129,58 @@
return var;
}
+static struct ast_variable *realtime_common(const char *context, const char *exten, int priority, const char *data, int mode)
+{
+ const char *ctx = NULL;
+ char *table;
+ struct ast_variable *var=NULL;
+ char *buf = ast_strdupa(data);
+ if (buf) {
+ char *opts = strchr(buf, '/');
+ if (opts)
+ *opts++ = '\0';
+ table = strchr(buf, '@');
+ if (table) {
+ *table++ = '\0';
+ ctx = buf;
+ }
+ ctx = S_OR(ctx, context);
+ table = S_OR(table, "extensions");
+ var = realtime_switch_common(table, ctx, exten, priority, mode);
+ }
+ return var;
+}
+
static int realtime_exists(struct ast_channel *chan, const char *context, const char *exten, int priority, const char *callerid, const char *data)
{
- REALTIME_COMMON(MODE_MATCH);
- if (var)
- ast_variables_destroy(var);
- if (var)
- res = 1;
- return res > 0 ? res : 0;
+ struct ast_variable *var = realtime_common(context, exten, priority, data, MODE_MATCH);
+ if (var) {
+ ast_variables_destroy(var);
+ return 1;
+ }
+ return 0;
}
static int realtime_canmatch(struct ast_channel *chan, const char *context, const char *exten, int priority, const char *callerid, const char *data)
{
- REALTIME_COMMON(MODE_CANMATCH);
- if (var)
- ast_variables_destroy(var);
- if (var)
- res = 1;
- return res > 0 ? res : 0;
+ struct ast_variable *var = realtime_common(context, exten, priority, data, MODE_CANMATCH);
+ if (var) {
+ ast_variables_destroy(var);
+ return 1;
+ }
+ return 0;
}
static int realtime_exec(struct ast_channel *chan, const char *context, const char *exten, int priority, const char *callerid, const char *data)
{
- char app[256];
- char appdata[512]="";
- char *tmp="";
- char tmp1[80];
- char tmp2[80];
- char tmp3[EXT_DATA_SIZE];
- struct ast_app *a;
- struct ast_variable *v;
- REALTIME_COMMON(MODE_MATCH);
- if (var) {
+ int res = -1;
+ struct ast_variable *var = realtime_common(context, exten, priority, data, MODE_MATCH);
+
+ if (var) {
+ char *tmp="";
+ char app[256];
+ struct ast_variable *v;
+
for (v = var; v ; v = v->next) {
if (!strcasecmp(v->name, "app"))
strncpy(app, v->value, sizeof(app) -1 );
@@ -191,16 +189,21 @@
}
ast_variables_destroy(var);
if (!ast_strlen_zero(app)) {
- a = pbx_findapp(app);
+ struct ast_app *a = pbx_findapp(app);
if (a) {
+ char appdata[512]="";
+ char tmp1[80];
+ char tmp2[80];
+ char tmp3[EXT_DATA_SIZE];
+
if(!ast_strlen_zero(tmp))
- pbx_substitute_variables_helper(chan, tmp, appdata, sizeof(appdata) - 1);
- if (option_verbose > 2)
+ pbx_substitute_variables_helper(chan, tmp, appdata, sizeof(appdata) - 1);
+ if (option_verbose > 2)
ast_verbose( VERBOSE_PREFIX_3 "Executing %s(\"%s\", \"%s\")\n",
- term_color(tmp1, app, COLOR_BRCYAN, 0, sizeof(tmp1)),
- term_color(tmp2, chan->name, COLOR_BRMAGENTA, 0, sizeof(tmp2)),
- term_color(tmp3, (!ast_strlen_zero(appdata) ? (char *)appdata : ""), COLOR_BRMAGENTA, 0, sizeof(tmp3)));
- manager_event(EVENT_FLAG_CALL, "Newexten",
+ term_color(tmp1, app, COLOR_BRCYAN, 0, sizeof(tmp1)),
+ term_color(tmp2, chan->name, COLOR_BRMAGENTA, 0, sizeof(tmp2)),
+ term_color(tmp3, S_OR(appdata, ""), COLOR_BRMAGENTA, 0, sizeof(tmp3)));
+ manager_event(EVENT_FLAG_CALL, "Newexten",
"Channel: %s\r\n"
"Context: %s\r\n"
"Extension: %s\r\n"
@@ -220,12 +223,12 @@
static int realtime_matchmore(struct ast_channel *chan, const char *context, const char *exten, int priority, const char *callerid, const char *data)
{
- REALTIME_COMMON(MODE_MATCHMORE);
- if (var)
- ast_variables_destroy(var);
- if (var)
- res = 1;
- return res > 0 ? res : 0;
+ struct ast_variable *var = realtime_common(context, exten, priority, data, MODE_MATCHMORE);
+ if (var) {
+ ast_variables_destroy(var);
+ return 1;
+ }
+ return 0;
}
static struct ast_switch realtime_switch =
More information about the asterisk-commits
mailing list