r5165 - trunk/varnish-cache/lib/libvmod_std
phk at varnish-cache.org
phk at varnish-cache.org
Tue Aug 31 13:07:52 CEST 2010
Author: phk
Date: 2010-08-31 13:07:52 +0200 (Tue, 31 Aug 2010)
New Revision: 5165
Modified:
trunk/varnish-cache/lib/libvmod_std/vmod_std.c
Log:
Eliminate pointless code duplication
Modified: trunk/varnish-cache/lib/libvmod_std/vmod_std.c
===================================================================
--- trunk/varnish-cache/lib/libvmod_std/vmod_std.c 2010-08-31 11:03:59 UTC (rev 5164)
+++ trunk/varnish-cache/lib/libvmod_std/vmod_std.c 2010-08-31 11:07:52 UTC (rev 5165)
@@ -5,23 +5,24 @@
#include "vcc_if.h"
-const char *
-vmod_toupper(struct sess *sp, const char *s, ...)
+static const char *
+vmod_updown(struct sess *sp, int up, const char *s, va_list ap)
{
- va_list ap;
unsigned u;
char *b, *e;
const char *p;
CHECK_OBJ_NOTNULL(sp, SESS_MAGIC);
- va_start(ap, s);
u = WS_Reserve(sp->wrk->ws, 0);
e = b = sp->wrk->ws->f;
e += u;
p = s;
while (p != vrt_magic_string_end && b < e) {
for (; b < e && *p != '\0'; p++)
- *b++ = toupper(*p);
+ if (up)
+ *b++ = toupper(*p);
+ else
+ *b++ = tolower(*p);
p = va_arg(ap, const char *);
}
if (b < e)
@@ -39,34 +40,27 @@
}
const char *
-vmod_tolower(struct sess *sp, const char *s, ...)
+vmod_toupper(struct sess *sp, const char *s, ...)
{
+ const char *p;
va_list ap;
- unsigned u;
- char *b, *e;
+
+ CHECK_OBJ_NOTNULL(sp, SESS_MAGIC);
+ va_start(ap, s);
+ p = vmod_updown(sp, 1, s, ap);
+ va_end(ap);
+ return (p);
+}
+
+const char *
+vmod_tolower(struct sess *sp, const char *s, ...)
+{
const char *p;
+ va_list ap;
CHECK_OBJ_NOTNULL(sp, SESS_MAGIC);
va_start(ap, s);
- u = WS_Reserve(sp->wrk->ws, 0);
- e = b = sp->wrk->ws->f;
- e += u;
- p = s;
- while (p != vrt_magic_string_end && b < e) {
- for (; b < e && *p != '\0'; p++)
- *b++ = tolower(*p);
- p = va_arg(ap, const char *);
- }
- if (b < e)
- *b = '\0';
- b++;
- if (b > e) {
- WS_Release(sp->wrk->ws, 0);
- return (NULL);
- } else {
- e = b;
- b = sp->wrk->ws->f;
- WS_Release(sp->wrk->ws, e - b);
- return (b);
- }
+ p = vmod_updown(sp, 0, s, ap);
+ va_end(ap);
+ return (p);
}
More information about the varnish-commit
mailing list