Refactor match_iter_f: prepare for reuse

parent 91464034
......@@ -509,26 +509,15 @@ reip_free(struct re_iter_priv *reip, int ret)
return (ret);
}
static int v_matchproto_(objiterate_f)
match_iter_f(void *priv, unsigned flush, const void *ptr, ssize_t len)
static int
reip_iter(struct re_iter_priv *reip, unsigned flush,
const void *ptr, ssize_t len)
{
struct re_iter_priv *reip;
VCL_STRING subject;
ov_t *ov;
int i;
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);
}
CHECK_OBJ_NOTNULL(reip, RE_ITER_PRIV_MAGIC);
if (reip->s == PCRE2_ERROR_NOMATCH) {
AZ(reip->startoffset);
......@@ -626,6 +615,27 @@ match_iter_f(void *priv, unsigned flush, const void *ptr, ssize_t len)
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
vmod_regex_match_body(VRT_CTX, struct vmod_re_regex *re, VCL_ENUM which,
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