[master] 928e2e8d2 vte: Simplify format loop with strcspn()

Dridi Boukelmoune dridi.boukelmoune at gmail.com
Mon Aug 21 20:52:09 UTC 2023


commit 928e2e8d2c10282913b350d1711da9c76af7fcf8
Author: Dridi Boukelmoune <dridi.boukelmoune at gmail.com>
Date:   Thu Aug 17 17:45:04 2023 +0200

    vte: Simplify format loop with strcspn()

diff --git a/lib/libvarnish/vte.c b/lib/libvarnish/vte.c
index b479b37ed..efccd97ac 100644
--- a/lib/libvarnish/vte.c
+++ b/lib/libvarnish/vte.c
@@ -254,28 +254,24 @@ VTE_format(struct vte *vte, VTE_format_f *func, void *priv)
 	AN(p);
 	q = p;
 
-	for (fno = fsz = 0; *p != '\0'; p++) {
-		if (fsz == 0 && fno == 0 && *p == ' ') {
-			p = strchr(p, '\n');
-			if (p == NULL) {
-				p = q + 1; // trigger final flush
-				break;
-			}
-			continue;
-		}
+	fno = 0;
+	while (*p != 0) {
+		if (fno == 0 && *p == ' ')
+			fsz = strcspn(p, "\n");
+		else
+			fsz = strcspn(p, "\t\n");
+		p += fsz;
 		if (*p == '\t') {
 			assert(vte->f_maxsz[fno] + nsp > fsz);
 			VTE_FORMAT(func, priv, "%.*s%*s",
 			    (int)(p - q), q,
 			    vte->f_maxsz[fno] + nsp - fsz, "");
 			fno++;
-			fsz = 0;
-			q = p + 1;
+			q = ++p;
 		} else if (*p == '\n') {
 			fno = 0;
-			fsz = 0;
-		} else
-			fsz++;
+			p++;
+		}
 	}
 
 	if (q < p)


More information about the varnish-commit mailing list