-rw-r--r-- | ui-shared.c | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/ui-shared.c b/ui-shared.c index 71c899a..15d8254 100644 --- a/ui-shared.c +++ b/ui-shared.c @@ -147,64 +147,86 @@ static void reporevlink(char *page, char *name, char *title, char *class, html("id="); html_attr(rev); } html("'>"); html_txt(name); html("</a>"); } void cgit_tree_link(char *name, char *title, char *class, char *head, char *rev, char *path) { reporevlink("tree", name, title, class, head, rev, path); } void cgit_log_link(char *name, char *title, char *class, char *head, char *rev, char *path) { reporevlink("log", name, title, class, head, rev, path); } void cgit_commit_link(char *name, char *title, char *class, char *head, char *rev) { if (strlen(name) > cgit_max_msg_len && cgit_max_msg_len >= 15) { name[cgit_max_msg_len] = '\0'; name[cgit_max_msg_len - 1] = '.'; name[cgit_max_msg_len - 2] = '.'; name[cgit_max_msg_len - 3] = '.'; } reporevlink("commit", name, title, class, head, rev, NULL); } +void cgit_diff_link(char *name, char *title, char *class, char *head, + char *new_rev, char *old_rev, char *path) +{ + char *delim; + + delim = repolink(title, class, "diff", head, path); + if (new_rev && strcmp(new_rev, cgit_query_head)) { + html(delim); + html("id="); + html_attr(new_rev); + delim = "&"; + } + if (old_rev) { + html(delim); + html("id2="); + html_attr(old_rev); + } + html("'>"); + html_txt(name); + html("</a>"); +} + void cgit_print_date(time_t secs, char *format) { char buf[64]; struct tm *time; time = gmtime(&secs); strftime(buf, sizeof(buf)-1, format, time); html_txt(buf); } void cgit_print_age(time_t t, time_t max_relative, char *format) { time_t now, secs; time(&now); secs = now - t; if (secs > max_relative && max_relative >= 0) { cgit_print_date(t, format); return; } if (secs < TM_HOUR * 2) { htmlf("<span class='age-mins'>%.0f min.</span>", secs * 1.0 / TM_MIN); return; } if (secs < TM_DAY * 2) { htmlf("<span class='age-hours'>%.0f hours</span>", secs * 1.0 / TM_HOUR); return; } |