]> err.no Git - varnish/commitdiff
Add a CLI support function for concatenating two cli_proto tables
authorphk <phk@d4fa192b-c00b-0410-8231-f00ffab90ce4>
Wed, 12 Mar 2008 13:46:34 +0000 (13:46 +0000)
committerphk <phk@d4fa192b-c00b-0410-8231-f00ffab90ce4>
Wed, 12 Mar 2008 13:46:34 +0000 (13:46 +0000)
in malloc'ed memory.

git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@2597 d4fa192b-c00b-0410-8231-f00ffab90ce4

varnish-cache/include/cli_priv.h
varnish-cache/lib/libvarnish/cli.c

index 6dfb7762d63a6bc2782a9eb8bc541101be82a99e..74ce9677836840c9d15ed8a76ee9b34b79ac5af6 100644 (file)
@@ -60,3 +60,4 @@ void cli_result(struct cli *cli, unsigned r);
 /* From libvarnish/cli.c */
 void cli_dispatch(struct cli *cli, struct cli_proto *clp, const char *line);
 cli_func_t     cli_func_help;
+struct cli_proto *cli_concat(struct cli_proto *, struct cli_proto *);
index 1690d2a623a1f3741b889728e5a7e4753b2af2bc..eb04d0918452bf069bb623e5d46c200ac3b358b0 100644 (file)
@@ -35,6 +35,7 @@
 
 #include <ctype.h>
 #include <string.h>
+#include <stdlib.h>
 #include <stdio.h>
 
 #include <cli.h>
@@ -131,3 +132,28 @@ cli_dispatch(struct cli *cli, struct cli_proto *clp, const char *line)
        } while (0);
        FreeArgv(av);
 }
+
+struct cli_proto *
+cli_concat(struct cli_proto *c1, struct cli_proto *c2)
+{
+       struct cli_proto *c;
+       int i1, i2;
+
+       i1 = 0;
+       for(c = c1; c != NULL && c->request != NULL; c++)
+               i1++;
+       i2 = 0;
+       for(c = c2; c != NULL && c->request != NULL; c++)
+               i2++;
+
+       c = malloc(sizeof(*c) * (i1 + i2 + 1));
+       if (c == NULL)
+               return (c);
+       if (c1 != NULL)
+               memcpy(c, c1, sizeof(*c1) * i1);
+       if (c2 != NULL)
+               memcpy(c + i1, c2, sizeof(*c2) * i2);
+       memset(c + i1 + i2, 0, sizeof(*c));
+       return (c);
+}
+