r3515 - in trunk/varnish-cache: include lib/libvarnish

phk at projects.linpro.no phk at projects.linpro.no
Sun Jan 18 15:50:21 CET 2009


Author: phk
Date: 2009-01-18 15:50:20 +0100 (Sun, 18 Jan 2009)
New Revision: 3515

Modified:
   trunk/varnish-cache/include/vsb.h
   trunk/varnish-cache/lib/libvarnish/cli_common.c
   trunk/varnish-cache/lib/libvarnish/vsb.c
Log:
Move the body of cli_quote() to vsb_quote() and give it a, presently
unused, "how" argument flag.

We currently have far too many "quote this string properly" implementations
in varnish, hopefully, this will replace most of them.

Once this stabilizes, vsb_quote() will be contributed back to FreeBSD.




Modified: trunk/varnish-cache/include/vsb.h
===================================================================
--- trunk/varnish-cache/include/vsb.h	2009-01-18 14:26:32 UTC (rev 3514)
+++ trunk/varnish-cache/include/vsb.h	2009-01-18 14:50:20 UTC (rev 3515)
@@ -77,6 +77,7 @@
 int		 vsb_len(struct vsb *);
 int		 vsb_done(const struct vsb *);
 void		 vsb_delete(struct vsb *);
+void		 vsb_quote(struct vsb *s, const char *p, int how);
 #ifdef __cplusplus
 };
 #endif

Modified: trunk/varnish-cache/lib/libvarnish/cli_common.c
===================================================================
--- trunk/varnish-cache/lib/libvarnish/cli_common.c	2009-01-18 14:26:32 UTC (rev 3514)
+++ trunk/varnish-cache/lib/libvarnish/cli_common.c	2009-01-18 14:50:20 UTC (rev 3515)
@@ -72,48 +72,8 @@
 void
 cli_quote(struct cli *cli, const char *s)
 {
-	const char *q;
-	int quote = 0;
 
-	for (q = s; *q != '\0'; q++) {
-		if (!isgraph(*q) || *q == '"') {
-			quote++;
-			break;
-		}
-	}
-	if (!quote) {
-		(void)vsb_cat(cli->sb, s);
-		return;
-	}
-	(void)vsb_putc(cli->sb, '"');
-	for (q = s; *q != '\0'; q++) {
-		switch (*q) {
-		case ' ':
-			(void)vsb_putc(cli->sb, *q);
-			break;
-		case '\\':
-		case '"':
-			(void)vsb_putc(cli->sb, '\\');
-			(void)vsb_putc(cli->sb, *q);
-			break;
-		case '\n':
-			(void)vsb_cat(cli->sb, "\\n");
-			break;
-		case '\r':
-			(void)vsb_cat(cli->sb, "\\r");
-			break;
-		case '\t':
-			(void)vsb_cat(cli->sb, "\\t");
-			break;
-		default:
-			if (isgraph(*q))
-				(void)vsb_putc(cli->sb, *q);
-			else
-				(void)vsb_printf(cli->sb, "\\%o", *q);
-			break;
-		}
-	}
-	(void)vsb_putc(cli->sb, '"');
+	vsb_quote(cli->sb, s, 0);
 }
 
 void

Modified: trunk/varnish-cache/lib/libvarnish/vsb.c
===================================================================
--- trunk/varnish-cache/lib/libvarnish/vsb.c	2009-01-18 14:26:32 UTC (rev 3514)
+++ trunk/varnish-cache/lib/libvarnish/vsb.c	2009-01-18 14:50:20 UTC (rev 3515)
@@ -476,3 +476,55 @@
 
 	return(VSB_ISFINISHED(s));
 }
+
+/*
+ * Quote a string
+ */
+void
+vsb_quote(struct vsb *s, const char *p, int how)
+{
+	const char *q;
+	int quote = 0;
+
+	(void)how;	/* For future enhancements */
+
+	for (q = p; *q != '\0'; q++) {
+		if (!isgraph(*q) || *q == '"') {
+			quote++;
+			break;
+		}
+	}
+	if (!quote) {
+		(void)vsb_cat(s, p);
+		return;
+	}
+	(void)vsb_putc(s, '"');
+	for (q = p; *q != '\0'; q++) {
+		switch (*q) {
+		case ' ':
+			(void)vsb_putc(s, *q);
+			break;
+		case '\\':
+		case '"':
+			(void)vsb_putc(s, '\\');
+			(void)vsb_putc(s, *q);
+			break;
+		case '\n':
+			(void)vsb_cat(s, "\\n");
+			break;
+		case '\r':
+			(void)vsb_cat(s, "\\r");
+			break;
+		case '\t':
+			(void)vsb_cat(s, "\\t");
+			break;
+		default:
+			if (isgraph(*q))
+				(void)vsb_putc(s, *q);
+			else
+				(void)vsb_printf(s, "\\%o", *q);
+			break;
+		}
+	}
+	(void)vsb_putc(s, '"');
+}



More information about the varnish-commit mailing list