r5165 - trunk/varnish-cache/lib/libvmod_std

phk at varnish-cache.org phk at varnish-cache.org
Tue Aug 31 13:07:52 CEST 2010


Author: phk
Date: 2010-08-31 13:07:52 +0200 (Tue, 31 Aug 2010)
New Revision: 5165

Modified:
   trunk/varnish-cache/lib/libvmod_std/vmod_std.c
Log:
Eliminate pointless code duplication



Modified: trunk/varnish-cache/lib/libvmod_std/vmod_std.c
===================================================================
--- trunk/varnish-cache/lib/libvmod_std/vmod_std.c	2010-08-31 11:03:59 UTC (rev 5164)
+++ trunk/varnish-cache/lib/libvmod_std/vmod_std.c	2010-08-31 11:07:52 UTC (rev 5165)
@@ -5,23 +5,24 @@
 
 #include "vcc_if.h"
 
-const char *
-vmod_toupper(struct sess *sp, const char *s, ...)
+static const char *
+vmod_updown(struct sess *sp, int up, const char *s, va_list ap)
 {
-	va_list ap;
 	unsigned u;
 	char *b, *e;
 	const char *p;
 
 	CHECK_OBJ_NOTNULL(sp, SESS_MAGIC);
-	va_start(ap, s);
 	u = WS_Reserve(sp->wrk->ws, 0);
 	e = b = sp->wrk->ws->f;
 	e += u;
 	p = s;
 	while (p != vrt_magic_string_end && b < e) {
 		for (; b < e && *p != '\0'; p++)
-			*b++ = toupper(*p);
+			if (up)
+				*b++ = toupper(*p);
+			else
+				*b++ = tolower(*p);
 		p = va_arg(ap, const char *);
 	}
 	if (b < e)
@@ -39,34 +40,27 @@
 }
 
 const char *
-vmod_tolower(struct sess *sp, const char *s, ...)
+vmod_toupper(struct sess *sp, const char *s, ...)
 {
+	const char *p;
 	va_list ap;
-	unsigned u;
-	char *b, *e;
+
+	CHECK_OBJ_NOTNULL(sp, SESS_MAGIC);
+	va_start(ap, s);
+	p = vmod_updown(sp, 1, s, ap);
+	va_end(ap);
+	return (p);
+}
+
+const char *
+vmod_tolower(struct sess *sp, const char *s, ...)
+{
 	const char *p;
+	va_list ap;
 
 	CHECK_OBJ_NOTNULL(sp, SESS_MAGIC);
 	va_start(ap, s);
-	u = WS_Reserve(sp->wrk->ws, 0);
-	e = b = sp->wrk->ws->f;
-	e += u;
-	p = s;
-	while (p != vrt_magic_string_end && b < e) {
-		for (; b < e && *p != '\0'; p++)
-			*b++ = tolower(*p);
-		p = va_arg(ap, const char *);
-	}
-	if (b < e)
-		*b = '\0';
-	b++;
-	if (b > e) {
-		WS_Release(sp->wrk->ws, 0);
-		return (NULL);
-	} else {
-		e = b;
-		b = sp->wrk->ws->f;
-		WS_Release(sp->wrk->ws, e - b);
-		return (b);
-	}
+	p = vmod_updown(sp, 0, s, ap);
+	va_end(ap);
+	return (p);
 }




More information about the varnish-commit mailing list