summaryrefslogtreecommitdiffabout
authorLars Hjemli <hjemli@gmail.com>2008-10-05 15:16:48 (UTC)
committer Lars Hjemli <hjemli@gmail.com>2008-10-05 15:16:48 (UTC)
commitc6bea0375aa7898ea3229483741944303740801e (patch) (side-by-side diff)
tree249000a4b85dbab2a7067042f9d835bc0a5e5f8f
parent20c895f6889a66d7cf43c67a7c22df6ef324ed5d (diff)
parent49ecbbddf0659c6409befcfe8989f92196133cda (diff)
downloadcgit-c6bea0375aa7898ea3229483741944303740801e.zip
cgit-c6bea0375aa7898ea3229483741944303740801e.tar.gz
cgit-c6bea0375aa7898ea3229483741944303740801e.tar.bz2
Merge branch 'lh/escape-urls'
* lh/escape-urls: ui-repolist + ui-shared: Use cgit_summary_link() ui-shared.c: add cgit_summary_link() ui-shared.c: use html_url_path() in repolink() html.c: add html_url_path
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--html.c16
-rw-r--r--html.h1
-rw-r--r--ui-repolist.c8
-rw-r--r--ui-shared.c20
-rw-r--r--ui-shared.h1
5 files changed, 32 insertions, 14 deletions
diff --git a/html.c b/html.c
index 167127f..d7d9fd7 100644
--- a/html.c
+++ b/html.c
@@ -129,4 +129,20 @@ void html_attr(char *txt)
}
+void html_url_path(char *txt)
+{
+ char *t = txt;
+ while(t && *t){
+ int c = *t;
+ if (c=='"' || c=='#' || c=='\'' || c=='?') {
+ write(htmlfd, txt, t - txt);
+ write(htmlfd, fmt("%%%2x", c), 3);
+ txt = t+1;
+ }
+ t++;
+ }
+ if (t!=txt)
+ html(txt);
+}
+
void html_url_arg(char *txt)
{
diff --git a/html.h b/html.h
index 038cf60..a55d4b2 100644
--- a/html.h
+++ b/html.h
@@ -11,4 +11,5 @@ extern void html_txt(char *txt);
extern void html_ntxt(int len, char *txt);
extern void html_attr(char *txt);
+extern void html_url_path(char *txt);
extern void html_url_arg(char *txt);
extern void html_hidden(char *name, char *value);
diff --git a/ui-repolist.c b/ui-repolist.c
index 725338b..ab050c7 100644
--- a/ui-repolist.c
+++ b/ui-repolist.c
@@ -132,7 +132,5 @@ void cgit_print_repolist()
htmlf("<tr><td class='%s'>",
ctx.repo->group ? "sublevel-repo" : "toplevel-repo");
- html_link_open(cgit_repourl(ctx.repo->url), NULL, NULL);
- html_txt(ctx.repo->name);
- html_link_close();
+ cgit_summary_link(ctx.repo->name, ctx.repo->name, NULL, NULL);
html("</td><td>");
html_link_open(cgit_repourl(ctx.repo->url), NULL, NULL);
@@ -146,7 +144,5 @@ void cgit_print_repolist()
if (ctx.cfg.enable_index_links) {
html("<td>");
- html_link_open(cgit_repourl(ctx.repo->url),
- NULL, "button");
- html("summary</a>");
+ cgit_summary_link("summary", NULL, "button", NULL);
cgit_log_link("log", NULL, "button", NULL, NULL, NULL,
0, NULL, NULL);
diff --git a/ui-shared.c b/ui-shared.c
index a2f636c..1fc5c09 100644
--- a/ui-shared.c
+++ b/ui-shared.c
@@ -207,15 +207,15 @@ static char *repolink(char *title, char *class, char *page, char *head,
html(" href='");
if (ctx.cfg.virtual_root) {
- html_attr(ctx.cfg.virtual_root);
+ html_url_path(ctx.cfg.virtual_root);
if (ctx.cfg.virtual_root[strlen(ctx.cfg.virtual_root) - 1] != '/')
html("/");
- html_attr(ctx.repo->url);
+ html_url_path(ctx.repo->url);
if (ctx.repo->url[strlen(ctx.repo->url) - 1] != '/')
html("/");
if (page) {
- html(page);
+ html_url_path(page);
html("/");
if (path)
- html_attr(path);
+ html_url_path(path);
}
} else {
@@ -258,4 +258,9 @@ static void reporevlink(char *page, char *name, char *title, char *class,
}
+void cgit_summary_link(char *name, char *title, char *class, char *head)
+{
+ reporevlink(NULL, name, title, class, head, NULL, NULL);
+}
+
void cgit_tree_link(char *name, char *title, char *class, char *head,
char *rev, char *path)
@@ -599,6 +604,5 @@ void cgit_print_pageheader(struct cgit_context *ctx)
cgit_index_link("index", NULL, NULL, NULL, 0);
html(" : ");
- reporevlink(NULL, ctx->repo->name, NULL, hc(cmd, "summary"),
- ctx->qry.head, NULL, NULL);
+ cgit_summary_link(ctx->repo->name, ctx->repo->name, NULL, NULL);
html("</td><td class='form'>");
html("<form method='get' action=''>\n");
@@ -628,6 +632,6 @@ void cgit_print_pageheader(struct cgit_context *ctx)
html("<table class='tabs'><tr><td>\n");
if (ctx->repo) {
- reporevlink(NULL, "summary", NULL, hc(cmd, "summary"),
- ctx->qry.head, NULL, NULL);
+ cgit_summary_link(ctx->repo->name, ctx->repo->name, NULL,
+ ctx->qry.head);
cgit_refs_link("refs", NULL, hc(cmd, "refs"), ctx->qry.head,
ctx->qry.sha1, NULL);
diff --git a/ui-shared.h b/ui-shared.h
index 747f092..0cd5ed1 100644
--- a/ui-shared.h
+++ b/ui-shared.h
@@ -11,4 +11,5 @@ extern char *cgit_pageurl(const char *reponame, const char *pagename,
extern void cgit_index_link(char *name, char *title, char *class,
char *pattern, int ofs);
+extern void cgit_summary_link(char *name, char *title, char *class, char *head);
extern void cgit_tree_link(char *name, char *title, char *class, char *head,
char *rev, char *path);