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: http://svn.digium.com/svn/asterisk/trunk@41544 f38db490-d61c-443f-a65b-d21fe96a405b
This commit is contained in:
parent
6a1a080f67
commit
7ab2e8a729
|
@ -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,
|
||||
};
|
||||
|
|
Reference in New Issue