summaryrefslogtreecommitdiffabout
path: root/ui-summary.c
authorJohan Herland <johan@herland.net>2010-11-15 17:39:52 (UTC)
committer Lars Hjemli <hjemli@gmail.com>2010-11-16 07:18:37 (UTC)
commitad230267f8ecae6cb4f0da17d7a5f75ba38203e2 (patch) (side-by-side diff)
treeb25cb32e8caf932b031691a5c85b827b847261c5 /ui-summary.c
parent268b34af23cdcac87aed3300bfe6154cbc65753e (diff)
downloadcgit-ad230267f8ecae6cb4f0da17d7a5f75ba38203e2.zip
cgit-ad230267f8ecae6cb4f0da17d7a5f75ba38203e2.tar.gz
cgit-ad230267f8ecae6cb4f0da17d7a5f75ba38203e2.tar.bz2
ui-log: Line-wrap long commit subjects when showmsg is enabled
When showmsg is disabled ui-log truncates long commit subjects. This is good. However, the same is not desirable when showmsg is enabled, since you then end up with a truncated commit subject followed by the rest of the commit message below. Instead, when showmsg is enabled (and we're using all this space to display the entire commit message, anyway), line-wrap the commit subject instead of truncating it. Signed-off-by: Johan Herland <johan@herland.net> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
Diffstat (limited to 'ui-summary.c') (more/less context) (ignore whitespace changes)
-rw-r--r--ui-summary.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/ui-summary.c b/ui-summary.c
index b203bcc..5be2545 100644
--- a/ui-summary.c
+++ b/ui-summary.c
@@ -1,124 +1,124 @@
/* ui-summary.c: functions for generating repo summary page
*
* Copyright (C) 2006 Lars Hjemli
* Copyright (C) 2010 Jason A. Donenfeld <Jason@zx2c4.com>
*
* Licensed under GNU General Public License v2
* (see COPYING for full license text)
*/
#include "cgit.h"
#include "html.h"
#include "ui-log.h"
#include "ui-refs.h"
#include "ui-blob.h"
int urls = 0;
static void print_url(char *base, char *suffix)
{
if (!base || !*base)
return;
if (urls++ == 0) {
html("<tr class='nohover'><td colspan='4'>&nbsp;</td></tr>");
html("<tr><th class='left' colspan='4'>Clone</th></tr>\n");
}
if (suffix && *suffix)
base = fmt("%s/%s", base, suffix);
html("<tr><td colspan='4'><a href='");
html_url_path(base);
html("'>");
html_txt(base);
html("</a></td></tr>\n");
}
static void print_urls(char *txt, char *suffix)
{
char *h = txt, *t, c;
while (h && *h) {
while (h && *h == ' ')
h++;
t = h;
while (t && *t && *t != ' ')
t++;
c = *t;
*t = 0;
print_url(h, suffix);
*t = c;
h = t;
}
}
void cgit_print_summary()
{
html("<table summary='repository info' class='list nowrap'>");
cgit_print_branches(ctx.cfg.summary_branches);
html("<tr class='nohover'><td colspan='4'>&nbsp;</td></tr>");
cgit_print_tags(ctx.cfg.summary_tags);
if (ctx.cfg.summary_log > 0) {
html("<tr class='nohover'><td colspan='4'>&nbsp;</td></tr>");
cgit_print_log(ctx.qry.head, 0, ctx.cfg.summary_log, NULL,
- NULL, NULL, 0);
+ NULL, NULL, 0, 0);
}
if (ctx.repo->clone_url)
print_urls(ctx.repo->clone_url, NULL);
else if (ctx.cfg.clone_prefix)
print_urls(ctx.cfg.clone_prefix, ctx.repo->url);
html("</table>");
}
void cgit_print_repo_readme(char *path)
{
char *slash, *tmp, *colon, *ref;
if (!ctx.repo->readme || !(*ctx.repo->readme))
return;
ref = NULL;
/* Check if the readme is tracked in the git repo. */
colon = strchr(ctx.repo->readme, ':');
if (colon && strlen(colon) > 1) {
*colon = '\0';
ref = ctx.repo->readme;
ctx.repo->readme = colon + 1;
if (!(*ctx.repo->readme))
return;
}
/* Prepend repo path to relative readme path unless tracked. */
if (!ref && *ctx.repo->readme != '/')
ctx.repo->readme = xstrdup(fmt("%s/%s", ctx.repo->path,
ctx.repo->readme));
/* If a subpath is specified for the about page, make it relative
* to the directory containing the configured readme.
*/
if (path) {
slash = strrchr(ctx.repo->readme, '/');
if (!slash) {
if (!colon)
return;
slash = colon;
}
tmp = xmalloc(slash - ctx.repo->readme + 1 + strlen(path) + 1);
strncpy(tmp, ctx.repo->readme, slash - ctx.repo->readme + 1);
strcpy(tmp + (slash - ctx.repo->readme + 1), path);
} else
tmp = ctx.repo->readme;
/* Print the calculated readme, either from the git repo or from the
* filesystem, while applying the about-filter.
*/
html("<div id='summary'>");
if (ctx.repo->about_filter)
cgit_open_filter(ctx.repo->about_filter);
if (ref)
cgit_print_file(tmp, ref);
else
html_include(tmp);
if (ctx.repo->about_filter)
cgit_close_filter(ctx.repo->about_filter);
html("</div>");
}