From 210854cad2227505bb268061119623dc85687241 Mon Sep 17 00:00:00 2001 From: phk Date: Fri, 13 Feb 2009 09:38:57 +0000 Subject: [PATCH] Add VLU_Data() function for injecting input git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@3760 d4fa192b-c00b-0410-8231-f00ffab90ce4 --- varnish-cache/include/vlu.h | 1 + varnish-cache/lib/libvarnish/vlu.c | 25 +++++++++++++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/varnish-cache/include/vlu.h b/varnish-cache/include/vlu.h index e7da9973..3dd7eeab 100644 --- a/varnish-cache/include/vlu.h +++ b/varnish-cache/include/vlu.h @@ -36,6 +36,7 @@ typedef int (vlu_f)(void *, const char *); struct vlu *VLU_New(void *priv, vlu_f *func, unsigned bufsize); int VLU_Fd(int fd, struct vlu *l); int VLU_File(FILE *f, struct vlu *l); +int VLU_Data(const void *ptr, int len, struct vlu *l); void VLU_Destroy(struct vlu *l); #endif diff --git a/varnish-cache/lib/libvarnish/vlu.c b/varnish-cache/lib/libvarnish/vlu.c index f463546b..c728749d 100644 --- a/varnish-cache/lib/libvarnish/vlu.c +++ b/varnish-cache/lib/libvarnish/vlu.c @@ -134,3 +134,28 @@ VLU_File(FILE *f, struct vlu *l) l->bufp = strlen(l->buf); return (LineUpProcess(l)); } + +int +VLU_Data(const void *ptr, int len, struct vlu *l) +{ + const char *p; + int i; + + p = ptr; + CHECK_OBJ_NOTNULL(l, LINEUP_MAGIC); + if (len < 0) + len = strlen(p); + while (len > 0) { + i = len; + if (i > l->bufl - l->bufp) + i = l->bufl - l->bufp; + memcpy(l->buf + l->bufp, p, i); + l->bufp += i; + p += i; + len -= i; + i = LineUpProcess(l); + if (i) + break; + } + return (i); +} -- 2.39.5