[master] 7e14355f7 Convert std.toupper() and std.tolower() from STRING_LIST to STRANDS

Poul-Henning Kamp phk at FreeBSD.org
Tue Jun 18 07:26:09 UTC 2019


commit 7e14355f76dba7fe77043085bf7a08bbe20f8852
Author: Poul-Henning Kamp <phk at FreeBSD.org>
Date:   Tue Jun 18 06:59:30 2019 +0000

    Convert std.toupper() and std.tolower() from STRING_LIST to STRANDS

diff --git a/lib/libvmod_std/vmod.vcc b/lib/libvmod_std/vmod.vcc
index fafc8ae29..ee56f584e 100644
--- a/lib/libvmod_std/vmod.vcc
+++ b/lib/libvmod_std/vmod.vcc
@@ -84,7 +84,7 @@ Example::
 
 	set req.url = std.querysort(req.url);
 
-$Function STRING toupper(STRING_LIST s)
+$Function STRING toupper(STRANDS s)
 
 Converts the string *s* to uppercase.
 
@@ -92,7 +92,7 @@ Example::
 
 	set beresp.http.scream = std.toupper("yes!");
 
-$Function STRING tolower(STRING_LIST s)
+$Function STRING tolower(STRANDS s)
 
 Converts the string *s* to lowercase.
 
diff --git a/lib/libvmod_std/vmod_std.c b/lib/libvmod_std/vmod_std.c
index 11e5f8667..7d2871e57 100644
--- a/lib/libvmod_std/vmod_std.c
+++ b/lib/libvmod_std/vmod_std.c
@@ -65,26 +65,25 @@ vmod_set_ip_tos(VRT_CTX, VCL_INT tos)
 }
 
 static const char *
-vmod_updown(VRT_CTX, int up, const char *s, va_list ap)
+vmod_updown(VRT_CTX, int up, VCL_STRANDS s)
 {
 	unsigned u;
 	char *b, *e;
 	const char *p;
+	int i;
 
 	CHECK_OBJ_NOTNULL(ctx, VRT_CTX_MAGIC);
 	u = WS_ReserveAll(ctx->ws);
 	e = b = ctx->ws->f;
 	e += u;
-	p = s;
-	while (p != vrt_magic_string_end && b < e) {
-		if (p != NULL) {
-			for (; b < e && *p != '\0'; p++)
-				if (up)
-					*b++ = (char)toupper(*p);
-				else
-					*b++ = (char)tolower(*p);
+	for (i = 0; i < s->n && b < e; i++) {
+		p = s->p[i];
+		while (p != NULL && *p != '\0' && b < e) {
+			if (up)
+				*b++ = (char)toupper(*p++);
+			else
+				*b++ = (char)tolower(*p++);
 		}
-		p = va_arg(ap, const char *);
 	}
 	if (b < e)
 		*b = '\0';
@@ -102,29 +101,19 @@ vmod_updown(VRT_CTX, int up, const char *s, va_list ap)
 }
 
 VCL_STRING v_matchproto_(td_std_toupper)
-vmod_toupper(VRT_CTX, const char *s, ...)
+vmod_toupper(VRT_CTX, VCL_STRANDS s)
 {
-	const char *p;
-	va_list ap;
 
 	CHECK_OBJ_NOTNULL(ctx, VRT_CTX_MAGIC);
-	va_start(ap, s);
-	p = vmod_updown(ctx, 1, s, ap);
-	va_end(ap);
-	return (p);
+	return (vmod_updown(ctx, 1, s));
 }
 
 VCL_STRING v_matchproto_(td_std_tolower)
-vmod_tolower(VRT_CTX, const char *s, ...)
+vmod_tolower(VRT_CTX, VCL_STRANDS s)
 {
-	const char *p;
-	va_list ap;
 
 	CHECK_OBJ_NOTNULL(ctx, VRT_CTX_MAGIC);
-	va_start(ap, s);
-	p = vmod_updown(ctx, 0, s, ap);
-	va_end(ap);
-	return (p);
+	return (vmod_updown(ctx, 0, s));
 }
 
 VCL_REAL v_matchproto_(td_std_random)


More information about the varnish-commit mailing list