[master] d4f532d Some vsb polishing that will be pushed back to FreeBSD at a later date.
Poul-Henning Kamp
phk at varnish-cache.org
Mon Apr 4 16:37:49 CEST 2011
commit d4f532d22ba78993e49877ca7acadbe53d8aef73
Author: Poul-Henning Kamp <phk at FreeBSD.org>
Date: Mon Apr 4 14:37:24 2011 +0000
Some vsb polishing that will be pushed back to FreeBSD at a later date.
diff --git a/include/vsb.h b/include/vsb.h
index da4a1e0..278dcb5 100644
--- a/include/vsb.h
+++ b/include/vsb.h
@@ -72,7 +72,7 @@ int vsb_printf(struct vsb *, const char *, ...)
int vsb_vprintf(struct vsb *, const char *, va_list)
/* __printflike(2, 0) */;
#endif
-int vsb_putc(struct vsb *, int);
+int vsb_putc(struct vsb *, char);
int vsb_trim(struct vsb *);
int vsb_error(const struct vsb *);
int vsb_finish(struct vsb *);
diff --git a/lib/libvarnish/vsb.c b/lib/libvarnish/vsb.c
index bfe9735..b7ba1e3 100644
--- a/lib/libvarnish/vsb.c
+++ b/lib/libvarnish/vsb.c
@@ -44,9 +44,7 @@ SVNID("$Id$")
#define KASSERT(e, m) assert(e)
#define SBMALLOC(size) malloc(size)
#define SBFREE(buf) free(buf)
-#define min(x,y) (x < y ? x : y)
-// #define bzero(x,y) memset(x,0,y)
#define roundup2(x, y) (((x)+((y)-1))&(~((y)-1))) /* if y is powers of two */
#define VSB_MAGIC 0x4a82dd8a
@@ -151,51 +149,62 @@ vsb_extend(struct vsb *s, int addlen)
}
/*
- * Initialize an vsb.
+ * Initialize the internals of an vsb.
* If buf is non-NULL, it points to a static or already-allocated string
* big enough to hold at least length characters.
*/
-struct vsb *
-vsb_new(struct vsb *s, char *buf, int length, int flags)
+static struct vsb *
+vsb_newbuf(struct vsb *s, char *buf, int length, int flags)
{
- KASSERT(length >= 0,
- ("attempt to create an vsb of negative length (%d)", length));
- KASSERT((flags & ~VSB_USRFLAGMSK) == 0,
- ("%s called with invalid flags", __func__));
-
- flags &= VSB_USRFLAGMSK;
- if (s == NULL) {
- s = SBMALLOC(sizeof(*s));
- if (s == NULL)
- return (NULL);
- bzero(s, sizeof(*s));
- s->s_flags = flags;
- VSB_SETFLAG(s, VSB_DYNSTRUCT);
- } else {
- bzero(s, sizeof(*s));
- s->s_flags = flags;
- }
-
+ memset(s, 0, sizeof(*s));
s->s_magic = VSB_MAGIC;
- s->s_size = length;
+ s->s_flags = flags;
if (buf != NULL) {
+ KASSERT(length > 0,
+ ("zero or negative length (%d)", length));
+ s->s_size = length;
s->s_buf = buf;
return (s);
}
+ s->s_size = length;
if ((flags & VSB_AUTOEXTEND) != 0)
s->s_size = vsb_extendsize(s->s_size);
s->s_buf = SBMALLOC(s->s_size);
- if (s->s_buf == NULL) {
- if (VSB_ISDYNSTRUCT(s))
- SBFREE(s);
+ if (s->s_buf == NULL)
return (NULL);
- }
VSB_SETFLAG(s, VSB_DYNAMIC);
return (s);
}
/*
+ * Initialize an vsb.
+ */
+struct vsb *
+vsb_new(struct vsb *s, char *buf, int length, int flags)
+{
+
+ KASSERT(length >= 0,
+ ("attempt to create an vsb of negative length (%d)", length));
+ KASSERT((flags & ~VSB_USRFLAGMSK) == 0,
+ ("%s called with invalid flags", __func__));
+
+ flags &= VSB_USRFLAGMSK;
+ if (s != NULL)
+ return (vsb_newbuf(s, buf, length, flags));
+
+ s = SBMALLOC(sizeof(*s));
+ if (s == NULL)
+ return (NULL);
+ if (vsb_newbuf(s, buf, length, flags) == NULL) {
+ SBFREE(s);
+ return (NULL);
+ }
+ VSB_SETFLAG(s, VSB_DYNSTRUCT);
+ return (s);
+}
+
+/*
* Clear an vsb and reset its position.
*/
void
@@ -238,7 +247,7 @@ vsb_setpos(struct vsb *s, int pos)
* buffer and marking overflow.
*/
static void
-vsb_put_byte(int c, struct vsb *s)
+vsb_put_byte(struct vsb *s, char c)
{
assert_vsb_integrity(s);
@@ -271,7 +280,7 @@ vsb_bcat(struct vsb *s, const void *buf, size_t len)
if (s->s_error != 0)
return (-1);
for (; str < end; str++) {
- vsb_put_byte(*str, s);
+ vsb_put_byte(s, *str);
if (s->s_error != 0)
return (-1);
}
@@ -306,7 +315,7 @@ vsb_cat(struct vsb *s, const char *str)
return (-1);
while (*str != '\0') {
- vsb_put_byte(*str++, s);
+ vsb_put_byte(s, *str++);
if (s->s_error != 0)
return (-1);
}
@@ -395,10 +404,10 @@ vsb_printf(struct vsb *s, const char *fmt, ...)
* Append a character to an vsb.
*/
int
-vsb_putc(struct vsb *s, int c)
+vsb_putc(struct vsb *s, char c)
{
- vsb_put_byte(c, s);
+ vsb_put_byte(s, c);
if (s->s_error != 0)
return (-1);
return (0);
@@ -493,7 +502,7 @@ vsb_delete(struct vsb *s)
if (VSB_ISDYNAMIC(s))
SBFREE(s->s_buf);
isdyn = VSB_ISDYNSTRUCT(s);
- bzero(s, sizeof(*s));
+ memset(s, 0, sizeof(*s));
if (isdyn)
SBFREE(s);
}
More information about the varnish-commit
mailing list