diff options
| author | Jason A. Donenfeld <Jason@zx2c4.com> | 2016-01-18 15:56:45 +0100 | 
|---|---|---|
| committer | Jason A. Donenfeld <Jason@zx2c4.com> | 2016-01-18 16:13:29 +0100 | 
| commit | 23f7dadaaba2817c92c42c0a642a3186aa8ef24d (patch) | |
| tree | 3a588fed9cc04e0ba3e35688d819f5a61db0c080 | |
| parent | d3756bd7b00f9ad6adede3c7f956a25b22a2254a (diff) | |
ui-tree: put reverse path in title
| -rw-r--r-- | ui-tree.c | 34 | 
1 files changed, 34 insertions, 0 deletions
| @@ -84,6 +84,37 @@ static void print_binary_buffer(char *buf, unsigned long size)  	html("</table>\n");  } +static void set_title_from_path(const char *path) +{ +	size_t path_len, path_index, path_last_end; +	char *new_title; + +	if (!path) +		return; + +	path_len = strlen(path); +	new_title = xmalloc(path_len + 3 + strlen(ctx.page.title) + 1); +	new_title[0] = '\0'; + +	for (path_index = path_len, path_last_end = path_len; path_index-- > 0;) { +		if (path[path_index] == '/') { +			if (path_index == path_len - 1) { +				path_last_end = path_index - 1; +				continue; +			} +			strncat(new_title, &path[path_index + 1], path_last_end - path_index - 1); +			strcat(new_title, "\\"); +			path_last_end = path_index; +		} +	} +	if (path_last_end) +		strncat(new_title, path, path_last_end); + +	strcat(new_title, " - "); +	strcat(new_title, ctx.page.title); +	ctx.page.title = new_title; +} +  static void print_object(const unsigned char *sha1, char *path, const char *basename, const char *rev)  {  	enum object_type type; @@ -104,6 +135,8 @@ static void print_object(const unsigned char *sha1, char *path, const char *base  		return;  	} +	set_title_from_path(path); +  	cgit_print_layout_start();  	htmlf("blob: %s (", sha1_to_hex(sha1));  	cgit_plain_link("plain", NULL, NULL, ctx.qry.head, @@ -235,6 +268,7 @@ static int walk_tree(const unsigned char *sha1, struct strbuf *base,  		if (S_ISDIR(mode)) {  			walk_tree_ctx->state = 1; +			set_title_from_path(buffer);  			ls_head();  			return READ_TREE_RECURSIVE;  		} else { | 
