X-Git-Url: https://gitweb.ps.run/ps-cgit/blobdiff_plain/b44dd95f13f039cd9bee301655150ff765d9555e..f77e2a8cfaf07b25ddedd57348a1d957b048bbf5:/ui-shared.c
diff --git a/ui-shared.c b/ui-shared.c
index bbb277a..09c34fd 100644
--- a/ui-shared.c
+++ b/ui-shared.c
@@ -54,21 +54,21 @@ const char *cgit_httpscheme(void)
return "http://";
}
-const char *cgit_hosturl(void)
+char *cgit_hosturl(void)
{
if (ctx.env.http_host)
- return ctx.env.http_host;
+ return xstrdup(ctx.env.http_host);
if (!ctx.env.server_name)
return NULL;
if (!ctx.env.server_port || atoi(ctx.env.server_port) == 80)
- return ctx.env.server_name;
+ return xstrdup(ctx.env.server_name);
return fmtalloc("%s:%s", ctx.env.server_name, ctx.env.server_port);
}
-const char *cgit_currenturl(void)
+char *cgit_currenturl(void)
{
if (!ctx.qry.url)
- return cgit_rooturl();
+ return xstrdup(cgit_rooturl());
const char *root = cgit_rooturl();
size_t len = strlen(root);
if (len && root[len - 1] == '/')
@@ -157,8 +157,11 @@ static void site_url(const char *page, const char *search, const char *sort, int
if (always_root || page)
html_attr(cgit_rooturl());
- else
- html_attr(cgit_currenturl());
+ else {
+ char *currenturl = cgit_currenturl();
+ html_attr(currenturl);
+ free(currenturl);
+ }
if (page) {
htmlf("?p=%s", page);
@@ -644,7 +647,11 @@ void cgit_print_age(time_t t, time_t max_relative, const char *format)
secs = 0;
if (secs > max_relative && max_relative >= 0) {
+ html("");
cgit_print_date(t, format, ctx.cfg.local_time);
+ html("");
return;
}
@@ -742,16 +749,19 @@ void cgit_print_docstart(void)
html("'/>\n");
}
if (host && ctx.repo && ctx.qry.head) {
+ char *fileurl;
struct strbuf sb = STRBUF_INIT;
strbuf_addf(&sb, "h=%s", ctx.qry.head);
html("\n");
strbuf_release(&sb);
+ free(fileurl);
}
if (ctx.repo)
cgit_add_clone_urls(print_rel_vcs_link);
@@ -784,6 +794,33 @@ void cgit_print_docend(void)
html("