diff options
Diffstat (limited to 'ui-tree.c')
| -rw-r--r-- | ui-tree.c | 27 | 
1 files changed, 12 insertions, 15 deletions
| @@ -46,7 +46,7 @@ static void print_text_buffer(const char *name, char *buf, unsigned long size)  		html("<td class='lines'><pre><code>");  		ctx.repo->source_filter->argv[1] = xstrdup(name);  		cgit_open_filter(ctx.repo->source_filter); -		write(STDOUT_FILENO, buf, size); +		html_raw(buf, size);  		cgit_close_filter(ctx.repo->source_filter);  		html("</code></pre></td></tr></table>\n");  		return; @@ -67,7 +67,7 @@ static void print_binary_buffer(char *buf, unsigned long size)  	html("<table summary='blob content' class='bin-blob'>\n");  	html("<tr><th>ofs</th><th>hex dump</th><th>ascii</th></tr>");  	for (ofs = 0; ofs < size; ofs += ROWLEN, buf += ROWLEN) { -		htmlf("<tr><td class='right'>%04x</td><td class='hex'>", ofs); +		htmlf("<tr><td class='right'>%04lx</td><td class='hex'>", ofs);  		for (idx = 0; idx < ROWLEN && ofs + idx < size; idx++)  			htmlf("%*s%02x",  			      idx == 16 ? 4 : 1, "", @@ -102,10 +102,16 @@ static void print_object(const unsigned char *sha1, char *path, const char *base  		return;  	} -	html(" ("); +	htmlf("blob: %s (", sha1_to_hex(sha1));  	cgit_plain_link("plain", NULL, NULL, ctx.qry.head,  		        curr_rev, path); -	htmlf(")<br/>blob: %s\n", sha1_to_hex(sha1)); +	html(")\n"); + +	if (ctx.cfg.max_blob_size && size / 1024 > ctx.cfg.max_blob_size) { +		htmlf("<div class='error'>blob size (%ldKB) exceeds display size limit (%dKB).</div>", +				size / 1024, ctx.cfg.max_blob_size); +		return; +	}  	if (buffer_is_binary(buf, size))  		print_binary_buffer(buf, size); @@ -169,6 +175,8 @@ static int ls_item(const unsigned char *sha1, const char *base, int baselen,  	if (ctx.repo->max_stats)  		cgit_stats_link("stats", NULL, "button", ctx.qry.head,  				fullpath); +	cgit_plain_link("plain", NULL, "button", ctx.qry.head, curr_rev, +			fullpath);  	html("</td></tr>\n");  	free(name);  	return 0; @@ -217,17 +225,10 @@ static int walk_tree(const unsigned char *sha1, const char *base, int baselen,  {  	static int state;  	static char buffer[PATH_MAX]; -	char *url;  	if (state == 0) {  		memcpy(buffer, base, baselen);  		strcpy(buffer+baselen, pathname); -		url = cgit_pageurl(ctx.qry.repo, "tree", -				   fmt("h=%s&path=%s", curr_rev, buffer)); -		html("/"); -		cgit_tree_link(xstrdup(pathname), NULL, NULL, ctx.qry.head, -			       curr_rev, buffer); -  		if (strcmp(match_path, buffer))  			return READ_TREE_RECURSIVE; @@ -270,10 +271,6 @@ void cgit_print_tree(const char *rev, char *path)  		return;  	} -	html("path: <a href='"); -	html_attr(cgit_pageurl(ctx.qry.repo, "tree", fmt("h=%s", rev))); -	html("'>root</a>"); -  	if (path == NULL) {  		ls_tree(commit->tree->object.sha1, NULL);  		return; | 
