]> git.ipfire.org Git - thirdparty/haproxy.git/commit
MINOR: regex: Create JIT compatible function that return match strings
authorThierry FOURNIER <tfournier@exceliance.fr>
Wed, 11 Jun 2014 11:59:05 +0000 (13:59 +0200)
committerWilly Tarreau <w@1wt.eu>
Wed, 18 Jun 2014 13:07:50 +0000 (15:07 +0200)
commitb8f980cc196b287de6f719deaca3cdc81a616136
treed458a814372a56069da7d2ac74c3db88c9c4c4e3
parentb8543928240a48339a70950a3fd51b98bccf93a8
MINOR: regex: Create JIT compatible function that return match strings

This patchs rename the "regex_exec" to "regex_exec2". It add a new
"regex_exec", "regex_exec_match" and "regex_exec_match2" function. This
function can match regex and return array containing matching parts.
Otherwise, this function use the compiled method (JIT or PCRE or POSIX).

JIT require a subject with length. PCREPOSIX and native POSIX regex
require a null terminted subject. The regex_exec* function are splited
in two version. The first version take a null terminated string, but it
execute strlen() on the subject if it is compiled with JIT. The second
version (terminated by "2") take the subject and the length. This
version adds a null character in the subject if it is compiled with
PCREPOSIX or native POSIX functions.

The documentation of posix regex and pcreposix says that the function
returns 0 if the string matche otherwise it returns REG_NOMATCH. The
REG_NOMATCH macro take the value 1 with posix regex and the value 17
with the pcreposix. The documentaion of the native pcre API (used with
JIT) returns a negative number if no match, otherwise, it returns 0 or a
positive number.

This patch fix also the return codes of the regex_exec* functions. Now,
these function returns true if the string match, otherwise it returns
false.
include/common/regex.h
src/pattern.c
src/regex.c