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