author | Lars Hjemli <hjemli@gmail.com> | 2007-05-20 20:09:55 (UTC) |
---|---|---|
committer | Lars Hjemli <hjemli@gmail.com> | 2007-05-20 20:09:55 (UTC) |
commit | dc3ac3f76077c5d612d42e8beb4878e43acfc58a (patch) (side-by-side diff) | |
tree | dfb996c0ce9833841578e1f0accbb5a387c01237 /cgit.c | |
parent | 977a0b173df6fe1a4d362fe4c70f9badff1fd46c (diff) | |
parent | 3de63b264c36888dfd42dfdf3fc0aad4ce0c2b5c (diff) | |
download | cgit-dc3ac3f76077c5d612d42e8beb4878e43acfc58a.zip cgit-dc3ac3f76077c5d612d42e8beb4878e43acfc58a.tar.gz cgit-dc3ac3f76077c5d612d42e8beb4878e43acfc58a.tar.bz2 |
Merge branch 'virtual-url'
* virtual-url:
Don't be fooled by trailing '/' in url-parameter
cache_safe_filename() needs more buffers
Enable url=value querystring parameter
Add lookup-function for valid repo commands
Move cgit_get_repoinfo into shared.c
-rw-r--r-- | cgit.c | 74 |
1 files changed, 31 insertions, 43 deletions
@@ -13,25 +13,5 @@ const char cgit_version[] = CGIT_VERSION; -static struct repoinfo *cgit_get_repoinfo(char *url) -{ - int i; - struct repoinfo *repo; - - for (i=0; i<cgit_repolist.count; i++) { - repo = &cgit_repolist.repos[i]; - if (!strcmp(repo->url, url)) - return repo; - } - return NULL; -} - - static int cgit_prepare_cache(struct cacheitem *item) { - if (!cgit_query_repo) { - item->name = xstrdup(fmt("%s/index.html", cgit_cache_root)); - item->ttl = cgit_cache_root_ttl; - return 1; - } - cgit_repo = cgit_get_repoinfo(cgit_query_repo); - if (!cgit_repo) { + if (!cgit_repo && cgit_query_repo) { char *title = fmt("%s - %s", cgit_root_title, "Bad request"); @@ -44,5 +24,11 @@ static int cgit_prepare_cache(struct cacheitem *item) - if (!cgit_query_page) { + if (!cgit_repo) { + item->name = xstrdup(fmt("%s/index.html", cgit_cache_root)); + item->ttl = cgit_cache_root_ttl; + return 1; + } + + if (!cgit_cmd) { item->name = xstrdup(fmt("%s/%s/index.html", cgit_cache_root, - cgit_repo->url)); + cache_safe_filename(cgit_repo->url))); item->ttl = cgit_cache_repo_ttl; @@ -50,3 +36,3 @@ static int cgit_prepare_cache(struct cacheitem *item) item->name = xstrdup(fmt("%s/%s/%s/%s.html", cgit_cache_root, - cgit_repo->url, cgit_query_page, + cache_safe_filename(cgit_repo->url), cgit_query_page, cache_safe_filename(cgit_querystring))); @@ -84,4 +70,3 @@ static void cgit_print_repo_page(struct cacheitem *item) - if (cgit_query_page) { - if (cgit_repo->snapshots && !strcmp(cgit_query_page, "snapshot")) { + if ((cgit_cmd == CMD_SNAPSHOT) && cgit_repo->snapshots) { cgit_print_snapshot(item, cgit_query_sha1, "zip", @@ -89,16 +74,12 @@ static void cgit_print_repo_page(struct cacheitem *item) return; - } - if (!strcmp(cgit_query_page, "blob")) { - cgit_print_blob(item, cgit_query_sha1, cgit_query_path); - return; - } } - if (cgit_query_page && !strcmp(cgit_query_page, "log")) - show_search = 1; + if (cgit_cmd == CMD_BLOB) { + cgit_print_blob(item, cgit_query_sha1, cgit_query_path); + return; + } + show_search = (cgit_cmd == CMD_LOG); cgit_print_docstart(title, item); - - - if (!cgit_query_page) { + if (!cgit_cmd) { cgit_print_pageheader("summary", show_search); @@ -111,3 +92,4 @@ static void cgit_print_repo_page(struct cacheitem *item) - if (!strcmp(cgit_query_page, "log")) { + switch(cgit_cmd) { + case CMD_LOG: cgit_print_log(cgit_query_head, cgit_query_ofs, @@ -115,12 +97,17 @@ static void cgit_print_repo_page(struct cacheitem *item) cgit_query_path); - } else if (!strcmp(cgit_query_page, "tree")) { + break; + case CMD_TREE: cgit_print_tree(cgit_query_head, cgit_query_sha1, cgit_query_path); - } else if (!strcmp(cgit_query_page, "commit")) { + break; + case CMD_COMMIT: cgit_print_commit(cgit_query_head); - } else if (!strcmp(cgit_query_page, "view")) { + break; + case CMD_VIEW: cgit_print_view(cgit_query_sha1, cgit_query_path); - } else if (!strcmp(cgit_query_page, "diff")) { + break; + case CMD_DIFF: cgit_print_diff(cgit_query_head, cgit_query_sha1, cgit_query_sha2, cgit_query_path); - } else { + break; + default: cgit_print_error("Invalid request"); @@ -145,3 +132,3 @@ static void cgit_fill_cache(struct cacheitem *item, int use_cache) - if (cgit_query_repo) + if (cgit_repo) cgit_print_repo_page(item); @@ -250,2 +237,3 @@ int main(int argc, const char **argv) cgit_read_config(CGIT_CONFIG, cgit_global_config_cb); + cgit_repo = NULL; if (getenv("SCRIPT_NAME")) |