Commit e6abab1e authored by Poul-Henning Kamp's avatar Poul-Henning Kamp

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: http://www.varnish-cache.org/svn/trunk/varnish-cache@1309 d4fa192b-c00b-0410-8231-f00ffab90ce4
parent 5ea48714
...@@ -57,7 +57,7 @@ void MCF_ParamSet(struct cli *, const char *param, const char *val); ...@@ -57,7 +57,7 @@ void MCF_ParamSet(struct cli *, const char *param, const char *val);
/* mgt_vcc.c */ /* mgt_vcc.c */
void mgt_vcc_init(void); 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); int mgt_push_vcls_and_start(unsigned *status, char **p);
#include "stevedore.h" #include "stevedore.h"
......
...@@ -280,9 +280,9 @@ mgt_vcc_delbyname(const char *name) ...@@ -280,9 +280,9 @@ mgt_vcc_delbyname(const char *name)
/*--------------------------------------------------------------------*/ /*--------------------------------------------------------------------*/
int 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; char *buf, *vf;
struct vsb *sb; struct vsb *sb;
struct vclprog *vp; struct vclprog *vp;
...@@ -312,8 +312,17 @@ mgt_vcc_default(const char *b_arg, const char *f_arg) ...@@ -312,8 +312,17 @@ mgt_vcc_default(const char *b_arg, const char *f_arg)
free(addr); free(addr);
free(port); free(port);
AN(buf); AN(buf);
if (C_flag) {
csrc = VCC_Compile(sb, buf, NULL);
fputs(csrc, stdout);
exit (0);
}
vf = mgt_VccCompile(sb, buf, NULL); vf = mgt_VccCompile(sb, buf, NULL);
free(buf); free(buf);
} else if (C_flag) {
csrc = VCC_CompileFile(sb, f_arg);
fputs(csrc, stdout);
exit (0);
} else { } else {
vf = mgt_VccCompileFile(sb, f_arg); vf = mgt_VccCompileFile(sb, f_arg);
} }
......
...@@ -398,6 +398,7 @@ main(int argc, char *argv[]) ...@@ -398,6 +398,7 @@ main(int argc, char *argv[])
const char *h_flag = "classic"; const char *h_flag = "classic";
const char *s_arg = "file"; const char *s_arg = "file";
const char *T_arg = NULL; const char *T_arg = NULL;
unsigned C_flag;
char *p; char *p;
struct params param; struct params param;
struct cli cli[1]; struct cli cli[1];
...@@ -432,7 +433,7 @@ main(int argc, char *argv[]) ...@@ -432,7 +433,7 @@ main(int argc, char *argv[])
MCF_ParamInit(cli); MCF_ParamInit(cli);
cli_check(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) { switch (o) {
case 'a': case 'a':
MCF_ParamSet(cli, "listen_address", optarg); MCF_ParamSet(cli, "listen_address", optarg);
...@@ -441,6 +442,9 @@ main(int argc, char *argv[]) ...@@ -441,6 +442,9 @@ main(int argc, char *argv[])
case 'b': case 'b':
b_arg = optarg; b_arg = optarg;
break; break;
case 'C':
C_flag = 1;
break;
case 'd': case 'd':
d_flag++; d_flag++;
break; break;
...@@ -495,7 +499,7 @@ main(int argc, char *argv[]) ...@@ -495,7 +499,7 @@ main(int argc, char *argv[])
usage(); usage();
} }
if (mgt_vcc_default(b_arg, f_arg)) if (mgt_vcc_default(b_arg, f_arg, C_flag))
exit (2); exit (2);
setup_storage(s_arg); setup_storage(s_arg);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment