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
This commit is contained in:
		
							
								
								
									
										16
									
								
								html.c
									
									
									
									
									
								
							
							
						
						
									
										16
									
								
								html.c
									
									
									
									
									
								
							| @@ -128,6 +128,22 @@ void html_attr(char *txt) | ||||
| 		html(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) | ||||
| { | ||||
| 	char *t = txt; | ||||
|   | ||||
							
								
								
									
										1
									
								
								html.h
									
									
									
									
									
								
							
							
						
						
									
										1
									
								
								html.h
									
									
									
									
									
								
							| @@ -10,6 +10,7 @@ extern void html_status(int code, const char *msg, int more_headers); | ||||
| 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); | ||||
| extern void html_option(char *value, char *text, char *selected_value); | ||||
|   | ||||
| @@ -131,9 +131,7 @@ 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); | ||||
| 		html_ntxt(ctx.cfg.max_repodesc_len, ctx.repo->desc); | ||||
| @@ -145,9 +143,7 @@ void cgit_print_repolist() | ||||
| 		html("</td>"); | ||||
| 		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); | ||||
| 			cgit_tree_link("tree", NULL, "button", NULL, NULL, NULL); | ||||
|   | ||||
							
								
								
									
										20
									
								
								ui-shared.c
									
									
									
									
									
								
							
							
						
						
									
										20
									
								
								ui-shared.c
									
									
									
									
									
								
							| @@ -206,17 +206,17 @@ 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 { | ||||
| 		html(ctx.cfg.script_name); | ||||
| @@ -257,6 +257,11 @@ static void reporevlink(char *page, char *name, char *title, char *class, | ||||
| 	html("</a>"); | ||||
| } | ||||
|  | ||||
| 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) | ||||
| { | ||||
| @@ -598,8 +603,7 @@ void cgit_print_pageheader(struct cgit_context *ctx) | ||||
| 	if (ctx->repo) { | ||||
| 		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"); | ||||
| 		add_hidden_formfields(0, 1, ctx->qry.page); | ||||
| @@ -627,8 +631,8 @@ 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); | ||||
| 		cgit_log_link("log", NULL, hc(cmd, "log"), ctx->qry.head, | ||||
|   | ||||
| @@ -10,6 +10,7 @@ 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); | ||||
| extern void cgit_plain_link(char *name, char *title, char *class, char *head, | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Lars Hjemli
					Lars Hjemli