]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
MODAPP-319
authorAnthony Minessale <anthony.minessale@gmail.com>
Tue, 1 Sep 2009 22:15:06 +0000 (22:15 +0000)
committerAnthony Minessale <anthony.minessale@gmail.com>
Tue, 1 Sep 2009 22:15:06 +0000 (22:15 +0000)
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@14727 d0543943-73ff-0310-b7d9-9358b9ac24b2

src/mod/applications/mod_commands/mod_commands.c

index 928323d1185fc1ff522142537b34ad95f79c8b65..7573a5a41f9978264bcd8ae4ccaa2373429c453c 100644 (file)
@@ -986,6 +986,8 @@ SWITCH_STANDARD_API(regex_function)
        size_t len = 0;
        char *substituted = NULL;
        int proceed = 0;
+       char *d;
+       char delim = '|';
 
        if (!cmd) {
                goto error;
@@ -993,8 +995,26 @@ SWITCH_STANDARD_API(regex_function)
 
        mydata = strdup(cmd);
        switch_assert(mydata);
+       
+       d = mydata;
 
-       argc = switch_separate_string(mydata, '|', argv, (sizeof(argv) / sizeof(argv[0])));
+       if (*d == 'm' && *(d + 1) == ':' && *(d + 2)) {
+               char t = *(d + 2);
+
+               switch (t) {
+               case '|':
+               case '~':
+               case '/':
+                       d += 3;
+                       delim = t;
+                       break;
+               default:
+                       break;
+               }
+       }
+       
+
+       argc = switch_separate_string(d, delim, argv, (sizeof(argv) / sizeof(argv[0])));
 
        if (argc < 2) {
                goto error;
@@ -1015,7 +1035,11 @@ SWITCH_STANDARD_API(regex_function)
                        stream->write_function(stream, "true");
                }
        } else {
-               stream->write_function(stream, "false");
+               if (argc > 2) {
+                       stream->write_function(stream, "%s", argv[0]);
+               } else {
+                       stream->write_function(stream, "false");
+               }
        }
        goto ok;