Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
L
libvmod-re2
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Nils Goroll
libvmod-re2
Commits
c341d11a
Commit
c341d11a
authored
Apr 01, 2016
by
Geoff Simmons
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
consolidate code for the extract() method and function with the code for
sub() and suball()
parent
a6c974d4
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
47 additions
and
89 deletions
+47
-89
vmod_re2.c
src/vmod_re2.c
+47
-89
No files found.
src/vmod_re2.c
View file @
c341d11a
...
...
@@ -433,19 +433,25 @@ vmod_regex_namedref(VRT_CTX, struct vmod_re2_regex *re, VCL_STRING name,
#undef ERR_PREFIX
static
VCL_STRING
sub_method
(
VRT_CTX
,
const
rewrite_e
mode
,
struct
vmod_re2_regex
*
restrict
r
e
,
VCL_STRING
restrict
text
,
VCL_STRING
restrict
rewrite
,
VCL_STRING
restrict
fallback
)
rewrite_method
(
VRT_CTX
,
const
rewrite_e
mod
e
,
struct
vmod_re2_regex
*
restrict
re
,
VCL_STRING
restrict
text
,
VCL_STRING
restrict
rewrite
,
VCL_STRING
restrict
fallback
)
{
CHECK_OBJ_NOTNULL
(
ctx
,
VRT_CTX_MAGIC
);
CHECK_OBJ_NOTNULL
(
re
,
VMOD_RE2_REGEX_MAGIC
);
if
(
fallback
==
NULL
)
{
VERR
(
ctx
,
"%s.%s(): fallback is undefined"
,
re
->
vcl_name
,
rewrite_name
[
mode
]);
if
(
mode
==
SUBALL
)
return
"**SUBALL METHOD FAILED**"
;
else
switch
(
mode
)
{
case
SUB
:
return
"**SUB METHOD FAILED**"
;
case
SUBALL
:
return
"**SUBALL METHOD FAILED**"
;
case
EXTRACT
:
return
"**EXTRACT METHOD FAILED**"
;
default:
WRONG
(
"illegal mode"
);
}
}
if
(
text
==
NULL
)
{
VERR
(
ctx
,
"%s.%s(text=<undefined>, fallback=
\"
%.40s
\"
): "
...
...
@@ -467,39 +473,21 @@ VCL_STRING
vmod_regex_sub
(
VRT_CTX
,
struct
vmod_re2_regex
*
re
,
VCL_STRING
text
,
VCL_STRING
rewrite
,
VCL_STRING
fallback
)
{
return
sub
_method
(
ctx
,
SUB
,
re
,
text
,
rewrite
,
fallback
);
return
rewrite
_method
(
ctx
,
SUB
,
re
,
text
,
rewrite
,
fallback
);
}
VCL_STRING
vmod_regex_suball
(
VRT_CTX
,
struct
vmod_re2_regex
*
re
,
VCL_STRING
text
,
VCL_STRING
rewrite
,
VCL_STRING
fallback
)
{
return
sub
_method
(
ctx
,
SUBALL
,
re
,
text
,
rewrite
,
fallback
);
return
rewrite
_method
(
ctx
,
SUBALL
,
re
,
text
,
rewrite
,
fallback
);
}
VCL_STRING
vmod_regex_extract
(
VRT_CTX
,
struct
vmod_re2_regex
*
re
,
VCL_STRING
text
,
VCL_STRING
rewrite
,
VCL_STRING
fallback
)
{
CHECK_OBJ_NOTNULL
(
ctx
,
VRT_CTX_MAGIC
);
CHECK_OBJ_NOTNULL
(
re
,
VMOD_RE2_REGEX_MAGIC
);
if
(
fallback
==
NULL
)
{
VERR
(
ctx
,
"%s.extract(): fallback is undefined"
,
re
->
vcl_name
);
return
"**EXTRACT METHOD FAILED**"
;
}
if
(
text
==
NULL
)
{
VERR
(
ctx
,
"%s.extract(text=<undefined>, fallback=
\"
%.40s
\"
): "
"text is undefined"
,
re
->
vcl_name
,
fallback
);
return
fallback
;
}
if
(
rewrite
==
NULL
)
{
VERR
(
ctx
,
"%s.extract(text=
\"
%.40s
\"
, rewrite=<undefined>, "
"fallback=
\"
%.40s
\"
): rewrite is undefined"
,
re
->
vcl_name
,
text
,
fallback
);
return
fallback
;
}
return
rewritef
(
ctx
,
re
->
vre2
,
EXTRACT
,
text
,
rewrite
,
fallback
);
return
rewrite_method
(
ctx
,
EXTRACT
,
re
,
text
,
rewrite
,
fallback
);
}
/* Object set */
...
...
@@ -789,13 +777,14 @@ vmod_namedref(VRT_CTX, struct vmod_priv *priv, VCL_STRING name,
#define ERR_PREFIX "re2.%s(pattern=\"%.40s\", text=\"%.40s\", rewrite=\"%.40s\", fallback=\"%.40s\"): "
static
VCL_STRING
sub
_function
(
VRT_CTX
,
const
rewrite_e
mode
,
VCL_STRING
restrict
pattern
,
rewrite
_function
(
VRT_CTX
,
const
rewrite_e
mode
,
VCL_STRING
restrict
pattern
,
VCL_STRING
restrict
text
,
VCL_STRING
restrict
rewrite
,
VCL_STRING
restrict
fallback
,
VCL_BOOL
utf8
,
VCL_BOOL
posix_syntax
,
VCL_BOOL
longest_match
,
VCL_INT
max_mem
,
VCL_BOOL
literal
,
VCL_BOOL
never_nl
,
VCL_BOOL
dot_nl
,
VCL_BOOL
never_capture
,
VCL_BOOL
case_sensitive
,
VCL_BOOL
perl_classes
,
VCL_BOOL
word_boundary
,
VCL_BOOL
one_line
)
VCL_STRING
restrict
fallback
,
VCL_BOOL
utf8
,
VCL_BOOL
posix_syntax
,
VCL_BOOL
longest_match
,
VCL_INT
max_mem
,
VCL_BOOL
literal
,
VCL_BOOL
never_nl
,
VCL_BOOL
dot_nl
,
VCL_BOOL
never_capture
,
VCL_BOOL
case_sensitive
,
VCL_BOOL
perl_classes
,
VCL_BOOL
word_boundary
,
VCL_BOOL
one_line
)
{
vre2
*
vre2
=
NULL
;
const
char
*
ret
,
*
err
;
...
...
@@ -804,10 +793,16 @@ sub_function(VRT_CTX, const rewrite_e mode, VCL_STRING restrict pattern,
if
(
fallback
==
NULL
)
{
VERR
(
ctx
,
"re2.%s(): fallback is undefined"
,
rewrite_name
[
mode
]);
if
(
mode
==
SUBALL
)
return
"**SUBALL FUNCTION FAILED**"
;
else
switch
(
mode
)
{
case
SUB
:
return
"**SUB FUNCTION FAILED**"
;
case
SUBALL
:
return
"**SUBALL FUNCTION FAILED**"
;
case
EXTRACT
:
return
"**EXTRACT FUNCTION FAILED**"
;
default:
WRONG
(
"illegal mode"
);
}
}
if
(
pattern
==
NULL
)
{
VERR
(
ctx
,
"re2.%s(pattern=<undefined>, fallback=
\"
%.40s
\"
): "
...
...
@@ -854,10 +849,11 @@ vmod_sub(VRT_CTX, VCL_STRING pattern, VCL_STRING text, VCL_STRING rewrite,
VCL_BOOL
case_sensitive
,
VCL_BOOL
perl_classes
,
VCL_BOOL
word_boundary
,
VCL_BOOL
one_line
)
{
return
sub_function
(
ctx
,
SUB
,
pattern
,
text
,
rewrite
,
fallback
,
utf8
,
posix_syntax
,
longest_match
,
max_mem
,
literal
,
never_nl
,
dot_nl
,
never_capture
,
case_sensitive
,
perl_classes
,
word_boundary
,
one_line
);
return
rewrite_function
(
ctx
,
SUB
,
pattern
,
text
,
rewrite
,
fallback
,
utf8
,
posix_syntax
,
longest_match
,
max_mem
,
literal
,
never_nl
,
dot_nl
,
never_capture
,
case_sensitive
,
perl_classes
,
word_boundary
,
one_line
);
}
VCL_STRING
...
...
@@ -868,14 +864,13 @@ vmod_suball(VRT_CTX, VCL_STRING pattern, VCL_STRING text, VCL_STRING rewrite,
VCL_BOOL
case_sensitive
,
VCL_BOOL
perl_classes
,
VCL_BOOL
word_boundary
,
VCL_BOOL
one_line
)
{
return
sub_function
(
ctx
,
SUBALL
,
pattern
,
text
,
rewrite
,
fallback
,
utf8
,
posix_syntax
,
longest_match
,
max_mem
,
literal
,
never_nl
,
dot_nl
,
never_capture
,
case_sensitive
,
perl_classes
,
word_boundary
,
one_line
);
return
rewrite_function
(
ctx
,
SUBALL
,
pattern
,
text
,
rewrite
,
fallback
,
utf8
,
posix_syntax
,
longest_match
,
max_mem
,
literal
,
never_nl
,
dot_nl
,
never_capture
,
case_sensitive
,
perl_classes
,
word_boundary
,
one_line
);
}
#define ERR_PREFIX "re2.extract(pattern=\"%.40s\", text=\"%.40s\", rewrite=\"%.40s\", fallback=\"%.40s\"): "
VCL_STRING
vmod_extract
(
VRT_CTX
,
VCL_STRING
pattern
,
VCL_STRING
text
,
VCL_STRING
rewrite
,
VCL_STRING
fallback
,
VCL_BOOL
utf8
,
VCL_BOOL
posix_syntax
,
...
...
@@ -884,50 +879,13 @@ vmod_extract(VRT_CTX, VCL_STRING pattern, VCL_STRING text, VCL_STRING rewrite,
VCL_BOOL
case_sensitive
,
VCL_BOOL
perl_classes
,
VCL_BOOL
word_boundary
,
VCL_BOOL
one_line
)
{
vre2
*
vre2
=
NULL
;
const
char
*
ret
,
*
err
;
CHECK_OBJ_NOTNULL
(
ctx
,
VRT_CTX_MAGIC
);
if
(
fallback
==
NULL
)
{
ERR
(
ctx
,
"re2.extract(): fallback is undefined"
);
return
"**EXTRACT FUNCTION FAILED**"
;
}
if
(
pattern
==
NULL
)
{
VERR
(
ctx
,
"re2.extract(pattern=<undefined>, fallback=
\"
%.40s
\"
): "
"pattern is undefined"
,
fallback
);
return
fallback
;
}
if
(
text
==
NULL
)
{
VERR
(
ctx
,
"re2.extract(pattern=
\"
%.40s
\"
, text=<undefined>, "
"fallback=
\"
%.40s
\"
): text is undefined"
,
pattern
,
fallback
);
return
fallback
;
}
if
(
rewrite
==
NULL
)
{
VERR
(
ctx
,
"re2.extract(pattern=
\"
%.40s
\"
, text=
\"
%.40s
\"
, "
"rewrite=<undefined>, fallback=
\"
%.40s
\"
): "
"rewrite is undefined"
,
pattern
,
text
,
fallback
);
return
fallback
;
}
if
((
err
=
vre2_init
(
&
vre2
,
pattern
,
utf8
,
posix_syntax
,
longest_match
,
max_mem
,
literal
,
never_nl
,
dot_nl
,
never_capture
,
return
rewrite_function
(
ctx
,
EXTRACT
,
pattern
,
text
,
rewrite
,
fallback
,
utf8
,
posix_syntax
,
longest_match
,
max_mem
,
literal
,
never_nl
,
dot_nl
,
never_capture
,
case_sensitive
,
perl_classes
,
word_boundary
,
one_line
))
!=
NULL
)
{
VERR
(
ctx
,
ERR_PREFIX
"Cannot compile '%.40s': %s"
,
pattern
,
text
,
rewrite
,
fallback
,
pattern
,
err
);
vre2_fini
(
&
vre2
);
return
fallback
;
}
ret
=
rewritef
(
ctx
,
vre2
,
EXTRACT
,
text
,
rewrite
,
fallback
);
vre2_fini
(
&
vre2
);
return
ret
;
one_line
);
}
#undef ERR_PREFIX
VCL_STRING
vmod_version
(
const
struct
vrt_ctx
*
ctx
__attribute__
((
unused
)))
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment