Mailing List Archive

r1618 - trunk/varnish-cache/lib/libvcl
Author: phk
Date: 2007-07-02 15:30:06 +0200 (Mon, 02 Jul 2007)
New Revision: 1618

Modified:
trunk/varnish-cache/lib/libvcl/vcc_action.c
Log:
Improve assignments a bit


Modified: trunk/varnish-cache/lib/libvcl/vcc_action.c
===================================================================
--- trunk/varnish-cache/lib/libvcl/vcc_action.c 2007-07-02 13:28:03 UTC (rev 1617)
+++ trunk/varnish-cache/lib/libvcl/vcc_action.c 2007-07-02 13:30:06 UTC (rev 1618)
@@ -94,6 +94,16 @@
/*--------------------------------------------------------------------*/

static void
+illegal_assignment(struct tokenlist *tl, const char *type)
+{
+
+ vsb_printf(tl->sb, "Invalid assignment operator ");
+ vcc_ErrToken(tl, tl->t);
+ vsb_printf(tl->sb,
+ " only '=' is legal for %s\n", type);
+}
+
+static void
parse_set(struct tokenlist *tl)
{
struct var *vp;
@@ -154,38 +164,31 @@
break;
#if 0 /* XXX: enable if we find a legit use */
case IP:
- if (tl->t->tok == '=') {
- vcc_NextToken(tl);
- u = vcc_vcc_IpVal(tl);
- Fb(tl, 0, "= %uU; /* %u.%u.%u.%u */\n",
- u,
- (u >> 24) & 0xff,
- (u >> 16) & 0xff,
- (u >> 8) & 0xff,
- u & 0xff);
- break;
+ if (tl->t->tok != '=') {
+ illegal_assignment(tl, "IP numbers");
+ return;
}
- vsb_printf(tl->sb, "Invalid assignment operator ");
- vcc_ErrToken(tl, tl->t);
- vsb_printf(tl->sb,
- " only '=' is legal for IP numbers\n");
- vcc_ErrWhere(tl, tl->t);
- return;
+ vcc_NextToken(tl);
+ u = vcc_vcc_IpVal(tl);
+ Fb(tl, 0, "= %uU; /* %u.%u.%u.%u */\n",
+ u,
+ (u >> 24) & 0xff,
+ (u >> 16) & 0xff,
+ (u >> 8) & 0xff,
+ u & 0xff);
+ break;
#endif
case BACKEND:
- if (tl->t->tok == '=') {
- vcc_NextToken(tl);
- vcc_AddRef(tl, tl->t, R_BACKEND);
- Fb(tl, 0, "VGC_backend_%.*s", PF(tl->t));
- vcc_NextToken(tl);
- Fb(tl, 0, ");\n");
- break;
+ if (tl->t->tok != '=') {
+ illegal_assignment(tl, "backend");
+ return;
}
- vsb_printf(tl->sb, "Invalid assignment operator ");
- vcc_ErrToken(tl, tl->t);
- vsb_printf(tl->sb,
- " only '=' is legal for backend\n");
- vcc_ErrWhere(tl, tl->t);
+ vcc_NextToken(tl);
+ vcc_AddRef(tl, tl->t, R_BACKEND);
+ Fb(tl, 0, "VGC_backend_%.*s", PF(tl->t));
+ vcc_NextToken(tl);
+ Fb(tl, 0, ");\n");
+ break;
return;
case HASH:
ExpectErr(tl, T_INCR);
@@ -193,6 +196,15 @@
vcc_StringVal(tl);
Fb(tl, 0, ");\n");
return;
+ case STRING:
+ if (tl->t->tok != '=') {
+ illegal_assignment(tl, "strings");
+ return;
+ }
+ vcc_NextToken(tl);
+ vcc_StringVal(tl);
+ Fb(tl, 0, ");\n");
+ break;
default:
vsb_printf(tl->sb,
"Assignments not possible for '%s'\n", vp->name);