[4.1] 8fabd4a Add a VSL variant that takes uses stdarg(3)

Lasse Karstensen lkarsten at varnish-software.com
Tue Jun 14 11:46:10 CEST 2016


commit 8fabd4aa60d68ee63bd743dea2b09b6eefae574f
Author: Federico G. Schwindt <fgsch at lodoss.net>
Date:   Mon May 16 14:59:48 2016 +0100

    Add a VSL variant that takes uses stdarg(3)

diff --git a/bin/varnishd/cache/cache.h b/bin/varnishd/cache/cache.h
index 39bdef7..0e0ca6f 100644
--- a/bin/varnishd/cache/cache.h
+++ b/bin/varnishd/cache/cache.h
@@ -957,6 +957,7 @@ void *VSM_Alloc(unsigned size, const char *class, const char *type,
     const char *ident);
 void VSM_Free(void *ptr);
 #ifdef VSL_ENDMARKER
+void VSLv(enum VSL_tag_e tag, uint32_t vxid, const char *fmt, va_list va);
 void VSL(enum VSL_tag_e tag, uint32_t vxid, const char *fmt, ...)
     __v_printflike(3, 4);
 void VSLbv(struct vsl_log *, enum VSL_tag_e tag, const char *fmt, va_list va);
diff --git a/bin/varnishd/cache/cache_shmlog.c b/bin/varnishd/cache/cache_shmlog.c
index e733686..789e902 100644
--- a/bin/varnishd/cache/cache_shmlog.c
+++ b/bin/varnishd/cache/cache_shmlog.c
@@ -207,9 +207,8 @@ vslr(enum VSL_tag_e tag, uint32_t vxid, const char *b, unsigned len)
  */
 
 void
-VSL(enum VSL_tag_e tag, uint32_t vxid, const char *fmt, ...)
+VSLv(enum VSL_tag_e tag, uint32_t vxid, const char *fmt, va_list ap)
 {
-	va_list ap;
 	unsigned n, mlen = cache_param->vsl_reclen;
 	char buf[mlen];
 
@@ -217,18 +216,26 @@ VSL(enum VSL_tag_e tag, uint32_t vxid, const char *fmt, ...)
 	if (vsl_tag_is_masked(tag))
 		return;
 
-
 	if (strchr(fmt, '%') == NULL) {
 		vslr(tag, vxid, fmt, strlen(fmt) + 1);
 	} else {
-		va_start(ap, fmt);
 		n = vsnprintf(buf, mlen, fmt, ap);
-		va_end(ap);
 		if (n > mlen - 1)
 			n = mlen - 1;
 		buf[n++] = '\0'; /* NUL-terminated */
 		vslr(tag, vxid, buf, n);
 	}
+
+}
+
+void
+VSL(enum VSL_tag_e tag, uint32_t vxid, const char *fmt, ...)
+{
+	va_list ap;
+
+	va_start(ap, fmt);
+	VSLv(tag, vxid, fmt, ap);
+	va_end(ap);
 }
 
 /*--------------------------------------------------------------------*/



More information about the varnish-commit mailing list