Extract clone URL printing to ui-shared.c

This will allow us to reuse the same logic to add clone URL <link/>
elements to the header of all repo-specific pages in order to support
the rel-vcs microformat.

Signed-off-by: John Keeping <john@keeping.me.uk>
这个提交包含在:
John Keeping
2014-08-01 22:14:17 +01:00
提交者 Jason A. Donenfeld
父节点 485b09925c
当前提交 bbfa006e6e
共有 3 个文件被更改,包括 51 次插入46 次删除

查看文件

@ -727,6 +727,43 @@ void cgit_print_docend()
html("</body>\n</html>\n");
}
static void add_clone_urls(void (*fn)(const char *), char *txt, char *suffix)
{
struct strbuf buf = STRBUF_INIT;
char *h = txt, *t, c;
while (h && *h) {
while (h && *h == ' ')
h++;
if (!*h)
break;
t = h;
while (t && *t && *t != ' ')
t++;
c = *t;
*t = 0;
if (suffix && *suffix) {
strbuf_reset(&buf);
strbuf_addf(&buf, "%s/%s", h, suffix);
h = buf.buf;
}
fn(h);
*t = c;
h = t;
}
strbuf_release(&buf);
}
void cgit_add_clone_urls(void (*fn)(const char *))
{
if (ctx.repo->clone_url)
add_clone_urls(fn, expand_macros(ctx.repo->clone_url), NULL);
else if (ctx.cfg.clone_prefix)
add_clone_urls(fn, ctx.cfg.clone_prefix, ctx.repo->url);
}
static int print_branch_option(const char *refname, const unsigned char *sha1,
int flags, void *cb_data)
{