The behavior of REGEX when it did not match was not defined by the docs, so
authorRussell Bryant <russell@russellbryant.com>
Thu, 31 Aug 2006 04:07:35 +0000 (04:07 +0000)
committerRussell Bryant <russell@russellbryant.com>
Thu, 31 Aug 2006 04:07:35 +0000 (04:07 +0000)
define it to provide a result of "0" and change the code appropriately.
(issue #7805)

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@41544 65c4cc65-6c06-0410-ace0-fbb531ad65f3

funcs/func_strings.c

index 8606318..8c3b462 100644 (file)
@@ -115,7 +115,7 @@ static int regex(struct ast_channel *chan, char *cmd, char *parse, char *buf,
        int errcode;
        regex_t regexbuf;
 
-       buf[0] = '\0';
+       buf[0] = '0';
 
        AST_NONSTANDARD_APP_ARGS(args, parse, '"');
 
@@ -130,10 +130,10 @@ static int regex(struct ast_channel *chan, char *cmd, char *parse, char *buf,
                regerror(errcode, &regexbuf, buf, len);
                ast_log(LOG_WARNING, "Malformed input %s(%s): %s\n", cmd, parse, buf);
                return -1;
-       } else {
-               if (!regexec(&regexbuf, args.str, 0, NULL, 0))
-                       strcpy(buf, "1");
        }
+       
+       strcpy(buf, regexec(&regexbuf, args.str, 0, NULL, 0) ? "0" : "1");
+
        regfree(&regexbuf);
 
        return 0;
@@ -141,8 +141,8 @@ static int regex(struct ast_channel *chan, char *cmd, char *parse, char *buf,
 
 static struct ast_custom_function regex_function = {
        .name = "REGEX",
-       .synopsis =
-               "Regular Expression: Returns 1 if data matches regular expression.",
+       .synopsis = "Regular Expression",
+       .desc =  "Returns 1 if data matches regular expression, or 0 otherwise.",
        .syntax = "REGEX(\"<regular expression>\" <data>)",
        .read = regex,
 };