]> err.no Git - varnish/commitdiff
Add a -C argument, which compiles the VCL (either default with -b
authorphk <phk@d4fa192b-c00b-0410-8231-f00ffab90ce4>
Mon, 9 Apr 2007 20:50:12 +0000 (20:50 +0000)
committerphk <phk@d4fa192b-c00b-0410-8231-f00ffab90ce4>
Mon, 9 Apr 2007 20:50:12 +0000 (20:50 +0000)
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
varnish-cache/bin/varnishd/mgt_vcc.c
varnish-cache/bin/varnishd/varnishd.c

index eb53e7252ac2f336801c69270cfd1794e1b9b71d..8dce4a83d1f27ca69c329e7a1c68221859a8b708 100644 (file)
@@ -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"
index 16c657e24dcba327de8aa33adc8e830f50afa2d5..f7b4e169dcc36421e32d4ffac1d2114bc7c1e1ee 100644 (file)
@@ -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);
        }
index db1b6ed258e1ca069edbea1468d6002b60107913..b428399697815cd487532ca1368df4e037e315d8 100644 (file)
@@ -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);