Add command dispatcher

This simplifies the code in cgit.c and makes it easier to extend cgit with
new pages/commands.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
This commit is contained in:
Lars Hjemli
2008-03-24 01:09:39 +01:00
parent b608e88adb
commit e0e4478e7b
7 changed files with 172 additions and 113 deletions

View File

@ -40,18 +40,6 @@ void cgit_prepare_context(struct cgit_context *ctx)
ctx->page.filename = NULL;
}
int cgit_get_cmd_index(const char *cmd)
{
static char *cmds[] = {"log", "commit", "diff", "tree", "blob",
"snapshot", "tag", "refs", "patch", NULL};
int i;
for(i = 0; cmds[i]; i++)
if (!strcmp(cmd, cmds[i]))
return i + 1;
return 0;
}
int chk_zero(int result, char *msg)
{
if (result != 0)
@ -216,7 +204,6 @@ void cgit_querystring_cb(const char *name, const char *value)
ctx.repo = cgit_get_repoinfo(value);
} else if (!strcmp(name, "p")) {
ctx.qry.page = xstrdup(value);
cgit_cmd = cgit_get_cmd_index(value);
} else if (!strcmp(name, "url")) {
cgit_parse_url(value);
} else if (!strcmp(name, "qt")) {