diff options
Diffstat (limited to '')
| -rw-r--r-- | ui-summary.c | 26 | 
1 files changed, 22 insertions, 4 deletions
| diff --git a/ui-summary.c b/ui-summary.c index a2c018e..02f191e 100644 --- a/ui-summary.c +++ b/ui-summary.c @@ -1,6 +1,7 @@  /* ui-summary.c: functions for generating repo summary page   *   * Copyright (C) 2006 Lars Hjemli + * Copyright (C) 2010 Jason A. Donenfeld <Jason@zx2c4.com>   *   * Licensed under GNU General Public License v2   *   (see COPYING for full license text) @@ -10,6 +11,7 @@  #include "html.h"  #include "ui-log.h"  #include "ui-refs.h" +#include "ui-blob.h"  int urls = 0; @@ -68,24 +70,40 @@ void cgit_print_summary()  void cgit_print_repo_readme(char *path)  { -	char *slash, *tmp; +	char *slash, *tmp, *colon, *ref = 0;  	if (!ctx.repo->readme)  		return;  	if (path) {  		slash = strrchr(ctx.repo->readme, '/'); -		if (!slash) -			return; +		if (!slash) { +			slash = strchr(ctx.repo->readme, ':'); +			if (!slash) +				return; +		}  		tmp = xmalloc(slash - ctx.repo->readme + 1 + strlen(path) + 1);  		strncpy(tmp, ctx.repo->readme, slash - ctx.repo->readme + 1);  		strcpy(tmp + (slash - ctx.repo->readme + 1), path);  	} else  		tmp = ctx.repo->readme; +	colon = strchr(tmp, ':'); +	if (colon && strlen(colon) > 1) { +		*colon = '\0'; +		ref = tmp; +		tmp = colon + 1; +		while ((*tmp == '/' || *tmp == ':') && *tmp != '\0') +			++tmp; +		if (!(*tmp)) +			return; +	}  	html("<div id='summary'>");  	if (ctx.repo->about_filter)  		cgit_open_filter(ctx.repo->about_filter); -	html_include(tmp); +	if (ref) +		cgit_print_file(tmp, ref); +	else +		html_include(tmp);  	if (ctx.repo->about_filter)  		cgit_close_filter(ctx.repo->about_filter);  	html("</div>"); | 
