-rw-r--r-- | cgit.c | 2 | ||||
-rw-r--r-- | cgit.h | 1 | ||||
-rw-r--r-- | shared.c | 9 | ||||
-rw-r--r-- | ui-log.c | 31 |
4 files changed, 37 insertions, 6 deletions
@@ -31,3 +31,3 @@ static void cgit_print_repo_page(struct cacheitem *item) } else if (!strcmp(cgit_query_page, "log")) { - cgit_print_log(cgit_query_head, 0, 100); + cgit_print_log(cgit_query_head, cgit_query_ofs, 100); } else if (!strcmp(cgit_query_page, "tree")) { @@ -46,2 +46,3 @@ extern char *cgit_query_head; extern char *cgit_query_sha1; +extern int cgit_query_ofs; @@ -30,2 +30,3 @@ char *cgit_query_head = NULL; char *cgit_query_sha1 = NULL; +int cgit_query_ofs = 0; @@ -61,7 +62,7 @@ void cgit_querystring_cb(const char *name, const char *value) { - if (!strcmp(name,"r")) + if (!strcmp(name,"r")) { cgit_query_repo = xstrdup(value); - else if (!strcmp(name, "p")) + } else if (!strcmp(name, "p")) { cgit_query_page = xstrdup(value); - else if (!strcmp(name, "h")) { + } else if (!strcmp(name, "h")) { cgit_query_head = xstrdup(value); @@ -71,2 +72,4 @@ void cgit_querystring_cb(const char *name, const char *value) cgit_query_has_sha1 = 1; + } else if (!strcmp(name, "ofs")) { + cgit_query_ofs = atoi(value); } @@ -97,3 +97,3 @@ void cgit_print_log(const char *tip, int ofs, int cnt) const char *argv[2] = {NULL, tip}; - int n = 0; + int i; @@ -110,3 +110,14 @@ void cgit_print_log(const char *tip, int ofs, int cnt) html("<tr><th>Date</th><th>Message</th><th>Author</th><th>Link</th></tr>\n"); - while ((commit = get_revision(&rev)) != NULL && n++ < 100) { + + if (ofs<0) + ofs = 0; + + for (i = 0; i < ofs && (commit = get_revision(&rev)) != NULL; i++) { + free(commit->buffer); + commit->buffer = NULL; + free_commit_list(commit->parents); + commit->parents = NULL; + } + + for (i = 0; i < cnt && (commit = get_revision(&rev)) != NULL; i++) { cgit_print_commit_shortlog(commit); @@ -118,2 +129,18 @@ void cgit_print_log(const char *tip, int ofs, int cnt) html("</table>\n"); + + html("<div class='pager'>"); + if (ofs > 0) { + html(" <a href='"); + html(cgit_pageurl(cgit_query_repo, cgit_query_page, + fmt("h=%s&ofs=%d", tip, ofs-cnt))); + html("'>[prev]</a> "); + } + + if ((commit = get_revision(&rev)) != NULL) { + html(" <a href='"); + html(cgit_pageurl(cgit_query_repo, "log", + fmt("h=%s&ofs=%d", tip, ofs+cnt))); + html("'>[next]</a> "); + } + html("</div>"); } |