From: phk Date: Tue, 11 Jul 2006 20:37:43 +0000 (+0000) Subject: A vcl keyword for loading a new config X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e7c193538731e9a0fe1683098f10d9ee4c1f9e7d;p=varnish A vcl keyword for loading a new config git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@442 d4fa192b-c00b-0410-8231-f00ffab90ce4 --- diff --git a/varnish-cache/bin/varnishtester/varnishtester.c b/varnish-cache/bin/varnishtester/varnishtester.c index 42fca56b..ffd74b2b 100644 --- a/varnish-cache/bin/varnishtester/varnishtester.c +++ b/varnish-cache/bin/varnishtester/varnishtester.c @@ -193,6 +193,15 @@ static pid_t child; /*--------------------------------------------------------------------*/ +static void +cli_write(const char *s) +{ + + write(pipe1[1], s, strlen(s)); +} + +/*--------------------------------------------------------------------*/ + static void rd_pipe2(struct bufferevent *bev, void *arg) { @@ -275,7 +284,7 @@ cmd_stop(char **av) fprintf(stderr, "No child running\n"); exit (2); } - write(pipe1[1], "exit\r", 5); + cli_write("exit\n"); /* XXX: arm timeout */ } @@ -289,8 +298,37 @@ cmd_cli(char **av) fprintf(stderr, "No child running\n"); exit (2); } - write(pipe1[1], av[0], strlen(av[0])); - write(pipe1[1], "\n", 1); + cli_write(av[0]); + cli_write("\n"); +} + +/*--------------------------------------------------------------------*/ + +static void +cmd_vcl(char **av) +{ + char *p, buf[5]; + + if (child == 0) { + fprintf(stderr, "No child running\n"); + exit (2); + } + if (av[0] == NULL || av[1] == NULL) { + fprintf(stderr, "usage: vcl $name $vcl\n"); + exit (2); + } + cli_write("config.inline "); + cli_write(av[0]); + cli_write(" \""); + for (p = av[1]; *p; p++) { + if (*p < ' ' || *p == '"' || *p == '\\' || *p > '~') { + sprintf(buf, "\\%03o", *p); + cli_write(buf); + } else { + write(pipe1[1], p, 1); + } + } + cli_write("\"\n"); } /*--------------------------------------------------------------------*/ @@ -321,6 +359,8 @@ rd_cmd(struct bufferevent *bev, void *arg) cmd_serve(av + 2); else if (!strcmp(av[1], "cli")) cmd_cli(av + 2); + else if (!strcmp(av[1], "vcl")) + cmd_vcl(av + 2); else { fprintf(stderr, "Unknown command \"%s\"\n", av[1]); exit (2);