r3704 - in branches/2.0/varnish-cache: include lib/libvarnish

tfheen at projects.linpro.no tfheen at projects.linpro.no
Mon Feb 9 13:43:02 CET 2009


Author: tfheen
Date: 2009-02-09 13:43:02 +0100 (Mon, 09 Feb 2009)
New Revision: 3704

Modified:
   branches/2.0/varnish-cache/include/vsb.h
   branches/2.0/varnish-cache/lib/libvarnish/cli_common.c
   branches/2.0/varnish-cache/lib/libvarnish/vsb.c
Log:
Merge r3515:

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: branches/2.0/varnish-cache/include/vsb.h
===================================================================
--- branches/2.0/varnish-cache/include/vsb.h	2009-02-09 12:39:31 UTC (rev 3703)
+++ branches/2.0/varnish-cache/include/vsb.h	2009-02-09 12:43:02 UTC (rev 3704)
@@ -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: branches/2.0/varnish-cache/lib/libvarnish/cli_common.c
===================================================================
--- branches/2.0/varnish-cache/lib/libvarnish/cli_common.c	2009-02-09 12:39:31 UTC (rev 3703)
+++ branches/2.0/varnish-cache/lib/libvarnish/cli_common.c	2009-02-09 12:43:02 UTC (rev 3704)
@@ -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: branches/2.0/varnish-cache/lib/libvarnish/vsb.c
===================================================================
--- branches/2.0/varnish-cache/lib/libvarnish/vsb.c	2009-02-09 12:39:31 UTC (rev 3703)
+++ branches/2.0/varnish-cache/lib/libvarnish/vsb.c	2009-02-09 12:43:02 UTC (rev 3704)
@@ -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