-rw-r--r-- | cache.c | 4 | ||||
-rw-r--r-- | cgit.c | 72 | ||||
-rw-r--r-- | cgit.h | 35 | ||||
-rw-r--r-- | parsing.c | 8 | ||||
-rw-r--r-- | shared.c | 43 | ||||
-rw-r--r-- | ui-commit.c | 14 | ||||
-rw-r--r-- | ui-diff.c | 6 | ||||
-rw-r--r-- | ui-log.c | 20 | ||||
-rw-r--r-- | ui-patch.c | 2 | ||||
-rw-r--r-- | ui-refs.c | 4 | ||||
-rw-r--r-- | ui-shared.c | 86 | ||||
-rw-r--r-- | ui-summary.c | 6 | ||||
-rw-r--r-- | ui-tree.c | 20 |
13 files changed, 156 insertions, 164 deletions
@@ -56,12 +56,12 @@ int cache_create_dirs() if (mkdir(path, S_IRWXU) && errno!=EEXIST) return 0; - if (cgit_query_page) { + if (ctx.qry.page) { path = fmt("%s/%s/%s", cgit_cache_root, cache_safe_filename(cgit_repo->url), - cgit_query_page); + ctx.qry.page); if (mkdir(path, S_IRWXU) && errno!=EEXIST) return 0; } return 1; @@ -9,13 +9,13 @@ #include "cgit.h" static int cgit_prepare_cache(struct cacheitem *item) { - if (!cgit_repo && cgit_query_repo) { + if (!cgit_repo && ctx.qry.repo) { char *title = fmt("%s - %s", cgit_root_title, "Bad request"); cgit_print_docstart(title, item); cgit_print_pageheader(title, 0); - cgit_print_error(fmt("Unknown repo: %s", cgit_query_repo)); + cgit_print_error(fmt("Unknown repo: %s", ctx.qry.repo)); cgit_print_docend(); return 0; } @@ -27,18 +27,18 @@ static int cgit_prepare_cache(struct cacheitem *item) if (!cgit_cmd) { item->name = xstrdup(fmt("%s/%s/index.%s.html", cgit_cache_root, cache_safe_filename(cgit_repo->url), - cache_safe_filename(cgit_querystring))); + cache_safe_filename(ctx.qry.raw))); item->ttl = cgit_cache_repo_ttl; } else { item->name = xstrdup(fmt("%s/%s/%s/%s.html", cgit_cache_root, cache_safe_filename(cgit_repo->url), - cgit_query_page, - cache_safe_filename(cgit_querystring))); - if (cgit_query_has_symref) + ctx.qry.page, + cache_safe_filename(ctx.qry.raw))); + if (ctx.qry.has_symref) item->ttl = cgit_cache_dynamic_ttl; - else if (cgit_query_has_sha1) + else if (ctx.qry.has_sha1) item->ttl = cgit_cache_static_ttl; else item->ttl = cgit_cache_repo_ttl; } @@ -97,46 +97,46 @@ static void cgit_print_repo_page(struct cacheitem *item) title = fmt("%s - %s", cgit_repo->name, cgit_repo->desc); show_search = 0; setenv("GIT_DIR", cgit_repo->path, 1); - if (!cgit_query_head) { - cgit_query_head = xstrdup(find_default_branch(cgit_repo)); - cgit_repo->defbranch = cgit_query_head; + if (!ctx.qry.head) { + ctx.qry.head = xstrdup(find_default_branch(cgit_repo)); + cgit_repo->defbranch = ctx.qry.head; } - if (!cgit_query_head) { + if (!ctx.qry.head) { cgit_print_docstart(title, item); cgit_print_pageheader(title, 0); cgit_print_error("Repository seems to be empty"); cgit_print_docend(); return; } - if (get_sha1(cgit_query_head, sha1)) { - tmp = xstrdup(cgit_query_head); - cgit_query_head = cgit_repo->defbranch; + if (get_sha1(ctx.qry.head, sha1)) { + tmp = xstrdup(ctx.qry.head); + ctx.qry.head = cgit_repo->defbranch; cgit_print_docstart(title, item); cgit_print_pageheader(title, 0); cgit_print_error(fmt("Invalid branch: %s", tmp)); cgit_print_docend(); return; } if ((cgit_cmd == CMD_SNAPSHOT) && cgit_repo->snapshots) { - cgit_print_snapshot(item, cgit_query_head, cgit_query_sha1, + cgit_print_snapshot(item, ctx.qry.head, ctx.qry.sha1, cgit_repobasename(cgit_repo->url), - cgit_query_path, + ctx.qry.path, cgit_repo->snapshots ); return; } if (cgit_cmd == CMD_PATCH) { - cgit_print_patch(cgit_query_sha1, item); + cgit_print_patch(ctx.qry.sha1, item); return; } if (cgit_cmd == CMD_BLOB) { - cgit_print_blob(item, cgit_query_sha1, cgit_query_path); + cgit_print_blob(item, ctx.qry.sha1, ctx.qry.path); return; } show_search = (cgit_cmd == CMD_LOG); @@ -147,30 +147,30 @@ static void cgit_print_repo_page(struct cacheitem *item) cgit_print_docend(); return; } - cgit_print_pageheader(cgit_query_page, show_search); + cgit_print_pageheader(ctx.qry.page, show_search); switch(cgit_cmd) { case CMD_LOG: - cgit_print_log(cgit_query_sha1, cgit_query_ofs, - cgit_max_commit_count, cgit_query_grep, cgit_query_search, - cgit_query_path, 1); + cgit_print_log(ctx.qry.sha1, ctx.qry.ofs, + cgit_max_commit_count, ctx.qry.grep, ctx.qry.search, + ctx.qry.path, 1); break; case CMD_TREE: - cgit_print_tree(cgit_query_sha1, cgit_query_path); + cgit_print_tree(ctx.qry.sha1, ctx.qry.path); break; case CMD_COMMIT: - cgit_print_commit(cgit_query_sha1); + cgit_print_commit(ctx.qry.sha1); break; case CMD_REFS: cgit_print_refs(); break; case CMD_TAG: - cgit_print_tag(cgit_query_sha1); + cgit_print_tag(ctx.qry.sha1); break; case CMD_DIFF: - cgit_print_diff(cgit_query_sha1, cgit_query_sha2, cgit_query_path); + cgit_print_diff(ctx.qry.sha1, ctx.qry.sha2, ctx.qry.path); break; default: cgit_print_error("Invalid request"); } @@ -263,26 +263,26 @@ static void cgit_parse_args(int argc, const char **argv) if (!strcmp(argv[i], "--nocache")) { cgit_nocache = 1; } if (!strncmp(argv[i], "--query=", 8)) { - cgit_querystring = xstrdup(argv[i]+8); + ctx.qry.raw = xstrdup(argv[i]+8); } if (!strncmp(argv[i], "--repo=", 7)) { - cgit_query_repo = xstrdup(argv[i]+7); + ctx.qry.repo = xstrdup(argv[i]+7); } if (!strncmp(argv[i], "--page=", 7)) { - cgit_query_page = xstrdup(argv[i]+7); + ctx.qry.page = xstrdup(argv[i]+7); } if (!strncmp(argv[i], "--head=", 7)) { - cgit_query_head = xstrdup(argv[i]+7); - cgit_query_has_symref = 1; + ctx.qry.head = xstrdup(argv[i]+7); + ctx.qry.has_symref = 1; } if (!strncmp(argv[i], "--sha1=", 7)) { - cgit_query_sha1 = xstrdup(argv[i]+7); - cgit_query_has_sha1 = 1; + ctx.qry.sha1 = xstrdup(argv[i]+7); + ctx.qry.has_sha1 = 1; } if (!strncmp(argv[i], "--ofs=", 6)) { - cgit_query_ofs = atoi(argv[i]+6); + ctx.qry.ofs = atoi(argv[i]+6); } } } @@ -302,11 +302,11 @@ int main(int argc, const char **argv) cgit_repo = NULL; if (getenv("SCRIPT_NAME")) cgit_script_name = xstrdup(getenv("SCRIPT_NAME")); if (getenv("QUERY_STRING")) - cgit_querystring = xstrdup(getenv("QUERY_STRING")); + ctx.qry.raw = xstrdup(getenv("QUERY_STRING")); cgit_parse_args(argc, argv); - cgit_parse_query(cgit_querystring, cgit_querystring_cb); + cgit_parse_query(ctx.qry.raw, cgit_querystring_cb); if (!cgit_prepare_cache(&item)) return 0; if (cgit_nocache) { cgit_fill_cache(&item, 0); @@ -122,12 +122,33 @@ struct reflist { int alloc; int count; }; +struct cgit_query { + int has_symref; + int has_sha1; + char *raw; + char *repo; + char *page; + char *search; + char *grep; + char *head; + char *sha1; + char *sha2; + char *path; + char *name; + int ofs; +}; + +struct cgit_context { + struct cgit_query qry; +}; + extern const char *cgit_version; extern struct repolist cgit_repolist; extern struct repoinfo *cgit_repo; +extern struct cgit_context ctx; extern int cgit_cmd; extern char *cgit_root_title; extern char *cgit_css; @@ -162,22 +183,8 @@ extern int cgit_summary_branches; extern int cgit_max_msg_len; extern int cgit_max_repodesc_len; extern int cgit_max_commit_count; -extern int cgit_query_has_symref; -extern int cgit_query_has_sha1; - -extern char *cgit_querystring; -extern char *cgit_query_repo; -extern char *cgit_query_page; -extern char *cgit_query_search; -extern char *cgit_query_grep; -extern char *cgit_query_head; -extern char *cgit_query_sha1; -extern char *cgit_query_sha2; -extern char *cgit_query_path; -extern char *cgit_query_name; -extern int cgit_query_ofs; extern int htmlfd; extern int cgit_get_cmd_index(const char *cmd); @@ -148,9 +148,9 @@ void cgit_parse_url(const char *url) return; cgit_repo = cgit_get_repoinfo(url); if (cgit_repo) { - cgit_query_repo = cgit_repo->url; + ctx.qry.repo = cgit_repo->url; return; } cmd = strchr(url, '/'); @@ -162,17 +162,17 @@ void cgit_parse_url(const char *url) cmd = strchr(cmd + 1, '/'); continue; } - cgit_query_repo = cgit_repo->url; + ctx.qry.repo = cgit_repo->url; p = strchr(cmd + 1, '/'); if (p) { p[0] = '\0'; if (p[1]) - cgit_query_path = trim_end(p + 1, '/'); + ctx.qry.path = trim_end(p + 1, '/'); } cgit_cmd = cgit_get_cmd_index(cmd + 1); - cgit_query_page = xstrdup(cmd + 1); + ctx.qry.page = xstrdup(cmd + 1); return; } } @@ -9,8 +9,9 @@ #include "cgit.h" struct repolist cgit_repolist; struct repoinfo *cgit_repo; +struct cgit_context ctx; int cgit_cmd; const char *cgit_version = CGIT_VERSION; @@ -48,26 +49,10 @@ int cgit_renamelimit = -1; int cgit_max_msg_len = 60; int cgit_max_repodesc_len = 60; int cgit_max_commit_count = 50; -int cgit_query_has_symref = 0; -int cgit_query_has_sha1 = 0; - -char *cgit_querystring = NULL; -char *cgit_query_repo = NULL; -char *cgit_query_page = NULL; -char *cgit_query_head = NULL; -char *cgit_query_search = NULL; -char *cgit_query_grep = NULL; -char *cgit_query_sha1 = NULL; -char *cgit_query_sha2 = NULL; -char *cgit_query_path = NULL; -char *cgit_query_name = NULL; -int cgit_query_ofs = 0; - int htmlfd = 0; - int cgit_get_cmd_index(const char *cmd) { static char *cmds[] = {"log", "commit", "diff", "tree", "blob", "snapshot", "tag", "refs", "patch", NULL}; @@ -238,34 +223,34 @@ void cgit_global_config_cb(const char *name, const char *value) void cgit_querystring_cb(const char *name, const char *value) { if (!strcmp(name,"r")) { - cgit_query_repo = xstrdup(value); + ctx.qry.repo = xstrdup(value); cgit_repo = cgit_get_repoinfo(value); } else if (!strcmp(name, "p")) { - cgit_query_page = xstrdup(value); + 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")) { - cgit_query_grep = xstrdup(value); + ctx.qry.grep = xstrdup(value); } else if (!strcmp(name, "q")) { - cgit_query_search = xstrdup(value); + ctx.qry.search = xstrdup(value); } else if (!strcmp(name, "h")) { - cgit_query_head = xstrdup(value); - cgit_query_has_symref = 1; + ctx.qry.head = xstrdup(value); + ctx.qry.has_symref = 1; } else if (!strcmp(name, "id")) { - cgit_query_sha1 = xstrdup(value); - cgit_query_has_sha1 = 1; + ctx.qry.sha1 = xstrdup(value); + ctx.qry.has_sha1 = 1; } else if (!strcmp(name, "id2")) { - cgit_query_sha2 = xstrdup(value); - cgit_query_has_sha1 = 1; + ctx.qry.sha2 = xstrdup(value); + ctx.qry.has_sha1 = 1; } else if (!strcmp(name, "ofs")) { - cgit_query_ofs = atoi(value); + ctx.qry.ofs = atoi(value); } else if (!strcmp(name, "path")) { - cgit_query_path = trim_end(value, '/'); + ctx.qry.path = trim_end(value, '/'); } else if (!strcmp(name, "name")) { - cgit_query_name = xstrdup(value); + ctx.qry.name = xstrdup(value); } } void *cgit_free_commitinfo(struct commitinfo *info) diff --git a/ui-commit.c b/ui-commit.c index bd55a33..3b0919b 100644 --- a/ui-commit.c +++ b/ui-commit.c @@ -74,9 +74,9 @@ void print_fileinfo(struct fileinfo *info) html_filemode(info->old_mode); html("]</span>"); } htmlf("</td><td class='%s'>", class); - cgit_diff_link(info->new_path, NULL, NULL, cgit_query_head, curr_rev, + cgit_diff_link(info->new_path, NULL, NULL, ctx.qry.head, curr_rev, NULL, info->new_path); if (info->status == DIFF_STATUS_COPIED || info->status == DIFF_STATUS_RENAMED) htmlf(" (%s from %s)", info->status == DIFF_STATUS_COPIED ? "copied" : "renamed", @@ -142,9 +142,9 @@ void cgit_print_commit(char *hex) char *tmp; int i; if (!hex) - hex = cgit_query_head; + hex = ctx.qry.head; curr_rev = hex; if (get_sha1(hex, sha1)) { cgit_print_error(fmt("Bad object id: %s", hex)); @@ -174,9 +174,9 @@ void cgit_print_commit(char *hex) html("</td></tr>\n"); html("<tr><th>tree</th><td colspan='2' class='sha1'>"); tmp = xstrdup(hex); cgit_tree_link(sha1_to_hex(commit->tree->object.sha1), NULL, NULL, - cgit_query_head, tmp, NULL); + ctx.qry.head, tmp, NULL); html("</td></tr>\n"); for (p = commit->parents; p ; p = p->next) { parent = lookup_commit_reference(p->item->object.sha1); if (!parent) { @@ -187,17 +187,17 @@ void cgit_print_commit(char *hex) } html("<tr><th>parent</th>" "<td colspan='2' class='sha1'>"); cgit_commit_link(sha1_to_hex(p->item->object.sha1), NULL, NULL, - cgit_query_head, sha1_to_hex(p->item->object.sha1)); + ctx.qry.head, sha1_to_hex(p->item->object.sha1)); html(" ("); - cgit_diff_link("diff", NULL, NULL, cgit_query_head, hex, + cgit_diff_link("diff", NULL, NULL, ctx.qry.head, hex, sha1_to_hex(p->item->object.sha1), NULL); html(")</td></tr>"); } if (cgit_repo->snapshots) { html("<tr><th>download</th><td colspan='2' class='sha1'>"); - cgit_print_snapshot_links(cgit_query_repo, cgit_query_head, + cgit_print_snapshot_links(ctx.qry.repo, ctx.qry.head, hex, cgit_repo->snapshots); html("</td></tr>"); } html("</table>\n"); @@ -217,9 +217,9 @@ void cgit_print_commit(char *hex) html("</table>"); html("<div class='diffstat-summary'>"); htmlf("%d files changed, %d insertions, %d deletions (", files, total_adds, total_rems); - cgit_diff_link("show diff", NULL, NULL, cgit_query_head, hex, + cgit_diff_link("show diff", NULL, NULL, ctx.qry.head, hex, NULL, NULL); html(")</div>"); } cgit_free_commitinfo(info); @@ -70,15 +70,15 @@ static void header(unsigned char *sha1, char *path1, int mode1, htmlf("..%.6o", mode2); } html("<br/>--- a/"); if (mode1 != 0) - cgit_tree_link(path1, NULL, NULL, cgit_query_head, + cgit_tree_link(path1, NULL, NULL, ctx.qry.head, sha1_to_hex(old_rev_sha1), path1); else html_txt(path1); html("<br/>+++ b/"); if (mode2 != 0) - cgit_tree_link(path2, NULL, NULL, cgit_query_head, + cgit_tree_link(path2, NULL, NULL, ctx.qry.head, sha1_to_hex(new_rev_sha1), path2); else html_txt(path2); } @@ -106,9 +106,9 @@ void cgit_print_diff(const char *new_rev, const char *old_rev, const char *prefi unsigned long size; struct commit *commit, *commit2; if (!new_rev) - new_rev = cgit_query_head; + new_rev = ctx.qry.head; get_sha1(new_rev, new_rev_sha1); type = sha1_object_info(new_rev_sha1, &size); if (type == OBJ_BAD) { cgit_print_error(fmt("Bad object name: %s", new_rev)); @@ -36,9 +36,9 @@ void print_commit(struct commit *commit) info = cgit_parse_commit(commit); html("<tr><td>"); cgit_print_age(commit->date, TM_WEEK * 2, FMT_SHORTDATE); html("</td><td>"); - cgit_commit_link(info->subject, NULL, NULL, cgit_query_head, + cgit_commit_link(info->subject, NULL, NULL, ctx.qry.head, sha1_to_hex(commit->object.sha1)); if (cgit_repo->enable_log_filecount) { files = 0; add_lines = 0; @@ -66,9 +66,9 @@ void cgit_print_log(const char *tip, int ofs, int cnt, char *grep, char *pattern int argc = 2; int i; if (!tip) - argv[1] = cgit_query_head; + argv[1] = ctx.qry.head; if (grep && pattern && (!strcmp(grep, "grep") || !strcmp(grep, "author") || !strcmp(grep, "committer"))) @@ -122,19 +122,19 @@ void cgit_print_log(const char *tip, int ofs, int cnt, char *grep, char *pattern if (pager) { html("<div class='pager'>"); if (ofs > 0) { - cgit_log_link("[prev]", NULL, NULL, cgit_query_head, - cgit_query_sha1, cgit_query_path, - ofs - cnt, cgit_query_grep, - cgit_query_search); + cgit_log_link("[prev]", NULL, NULL, ctx.qry.head, + ctx.qry.sha1, ctx.qry.path, + ofs - cnt, ctx.qry.grep, + ctx.qry.search); html(" "); } if ((commit = get_revision(&rev)) != NULL) { - cgit_log_link("[next]", NULL, NULL, cgit_query_head, - cgit_query_sha1, cgit_query_path, - ofs + cnt, cgit_query_grep, - cgit_query_search); + cgit_log_link("[next]", NULL, NULL, ctx.qry.head, + ctx.qry.sha1, ctx.qry.path, + ofs + cnt, ctx.qry.grep, + ctx.qry.search); } html("</div>"); } } @@ -75,9 +75,9 @@ void cgit_print_patch(char *hex, struct cacheitem *item) unsigned char sha1[20], old_sha1[20]; char *patchname; if (!hex) - hex = cgit_query_head; + hex = ctx.qry.head; if (get_sha1(hex, sha1)) { cgit_print_error(fmt("Bad object id: %s", hex)); return; @@ -15,11 +15,11 @@ void cgit_print_refs() { html("<table class='list nowrap'>"); - if (cgit_query_path && !strncmp(cgit_query_path, "heads", 5)) + if (ctx.qry.path && !strncmp(ctx.qry.path, "heads", 5)) cgit_print_branches(0); - else if (cgit_query_path && !strncmp(cgit_query_path, "tags", 4)) + else if (ctx.qry.path && !strncmp(ctx.qry.path, "tags", 4)) cgit_print_tags(0); else { cgit_print_branches(0); html("<tr class='nohover'><td colspan='4'> </td></tr>"); diff --git a/ui-shared.c b/ui-shared.c index 60aa2e3..6a41fb0 100644 --- a/ui-shared.c +++ b/ui-shared.c @@ -111,12 +111,12 @@ const char *cgit_repobasename(const char *reponame) char *cgit_currurl() { if (!cgit_virtual_root) return cgit_script_name; - else if (cgit_query_page) - return fmt("%s/%s/%s/", cgit_virtual_root, cgit_query_repo, cgit_query_page); - else if (cgit_query_repo) - return fmt("%s/%s/", cgit_virtual_root, cgit_query_repo); + else if (ctx.qry.page) + return fmt("%s/%s/%s/", cgit_virtual_root, ctx.qry.repo, ctx.qry.page); + else if (ctx.qry.repo) + return fmt("%s/%s/", cgit_virtual_root, ctx.qry.repo); else return fmt("%s/", cgit_virtual_root); } @@ -178,9 +178,9 @@ static void reporevlink(char *page, char *name, char *title, char *class, { char *delim; delim = repolink(title, class, page, head, path); - if (rev && strcmp(rev, cgit_query_head)) { + if (rev && strcmp(rev, ctx.qry.head)) { html(delim); html("id="); html_attr(rev); } @@ -200,9 +200,9 @@ void cgit_log_link(char *name, char *title, char *class, char *head, { char *delim; delim = repolink(title, class, "log", head, path); - if (rev && strcmp(rev, cgit_query_head)) { + if (rev && strcmp(rev, ctx.qry.head)) { html(delim); html("id="); html_attr(rev); delim = "&"; @@ -255,9 +255,9 @@ void cgit_diff_link(char *name, char *title, char *class, char *head, { char *delim; delim = repolink(title, class, "diff", head, path); - if (new_rev && strcmp(new_rev, cgit_query_head)) { + if (new_rev && strcmp(new_rev, ctx.qry.head)) { html(delim); html("id="); html_attr(new_rev); delim = "&"; @@ -283,9 +283,9 @@ void cgit_object_link(struct object *obj) char *page, *arg, *url; if (obj->type == OBJ_COMMIT) { cgit_commit_link(fmt("commit %s", sha1_to_hex(obj->sha1)), NULL, NULL, - cgit_query_head, sha1_to_hex(obj->sha1)); + ctx.qry.head, sha1_to_hex(obj->sha1)); return; } else if (obj->type == OBJ_TREE) { page = "tree"; arg = "id"; @@ -296,9 +296,9 @@ void cgit_object_link(struct object *obj) page = "blob"; arg = "id"; } - url = cgit_pageurl(cgit_query_repo, page, + url = cgit_pageurl(ctx.qry.repo, page, fmt("%s=%s", arg, sha1_to_hex(obj->sha1))); html_link_open(url, NULL, NULL); htmlf("%s %s", typename(obj->type), sha1_to_hex(obj->sha1)); @@ -391,9 +391,9 @@ void cgit_print_docend() int print_branch_option(const char *refname, const unsigned char *sha1, int flags, void *cb_data) { char *name = (char *)refname; - html_option(name, name, cgit_query_head); + html_option(name, name, ctx.qry.head); return 0; } int print_archive_ref(const char *refname, const unsigned char *sha1, @@ -425,9 +425,9 @@ int print_archive_ref(const char *refname, const unsigned char *sha1, if (!*header) { html("<h1>download</h1>\n"); *header = 1; } - url = cgit_pageurl(cgit_query_repo, "blob", + url = cgit_pageurl(ctx.qry.repo, "blob", fmt("id=%s&path=%s", sha1_to_hex(fileid), buf)); html_link_open(url, NULL, "menu"); html_txt(strlpart(buf, 20)); @@ -439,27 +439,27 @@ void add_hidden_formfields(int incl_head, int incl_search, char *page) { char *url; if (!cgit_virtual_root) { - url = fmt("%s/%s", cgit_query_repo, page); - if (cgit_query_path) - url = fmt("%s/%s", url, cgit_query_path); + url = fmt("%s/%s", ctx.qry.repo, page); + if (ctx.qry.path) + url = fmt("%s/%s", url, ctx.qry.path); html_hidden("url", url); } - if (incl_head && strcmp(cgit_query_head, cgit_repo->defbranch)) - html_hidden("h", cgit_query_head); + if (incl_head && strcmp(ctx.qry.head, cgit_repo->defbranch)) + html_hidden("h", ctx.qry.head); - if (cgit_query_sha1) - html_hidden("id", cgit_query_sha1); - if (cgit_query_sha2) - html_hidden("id2", cgit_query_sha2); + if (ctx.qry.sha1) + html_hidden("id", ctx.qry.sha1); + if (ctx.qry.sha2) + html_hidden("id2", ctx.qry.sha2); if (incl_search) { - if (cgit_query_grep) - html_hidden("qt", cgit_query_grep); - if (cgit_query_search) - html_hidden("q", cgit_query_search); + if (ctx.qry.grep) + html_hidden("qt", ctx.qry.grep); + if (ctx.qry.search) + html_hidden("q", ctx.qry.search); } } void cgit_print_pageheader(char *title, int show_search) @@ -475,9 +475,9 @@ void cgit_print_pageheader(char *title, int show_search) html_attr(cgit_rooturl()); htmlf("'><img src='%s' alt='cgit'/></a>\n", cgit_logo); html("</td></tr>\n<tr><td class='sidebar'>\n"); - if (cgit_query_repo) { + if (ctx.qry.repo) { html("<h1 class='first'>"); html_txt(strrpart(cgit_repo->name, 20)); html("</h1>\n"); html_txt(cgit_repo->desc); @@ -485,20 +485,20 @@ void cgit_print_pageheader(char *title, int show_search) html("<h1>owner</h1>\n"); html_txt(cgit_repo->owner); } html("<h1>navigate</h1>\n"); - reporevlink(NULL, "summary", NULL, "menu", cgit_query_head, + reporevlink(NULL, "summary", NULL, "menu", ctx.qry.head, NULL, NULL); - cgit_log_link("log", NULL, "menu", cgit_query_head, NULL, NULL, + cgit_log_link("log", NULL, "menu", ctx.qry.head, NULL, NULL, 0, NULL, NULL); - cgit_tree_link("tree", NULL, "menu", cgit_query_head, - cgit_query_sha1, NULL); - cgit_commit_link("commit", NULL, "menu", cgit_query_head, - cgit_query_sha1); - cgit_diff_link("diff", NULL, "menu", cgit_query_head, - cgit_query_sha1, cgit_query_sha2, NULL); - cgit_patch_link("patch", NULL, "menu", cgit_query_head, - cgit_query_sha1); + cgit_tree_link("tree", NULL, "menu", ctx.qry.head, + ctx.qry.sha1, NULL); + cgit_commit_link("commit", NULL, "menu", ctx.qry.head, + ctx.qry.sha1); + cgit_diff_link("diff", NULL, "menu", ctx.qry.head, + ctx.qry.sha1, ctx.qry.sha2, NULL); + cgit_patch_link("patch", NULL, "menu", ctx.qry.head, + ctx.qry.sha1); for_each_ref(print_archive_ref, &header); if (cgit_repo->clone_url || cgit_clone_prefix) { @@ -518,12 +518,12 @@ void cgit_print_pageheader(char *title, int show_search) } html("<h1>branch</h1>\n"); html("<form method='get' action=''>\n"); - add_hidden_formfields(0, 1, cgit_query_page); + add_hidden_formfields(0, 1, ctx.qry.page); // html("<table summary='branch selector' class='grid'><tr><td id='branch-dropdown-cell'>"); html("<select name='h' onchange='this.form.submit();'>\n"); - for_each_branch_ref(print_branch_option, cgit_query_head); + for_each_branch_ref(print_branch_option, ctx.qry.head); html("</select>\n"); // html("</td><td>"); html("<noscript><input type='submit' id='switch-btn' value='switch'/></noscript>\n"); // html("</td></tr></table>"); @@ -531,19 +531,19 @@ void cgit_print_pageheader(char *title, int show_search) html("<h1>search</h1>\n"); html("<form method='get' action='"); if (cgit_virtual_root) - html_attr(cgit_fileurl(cgit_query_repo, "log", - cgit_query_path, NULL)); + html_attr(cgit_fileurl(ctx.qry.repo, "log", + ctx.qry.path, NULL)); html("'>\n"); add_hidden_formfields(1, 0, "log"); html("<select name='qt'>\n"); - html_option("grep", "log msg", cgit_query_grep); - html_option("author", "author", cgit_query_grep); - html_option("committer", "committer", cgit_query_grep); + html_option("grep", "log msg", ctx.qry.grep); + html_option("author", "author", ctx.qry.grep); + html_option("committer", "committer", ctx.qry.grep); html("</select>\n"); html("<input class='txt' type='text' name='q' value='"); - html_attr(cgit_query_search); + html_attr(ctx.qry.search); html("'/>\n"); html("</form>\n"); } else { if (!cgit_index_info || html_include(cgit_index_info)) diff --git a/ui-summary.c b/ui-summary.c index b96414e..bbd4464 100644 --- a/ui-summary.c +++ b/ui-summary.c @@ -93,9 +93,9 @@ static int print_tag(struct refinfo *ref) info = ref->tag; if (!tag || !info) return 1; html("<tr><td>"); - url = cgit_pageurl(cgit_query_repo, "tag", + url = cgit_pageurl(ctx.qry.repo, "tag", fmt("id=%s", name)); html_link_open(url, NULL, NULL); html_txt(name); html_link_close(); @@ -122,9 +122,9 @@ static int print_tag(struct refinfo *ref) static void print_refs_link(char *path) { html("<tr class='nohover'><td colspan='4'>"); - cgit_refs_link("[...]", NULL, NULL, cgit_query_head, NULL, path); + cgit_refs_link("[...]", NULL, NULL, ctx.qry.head, NULL, path); html("</td></tr>"); } void cgit_print_branches(int maxcount) @@ -187,9 +187,9 @@ void cgit_print_summary() html_include(cgit_repo->readme); html("</div>"); } if (cgit_summary_log > 0) - cgit_print_log(cgit_query_head, 0, cgit_summary_log, NULL, + cgit_print_log(ctx.qry.head, 0, cgit_summary_log, NULL, NULL, NULL, 0); html("<table summary='repository info' class='list nowrap'>"); if (cgit_summary_log > 0) html("<tr class='nohover'><td colspan='4'> </td></tr>"); @@ -33,9 +33,9 @@ static void print_object(const unsigned char *sha1, char *path) return; } html(" blob: <a href='"); - html_attr(cgit_pageurl(cgit_query_repo, "blob", fmt("id=%s", sha1_to_hex(sha1)))); + html_attr(cgit_pageurl(ctx.qry.repo, "blob", fmt("id=%s", sha1_to_hex(sha1)))); htmlf("'>%s</a>",sha1_to_hex(sha1)); html("<table summary='blob content' class='blob'>\n"); idx = 0; @@ -66,10 +66,10 @@ static int ls_item(const unsigned char *sha1, const char *base, int baselen, enum object_type type; unsigned long size = 0; name = xstrdup(pathname); - fullpath = fmt("%s%s%s", cgit_query_path ? cgit_query_path : "", - cgit_query_path ? "/" : "", name); + fullpath = fmt("%s%s%s", ctx.qry.path ? ctx.qry.path : "", + ctx.qry.path ? "/" : "", name); type = sha1_object_info(sha1, &size); if (type == OBJ_BAD && !S_ISGITLINK(mode)) { htmlf("<tr><td colspan='3'>Bad object: %s %s</td></tr>", @@ -89,18 +89,18 @@ static int ls_item(const unsigned char *sha1, const char *base, int baselen, html("'>"); html_txt(name); html("</a>"); } else if (S_ISDIR(mode)) { - cgit_tree_link(name, NULL, "ls-dir", cgit_query_head, + cgit_tree_link(name, NULL, "ls-dir", ctx.qry.head, curr_rev, fullpath); } else { - cgit_tree_link(name, NULL, "ls-blob", cgit_query_head, + cgit_tree_link(name, NULL, "ls-blob", ctx.qry.head, curr_rev, fullpath); } htmlf("</td><td class='ls-size'>%li</td>", size); html("<td>"); - cgit_log_link("log", NULL, "button", cgit_query_head, curr_rev, + cgit_log_link("log", NULL, "button", ctx.qry.head, curr_rev, fullpath, 0, NULL, NULL); html("</td></tr>\n"); free(name); return 0; @@ -152,12 +152,12 @@ static int walk_tree(const unsigned char *sha1, const char *base, int baselen, if (state == 0) { memcpy(buffer, base, baselen); strcpy(buffer+baselen, pathname); - url = cgit_pageurl(cgit_query_repo, "tree", + url = cgit_pageurl(ctx.qry.repo, "tree", fmt("h=%s&path=%s", curr_rev, buffer)); html("/"); - cgit_tree_link(xstrdup(pathname), NULL, NULL, cgit_query_head, + cgit_tree_link(xstrdup(pathname), NULL, NULL, ctx.qry.head, curr_rev, buffer); if (strcmp(match_path, buffer)) return READ_TREE_RECURSIVE; @@ -187,9 +187,9 @@ void cgit_print_tree(const char *rev, char *path) struct commit *commit; const char *paths[] = {path, NULL}; if (!rev) - rev = cgit_query_head; + rev = ctx.qry.head; curr_rev = xstrdup(rev); if (get_sha1(rev, sha1)) { cgit_print_error(fmt("Invalid revision name: %s", rev)); @@ -201,9 +201,9 @@ void cgit_print_tree(const char *rev, char *path) return; } html("path: <a href='"); - html_attr(cgit_pageurl(cgit_query_repo, "tree", fmt("h=%s", rev))); + html_attr(cgit_pageurl(ctx.qry.repo, "tree", fmt("h=%s", rev))); html("'>root</a>"); if (path == NULL) { ls_tree(commit->tree->object.sha1, NULL); |