Refactor match_iter_f: prepare for reuse

parent 91464034
...@@ -509,26 +509,15 @@ reip_free(struct re_iter_priv *reip, int ret) ...@@ -509,26 +509,15 @@ reip_free(struct re_iter_priv *reip, int ret)
return (ret); return (ret);
} }
static int v_matchproto_(objiterate_f) static int
match_iter_f(void *priv, unsigned flush, const void *ptr, ssize_t len) reip_iter(struct re_iter_priv *reip, unsigned flush,
const void *ptr, ssize_t len)
{ {
struct re_iter_priv *reip;
VCL_STRING subject; VCL_STRING subject;
ov_t *ov; ov_t *ov;
int i; int i;
CAST_OBJ_NOTNULL(reip, priv, RE_ITER_PRIV_MAGIC); CHECK_OBJ_NOTNULL(reip, RE_ITER_PRIV_MAGIC);
#ifdef ITERDBG
VSLb(reip->ctx->vsl, SLT_Debug, "flush=%u, s=%d, ptr=%.*s, len=%zd",
flush, reip->s, len, ptr, len);
#endif
/* already have a match ? */
if (reip->s > PCRE2_ERROR_NOMATCH) {
AZ(reip->buf);
return (0);
}
if (reip->s == PCRE2_ERROR_NOMATCH) { if (reip->s == PCRE2_ERROR_NOMATCH) {
AZ(reip->startoffset); AZ(reip->startoffset);
...@@ -626,6 +615,27 @@ match_iter_f(void *priv, unsigned flush, const void *ptr, ssize_t len) ...@@ -626,6 +615,27 @@ match_iter_f(void *priv, unsigned flush, const void *ptr, ssize_t len)
return (reip_free(reip, 0)); return (reip_free(reip, 0));
} }
static int v_matchproto_(objiterate_f)
match_iter_f(void *priv, unsigned flush, const void *ptr, ssize_t len)
{
struct re_iter_priv *reip;
CAST_OBJ_NOTNULL(reip, priv, RE_ITER_PRIV_MAGIC);
#ifdef ITERDBG
VSLb(reip->ctx->vsl, SLT_Debug, "flush=%u, s=%d, ptr=%.*s, len=%zd",
flush, reip->s, len, ptr, len);
#endif
/* already have a match ? */
if (reip->s > PCRE2_ERROR_NOMATCH) {
AZ(reip->buf);
return (0);
}
return (reip_iter(reip, flush, ptr, len));
}
VCL_BOOL VCL_BOOL
vmod_regex_match_body(VRT_CTX, struct vmod_re_regex *re, VCL_ENUM which, vmod_regex_match_body(VRT_CTX, struct vmod_re_regex *re, VCL_ENUM which,
VCL_INT limit, VCL_INT limit_recursion) VCL_INT limit, VCL_INT limit_recursion)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment