这篇教程C++ vcc_ErrWhere函数代码示例写得很实用,希望能帮到您。
本文整理汇总了C++中vcc_ErrWhere函数的典型用法代码示例。如果您正苦于以下问题:C++ vcc_ErrWhere函数的具体用法?C++ vcc_ErrWhere怎么用?C++ vcc_ErrWhere使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。 在下文中一共展示了vcc_ErrWhere函数的30个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。 示例1: vcc_ByteValstatic voidvcc_ByteVal(struct vcc *tl, double *d){ double v, sc; v = vcc_DoubleVal(tl); ERRCHK(tl); if (tl->t->tok != ID) { VSB_printf(tl->sb, "Expected BYTES unit (B, KB, MB...) got "); vcc_ErrToken(tl, tl->t); VSB_printf(tl->sb, "/n"); vcc_ErrWhere(tl, tl->t); return; } if (vcc_IdIs(tl->t, "B")) sc = 1.; else if (vcc_IdIs(tl->t, "KB")) sc = 1024.; else if (vcc_IdIs(tl->t, "MB")) sc = 1024. * 1024.; else if (vcc_IdIs(tl->t, "GB")) sc = 1024. * 1024. * 1024.; else if (vcc_IdIs(tl->t, "TB")) sc = 1024. * 1024. * 1024. * 1024.; else { VSB_printf(tl->sb, "Unknown BYTES unit "); vcc_ErrToken(tl, tl->t); VSB_printf(tl->sb, ". Legal are 'B', 'KB', 'MB', 'GB' and 'TB'/n"); vcc_ErrWhere(tl, tl->t); return; } vcc_NextToken(tl); *d = v * sc;}
开发者ID:BabyOnlineSG,项目名称:pkg-varnish,代码行数:35,
示例2: vcc_Compoundstatic voidvcc_Compound(struct vcc *tl){ int i; SkipToken(tl, '{'); Fb(tl, 1, "{/n"); tl->indent += INDENT; C(tl, ";"); while (1) { ERRCHK(tl); switch (tl->t->tok) { case '{': vcc_Compound(tl); break; case '}': vcc_NextToken(tl); tl->indent -= INDENT; Fb(tl, 1, "}/n"); return; case CSRC: if (tl->allow_inline_c) { Fb(tl, 1, "%.*s/n", (int) (tl->t->e - (tl->t->b + 2)), tl->t->b + 1); vcc_NextToken(tl); } else { VSB_printf(tl->sb, "Inline-C not allowed/n"); vcc_ErrWhere(tl, tl->t); } break; case EOI: VSB_printf(tl->sb, "End of input while in compound statement/n"); tl->err = 1; return; case ID: if (vcc_IdIs(tl->t, "if")) { vcc_IfStmt(tl); break; } else { i = vcc_ParseAction(tl); ERRCHK(tl); if (i) { SkipToken(tl, ';'); break; } } /* FALLTHROUGH */ default: /* We deliberately do not mention inline C */ VSB_printf(tl->sb, "Expected an action, 'if', '{' or '}'/n"); vcc_ErrWhere(tl, tl->t); return; } }}
开发者ID:varnishcache,项目名称:varnish-cache,代码行数:59,
示例3: parse_returnstatic voidparse_return(struct vcc *tl){ unsigned hand; const char *h; vcc_NextToken(tl); ExpectErr(tl, '('); vcc_NextToken(tl); ExpectErr(tl, ID); hand = VCL_RET_MAX; h = NULL;#define VCL_RET_MAC(l, U, B) / if (vcc_IdIs(tl->t, #l)) { / hand = VCL_RET_ ## U; / h = #U; / }#include "tbl/vcl_returns.h"#undef VCL_RET_MAC if (h == NULL) { VSB_printf(tl->sb, "Expected return action name./n"); vcc_ErrWhere(tl, tl->t); ERRCHK(tl); } assert(hand < VCL_RET_MAX); vcc_ProcAction(tl->curproc, hand, tl->t); vcc_NextToken(tl); if (tl->t->tok == '(') { if (hand == VCL_RET_SYNTH) parse_return_synth(tl); else if (hand == VCL_RET_VCL) parse_return_vcl(tl); else if (hand == VCL_RET_PASS) parse_return_pass(tl); else { VSB_printf(tl->sb, "Arguments not allowed./n"); vcc_ErrWhere(tl, tl->t); } } else { if (hand == VCL_RET_SYNTH || hand == VCL_RET_VCL) { VSB_printf(tl->sb, "Missing argument./n"); vcc_ErrWhere(tl, tl->t); } } ERRCHK(tl); Fb(tl, 1, "VRT_handling(ctx, VCL_RET_%s);/n", h); Fb(tl, 1, "return (1);/n"); ExpectErr(tl, ')'); vcc_NextToken(tl);}
开发者ID:varnishcache,项目名称:varnish-cache,代码行数:52,
示例4: vcc_Redefstatic voidvcc_Redef(struct vcc *tl, const char *redef, struct token **t_did, struct token *t_field){ if (*t_did != NULL) { VSB_printf(tl->sb, "%s redefinition at:/n", redef); vcc_ErrWhere(tl, t_field); VSB_printf(tl->sb, "Previous definition:/n"); vcc_ErrWhere(tl, *t_did); return; } *t_did = t_field;}
开发者ID:fgsch,项目名称:varnish-cache,代码行数:13,
示例5: vcc_Parsevoidvcc_Parse(struct vcc *tl){ struct toplev *tp; while (tl->t->tok != EOI) { ERRCHK(tl); switch (tl->t->tok) { case CSRC: if (tl->allow_inline_c) { Fc(tl, 0, "%.*s/n", (int) (tl->t->e - (tl->t->b + 4)), tl->t->b + 2); vcc_NextToken(tl); } else { VSB_printf(tl->sb, "Inline-C not allowed/n"); vcc_ErrWhere(tl, tl->t); } break; case EOI: break; case ID: for (tp = toplev; tp->name != NULL; tp++) { if (!vcc_IdIs(tl->t, tp->name)) continue; tp->func(tl); break; } if (tp->name != NULL) break; /* FALLTHROUGH */ default: /* We deliberately do not mention inline-C */ VSB_printf(tl->sb, "Expected one of/n/t"); for (tp = toplev; tp->name != NULL; tp++) { if (tp[1].name == NULL) VSB_printf(tl->sb, " or "); VSB_printf(tl->sb, "'%s'", tp->name); if (tp[1].name != NULL) VSB_printf(tl->sb, ", "); } VSB_printf(tl->sb, "/nFound: "); vcc_ErrToken(tl, tl->t); VSB_printf(tl->sb, " at/n"); vcc_ErrWhere(tl, tl->t); return; } }}
开发者ID:Morningstar,项目名称:Varnish-Cache,代码行数:50,
示例6: vcc_ParseBackendvoidvcc_ParseBackend(struct vcc *tl){ struct token *t_first, *t_be; struct symbol *sym; const char *dn; tl->ndirector++; t_first = tl->t; SkipToken(tl, ID); /* ID: backend */ vcc_ExpectVid(tl, "backend"); /* ID: name */ ERRCHK(tl); t_be = tl->t; if (vcc_IdIs(tl->t, "default")) { if (tl->first_director != NULL) { tl->first_director->noref = 0; tl->first_director = NULL; tl->default_director = NULL; } if (tl->default_director != NULL) { VSB_printf(tl->sb, "Only one default director possible./n"); vcc_ErrWhere(tl, t_first); return; } vcc_NextToken(tl); dn = "vgc_backend_default"; tl->default_director = dn; } else { sym = VCC_HandleSymbol(tl, BACKEND, "vgc_backend"); ERRCHK(tl); dn = sym->rname; if (tl->default_director == NULL) { tl->first_director = sym; tl->default_director = dn; sym->noref = 1; } } Fh(tl, 0, "/nstatic VCL_BACKEND %s;/n", dn); vcc_ParseHostDef(tl, t_be, dn); if (tl->err) { VSB_printf(tl->sb, "/nIn %.*s specification starting at:/n", PF(t_first)); vcc_ErrWhere(tl, t_first); return; }}
开发者ID:fgsch,项目名称:varnish-cache,代码行数:49,
示例7: vcc_ProbeRedefstatic voidvcc_ProbeRedef(struct vcc *tl, struct token **t_did, struct token *t_field){ /* .url and .request are mutually exclusive */ if (*t_did != NULL) { VSB_printf(tl->sb, "Probe request redefinition at:/n"); vcc_ErrWhere(tl, t_field); VSB_printf(tl->sb, "Previous definition:/n"); vcc_ErrWhere(tl, *t_did); return; } *t_did = t_field;}
开发者ID:kivikakk,项目名称:varnish-cache,代码行数:15,
示例8: parse_returnstatic voidparse_return(struct tokenlist *tl){ int retval = 0; vcc_NextToken(tl); ExpectErr(tl, '('); vcc_NextToken(tl); ExpectErr(tl, ID);#define VCL_RET_MAC(l, U) / do { / if (vcc_IdIs(tl->t, #l)) { / Fb(tl, 1, "VRT_done(sp, VCL_RET_" #U ");/n"); / vcc_ProcAction(tl->curproc, VCL_RET_##U, tl->t);/ retval = 1; / } / } while (0);#include "vcl_returns.h"#undef VCL_RET_MAC if (!retval) { vsb_printf(tl->sb, "Expected return action name./n"); vcc_ErrWhere(tl, tl->t); ERRCHK(tl); } vcc_NextToken(tl); ExpectErr(tl, ')'); vcc_NextToken(tl);}
开发者ID:smallvil,项目名称:Cache-Terminator,代码行数:29,
示例9: vcc_regexpconst char *vcc_regexp(struct vcc *tl){ char buf[BUFSIZ], *p; vre_t *t; const char *error; int erroroffset; struct inifin *ifp; Expect(tl, CSTR); if (tl->err) return (NULL); t = VRE_compile(tl->t->dec, 0, &error, &erroroffset); if (t == NULL) { VSB_printf(tl->sb, "Regexp compilation error:/n/n%s/n/n", error); vcc_ErrWhere(tl, tl->t); return (NULL); } VRE_free(&t); bprintf(buf, "VGC_re_%u", tl->unique++); p = TlAlloc(tl, strlen(buf) + 1); strcpy(p, buf); Fh(tl, 0, "static void *%s;/n", buf); ifp = New_IniFin(tl); VSB_printf(ifp->ini, "/tVRT_re_init(&%s, ",buf); EncToken(ifp->ini, tl->t); VSB_printf(ifp->ini, ");"); VSB_printf(ifp->fin, "/t/tVRT_re_fini(%s);", buf); vcc_NextToken(tl); return (p);}
开发者ID:slimhazard,项目名称:varnish-cache,代码行数:33,
示例10: vcc_TimeUnitstatic doublevcc_TimeUnit(struct vcc *tl){ double sc = 1.0; assert(tl->t->tok == ID); if (vcc_IdIs(tl->t, "ms")) sc = 1e-3; else if (vcc_IdIs(tl->t, "s")) sc = 1.0; else if (vcc_IdIs(tl->t, "m")) sc = 60.0; else if (vcc_IdIs(tl->t, "h")) sc = 60.0 * 60.0; else if (vcc_IdIs(tl->t, "d")) sc = 60.0 * 60.0 * 24.0; else if (vcc_IdIs(tl->t, "w")) sc = 60.0 * 60.0 * 24.0 * 7.0; else { VSB_printf(tl->sb, "Unknown time unit "); vcc_ErrToken(tl, tl->t); VSB_printf(tl->sb, ". Legal are 's', 'm', 'h' and 'd'/n"); vcc_ErrWhere(tl, tl->t); return (1.0); } vcc_NextToken(tl); return (sc);}
开发者ID:BabyOnlineSG,项目名称:pkg-varnish,代码行数:28,
示例11: vcc_ParseLeastBusyDirectorvoidvcc_ParseLeastBusyDirector(struct tokenlist *tl, const struct token *t_policy, const struct token *t_dir){ struct token *t_field, *t_be; int nbh, nelem; struct fld_spec *fs; const char *first; fs = vcc_FldSpec(tl, "!backend", NULL); Fc(tl, 0, "/nstatic const struct vrt_dir_least_busy_entry " "vdrre_%.*s[] = {/n", PF(t_dir)); for (nelem = 0; tl->t->tok != '}'; nelem++) { /* List of members */ first = ""; t_be = tl->t; vcc_ResetFldSpec(fs); nbh = -1; ExpectErr(tl, '{'); vcc_NextToken(tl); Fc(tl, 0, "/t{"); while (tl->t->tok != '}') { /* Member fields */ vcc_IsField(tl, &t_field, fs); ERRCHK(tl); if (vcc_IdIs(t_field, "backend")) { vcc_ParseBackendHost(tl, &nbh, t_dir, t_policy, nelem); Fc(tl, 0, "%s .host = &bh_%d", first, nbh); ERRCHK(tl); } else { ErrInternal(tl); } first = ", "; } vcc_FieldsOk(tl, fs); if (tl->err) { vsb_printf(tl->sb, "/nIn member host specification starting at:/n"); vcc_ErrWhere(tl, t_be); return; } Fc(tl, 0, " },/n"); vcc_NextToken(tl); } Fc(tl, 0, "};/n"); Fc(tl, 0, "/nstatic const struct vrt_dir_least_busy vdrr_%.*s = {/n", PF(t_dir)); Fc(tl, 0, "/t.name = /"%.*s/",/n", PF(t_dir)); Fc(tl, 0, "/t.nmember = %d,/n", nelem); Fc(tl, 0, "/t.members = vdrre_%.*s,/n", PF(t_dir)); Fc(tl, 0, "};/n"); Fi(tl, 0, "/tVRT_init_dir_least_busy(" "cli, &VGC_backend_%.*s , &vdrr_%.*s);/n", PF(t_dir), PF(t_dir)); Ff(tl, 0, "/tVRT_fini_dir(cli, VGC_backend_%.*s);/n", PF(t_dir));}
开发者ID:attisan,项目名称:Varnish-Least-Busy-Director,代码行数:59,
示例12: vcc_ParseBackendvoidvcc_ParseBackend(struct vcc *tl){ struct token *t_first, *t_be; struct symbol *sym; char vgcname[MAX_BACKEND_NAME + 20]; t_first = tl->t; vcc_NextToken(tl); /* ID: backend */ vcc_ExpectCid(tl); /* ID: name */ ERRCHK(tl); if (tl->t->e - tl->t->b > MAX_BACKEND_NAME) { VSB_printf(tl->sb, "Name of %.*s too long (max %d, is %zu):/n", PF(t_first), MAX_BACKEND_NAME, (size_t)(tl->t->e - tl->t->b)); vcc_ErrWhere(tl, tl->t); return; } t_be = tl->t; vcc_NextToken(tl); sprintf(vgcname, "vgc_backend_%.*s", PF(t_be)); Fh(tl, 0, "/nstatic struct director *%s;/n", vgcname); sym = VCC_HandleSymbol(tl, t_be, BACKEND, "%s", vgcname); ERRCHK(tl); vcc_ParseHostDef(tl, t_be, vgcname); ERRCHK(tl); if (tl->err) { VSB_printf(tl->sb, "/nIn %.*s specification starting at:/n", PF(t_first)); vcc_ErrWhere(tl, t_first); return; } if (tl->default_director == NULL || vcc_IdIs(t_be, "default")) { tl->default_director = sym->rname; tl->t_default_director = t_be; }}
开发者ID:kivikakk,项目名称:varnish-cache,代码行数:46,
示例13: parse_new_syntaxstatic voidparse_new_syntax(struct tokenlist *tl){ vsb_printf(tl->sb, "Please change /"%.*s/" to /"return(%.*s)/"./n", PF(tl->t), PF(tl->t)); vcc_ErrWhere(tl, tl->t);}
开发者ID:smallvil,项目名称:Cache-Terminator,代码行数:8,
示例14: vcc_ParseDirectorvoidvcc_ParseDirector(struct vcc *tl){ struct token *t_first; int isfirst; t_first = tl->t; vcc_NextToken(tl); /* ID: director | backend */ vcc_ExpectCid(tl); /* ID: name */ ERRCHK(tl); if (tl->t->e - tl->t->b > 64) { VSB_printf(tl->sb, "Name of %.*s too long (max 64, is %zu):/n", PF(t_first), (size_t)(tl->t->e - tl->t->b)); vcc_ErrWhere(tl, tl->t); return; } tl->t_dir = tl->t; vcc_NextToken(tl); isfirst = tl->ndirector; if (vcc_IdIs(t_first, "backend")) { vcc_ParseSimpleDirector(tl); } else { VSB_printf(tl->sb, "/ndirectors are now in VMOD.directors/n"); vcc_ErrWhere(tl, t_first); return; } if (tl->err) { VSB_printf(tl->sb, "/nIn %.*s specification starting at:/n", PF(t_first)); vcc_ErrWhere(tl, t_first); return; } if (isfirst == 1 || vcc_IdIs(tl->t_dir, "default")) { tl->defaultdir = tl->ndirector - 1; tl->t_defaultdir = tl->t_dir; } tl->t_dir = NULL;}
开发者ID:conmame,项目名称:Varnish-Cache,代码行数:45,
示例15: check_writebitstatic voidcheck_writebit(struct tokenlist *tl, const struct var *vp){ if (vp->access == V_RW || vp->access == V_WO) return; vsb_printf(tl->sb, "Variable %.*s cannot be modified./n", PF(tl->t)); vcc_ErrWhere(tl, tl->t);}
开发者ID:smallvil,项目名称:Cache-Terminator,代码行数:9,
示例16: vcc_decstrstatic intvcc_decstr(struct tokenlist *tl){ const char *p; char *q; unsigned char u; assert(tl->t->tok == CSTR); tl->t->dec = TlAlloc(tl, (tl->t->e - tl->t->b) - 1); assert(tl->t->dec != NULL); q = tl->t->dec; for (p = tl->t->b + 1; p < tl->t->e - 1; ) { if (*p != '%') { *q++ = *p++; continue; } if (p + 4 > tl->t->e) { vcc_AddToken(tl, CSTR, p, tl->t->e); vsb_printf(tl->sb, "Incomplete %%xx escape/n"); vcc_ErrWhere(tl, tl->t); return(1); } if (!isxdigit(p[1]) || !isxdigit(p[2])) { vcc_AddToken(tl, CSTR, p, p + 3); vsb_printf(tl->sb, "Invalid hex char in %%xx escape/n"); vcc_ErrWhere(tl, tl->t); return(1); } u = (vcc_xdig(p[1]) * 16 + vcc_xdig(p[2])) & 0xff; if (!isgraph(u)) { vcc_AddToken(tl, CSTR, p, p + 3); vsb_printf(tl->sb, "Control character in %%xx escape/n"); vcc_ErrWhere(tl, tl->t); return(1); } *q++ = u; p += 3; } *q++ = '/0'; return (0);}
开发者ID:smallvil,项目名称:Cache-Terminator,代码行数:44,
示例17: vcc__Expectvoidvcc__Expect(struct tokenlist *tl, unsigned tok, int line){ if (tl->t->tok == tok) return; vsb_printf(tl->sb, "Expected %s got ", vcl_tnames[tok]); vcc_ErrToken(tl, tl->t); vsb_printf(tl->sb, "/n(program line %u), at/n", line); vcc_ErrWhere(tl, tl->t);}
开发者ID:smallvil,项目名称:Cache-Terminator,代码行数:10,
示例18: vcc_ParseRoundRobinDirectorvoidvcc_ParseRoundRobinDirector(struct vcc *tl){ struct token *t_field, *t_be; int nelem; struct fld_spec *fs; const char *first; char *p; fs = vcc_FldSpec(tl, "!backend", NULL); Fc(tl, 0, "/nstatic const struct vrt_dir_round_robin_entry " "vdrre_%.*s[] = {/n", PF(tl->t_dir)); for (nelem = 0; tl->t->tok != '}'; nelem++) { /* List of members */ first = ""; t_be = tl->t; vcc_ResetFldSpec(fs); SkipToken(tl, '{'); Fc(tl, 0, "/t{"); while (tl->t->tok != '}') { /* Member fields */ vcc_IsField(tl, &t_field, fs); ERRCHK(tl); if (vcc_IdIs(t_field, "backend")) { vcc_ParseBackendHost(tl, nelem, &p); ERRCHK(tl); AN(p); Fc(tl, 0, "%s .host = VGC_backend_%s", first, p); } else { ErrInternal(tl); } first = ", "; } vcc_FieldsOk(tl, fs); if (tl->err) { VSB_printf(tl->sb, "/nIn member host specification starting at:/n"); vcc_ErrWhere(tl, t_be); return; } Fc(tl, 0, " },/n"); vcc_NextToken(tl); } Fc(tl, 0, "};/n"); Fc(tl, 0, "/nstatic const struct vrt_dir_round_robin vgc_dir_priv_%.*s = {/n", PF(tl->t_dir)); Fc(tl, 0, "/t.name = /"%.*s/",/n", PF(tl->t_dir)); Fc(tl, 0, "/t.nmember = %d,/n", nelem); Fc(tl, 0, "/t.members = vdrre_%.*s,/n", PF(tl->t_dir)); Fc(tl, 0, "};/n");}
开发者ID:BabyOnlineSG,项目名称:pkg-varnish,代码行数:55,
示例19: vcc_FindVarconst struct var *vcc_FindVar(struct vcc *tl, const struct token *t, int wr_access, const char *use){ const struct var *v; const struct symbol *sym; AN(tl->vars); sym = VCC_FindSymbol(tl, t, SYM_VAR); if (sym != NULL) { v = sym->var; AN(v); if (wr_access && v->w_methods == 0) { VSB_printf(tl->sb, "Variable "); vcc_ErrToken(tl, t); VSB_printf(tl->sb, " is read only."); VSB_cat(tl->sb, "/nAt: "); vcc_ErrWhere(tl, t); return (NULL); } else if (wr_access) { vcc_AddUses(tl, t, v->w_methods, use); } else if (v->r_methods == 0) { VSB_printf(tl->sb, "Variable "); vcc_ErrToken(tl, t); VSB_printf(tl->sb, " is write only."); VSB_cat(tl->sb, "/nAt: "); vcc_ErrWhere(tl, t); return (NULL); } else { vcc_AddUses(tl, t, v->r_methods, use); } assert(v->fmt != HEADER); return (v); } VSB_printf(tl->sb, "Unknown variable "); vcc_ErrToken(tl, t); VSB_cat(tl->sb, "/nAt: "); vcc_ErrWhere(tl, t); return (NULL);}
开发者ID:acdha,项目名称:Varnish-Cache,代码行数:41,
示例20: vcc_default_probeconst char *vcc_default_probe(struct vcc *tl){ if (tl->default_probe != NULL) return (tl->default_probe); VSB_printf(tl->sb, "No default probe defined/n"); vcc_ErrToken(tl, tl->t); VSB_printf(tl->sb, " at/n"); vcc_ErrWhere(tl, tl->t); return ("");}
开发者ID:fgsch,项目名称:varnish-cache,代码行数:12,
示例21: parse_errorstatic voidparse_error(struct vcc *tl){ VSB_printf(tl->sb, "Syntax has changed, use:/n" "/treturn(error(999));/n" "or/n" "/treturn(error(999, /"Response text/"));/n"); vcc_ErrWhere(tl, tl->t); return;}
开发者ID:lichengwu,项目名称:Varnish-Cache,代码行数:12,
示例22: vcc_Functionstatic voidvcc_Function(struct vcc *tl){ int m, i; vcc_NextToken(tl); ExpectErr(tl, ID); m = IsMethod(tl->t); if (m != -1) { assert(m < VCL_MET_MAX); tl->fb = tl->fm[m]; if (tl->mprocs[m] == NULL) { (void)vcc_AddDef(tl, tl->t, SYM_SUB); vcc_AddRef(tl, tl->t, SYM_SUB); tl->mprocs[m] = vcc_AddProc(tl, tl->t); } tl->curproc = tl->mprocs[m]; Fb(tl, 1, " /* ... from "); vcc_Coord(tl, tl->fb, NULL); Fb(tl, 0, " *//n"); } else { tl->fb = tl->fc; i = vcc_AddDef(tl, tl->t, SYM_SUB); if (i > 1) { VSB_printf(tl->sb, "Function %.*s redefined/n", PF(tl->t)); vcc_ErrWhere(tl, tl->t); return; } tl->curproc = vcc_AddProc(tl, tl->t); Fh(tl, 0, "static int VGC_function_%.*s (struct sess *sp);/n", PF(tl->t)); Fc(tl, 1, "/nstatic int/n"); Fc(tl, 1, "VGC_function_%.*s (struct sess *sp)/n", PF(tl->t)); } vcc_NextToken(tl); tl->indent += INDENT; Fb(tl, 1, "{/n"); L(tl, vcc_Compound(tl)); if (m == -1) { /* * non-method subroutines must have an explicit non-action * return in case they just fall through the bottom. */ Fb(tl, 1, " return(0);/n"); } Fb(tl, 1, "}/n"); tl->indent -= INDENT; tl->fb = NULL; tl->curproc = NULL;}
开发者ID:ambernetas,项目名称:varnish-cache,代码行数:52,
示例23: vcc_ExpectCidvoidvcc_ExpectCid(struct tokenlist *tl){ 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);}
开发者ID:smallvil,项目名称:Cache-Terminator,代码行数:14,
示例24: vcc_DefBackendstatic voidvcc_DefBackend(struct vcc *tl, const struct token *nm){ struct symbol *sym; sym = VCC_GetSymbolTok(tl, nm, SYM_BACKEND); AN(sym); if (sym->ndef > 0) { VSB_printf(tl->sb, "Backend %.*s redefined/n", PF(nm)); vcc_ErrWhere(tl, nm); return; } sym->fmt = BACKEND; sym->eval = vcc_Eval_Backend; sym->ndef++;}
开发者ID:conmame,项目名称:Varnish-Cache,代码行数:16,
示例25: parse_setstatic voidparse_set(struct vcc *tl){ const struct symbol *sym; const struct arith *ap; vcc_type_t fmt; vcc_NextToken(tl); ExpectErr(tl, ID); sym = vcc_FindVar(tl, tl->t, 1, "cannot be set"); ERRCHK(tl); assert(sym != NULL); if (vcc_IdIs(tl->t, "bereq.body")) { VSB_printf(tl->sb, "bereq.body cannot be set./n"); vcc_ErrWhere(tl, tl->t); return; } Fb(tl, 1, "%s/n", sym->lname); tl->indent += INDENT; vcc_NextToken(tl); fmt = sym->fmt; for (ap = arith; ap->type != VOID; ap++) { if (ap->type != fmt) continue; if (ap->oper != tl->t->tok) continue; if (ap->oper != '=') Fb(tl, 1, "%s %c ", sym->rname, *tl->t->b); vcc_NextToken(tl); fmt = ap->want; break; } if (ap->type == VOID) SkipToken(tl, ap->oper); if (fmt == HEADER) { vcc_Expr(tl, STRING_LIST); } else if (fmt == STRING) { vcc_Expr(tl, STRING_LIST); } else if (fmt == BODY) { vcc_Expr(tl, STRING_LIST); } else { vcc_Expr(tl, fmt); } tl->indent -= INDENT; Fb(tl, 1, ");/n");}
开发者ID:varnishcache,项目名称:varnish-cache,代码行数:46,
示例26: vcc_IfStmtstatic voidvcc_IfStmt(struct vcc *tl){ SkipToken(tl, ID); Fb(tl, 1, "if "); vcc_Conditional(tl); ERRCHK(tl); L(tl, vcc_Compound(tl)); ERRCHK(tl); while (tl->t->tok == ID) { if (vcc_IdIs(tl->t, "else")) { vcc_NextToken(tl); if (tl->t->tok == '{') { Fb(tl, 1, "else/n"); L(tl, vcc_Compound(tl)); ERRCHK(tl); return; } if (tl->t->tok != ID || !vcc_IdIs(tl->t, "if")) { VSB_printf(tl->sb, "'else' must be followed by 'if' or '{'/n"); vcc_ErrWhere(tl, tl->t); return; } Fb(tl, 1, "else if "); vcc_NextToken(tl); vcc_Conditional(tl); ERRCHK(tl); L(tl, vcc_Compound(tl)); ERRCHK(tl); } else if (vcc_IdIs(tl->t, "elseif") || vcc_IdIs(tl->t, "elsif") || vcc_IdIs(tl->t, "elif")) { Fb(tl, 1, "else if "); vcc_NextToken(tl); vcc_Conditional(tl); ERRCHK(tl); L(tl, vcc_Compound(tl)); ERRCHK(tl); } else { break; } } C(tl, ";");}
开发者ID:varnishcache,项目名称:varnish-cache,代码行数:46,
示例27: parse_restartstatic voidparse_restart(struct tokenlist *tl){ struct token *t1; t1 = VTAILQ_NEXT(tl->t, list); if (t1->tok == ID && vcc_IdIs(t1, "rollback")) { Fb(tl, 1, "VRT_Rollback(sp);/n"); vcc_NextToken(tl); } else if (t1->tok != ';') { vsb_printf(tl->sb, "Expected /"rollback/" or semicolon./n"); vcc_ErrWhere(tl, t1); ERRCHK(tl); } Fb(tl, 1, "VRT_done(sp, VCL_RET_RESTART);/n"); vcc_ProcAction(tl->curproc, VCL_RET_RESTART, tl->t); vcc_NextToken(tl);}
开发者ID:smallvil,项目名称:Cache-Terminator,代码行数:18,
示例28: vcc_ParseVclstatic voidvcc_ParseVcl(struct vcc *tl){ double ver; struct token *tok; assert(vcc_IdIs(tl->t, "vcl")); vcc_NextToken(tl); tok = tl->t; ver = vcc_DoubleVal(tl); ERRCHK(tl); if (ver != 4.0) { VSB_printf(tl->sb, "VCL version %.1f not supported./n", ver); vcc_ErrWhere(tl, tok); ERRCHK(tl); } ExpectErr(tl, ';'); vcc_NextToken(tl);}
开发者ID:mavenik,项目名称:Varnish-Cache,代码行数:19,
示例29: parse_unsetstatic voidparse_unset(struct vcc *tl){ const struct var *vp; vcc_NextToken(tl); ExpectErr(tl, ID); vp = vcc_FindVar(tl, tl->t, 1, "cannot be unset"); ERRCHK(tl); assert(vp != NULL); if (vp->fmt != STRING || vp->http == NULL) { VSB_printf(tl->sb, "Only http header variables can be unset./n"); vcc_ErrWhere(tl, tl->t); return; } ERRCHK(tl); Fb(tl, 1, "%s0);/n", vp->lname); vcc_NextToken(tl);}
开发者ID:tpn,项目名称:Varnish-Cache,代码行数:20,
示例30: parse_unsetstatic voidparse_unset(struct tokenlist *tl){ struct var *vp; vcc_NextToken(tl); ExpectErr(tl, VAR); vp = vcc_FindVar(tl, tl->t, vcc_vars); ERRCHK(tl); assert(vp != NULL); if (vp->fmt != STRING || vp->hdr == NULL) { vsb_printf(tl->sb, "Only http header lines can be unset./n"); vcc_ErrWhere(tl, tl->t); return; } check_writebit(tl, vp); ERRCHK(tl); Fb(tl, 1, "%s0);/n", vp->lname); vcc_NextToken(tl);}
开发者ID:smallvil,项目名称:Cache-Terminator,代码行数:20,
注:本文中的vcc_ErrWhere函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 C++ vcd_destroy_client_context函数代码示例 C++ vcalloc函数代码示例 |