X-Git-Url: https://gitweb.ps.run/ps-cgit/blobdiff_plain/5877c49f68b1e1bef94b4867f22c336f0e1605b6..57f6a8bf0de6c112cabc1d8e20ade2698bd886b7:/shared.c?ds=inline diff --git a/shared.c b/shared.c index 4ddba61..ce3ca4f 100644 --- a/shared.c +++ b/shared.c @@ -10,12 +10,15 @@ struct repolist cgit_repolist; struct repoinfo *cgit_repo; +int cgit_cmd; char *cgit_root_title = "Git repository browser"; char *cgit_css = "/cgit.css"; char *cgit_logo = "/git-logo.png"; +char *cgit_index_header = NULL; char *cgit_logo_link = "http://www.kernel.org/pub/software/scm/git/docs/"; char *cgit_module_link = "./?repo=%s&page=commit&id=%s"; +char *cgit_agefile = "info/web/last-modified"; char *cgit_virtual_root = NULL; char *cgit_script_name = CGIT_SCRIPT_NAME; char *cgit_cache_root = "/var/cache/cgit"; @@ -52,6 +55,18 @@ int cgit_query_ofs = 0; int htmlfd = 0; + +int cgit_get_cmd_index(const char *cmd) +{ + static char *cmds[] = {"log", "commit", "diff", "tree", "view", "blob", "snapshot", 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) @@ -95,6 +110,19 @@ struct repoinfo *add_repo(const char *url) return ret; } +struct repoinfo *cgit_get_repoinfo(const char *url) +{ + int i; + struct repoinfo *repo; + + for (i=0; iurl, url)) + return repo; + } + return NULL; +} + void cgit_global_config_cb(const char *name, const char *value) { if (!strcmp(name, "root-title")) @@ -103,6 +131,8 @@ void cgit_global_config_cb(const char *name, const char *value) cgit_css = xstrdup(value); else if (!strcmp(name, "logo")) cgit_logo = xstrdup(value); + else if (!strcmp(name, "index-header")) + cgit_index_header = xstrdup(value); else if (!strcmp(name, "logo-link")) cgit_logo_link = xstrdup(value); else if (!strcmp(name, "module-link")) @@ -133,6 +163,8 @@ void cgit_global_config_cb(const char *name, const char *value) cgit_max_repodesc_len = atoi(value); else if (!strcmp(name, "max-commit-count")) cgit_max_commit_count = atoi(value); + else if (!strcmp(name, "agefile")) + cgit_agefile = xstrdup(value); else if (!strcmp(name, "repo.group")) cgit_repo_group = xstrdup(value); else if (!strcmp(name, "repo.url")) @@ -163,8 +195,12 @@ void cgit_querystring_cb(const char *name, const char *value) { if (!strcmp(name,"r")) { cgit_query_repo = xstrdup(value); + cgit_repo = cgit_get_repoinfo(value); } else if (!strcmp(name, "p")) { cgit_query_page = xstrdup(value); + cgit_cmd = cgit_get_cmd_index(value); + } else if (!strcmp(name, "url")) { + cgit_parse_url(value); } else if (!strcmp(name, "q")) { cgit_query_search = xstrdup(value); } else if (!strcmp(name, "h")) {