From baea20667d354162a871616d255931157ae7b400 Mon Sep 17 00:00:00 2001 From: phk Date: Mon, 9 Apr 2007 20:50:12 +0000 Subject: [PATCH] Add a -C argument, which compiles the VCL (either default with -b or user specified with -f) and outputs the C source on the stdout. git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@1309 d4fa192b-c00b-0410-8231-f00ffab90ce4 --- varnish-cache/bin/varnishd/mgt.h | 2 +- varnish-cache/bin/varnishd/mgt_vcc.c | 13 +++++++++++-- varnish-cache/bin/varnishd/varnishd.c | 8 ++++++-- 3 files changed, 18 insertions(+), 5 deletions(-) diff --git a/varnish-cache/bin/varnishd/mgt.h b/varnish-cache/bin/varnishd/mgt.h index eb53e725..8dce4a83 100644 --- a/varnish-cache/bin/varnishd/mgt.h +++ b/varnish-cache/bin/varnishd/mgt.h @@ -57,7 +57,7 @@ void MCF_ParamSet(struct cli *, const char *param, const char *val); /* mgt_vcc.c */ void mgt_vcc_init(void); -int mgt_vcc_default(const char *bflag, const char *fflag); +int mgt_vcc_default(const char *bflag, const char *fflag, int Cflag); int mgt_push_vcls_and_start(unsigned *status, char **p); #include "stevedore.h" diff --git a/varnish-cache/bin/varnishd/mgt_vcc.c b/varnish-cache/bin/varnishd/mgt_vcc.c index 16c657e2..f7b4e169 100644 --- a/varnish-cache/bin/varnishd/mgt_vcc.c +++ b/varnish-cache/bin/varnishd/mgt_vcc.c @@ -280,9 +280,9 @@ mgt_vcc_delbyname(const char *name) /*--------------------------------------------------------------------*/ int -mgt_vcc_default(const char *b_arg, const char *f_arg) +mgt_vcc_default(const char *b_arg, const char *f_arg, int C_flag) { - char *addr, *port; + char *addr, *port, *csrc; char *buf, *vf; struct vsb *sb; struct vclprog *vp; @@ -312,8 +312,17 @@ mgt_vcc_default(const char *b_arg, const char *f_arg) free(addr); free(port); AN(buf); + if (C_flag) { + csrc = VCC_Compile(sb, buf, NULL); + fputs(csrc, stdout); + exit (0); + } vf = mgt_VccCompile(sb, buf, NULL); free(buf); + } else if (C_flag) { + csrc = VCC_CompileFile(sb, f_arg); + fputs(csrc, stdout); + exit (0); } else { vf = mgt_VccCompileFile(sb, f_arg); } diff --git a/varnish-cache/bin/varnishd/varnishd.c b/varnish-cache/bin/varnishd/varnishd.c index db1b6ed2..b4283996 100644 --- a/varnish-cache/bin/varnishd/varnishd.c +++ b/varnish-cache/bin/varnishd/varnishd.c @@ -398,6 +398,7 @@ main(int argc, char *argv[]) const char *h_flag = "classic"; const char *s_arg = "file"; const char *T_arg = NULL; + unsigned C_flag; char *p; struct params param; struct cli cli[1]; @@ -432,7 +433,7 @@ main(int argc, char *argv[]) MCF_ParamInit(cli); cli_check(cli); - while ((o = getopt(argc, argv, "a:b:df:h:p:s:T:t:Vw:")) != -1) + while ((o = getopt(argc, argv, "a:b:Cdf:h:p:s:T:t:Vw:")) != -1) switch (o) { case 'a': MCF_ParamSet(cli, "listen_address", optarg); @@ -441,6 +442,9 @@ main(int argc, char *argv[]) case 'b': b_arg = optarg; break; + case 'C': + C_flag = 1; + break; case 'd': d_flag++; break; @@ -495,7 +499,7 @@ main(int argc, char *argv[]) usage(); } - if (mgt_vcc_default(b_arg, f_arg)) + if (mgt_vcc_default(b_arg, f_arg, C_flag)) exit (2); setup_storage(s_arg); -- 2.39.5