diff options
Diffstat (limited to 'shared.c')
| -rw-r--r-- | shared.c | 29 | 
1 files changed, 29 insertions, 0 deletions
| @@ -7,6 +7,7 @@   */  #include "cgit.h" +#include <stdio.h>  struct cgit_repolist cgit_repolist;  struct cgit_context ctx; @@ -68,6 +69,7 @@ struct cgit_repo *cgit_add_repo(const char *url)  	ret->about_filter = ctx.cfg.about_filter;  	ret->commit_filter = ctx.cfg.commit_filter;  	ret->source_filter = ctx.cfg.source_filter; +	ret->clone_url = ctx.cfg.clone_url;  	return ret;  } @@ -367,6 +369,33 @@ int cgit_parse_snapshots_mask(const char *str)  	return rv;  } +typedef struct { +	char * name; +	char * value; +} cgit_env_var; + +void cgit_prepare_repo_env(struct cgit_repo * repo) +{ +	cgit_env_var env_vars[] = { +		{ .name = "CGIT_REPO_URL", .value = repo->url }, +		{ .name = "CGIT_REPO_NAME", .value = repo->name }, +		{ .name = "CGIT_REPO_PATH", .value = repo->path }, +		{ .name = "CGIT_REPO_OWNER", .value = repo->owner }, +		{ .name = "CGIT_REPO_DEFBRANCH", .value = repo->defbranch }, +		{ .name = "CGIT_REPO_SECTION", .value = repo->section }, +		{ .name = "CGIT_REPO_CLONE_URL", .value = repo->clone_url } +	}; +	int env_var_count = ARRAY_SIZE(env_vars); +	cgit_env_var *p, *q; +	static char *warn = "cgit warning: failed to set env: %s=%s\n"; + +	p = env_vars; +	q = p + env_var_count; +	for (; p < q; p++) +		if (p->value && setenv(p->name, p->value, 1)) +			fprintf(stderr, warn, p->name, p->value); +} +  int cgit_open_filter(struct cgit_filter *filter)  { | 
