}
void cgit_commit_link(char *name, const char *title, const char *class,
- const char *head, const char *rev, int toggle_ssdiff)
+ const char *head, const char *rev, const char *path,
+ int toggle_ssdiff)
{
if (strlen(name) > ctx.cfg.max_msg_len && ctx.cfg.max_msg_len >= 15) {
name[ctx.cfg.max_msg_len] = '\0';
char *delim;
- delim = repolink(title, class, "commit", head, NULL);
+ delim = repolink(title, class, "commit", head, path);
if (rev && strcmp(rev, ctx.qry.head)) {
html(delim);
html("id=");
if ((ctx.qry.ssdiff && !toggle_ssdiff) || (!ctx.qry.ssdiff && toggle_ssdiff)) {
html(delim);
html("ss=1");
+ delim = "&";
+ }
+ if (ctx.qry.context > 0 && ctx.qry.context != 3) {
+ html(delim);
+ html("context=");
+ htmlf("%d", ctx.qry.context);
+ delim = "&";
+ }
+ if (ctx.qry.ignorews) {
+ html(delim);
+ html("ignorews=1");
+ delim = "&";
}
html("'>");
html_txt(name);
if ((ctx.qry.ssdiff && !toggle_ssdiff) || (!ctx.qry.ssdiff && toggle_ssdiff)) {
html(delim);
html("ss=1");
+ delim = "&";
+ }
+ if (ctx.qry.context > 0 && ctx.qry.context != 3) {
+ html(delim);
+ html("context=");
+ htmlf("%d", ctx.qry.context);
+ delim = "&";
+ }
+ if (ctx.qry.ignorews) {
+ html(delim);
+ html("ignorews=1");
+ delim = "&";
}
html("'>");
html_txt(name);
shortrev[10] = '\0';
if (obj->type == OBJ_COMMIT) {
cgit_commit_link(fmt("commit %s...", shortrev), NULL, NULL,
- ctx.qry.head, fullrev, 0);
+ ctx.qry.head, fullrev, NULL, 0);
return;
} else if (obj->type == OBJ_TREE)
page = "tree";
cgit_refs_link("refs", NULL, hc(ctx, "refs"), ctx->qry.head,
ctx->qry.sha1, NULL);
cgit_log_link("log", NULL, hc(ctx, "log"), ctx->qry.head,
- NULL, NULL, 0, NULL, NULL, ctx->qry.showmsg);
+ NULL, ctx->qry.vpath, 0, NULL, NULL,
+ ctx->qry.showmsg);
cgit_tree_link("tree", NULL, hc(ctx, "tree"), ctx->qry.head,
- ctx->qry.sha1, NULL);
+ ctx->qry.sha1, ctx->qry.vpath);
cgit_commit_link("commit", NULL, hc(ctx, "commit"),
- ctx->qry.head, ctx->qry.sha1, 0);
+ ctx->qry.head, ctx->qry.sha1, ctx->qry.vpath, 0);
cgit_diff_link("diff", NULL, hc(ctx, "diff"), ctx->qry.head,
- ctx->qry.sha1, ctx->qry.sha2, NULL, 0);
+ ctx->qry.sha1, ctx->qry.sha2, ctx->qry.vpath, 0);
if (ctx->repo->max_stats)
cgit_stats_link("stats", NULL, hc(ctx, "stats"),
- ctx->qry.head, NULL);
+ ctx->qry.head, ctx->qry.vpath);
if (ctx->repo->readme)
reporevlink("about", "about", NULL,
hc(ctx, "about"), ctx->qry.head, NULL,