[master] e41fd1c Refactor a VCC error message
Poul-Henning Kamp
phk at FreeBSD.org
Fri May 20 11:01:07 CEST 2016
commit e41fd1cbce06129062900dc8e362ed2212c9a295
Author: Poul-Henning Kamp <phk at FreeBSD.org>
Date: Fri May 20 09:00:07 2016 +0000
Refactor a VCC error message
diff --git a/bin/varnishtest/tests/a00000.vtc b/bin/varnishtest/tests/a00000.vtc
index d3fe2fd..eb42f48 100644
--- a/bin/varnishtest/tests/a00000.vtc
+++ b/bin/varnishtest/tests/a00000.vtc
@@ -1,5 +1,6 @@
# the first token in a varnishtest file must be "varnishtest",
- # but whitespace and comments are fine
+ # but whitespace (SP)
+ # and (TAB) and comments are fine
varnishtest "basic default HTTP transactions"
diff --git a/bin/varnishtest/tests/d00006.vtc b/bin/varnishtest/tests/d00006.vtc
index e98d66a..195e8ba 100644
--- a/bin/varnishtest/tests/d00006.vtc
+++ b/bin/varnishtest/tests/d00006.vtc
@@ -22,7 +22,7 @@ server s4 {
txresp -body "4444"
} -start
-varnish v1 -errvcl {Names of VCL objects cannot contain '-'} {
+varnish v1 -errvcl {Name of VCL object, 'rr1-xx', contains illegal character '-'} {
import directors;
backend b1 { .host = "127.0.0.1"; .port = "8080";}
sub vcl_init {
diff --git a/bin/varnishtest/tests/v00020.vtc b/bin/varnishtest/tests/v00020.vtc
index a05b7fb..d8e4622 100644
--- a/bin/varnishtest/tests/v00020.vtc
+++ b/bin/varnishtest/tests/v00020.vtc
@@ -257,7 +257,7 @@ varnish v1 -vcl {
}
}
-varnish v1 -errvcl {Names of VCL sub's cannot contain '-'} {
+varnish v1 -errvcl {Name of function, 'foo-bar', contains illegal character '-'} {
backend b { .host = "127.0.0.1"; }
sub foo-bar {
}
@@ -291,7 +291,7 @@ varnish v1 -errvcl {'beresp.status': Not available in method 'vcl_recv'.} {
}
}
-varnish v1 -errvcl {Names of VCL acl's cannot contain '-'} {
+varnish v1 -errvcl {Name of ACL, 'foo-bar', contains illegal character '-'} {
backend b { .host = "127.0.0.1"; }
acl foo-bar {
}
diff --git a/bin/varnishtest/tests/v00047.vtc b/bin/varnishtest/tests/v00047.vtc
index 9ca2a6c..4f03588 100644
--- a/bin/varnishtest/tests/v00047.vtc
+++ b/bin/varnishtest/tests/v00047.vtc
@@ -1,10 +1,10 @@
varnishtest "Changing Last Modified in vcl_deliver"
-
+
server s1 {
rxreq
txresp -hdr "Last-Modified: Wed, 27 Apr 2016 14:00:00 GMT"
} -start
-
+
varnish v1 -vcl+backend {
sub vcl_deliver {
if (req.http.deliver == "modify") {
@@ -12,7 +12,7 @@ varnish v1 -vcl+backend {
}
}
} -start
-
+
client c1 {
txreq
rxresp
diff --git a/lib/libvcc/vcc_acl.c b/lib/libvcc/vcc_acl.c
index c6f57fb..18d967d 100644
--- a/lib/libvcc/vcc_acl.c
+++ b/lib/libvcc/vcc_acl.c
@@ -479,13 +479,8 @@ vcc_ParseAcl(struct vcc *tl)
vcc_NextToken(tl);
VTAILQ_INIT(&tl->acl);
- ExpectErr(tl, ID);
- if (!vcc_isCid(tl->t)) {
- VSB_printf(tl->sb,
- "Names of VCL acl's cannot contain '-'\n");
- vcc_ErrWhere(tl, tl->t);
- return;
- }
+ vcc_ExpectCid(tl, "ACL");
+ ERRCHK(tl);
an = tl->t;
vcc_NextToken(tl);
diff --git a/lib/libvcc/vcc_action.c b/lib/libvcc/vcc_action.c
index 425b993..2e1a2fb 100644
--- a/lib/libvcc/vcc_action.c
+++ b/lib/libvcc/vcc_action.c
@@ -156,12 +156,8 @@ parse_new(struct vcc *tl)
vcc_NextToken(tl);
ExpectErr(tl, ID);
- if (!vcc_isCid(tl->t)) {
- VSB_printf(tl->sb,
- "Names of VCL objects cannot contain '-'\n");
- vcc_ErrWhere(tl, tl->t);
- return;
- }
+ vcc_ExpectCid(tl, "VCL object");
+ ERRCHK(tl);
sy1 = VCC_FindSymbol(tl, tl->t, SYM_NONE);
if (sy1 != NULL) {
VSB_printf(tl->sb, "Object name '%.*s' already used.\n",
diff --git a/lib/libvcc/vcc_backend.c b/lib/libvcc/vcc_backend.c
index 6e9c498..abf454d 100644
--- a/lib/libvcc/vcc_backend.c
+++ b/lib/libvcc/vcc_backend.c
@@ -251,9 +251,9 @@ vcc_ParseProbe(struct vcc *tl)
struct token *t_probe;
char *p;
- vcc_NextToken(tl); /* ID: probe */
+ vcc_NextToken(tl); /* ID: probe */
- vcc_ExpectCid(tl); /* ID: name */
+ vcc_ExpectCid(tl, "backend probe"); /* ID: name */
ERRCHK(tl);
t_probe = tl->t;
vcc_NextToken(tl);
@@ -462,7 +462,7 @@ vcc_ParseBackend(struct vcc *tl)
t_first = tl->t;
vcc_NextToken(tl); /* ID: backend */
- vcc_ExpectCid(tl); /* ID: name */
+ vcc_ExpectCid(tl, "backend"); /* ID: name */
ERRCHK(tl);
if (tl->t->e - tl->t->b > MAX_BACKEND_NAME) {
diff --git a/lib/libvcc/vcc_compile.h b/lib/libvcc/vcc_compile.h
index da00d26..e9e72cc 100644
--- a/lib/libvcc/vcc_compile.h
+++ b/lib/libvcc/vcc_compile.h
@@ -54,7 +54,6 @@ struct sockaddr_storage;
#define isident1(c) (isalpha(c))
#define isident(c) (isalpha(c) || isdigit(c) || (c) == '_' || (c) == '-')
#define isvar(c) (isident(c) || (c) == '.')
-int vcc_isCid(const struct token *t);
unsigned vcl_fixed_token(const char *p, const char **q);
extern const char * const vcl_tnames[256];
void vcl_output_lang_h(struct vsb *sb);
@@ -333,7 +332,7 @@ void vcc_ErrWhere2(struct vcc *, const struct token *, const struct token *);
void vcc__Expect(struct vcc *tl, unsigned tok, unsigned line);
int vcc_IdIs(const struct token *t, const char *p);
-void vcc_ExpectCid(struct vcc *tl);
+void vcc_ExpectCid(struct vcc *tl, const char *what);
void vcc_Lexer(struct vcc *tl, struct source *sp);
void vcc_NextToken(struct vcc *tl);
void vcc__ErrInternal(struct vcc *tl, const char *func,
diff --git a/lib/libvcc/vcc_expr.c b/lib/libvcc/vcc_expr.c
index 1d0108c..7ad85ee 100644
--- a/lib/libvcc/vcc_expr.c
+++ b/lib/libvcc/vcc_expr.c
@@ -509,7 +509,7 @@ vcc_Eval_Handle(struct vcc *tl, struct expr **e, const struct symbol *sym,
*e = vcc_mk_expr(STRING, "\"%s\"", sym->name);
vcc_AddRef(tl, tl->t, sym->kind);
} else {
- vcc_ExpectCid(tl);
+ vcc_ExpectCid(tl, "handle");
vcc_AddRef(tl, tl->t, sym->kind);
*e = vcc_mk_expr(sym->fmt, "%s", sym->rname);
(*e)->constant = EXPR_VAR; /* XXX ? */
@@ -1196,7 +1196,7 @@ vcc_expr_cmp(struct vcc *tl, struct expr **e, enum var_type fmt)
(tl->t->tok == '~' || tl->t->tok == T_NOMATCH)) {
not = tl->t->tok == '~' ? "" : "!";
vcc_NextToken(tl);
- vcc_ExpectCid(tl);
+ vcc_ExpectCid(tl, "ACL");
vcc_AddRef(tl, tl->t, SYM_ACL);
bprintf(buf, "%smatch_acl_named_%.*s(ctx, \v1)",
not, PF(tl->t));
diff --git a/lib/libvcc/vcc_parse.c b/lib/libvcc/vcc_parse.c
index 811c90f..e6df4c8 100644
--- a/lib/libvcc/vcc_parse.c
+++ b/lib/libvcc/vcc_parse.c
@@ -211,13 +211,8 @@ vcc_ParseFunction(struct vcc *tl)
int m, i;
vcc_NextToken(tl);
- ExpectErr(tl, ID);
- if (!vcc_isCid(tl->t)) {
- VSB_printf(tl->sb,
- "Names of VCL sub's cannot contain '-'\n");
- vcc_ErrWhere(tl, tl->t);
- return;
- }
+ vcc_ExpectCid(tl, "function");
+ ERRCHK(tl);
m = IsMethod(tl->t);
if (m == -2) {
diff --git a/lib/libvcc/vcc_token.c b/lib/libvcc/vcc_token.c
index a8513f8..c4771bd 100644
--- a/lib/libvcc/vcc_token.c
+++ b/lib/libvcc/vcc_token.c
@@ -293,32 +293,23 @@ vcc_IdIs(const struct token *t, const char *p)
* Check that we have a C-identifier
*/
-int
-vcc_isCid(const struct token *t)
-{
- const char *q;
-
- assert(t->tok == ID);
- for (q = t->b; q < t->e; q++) {
- if (!isalnum(*q) && *q != '_')
- return (0);
- }
- return (1);
-}
-
void
-vcc_ExpectCid(struct vcc *tl)
+vcc_ExpectCid(struct vcc *tl, const char *what)
{
+ const char *q;
ExpectErr(tl, ID);
ERRCHK(tl);
- if (vcc_isCid(tl->t))
- return;
- VSB_printf(tl->sb, "Identifier ");
- vcc_ErrToken(tl, tl->t);
- VSB_printf(tl->sb,
- " contains illegal characters, use [0-9a-zA-Z_] only.\n");
- vcc_ErrWhere(tl, tl->t);
+ for (q = tl->t->b; q < tl->t->e; q++) {
+ if (!isalnum(*q) && *q != '_') {
+ VSB_printf(tl->sb, "Name of %s, ", what);
+ vcc_ErrToken(tl, tl->t);
+ VSB_printf(tl->sb,
+ ", contains illegal character '%c'\n", *q);
+ vcc_ErrWhere(tl, tl->t);
+ return;
+ }
+ }
}
/*--------------------------------------------------------------------
More information about the varnish-commit
mailing list