From 42fc890accac610bf5aaa8aefb6ca69506ec2d59 Mon Sep 17 00:00:00 2001 From: Russell Bryant <russell@russellbryant.com> Date: Thu, 31 Aug 2006 04:07:35 +0000 Subject: [PATCH] The behavior of REGEX when it did not match was not defined by the docs, so 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 | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/funcs/func_strings.c b/funcs/func_strings.c index 86063185ae..8c3b4628ac 100644 --- a/funcs/func_strings.c +++ b/funcs/func_strings.c @@ -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, ®exbuf, buf, len); ast_log(LOG_WARNING, "Malformed input %s(%s): %s\n", cmd, parse, buf); return -1; - } else { - if (!regexec(®exbuf, args.str, 0, NULL, 0)) - strcpy(buf, "1"); } + + strcpy(buf, regexec(®exbuf, args.str, 0, NULL, 0) ? "0" : "1"); + regfree(®exbuf); 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, }; -- GitLab