all repos — cgit @ 5cd2bf7e7f3f3daf6107cd3a269bad78e342de70

a hyperfast web frontend for git written in c

WIP: add paths/backlinks to tree/blobview
Lars Hjemli hjemli@gmail.com
Fri, 12 Jan 2007 00:46:17 +0100
commit

5cd2bf7e7f3f3daf6107cd3a269bad78e342de70

parent

2c2047ff67a1e0053f95776e5079e432f69cea54

4 files changed, 15 insertions(+), 5 deletions(-)

jump to
M cgit.ccgit.c

@@ -56,7 +56,7 @@ cgit_print_summary();

} else if (!strcmp(cgit_query_page, "log")) { cgit_print_log(cgit_query_head, cgit_query_ofs, 100, cgit_query_search); } else if (!strcmp(cgit_query_page, "tree")) { - cgit_print_tree(cgit_query_sha1); + cgit_print_tree(cgit_query_sha1, cgit_query_path); } else if (!strcmp(cgit_query_page, "commit")) { cgit_print_commit(cgit_query_sha1); } else if (!strcmp(cgit_query_page, "view")) {
M cgit.hcgit.h

@@ -59,6 +59,7 @@ extern char *cgit_query_search;

extern char *cgit_query_head; extern char *cgit_query_sha1; extern char *cgit_query_sha2; +extern char *cgit_query_path; extern int cgit_query_ofs; extern int htmlfd;

@@ -108,7 +109,7 @@ extern void cgit_print_repolist(struct cacheitem *item);

extern void cgit_print_summary(); extern void cgit_print_log(const char *tip, int ofs, int cnt, char *grep); extern void cgit_print_view(const char *hex); -extern void cgit_print_tree(const char *hex); +extern void cgit_print_tree(const char *hex, char *path); extern void cgit_print_commit(const char *hex); extern void cgit_print_diff(const char *old_hex, const char *new_hex);
M shared.cshared.c

@@ -39,6 +39,7 @@ char *cgit_query_head = NULL;

char *cgit_query_search = NULL; char *cgit_query_sha1 = NULL; char *cgit_query_sha2 = NULL; +char *cgit_query_path = NULL; int cgit_query_ofs = 0; int htmlfd = 0;

@@ -100,6 +101,8 @@ cgit_query_sha2 = xstrdup(value);

cgit_query_has_sha1 = 1; } else if (!strcmp(name, "ofs")) { cgit_query_ofs = atoi(value); + } else if (!strcmp(name, "path")) { + cgit_query_path = xstrdup(value); } }
M ui-tree.cui-tree.c

@@ -29,11 +29,16 @@ html("</td><td>");

if (S_ISDIR(mode)) { html("<div class='ls-dir'><a href='"); html_attr(cgit_pageurl(cgit_query_repo, "tree", - fmt("id=%s", sha1_to_hex(sha1)))); + fmt("id=%s&path=%s%s/", + sha1_to_hex(sha1), + cgit_query_path ? cgit_query_path : "", + pathname))); } else { html("<div class='ls-blob'><a href='"); html_attr(cgit_pageurl(cgit_query_repo, "view", - fmt("id=%s", sha1_to_hex(sha1)))); + fmt("id=%s&path=%s%s", sha1_to_hex(sha1), + cgit_query_path ? cgit_query_path : "", + pathname))); } html("'>"); html_txt(name);

@@ -46,7 +51,7 @@ free(name);

return 0; } -void cgit_print_tree(const char *hex) +void cgit_print_tree(const char *hex, char *path) { struct tree *tree; unsigned char sha1[20];

@@ -62,6 +67,7 @@ return;

} html("<h2>Tree content</h2>\n"); + html_txt(path); html("<table class='list'>\n"); html("<tr>"); html("<th class='left'>Mode</th>");