diff options
| author | Lars Hjemli <hjemli@gmail.com> | 2009-08-09 13:22:00 +0200 | 
|---|---|---|
| committer | Lars Hjemli <hjemli@gmail.com> | 2009-08-09 13:22:00 +0200 | 
| commit | e976df27952ca1e450c1c3d420532ac9f5e3036b (patch) | |
| tree | 2634538f3144c935d1579315d4de289e6c890f19 | |
| parent | f35db1cd2b75aac6952aa07713e44ca01fd89727 (diff) | |
Add support for repo.commit-filter and repo.source-filter
These options can be used to override the default commit- and source-
filter settings per repository.
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
| -rw-r--r-- | cgit.c | 4 | ||||
| -rw-r--r-- | cgit.h | 20 | ||||
| -rw-r--r-- | cgitrc.5.txt | 6 | ||||
| -rw-r--r-- | shared.c | 2 | ||||
| -rw-r--r-- | ui-commit.c | 16 | ||||
| -rw-r--r-- | ui-tree.c | 8 | 
6 files changed, 35 insertions, 21 deletions
| @@ -146,6 +146,10 @@ void config_cb(const char *name, const char *value)  		ctx.repo->max_stats = cgit_find_stats_period(value, NULL);  	else if (ctx.repo && !strcmp(name, "repo.module-link"))  		ctx.repo->module_link= xstrdup(value); +	else if (ctx.repo && !strcmp(name, "repo.commit-filter")) +		ctx.repo->commit_filter = new_filter(value, 0); +	else if (ctx.repo && !strcmp(name, "repo.source-filter")) +		ctx.repo->source_filter = new_filter(value, 1);  	else if (ctx.repo && !strcmp(name, "repo.readme") && value != NULL) {  		if (*value == '/')  			ctx.repo->readme = xstrdup(value); @@ -48,6 +48,15 @@ typedef void (*configfn)(const char *name, const char *value);  typedef void (*filepair_fn)(struct diff_filepair *pair);  typedef void (*linediff_fn)(char *line, int len); +struct cgit_filter { +	char *cmd; +	char **argv; +	int old_stdout; +	int pipe_fh[2]; +	int pid; +	int exitstatus; +}; +  struct cgit_repo {  	char *url;  	char *name; @@ -64,6 +73,8 @@ struct cgit_repo {  	int enable_log_linecount;  	int max_stats;  	time_t mtime; +	struct cgit_filter *commit_filter; +	struct cgit_filter *source_filter;  };  struct cgit_repolist { @@ -129,15 +140,6 @@ struct cgit_query {  	int showmsg;  }; -struct cgit_filter { -	char *cmd; -	char **argv; -	int old_stdout; -	int pipe_fh[2]; -	int pid; -	int exitstatus; -}; -  struct cgit_config {  	char *agefile;  	char *cache_root; diff --git a/cgitrc.5.txt b/cgitrc.5.txt index 2efd6aa..ffb3e0f 100644 --- a/cgitrc.5.txt +++ b/cgitrc.5.txt @@ -238,6 +238,9 @@ repo.clone-url::  	A list of space-separated urls which can be used to clone this repo.  	Default value: none. +repo.commit-filter:: +	Override the default commit-filter. Default value: <commit-filter>. +  repo.defbranch::  	The name of the default branch for this repository. If no such branch  	exists in the repository, the first branch name (when sorted) is used @@ -278,6 +281,9 @@ repo.snapshots::  	A mask of allowed snapshot-formats for this repo, restricted by the  	"snapshots" global setting. Default value: <snapshots>. +repo.source-filter:: +	Override the default source-filter. Default value: <source-filter>. +  repo.url::  	The relative url used to access the repository. This must be the first  	setting specified for each repo. Default value: none. @@ -62,6 +62,8 @@ struct cgit_repo *cgit_add_repo(const char *url)  	ret->module_link = ctx.cfg.module_link;  	ret->readme = NULL;  	ret->mtime = -1; +	ret->commit_filter = ctx.cfg.commit_filter; +	ret->source_filter = ctx.cfg.source_filter;  	return ret;  } diff --git a/ui-commit.c b/ui-commit.c index ee0e139..5815b58 100644 --- a/ui-commit.c +++ b/ui-commit.c @@ -89,19 +89,19 @@ void cgit_print_commit(char *hex)  	}  	html("</table>\n");  	html("<div class='commit-subject'>"); -	if (ctx.cfg.commit_filter) -		cgit_open_filter(ctx.cfg.commit_filter); +	if (ctx.repo->commit_filter) +		cgit_open_filter(ctx.repo->commit_filter);  	html_txt(info->subject); -	if (ctx.cfg.commit_filter) -		cgit_close_filter(ctx.cfg.commit_filter); +	if (ctx.repo->commit_filter) +		cgit_close_filter(ctx.repo->commit_filter);  	show_commit_decorations(commit);  	html("</div>");  	html("<div class='commit-msg'>"); -	if (ctx.cfg.commit_filter) -		cgit_open_filter(ctx.cfg.commit_filter); +	if (ctx.repo->commit_filter) +		cgit_open_filter(ctx.repo->commit_filter);  	html_txt(info->msg); -	if (ctx.cfg.commit_filter) -		cgit_close_filter(ctx.cfg.commit_filter); +	if (ctx.repo->commit_filter) +		cgit_close_filter(ctx.repo->commit_filter);  	html("</div>");  	if (parents < 3) {  		if (parents) @@ -22,12 +22,12 @@ static void print_text_buffer(const char *name, char *buf, unsigned long size)  		"<a class='no' id='n%1$d' name='n%1$d' href='#n%1$d'>%1$d</a>\n";  	html("<table summary='blob content' class='blob'>\n"); -	if (ctx.cfg.source_filter) { +	if (ctx.repo->source_filter) {  		html("<tr><td class='lines'><pre><code>"); -		ctx.cfg.source_filter->argv[1] = xstrdup(name); -		cgit_open_filter(ctx.cfg.source_filter); +		ctx.repo->source_filter->argv[1] = xstrdup(name); +		cgit_open_filter(ctx.repo->source_filter);  		write(STDOUT_FILENO, buf, size); -		cgit_close_filter(ctx.cfg.source_filter); +		cgit_close_filter(ctx.repo->source_filter);  		html("</code></pre></td></tr></table>\n");  		return;  	} | 
