Update of /usr/cvsroot/asterisk/apps
In directory mongoose.digium.com:/tmp/cvs-serv13404/apps

Modified Files:
        app_sendtext.c 
Log Message:
issue #5643


Index: app_sendtext.c
===================================================================
RCS file: /usr/cvsroot/asterisk/apps/app_sendtext.c,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -d -r1.15 -r1.16
--- app_sendtext.c      7 Nov 2005 22:01:22 -0000       1.15
+++ app_sendtext.c      7 Nov 2005 22:55:34 -0000       1.16
@@ -41,6 +41,7 @@
 #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 *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 @@
 "      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 @@
        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);

_______________________________________________
Asterisk-Cvs mailing list
[email protected]
http://lists.digium.com/mailman/listinfo/asterisk-cvs

Reply via email to