diff options
| author | Lars Hjemli <hjemli@gmail.com> | 2010-09-19 18:43:58 +0200 | 
|---|---|---|
| committer | Lars Hjemli <hjemli@gmail.com> | 2010-09-19 18:43:58 +0200 | 
| commit | e76a1ea427792aaa331cdec70d7d4ff1fb3422e0 (patch) | |
| tree | faeee0c46a2d470b29b46481f74070557e3fdb8d /ui-summary.c | |
| parent | Use GIT-1.7.3 (diff) | |
| parent | Add support for "readme" option (diff) | |
| download | cgit-e76a1ea427792aaa331cdec70d7d4ff1fb3422e0.tar.gz cgit-e76a1ea427792aaa331cdec70d7d4ff1fb3422e0.tar.bz2 cgit-e76a1ea427792aaa331cdec70d7d4ff1fb3422e0.zip | |
Merge branch 'lh/readme'
Diffstat (limited to '')
| -rw-r--r-- | ui-summary.c | 42 | 
1 files changed, 28 insertions, 14 deletions
| diff --git a/ui-summary.c b/ui-summary.c index 02f191e..b203bcc 100644 --- a/ui-summary.c +++ b/ui-summary.c @@ -70,33 +70,47 @@ void cgit_print_summary()  void cgit_print_repo_readme(char *path)  { -	char *slash, *tmp, *colon, *ref = 0; +	char *slash, *tmp, *colon, *ref; -	if (!ctx.repo->readme) +	if (!ctx.repo->readme || !(*ctx.repo->readme))  		return; +	ref = NULL; + +	/* Check if the readme is tracked in the git repo. */ +	colon = strchr(ctx.repo->readme, ':'); +	if (colon && strlen(colon) > 1) { +		*colon = '\0'; +		ref = ctx.repo->readme; +		ctx.repo->readme = colon + 1; +		if (!(*ctx.repo->readme)) +			return; +	} + +	/* Prepend repo path to relative readme path unless tracked. */ +	if (!ref && *ctx.repo->readme != '/') +		ctx.repo->readme = xstrdup(fmt("%s/%s", ctx.repo->path, +					       ctx.repo->readme)); + +	/* If a subpath is specified for the about page, make it relative +	 * to the directory containing the configured readme. +	 */  	if (path) {  		slash = strrchr(ctx.repo->readme, '/');  		if (!slash) { -			slash = strchr(ctx.repo->readme, ':'); -			if (!slash) +			if (!colon)  				return; +			slash = colon;  		}  		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; -	} + +	/* Print the calculated readme, either from the git repo or from the +	 * filesystem, while applying the about-filter. +	 */  	html("<div id='summary'>");  	if (ctx.repo->about_filter)  		cgit_open_filter(ctx.repo->about_filter); | 
