From: Gregory Nietsky Date: Fri, 9 Sep 2011 07:23:53 +0000 (+0000) Subject: Move code for VALID_EXTEN from app_readexten to func_dialplan X-Git-Tag: 10.0.0-beta2~68 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d5544999b588313f05c270f3d49a69c94d7507a0;p=thirdparty%2Fasterisk.git Move code for VALID_EXTEN from app_readexten to func_dialplan Mark VALID_EXTEN deprecated. Review: https://reviewboard.asterisk.org/r/1396/ git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/10@335014 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/CHANGES b/CHANGES index 46b31d954f..fb9ed204c9 100644 --- a/CHANGES +++ b/CHANGES @@ -121,6 +121,7 @@ Dialplan Functions for a given string to replace with another string as many times as the user specifies or just throughout the whole string. * Added option to CHANNEL(pickupgroup) allow reading and setting the pickupgroup of channel. + * Mark VALID_EXTEN() deprecated in favor of DIALPLAN_EXISTS() libpri channel driver (chan_dahdi) DAHDI changes -------------------------- diff --git a/apps/app_readexten.c b/apps/app_readexten.c index 94dc1e1f87..4792119117 100644 --- a/apps/app_readexten.c +++ b/apps/app_readexten.c @@ -96,24 +96,6 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$") - - - Determine whether an extension exists or not. - - - - Defaults to the current context - - - - Priority defaults to 1. - - - - Returns a true value if the indicated context, - extension, and priority exist. - - ***/ enum readexten_option_flags { @@ -280,57 +262,15 @@ static int readexten_exec(struct ast_channel *chan, const char *data) return status[0] == 'H' ? -1 : 0; } -static int acf_isexten_exec(struct ast_channel *chan, const char *cmd, char *parse, char *buffer, size_t buflen) -{ - int priority_int; - AST_DECLARE_APP_ARGS(args, - AST_APP_ARG(context); - AST_APP_ARG(extension); - AST_APP_ARG(priority); - ); - - AST_STANDARD_APP_ARGS(args, parse); - - if (ast_strlen_zero(args.context)) - args.context = chan->context; - - if (ast_strlen_zero(args.extension)) { - ast_log(LOG_WARNING, "Syntax: VALID_EXTEN([],[,]) - missing argument !\n"); - return -1; - } - - if (ast_strlen_zero(args.priority)) - priority_int = 1; - else - priority_int = atoi(args.priority); - - if (ast_exists_extension(chan, args.context, args.extension, priority_int, - S_COR(chan->caller.id.number.valid, chan->caller.id.number.str, NULL))) { - ast_copy_string(buffer, "1", buflen); - } else { - ast_copy_string(buffer, "0", buflen); - } - - return 0; -} - -static struct ast_custom_function acf_isexten = { - .name = "VALID_EXTEN", - .read = acf_isexten_exec, -}; - static int unload_module(void) { int res = ast_unregister_application(app); - res |= ast_custom_function_unregister(&acf_isexten); - - return res; + return res; } static int load_module(void) { int res = ast_register_application_xml(app, readexten_exec); - res |= ast_custom_function_register(&acf_isexten); return res; } diff --git a/funcs/func_dialplan.c b/funcs/func_dialplan.c index c39b3e3766..06ba583c10 100644 --- a/funcs/func_dialplan.c +++ b/funcs/func_dialplan.c @@ -51,11 +51,29 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$") This function returns 1 if the target exits. Otherwise, it returns 0. - + + + Determine whether an extension exists or not. + + + + Defaults to the current context + + + + Priority defaults to 1. + + + + Returns a true value if the indicated context, + extension, and priority exist. + This function has been deprecated in favor of the DIALPLAN_EXISTS() function + + ***/ -static int isexten_function_read(struct ast_channel *chan, const char *cmd, char *data, - char *buf, size_t len) +static int isexten_function_read(struct ast_channel *chan, const char *cmd, char *data, + char *buf, size_t len) { char *parse; AST_DECLARE_APP_ARGS(args, @@ -102,7 +120,43 @@ static int isexten_function_read(struct ast_channel *chan, const char *cmd, char ast_log(LOG_ERROR, "Invalid arguments provided to DIALPLAN_EXISTS\n"); return -1; } - + + return 0; +} + +static int acf_isexten_exec(struct ast_channel *chan, const char *cmd, char *parse, char *buffer, size_t buflen) +{ + int priority_int; + AST_DECLARE_APP_ARGS(args, + AST_APP_ARG(context); + AST_APP_ARG(extension); + AST_APP_ARG(priority); + ); + + AST_STANDARD_APP_ARGS(args, parse); + + if (ast_strlen_zero(args.context)) { + args.context = chan->context; + } + + if (ast_strlen_zero(args.extension)) { + ast_log(LOG_WARNING, "Syntax: VALID_EXTEN([],[,]) - missing argument !\n"); + return -1; + } + + if (ast_strlen_zero(args.priority)) { + priority_int = 1; + } else { + priority_int = atoi(args.priority); + } + + if (ast_exists_extension(chan, args.context, args.extension, priority_int, + S_COR(chan->caller.id.number.valid, chan->caller.id.number.str, NULL))) { + ast_copy_string(buffer, "1", buflen); + } else { + ast_copy_string(buffer, "0", buflen); + } + return 0; } @@ -112,14 +166,23 @@ static struct ast_custom_function isexten_function = { .read_max = 2, }; +static struct ast_custom_function acf_isexten = { + .name = "VALID_EXTEN", + .read = acf_isexten_exec, +}; + static int unload_module(void) { - return ast_custom_function_unregister(&isexten_function); + int res = ast_custom_function_unregister(&isexten_function); + res |= ast_custom_function_unregister(&acf_isexten); + return res; } static int load_module(void) { - return ast_custom_function_register(&isexten_function); + int res = ast_custom_function_register(&isexten_function); + res |= ast_custom_function_register(&acf_isexten); + return res; } AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "Dialplan Context/Extension/Priority Checking Functions");