X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=shell.c;h=9826109d5b1b3746aea33dc6b7ebe7b6da19bd22;hb=cd390763d487c140570ced10ac0d955908072fc6;hp=c983fc7b86ed3c7792d4e325e4b88845719494d1;hpb=e8811929344c46aed7669e148527af054eb3e18b;p=git.git diff --git a/shell.c b/shell.c index c983fc7b8..9826109d5 100644 --- a/shell.c +++ b/shell.c @@ -1,6 +1,7 @@ #include "cache.h" #include "quote.h" #include "exec_cmd.h" +#include "strbuf.h" static int do_generic_cmd(const char *me, char *arg) { @@ -18,12 +19,28 @@ static int do_generic_cmd(const char *me, char *arg) return execv_git_cmd(my_argv); } +static int do_cvs_cmd(const char *me, char *arg) +{ + const char *cvsserver_argv[3] = { + "cvsserver", "server", NULL + }; + + if (!arg || strcmp(arg, "server")) + die("git-cvsserver only handles server: %s", arg); + + setup_path(NULL); + + return execv_git_cmd(cvsserver_argv); +} + + static struct commands { const char *name; int (*exec)(const char *me, char *arg); } cmd_list[] = { { "git-receive-pack", do_generic_cmd }, { "git-upload-pack", do_generic_cmd }, + { "cvs", do_cvs_cmd }, { NULL }, }; @@ -32,8 +49,10 @@ int main(int argc, char **argv) char *prog; struct commands *cmd; + if (argc == 2 && !strcmp(argv[1], "cvs server")) + argv--; /* We want to see "-c cmd args", and nothing else */ - if (argc != 3 || strcmp(argv[1], "-c")) + else if (argc != 3 || strcmp(argv[1], "-c")) die("What do you think I am? A shell?"); prog = argv[2];