From 420712ac2531f65a2b94d5ec6d8e03de6942331e Mon Sep 17 00:00:00 2001 From: Lars Hjemli Date: Thu, 14 Dec 2006 00:40:34 +0100 Subject: [PATCH] Add simple pager to log page Signed-off-by: Lars Hjemli --- cgit.c | 2 +- cgit.h | 1 + shared.c | 9 ++++++--- ui-log.c | 31 +++++++++++++++++++++++++++++-- 4 files changed, 37 insertions(+), 6 deletions(-) diff --git a/cgit.c b/cgit.c index ada488b..d7e586d 100644 --- a/cgit.c +++ b/cgit.c @@ -29,7 +29,7 @@ static void cgit_print_repo_page(struct cacheitem *item) if (!cgit_query_page) { cgit_print_summary(); } 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")) { cgit_print_tree(cgit_query_sha1); } else if (!strcmp(cgit_query_page, "view")) { diff --git a/cgit.h b/cgit.h index 2fdfab3..82e8681 100644 --- a/cgit.h +++ b/cgit.h @@ -44,6 +44,7 @@ extern char *cgit_query_repo; extern char *cgit_query_page; extern char *cgit_query_head; extern char *cgit_query_sha1; +extern int cgit_query_ofs; extern int htmlfd; diff --git a/shared.c b/shared.c index c58a2ff..6b5cfc2 100644 --- a/shared.c +++ b/shared.c @@ -28,6 +28,7 @@ char *cgit_query_repo = NULL; char *cgit_query_page = NULL; char *cgit_query_head = NULL; char *cgit_query_sha1 = NULL; +int cgit_query_ofs = 0; int htmlfd = 0; @@ -59,16 +60,18 @@ void cgit_repo_config_cb(const char *name, const char *value) 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); cgit_query_has_symref = 1; } else if (!strcmp(name, "id")) { cgit_query_sha1 = xstrdup(value); cgit_query_has_sha1 = 1; + } else if (!strcmp(name, "ofs")) { + cgit_query_ofs = atoi(value); } } diff --git a/ui-log.c b/ui-log.c index 4d2c2e0..dce50f7 100644 --- a/ui-log.c +++ b/ui-log.c @@ -95,7 +95,7 @@ void cgit_print_log(const char *tip, int ofs, int cnt) struct rev_info rev; struct commit *commit; const char *argv[2] = {NULL, tip}; - int n = 0; + int i; init_revisions(&rev, NULL); rev.abbrev = DEFAULT_ABBREV; @@ -108,7 +108,18 @@ void cgit_print_log(const char *tip, int ofs, int cnt) html("

Log

"); html(""); html("\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); free(commit->buffer); commit->buffer = NULL; @@ -116,5 +127,21 @@ void cgit_print_log(const char *tip, int ofs, int cnt) commit->parents = NULL; } html("
DateMessageAuthorLink
\n"); + + html("
"); + if (ofs > 0) { + html(" [prev] "); + } + + if ((commit = get_revision(&rev)) != NULL) { + html(" [next] "); + } + html("
"); }