[master] 977d2705a Add VSB_QUOTE_ESCHEX to prefer \xXX to \oOOO quoting

Poul-Henning Kamp phk at FreeBSD.org
Mon Oct 22 07:50:20 UTC 2018


commit 977d2705a28d38ef3bd4a28f5cd8b4184704ae3a
Author: Poul-Henning Kamp <phk at FreeBSD.org>
Date:   Mon Oct 22 07:48:32 2018 +0000

    Add VSB_QUOTE_ESCHEX to prefer \xXX to \oOOO quoting
    
    Also quote \v as \v

diff --git a/include/vsb.h b/include/vsb.h
index d51088499..ea1ab4de8 100644
--- a/include/vsb.h
+++ b/include/vsb.h
@@ -81,6 +81,7 @@ void		 VSB_destroy(struct vsb **);
 #define VSB_QUOTE_HEX		4
 #define VSB_QUOTE_CSTR		8
 #define VSB_QUOTE_UNSAFE	16
+#define VSB_QUOTE_ESCHEX	32
 void		 VSB_quote_pfx(struct vsb *, const char*, const void *,
 		     int len, int how);
 void		 VSB_quote(struct vsb *, const void *, int len, int how);
diff --git a/lib/libvarnish/vsb.c b/lib/libvarnish/vsb.c
index b44323854..e1e6d1445 100644
--- a/lib/libvarnish/vsb.c
+++ b/lib/libvarnish/vsb.c
@@ -588,12 +588,17 @@ VSB_quote_pfx(struct vsb *s, const char *pfx, const void *v, int len, int how)
 		case '\t':
 			(void)VSB_cat(s, "\\t");
 			break;
+		case '\v':
+			(void)VSB_cat(s, "\\v");
+			break;
 		default:
 			/* XXX: Implement VSB_QUOTE_JSON */
 			if (isgraph(*q))
 				(void)VSB_putc(s, *q);
+			else if (how & VSB_QUOTE_ESCHEX)
+				(void)VSB_printf(s, "\\x%02x", *q & 0xff);
 			else
-				(void)VSB_printf(s, "\\%o", *q & 0xff);
+				(void)VSB_printf(s, "\\%03o", *q & 0xff);
 			break;
 		}
 	}


More information about the varnish-commit mailing list