diff options
author | rizzo <rizzo@f38db490-d61c-443f-a65b-d21fe96a405b> | 2006-05-10 21:55:25 +0000 |
---|---|---|
committer | rizzo <rizzo@f38db490-d61c-443f-a65b-d21fe96a405b> | 2006-05-10 21:55:25 +0000 |
commit | 941aace4148183bc81ea46f60c9424407c906ec9 (patch) | |
tree | fed16544653b80417faf560b82c683794ccfdcc8 /pbx | |
parent | 189f0cfda2203e2b1bfb09b4cfd19b6575a00f73 (diff) |
change macro into a function, remove unused code.
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@26656 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'pbx')
-rw-r--r-- | pbx/pbx_realtime.c | 109 |
1 files changed, 56 insertions, 53 deletions
diff --git a/pbx/pbx_realtime.c b/pbx/pbx_realtime.c index d819233ae..3321eeb4e 100644 --- a/pbx/pbx_realtime.c +++ b/pbx/pbx_realtime.c @@ -76,28 +76,6 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$") */ -#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 @@ static struct ast_variable *realtime_switch_common(const char *table, const char 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) + struct ast_variable *var = realtime_common(context, exten, priority, data, MODE_MATCH); + if (var) { ast_variables_destroy(var); - if (var) - res = 1; - return res > 0 ? res : 0; + 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) + struct ast_variable *var = realtime_common(context, exten, priority, data, MODE_CANMATCH); + if (var) { ast_variables_destroy(var); - if (var) - res = 1; - return res > 0 ? res : 0; + 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); + 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 @@ static int realtime_exec(struct ast_channel *chan, const char *context, const ch } 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_exec(struct ast_channel *chan, const char *context, const ch 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) + struct ast_variable *var = realtime_common(context, exten, priority, data, MODE_MATCHMORE); + if (var) { ast_variables_destroy(var); - if (var) - res = 1; - return res > 0 ? res : 0; + return 1; + } + return 0; } static struct ast_switch realtime_switch = |