issue #5643
authorKevin P. Fleming <kpfleming@digium.com>
Mon, 7 Nov 2005 22:55:34 +0000 (22:55 +0000)
committerKevin P. Fleming <kpfleming@digium.com>
Mon, 7 Nov 2005 22:55:34 +0000 (22:55 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@6997 65c4cc65-6c06-0410-ace0-fbb531ad65f3

ChangeLog
apps/app_sendtext.c

index 7c5c79b..1225604 100755 (executable)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,7 @@
 2005-11-07  Kevin P. Fleming  <kpfleming@digium.com>
 
+       * apps/app_sendtext.c: upgrade to new arg/option API and implement priority jumping control
+
        * apps/app_transfer.c: upgrade to new arg/option API and implement priority jumping control
 
        * apps/app_txtcidname.c: upgrade to new arg/option API and implement priority jumping control
index a8e3f24..177a6a6 100755 (executable)
@@ -41,6 +41,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
 #include "asterisk/translate.h"
 #include "asterisk/image.h"
 #include "asterisk/options.h"
+#include "asterisk/app.h"
 
 static const char *tdesc = "Send Text Applications";
 
@@ -49,8 +50,7 @@ static const char *app = "SendText";
 static const char *synopsis = "Send a Text Message";
 
 static const char *descrip = 
-"  SendText(text): Sends text to current channel (callee).\n"
-"Otherwise, execution will continue at the next priority level.\n"
+"  SendText(text[|options]): Sends text to current channel (callee).\n"
 "Result of transmission will be stored in the SENDTEXTSTATUS\n"
 "channel variable:\n"
 "      SUCCESS      Transmission succeeded\n"
@@ -58,10 +58,9 @@ static const char *descrip =
 "      UNSUPPORTED  Text transmission not supported by channel\n"
 "\n"
 "At this moment, text is supposed to be 7 bit ASCII in most channels.\n"
-"Old deprecated behavior: \n"
-" SendText should continue with the next priority upon successful execution.\n"
-" If the client does not support text transport, and there exists a\n"
-" step with priority n + 101, then execution will continue at that step.\n";
+"The option string many contain the following character:\n"
+"'j' -- jump to n+101 priority if the channel doesn't support\n"
+"       text transport\n";
 
 STANDARD_LOCAL_USER;
 
@@ -72,26 +71,47 @@ static int sendtext_exec(struct ast_channel *chan, void *data)
        int res = 0;
        struct localuser *u;
        char *status = "UNSUPPORTED";
+       char *parse = NULL;
+       int priority_jump = 0;
+       AST_DECLARE_APP_ARGS(args,
+               AST_APP_ARG(text);
+               AST_APP_ARG(options);
+       );
                
+       LOCAL_USER_ADD(u);      
+
        if (ast_strlen_zero(data)) {
-               ast_log(LOG_WARNING, "SendText requires an argument (text)\n");
+               ast_log(LOG_WARNING, "SendText requires an argument (text[|options])\n");
+               LOCAL_USER_REMOVE(u);
                return -1;
+       } else {
+               parse = ast_strdupa(data);
+               if (!parse) {
+                       ast_log(LOG_ERROR, "Out of memory!\n");
+                       LOCAL_USER_REMOVE(u);
+                       return -1;
+               }
        }
        
-       LOCAL_USER_ADD(u);
+       AST_STANDARD_APP_ARGS(args, parse);
+
+       if (args.options) {
+               if (strchr(args.options, 'j'))
+                       priority_jump = 1;
+       }
 
        ast_mutex_lock(&chan->lock);
        if (!chan->tech->send_text) {
                ast_mutex_unlock(&chan->lock);
                /* Does not support transport */
-               if (option_priority_jumping)
+               if (priority_jump || option_priority_jumping)
                        ast_goto_if_exists(chan, chan->context, chan->exten, chan->priority + 101);
                LOCAL_USER_REMOVE(u);
                return 0;
        }
        status = "FAILURE";
        ast_mutex_unlock(&chan->lock);
-       res = ast_sendtext(chan, (char *)data);
+       res = ast_sendtext(chan, args.text);
        if (!res)
                status = "SUCCESS";
        pbx_builtin_setvar_helper(chan, "SENDTEXTSTATUS", status);