diff options
| author | Lars Hjemli <hjemli@gmail.com> | 2008-02-16 13:07:13 +0100 | 
|---|---|---|
| committer | Lars Hjemli <hjemli@gmail.com> | 2008-02-16 13:10:50 +0100 | 
| commit | b228d4ff82a65fdcd4a7364759fe36a0bdda5978 (patch) | |
| tree | 33b8cc2ff48113f8d7ad3ba88c7ea19a7cac570a | |
| parent | d14d77fe95c3b6224b40df9b101dded0deea913c (diff) | |
| download | cgit-b228d4ff82a65fdcd4a7364759fe36a0bdda5978.tar.gz cgit-b228d4ff82a65fdcd4a7364759fe36a0bdda5978.tar.bz2 cgit-b228d4ff82a65fdcd4a7364759fe36a0bdda5978.zip | |
Add all config variables into struct cgit_context
This removes another big set of global variables, and introduces the
cgit_prepare_context() function which populates a context-variable with
compile-time default values.
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
| -rw-r--r-- | cache.c | 10 | ||||
| -rw-r--r-- | cgit.c | 33 | ||||
| -rw-r--r-- | cgit.h | 72 | ||||
| -rw-r--r-- | shared.c | 138 | ||||
| -rw-r--r-- | ui-repolist.c | 18 | ||||
| -rw-r--r-- | ui-shared.c | 60 | ||||
| -rw-r--r-- | ui-summary.c | 10 | 
7 files changed, 166 insertions, 175 deletions
| @@ -44,21 +44,21 @@ int cache_create_dirs()  {  	char *path; -	path = fmt("%s", cgit_cache_root); +	path = fmt("%s", ctx.cfg.cache_root);  	if (mkdir(path, S_IRWXU) && errno!=EEXIST)  		return 0;  	if (!cgit_repo)  		return 0; -	path = fmt("%s/%s", cgit_cache_root, +	path = fmt("%s/%s", ctx.cfg.cache_root,  		   cache_safe_filename(cgit_repo->url));  	if (mkdir(path, S_IRWXU) && errno!=EEXIST)  		return 0;  	if (ctx.qry.page) { -		path = fmt("%s/%s/%s", cgit_cache_root, +		path = fmt("%s/%s/%s", ctx.cfg.cache_root,  			   cache_safe_filename(cgit_repo->url),  			   ctx.qry.page);  		if (mkdir(path, S_IRWXU) && errno!=EEXIST) @@ -74,7 +74,7 @@ int cache_refill_overdue(const char *lockfile)  	if (stat(lockfile, &st))  		return 0;  	else -		return (time(NULL) - st.st_mtime > cgit_cache_max_create_time); +		return (time(NULL) - st.st_mtime > ctx.cfg.cache_max_create_time);  }  int cache_lock(struct cacheitem *item) @@ -83,7 +83,7 @@ int cache_lock(struct cacheitem *item)  	char *lockfile = xstrdup(fmt("%s.lock", item->name));   top: -	if (++i > cgit_max_lock_attempts) +	if (++i > ctx.cfg.max_lock_attempts)  		die("cache_lock: unable to lock %s: %s",  		    item->name, strerror(errno)); @@ -11,7 +11,7 @@  static int cgit_prepare_cache(struct cacheitem *item)  {  	if (!cgit_repo && ctx.qry.repo) { -		char *title = fmt("%s - %s", cgit_root_title, "Bad request"); +		char *title = fmt("%s - %s", ctx.cfg.root_title, "Bad request");  		cgit_print_docstart(title, item);  		cgit_print_pageheader(title, 0);  		cgit_print_error(fmt("Unknown repo: %s", ctx.qry.repo)); @@ -20,27 +20,27 @@ static int cgit_prepare_cache(struct cacheitem *item)  	}  	if (!cgit_repo) { -		item->name = xstrdup(fmt("%s/index.html", cgit_cache_root)); -		item->ttl = cgit_cache_root_ttl; +		item->name = xstrdup(fmt("%s/index.html", ctx.cfg.cache_root)); +		item->ttl = ctx.cfg.cache_root_ttl;  		return 1;  	}  	if (!cgit_cmd) { -		item->name = xstrdup(fmt("%s/%s/index.%s.html", cgit_cache_root, +		item->name = xstrdup(fmt("%s/%s/index.%s.html", ctx.cfg.cache_root,  					 cache_safe_filename(cgit_repo->url),  					 cache_safe_filename(ctx.qry.raw))); -		item->ttl = cgit_cache_repo_ttl; +		item->ttl = ctx.cfg.cache_repo_ttl;  	} else { -		item->name = xstrdup(fmt("%s/%s/%s/%s.html", cgit_cache_root, +		item->name = xstrdup(fmt("%s/%s/%s/%s.html", ctx.cfg.cache_root,  					 cache_safe_filename(cgit_repo->url),  					 ctx.qry.page,  					 cache_safe_filename(ctx.qry.raw)));  		if (ctx.qry.has_symref) -			item->ttl = cgit_cache_dynamic_ttl; +			item->ttl = ctx.cfg.cache_dynamic_ttl;  		else if (ctx.qry.has_sha1) -			item->ttl = cgit_cache_static_ttl; +			item->ttl = ctx.cfg.cache_static_ttl;  		else -			item->ttl = cgit_cache_repo_ttl; +			item->ttl = ctx.cfg.cache_repo_ttl;  	}  	return 1;  } @@ -85,7 +85,7 @@ static void cgit_print_repo_page(struct cacheitem *item)  	unsigned char sha1[20];  	if (chdir(cgit_repo->path)) { -		title = fmt("%s - %s", cgit_root_title, "Bad request"); +		title = fmt("%s - %s", ctx.cfg.root_title, "Bad request");  		cgit_print_docstart(title, item);  		cgit_print_pageheader(title, 0);  		cgit_print_error(fmt("Unable to scan repository: %s", @@ -153,7 +153,7 @@ static void cgit_print_repo_page(struct cacheitem *item)  	switch(cgit_cmd) {  	case CMD_LOG:  		cgit_print_log(ctx.qry.sha1, ctx.qry.ofs, -			       cgit_max_commit_count, ctx.qry.grep, ctx.qry.search, +			       ctx.cfg.max_commit_count, ctx.qry.grep, ctx.qry.search,  			       ctx.qry.path, 1);  		break;  	case CMD_TREE: @@ -212,7 +212,7 @@ static void cgit_check_cache(struct cacheitem *item)  	int i = 0;   top: -	if (++i > cgit_max_lock_attempts) { +	if (++i > ctx.cfg.max_lock_attempts) {  		die("cgit_refresh_cache: unable to lock %s: %s",  		    item->name, strerror(errno));  	} @@ -258,10 +258,10 @@ static void cgit_parse_args(int argc, const char **argv)  	for (i = 1; i < argc; i++) {  		if (!strncmp(argv[i], "--cache=", 8)) { -			cgit_cache_root = xstrdup(argv[i]+8); +			ctx.cfg.cache_root = xstrdup(argv[i]+8);  		}  		if (!strcmp(argv[i], "--nocache")) { -			cgit_nocache = 1; +			ctx.cfg.nocache = 1;  		}  		if (!strncmp(argv[i], "--query=", 8)) {  			ctx.qry.raw = xstrdup(argv[i]+8); @@ -291,6 +291,7 @@ int main(int argc, const char **argv)  	struct cacheitem item;  	const char *cgit_config_env = getenv("CGIT_CONFIG"); +	cgit_prepare_context(&ctx);  	htmlfd = STDOUT_FILENO;  	item.st.st_mtime = time(NULL);  	cgit_repolist.length = 0; @@ -301,14 +302,14 @@ int main(int argc, const char **argv)  			 cgit_global_config_cb);  	cgit_repo = NULL;  	if (getenv("SCRIPT_NAME")) -		cgit_script_name = xstrdup(getenv("SCRIPT_NAME")); +		ctx.cfg.script_name = xstrdup(getenv("SCRIPT_NAME"));  	if (getenv("QUERY_STRING"))  		ctx.qry.raw = xstrdup(getenv("QUERY_STRING"));  	cgit_parse_args(argc, argv);  	cgit_parse_query(ctx.qry.raw, cgit_querystring_cb);  	if (!cgit_prepare_cache(&item))  		return 0; -	if (cgit_nocache) { +	if (ctx.cfg.nocache) {  		cgit_fill_cache(&item, 0);  	} else {  		cgit_check_cache(&item); @@ -139,8 +139,44 @@ struct cgit_query {  	int   ofs;  }; +struct cgit_config { +	char *agefile; +	char *cache_root; +	char *clone_prefix; +	char *css; +	char *index_header; +	char *index_info; +	char *logo; +	char *logo_link; +	char *module_link; +	char *repo_group; +	char *robots; +	char *root_title; +	char *script_name; +	char *virtual_root; +	int cache_dynamic_ttl; +	int cache_max_create_time; +	int cache_repo_ttl; +	int cache_root_ttl; +	int cache_static_ttl; +	int enable_index_links; +	int enable_log_filecount; +	int enable_log_linecount; +	int max_commit_count; +	int max_lock_attempts; +	int max_msg_len; +	int max_repodesc_len; +	int nocache; +	int renamelimit; +	int snapshots; +	int summary_branches; +	int summary_log; +	int summary_tags; +}; +  struct cgit_context {  	struct cgit_query qry; +	struct cgit_config cfg;  };  extern const char *cgit_version; @@ -150,43 +186,9 @@ extern struct repoinfo *cgit_repo;  extern struct cgit_context ctx;  extern int cgit_cmd; -extern char *cgit_root_title; -extern char *cgit_css; -extern char *cgit_logo; -extern char *cgit_index_header; -extern char *cgit_index_info; -extern char *cgit_logo_link; -extern char *cgit_module_link; -extern char *cgit_agefile; -extern char *cgit_virtual_root; -extern char *cgit_script_name; -extern char *cgit_cache_root; -extern char *cgit_repo_group; -extern char *cgit_robots; -extern char *cgit_clone_prefix; - -extern int cgit_nocache; -extern int cgit_snapshots; -extern int cgit_enable_index_links; -extern int cgit_enable_log_filecount; -extern int cgit_enable_log_linecount; -extern int cgit_max_lock_attempts; -extern int cgit_cache_root_ttl; -extern int cgit_cache_repo_ttl; -extern int cgit_cache_dynamic_ttl; -extern int cgit_cache_static_ttl; -extern int cgit_cache_max_create_time; -extern int cgit_summary_log; -extern int cgit_summary_tags; -extern int cgit_summary_branches; - -extern int cgit_max_msg_len; -extern int cgit_max_repodesc_len; -extern int cgit_max_commit_count; - -  extern int htmlfd; +extern void cgit_prepare_context(struct cgit_context *ctx);  extern int cgit_get_cmd_index(const char *cmd);  extern struct repoinfo *cgit_get_repoinfo(const char *url);  extern void cgit_global_config_cb(const char *name, const char *value); @@ -15,43 +15,31 @@ int cgit_cmd;  const char *cgit_version = CGIT_VERSION; -char *cgit_root_title   = "Git repository browser"; -char *cgit_css          = "/cgit.css"; -char *cgit_logo         = "/git-logo.png"; -char *cgit_index_header = NULL; -char *cgit_index_info   = NULL; -char *cgit_logo_link    = "http://www.kernel.org/pub/software/scm/git/docs/"; -char *cgit_module_link  = "./?repo=%s&page=commit&id=%s"; -char *cgit_agefile      = "info/web/last-modified"; -char *cgit_virtual_root = NULL; -char *cgit_script_name  = CGIT_SCRIPT_NAME; -char *cgit_cache_root   = CGIT_CACHE_ROOT; -char *cgit_repo_group   = NULL; -char *cgit_robots       = "index, nofollow"; -char *cgit_clone_prefix = NULL; - -int cgit_nocache               =  0; -int cgit_snapshots             =  0; -int cgit_enable_index_links    =  0; -int cgit_enable_log_filecount  =  0; -int cgit_enable_log_linecount  =  0; -int cgit_max_lock_attempts     =  5; -int cgit_cache_root_ttl        =  5; -int cgit_cache_repo_ttl        =  5; -int cgit_cache_dynamic_ttl     =  5; -int cgit_cache_static_ttl      = -1; -int cgit_cache_max_create_time =  5; -int cgit_summary_log           =  0; -int cgit_summary_tags          =  0; -int cgit_summary_branches      =  0; -int cgit_renamelimit           = -1; - -int cgit_max_msg_len = 60; -int cgit_max_repodesc_len = 60; -int cgit_max_commit_count = 50; -  int htmlfd = 0; +void cgit_prepare_context(struct cgit_context *ctx) +{ +	memset(ctx, 0, sizeof(ctx)); +	ctx->cfg.agefile = "info/web/last-modified"; +	ctx->cfg.cache_dynamic_ttl = 5; +	ctx->cfg.cache_max_create_time = 5; +	ctx->cfg.cache_repo_ttl = 5; +	ctx->cfg.cache_root = CGIT_CACHE_ROOT; +	ctx->cfg.cache_root_ttl = 5; +	ctx->cfg.cache_static_ttl = -1; +	ctx->cfg.css = "/cgit.css"; +	ctx->cfg.logo = "/git-logo.png"; +	ctx->cfg.max_commit_count = 50; +	ctx->cfg.max_lock_attempts = 5; +	ctx->cfg.max_msg_len = 60; +	ctx->cfg.max_repodesc_len = 60; +	ctx->cfg.module_link = "./?repo=%s&page=commit&id=%s"; +	ctx->cfg.renamelimit = -1; +	ctx->cfg.robots = "index, nofollow"; +	ctx->cfg.root_title = "Git repository browser"; +	ctx->cfg.script_name = CGIT_SCRIPT_NAME; +} +  int cgit_get_cmd_index(const char *cmd)  {  	static char *cmds[] = {"log", "commit", "diff", "tree", "blob", @@ -105,12 +93,12 @@ struct repoinfo *add_repo(const char *url)  	ret->path = NULL;  	ret->desc = "[no description]";  	ret->owner = NULL; -	ret->group = cgit_repo_group; +	ret->group = ctx.cfg.repo_group;  	ret->defbranch = "master"; -	ret->snapshots = cgit_snapshots; -	ret->enable_log_filecount = cgit_enable_log_filecount; -	ret->enable_log_linecount = cgit_enable_log_linecount; -	ret->module_link = cgit_module_link; +	ret->snapshots = ctx.cfg.snapshots; +	ret->enable_log_filecount = ctx.cfg.enable_log_filecount; +	ret->enable_log_linecount = ctx.cfg.enable_log_linecount; +	ret->module_link = ctx.cfg.module_link;  	ret->readme = NULL;  	return ret;  } @@ -131,65 +119,65 @@ struct repoinfo *cgit_get_repoinfo(const char *url)  void cgit_global_config_cb(const char *name, const char *value)  {  	if (!strcmp(name, "root-title")) -		cgit_root_title = xstrdup(value); +		ctx.cfg.root_title = xstrdup(value);  	else if (!strcmp(name, "css")) -		cgit_css = xstrdup(value); +		ctx.cfg.css = xstrdup(value);  	else if (!strcmp(name, "logo")) -		cgit_logo = xstrdup(value); +		ctx.cfg.logo = xstrdup(value);  	else if (!strcmp(name, "index-header")) -		cgit_index_header = xstrdup(value); +		ctx.cfg.index_header = xstrdup(value);  	else if (!strcmp(name, "index-info")) -		cgit_index_info = xstrdup(value); +		ctx.cfg.index_info = xstrdup(value);  	else if (!strcmp(name, "logo-link")) -		cgit_logo_link = xstrdup(value); +		ctx.cfg.logo_link = xstrdup(value);  	else if (!strcmp(name, "module-link")) -		cgit_module_link = xstrdup(value); +		ctx.cfg.module_link = xstrdup(value);  	else if (!strcmp(name, "virtual-root")) { -		cgit_virtual_root = trim_end(value, '/'); -		if (!cgit_virtual_root && (!strcmp(value, "/"))) -			cgit_virtual_root = ""; +		ctx.cfg.virtual_root = trim_end(value, '/'); +		if (!ctx.cfg.virtual_root && (!strcmp(value, "/"))) +			ctx.cfg.virtual_root = "";  	} else if (!strcmp(name, "nocache")) -		cgit_nocache = atoi(value); +		ctx.cfg.nocache = atoi(value);  	else if (!strcmp(name, "snapshots")) -		cgit_snapshots = cgit_parse_snapshots_mask(value); +		ctx.cfg.snapshots = cgit_parse_snapshots_mask(value);  	else if (!strcmp(name, "enable-index-links")) -		cgit_enable_index_links = atoi(value); +		ctx.cfg.enable_index_links = atoi(value);  	else if (!strcmp(name, "enable-log-filecount")) -		cgit_enable_log_filecount = atoi(value); +		ctx.cfg.enable_log_filecount = atoi(value);  	else if (!strcmp(name, "enable-log-linecount")) -		cgit_enable_log_linecount = atoi(value); +		ctx.cfg.enable_log_linecount = atoi(value);  	else if (!strcmp(name, "cache-root")) -		cgit_cache_root = xstrdup(value); +		ctx.cfg.cache_root = xstrdup(value);  	else if (!strcmp(name, "cache-root-ttl")) -		cgit_cache_root_ttl = atoi(value); +		ctx.cfg.cache_root_ttl = atoi(value);  	else if (!strcmp(name, "cache-repo-ttl")) -		cgit_cache_repo_ttl = atoi(value); +		ctx.cfg.cache_repo_ttl = atoi(value);  	else if (!strcmp(name, "cache-static-ttl")) -		cgit_cache_static_ttl = atoi(value); +		ctx.cfg.cache_static_ttl = atoi(value);  	else if (!strcmp(name, "cache-dynamic-ttl")) -		cgit_cache_dynamic_ttl = atoi(value); +		ctx.cfg.cache_dynamic_ttl = atoi(value);  	else if (!strcmp(name, "max-message-length")) -		cgit_max_msg_len = atoi(value); +		ctx.cfg.max_msg_len = atoi(value);  	else if (!strcmp(name, "max-repodesc-length")) -		cgit_max_repodesc_len = atoi(value); +		ctx.cfg.max_repodesc_len = atoi(value);  	else if (!strcmp(name, "max-commit-count")) -		cgit_max_commit_count = atoi(value); +		ctx.cfg.max_commit_count = atoi(value);  	else if (!strcmp(name, "summary-log")) -		cgit_summary_log = atoi(value); +		ctx.cfg.summary_log = atoi(value);  	else if (!strcmp(name, "summary-branches")) -		cgit_summary_branches = atoi(value); +		ctx.cfg.summary_branches = atoi(value);  	else if (!strcmp(name, "summary-tags")) -		cgit_summary_tags = atoi(value); +		ctx.cfg.summary_tags = atoi(value);  	else if (!strcmp(name, "agefile")) -		cgit_agefile = xstrdup(value); +		ctx.cfg.agefile = xstrdup(value);  	else if (!strcmp(name, "renamelimit")) -		cgit_renamelimit = atoi(value); +		ctx.cfg.renamelimit = atoi(value);  	else if (!strcmp(name, "robots")) -		cgit_robots = xstrdup(value); +		ctx.cfg.robots = xstrdup(value);  	else if (!strcmp(name, "clone-prefix")) -		cgit_clone_prefix = xstrdup(value); +		ctx.cfg.clone_prefix = xstrdup(value);  	else if (!strcmp(name, "repo.group")) -		cgit_repo_group = xstrdup(value); +		ctx.cfg.repo_group = xstrdup(value);  	else if (!strcmp(name, "repo.url"))  		cgit_repo = add_repo(value);  	else if (!strcmp(name, "repo.name")) @@ -205,11 +193,11 @@ void cgit_global_config_cb(const char *name, const char *value)  	else if (cgit_repo && !strcmp(name, "repo.defbranch"))  		cgit_repo->defbranch = xstrdup(value);  	else if (cgit_repo && !strcmp(name, "repo.snapshots")) -		cgit_repo->snapshots = cgit_snapshots & cgit_parse_snapshots_mask(value); /* XXX: &? */ +		cgit_repo->snapshots = ctx.cfg.snapshots & cgit_parse_snapshots_mask(value); /* XXX: &? */  	else if (cgit_repo && !strcmp(name, "repo.enable-log-filecount")) -		cgit_repo->enable_log_filecount = cgit_enable_log_filecount * atoi(value); +		cgit_repo->enable_log_filecount = ctx.cfg.enable_log_filecount * atoi(value);  	else if (cgit_repo && !strcmp(name, "repo.enable-log-linecount")) -		cgit_repo->enable_log_linecount = cgit_enable_log_linecount * atoi(value); +		cgit_repo->enable_log_linecount = ctx.cfg.enable_log_linecount * atoi(value);  	else if (cgit_repo && !strcmp(name, "repo.module-link"))  		cgit_repo->module_link= xstrdup(value);  	else if (cgit_repo && !strcmp(name, "repo.readme") && value != NULL) { @@ -476,7 +464,7 @@ void cgit_diff_tree(const unsigned char *old_sha1,  	diff_setup(&opt);  	opt.output_format = DIFF_FORMAT_CALLBACK;  	opt.detect_rename = 1; -	opt.rename_limit = cgit_renamelimit; +	opt.rename_limit = ctx.cfg.renamelimit;  	DIFF_OPT_SET(&opt, RECURSIVE);  	opt.format_callback = cgit_diff_tree_cb;  	opt.format_callback_data = fn; diff --git a/ui-repolist.c b/ui-repolist.c index 3e97ca9..a6cc2cc 100644 --- a/ui-repolist.c +++ b/ui-repolist.c @@ -30,7 +30,7 @@ static void print_modtime(struct repoinfo *repo)  	char *path;  	struct stat s; -	path = fmt("%s/%s", repo->path, cgit_agefile); +	path = fmt("%s/%s", repo->path, ctx.cfg.agefile);  	if (stat(path, &s) == 0) {  		cgit_print_age(read_agefile(path), -1, NULL);  		return; @@ -47,17 +47,17 @@ void cgit_print_repolist(struct cacheitem *item)  	int i, columns = 4;  	char *last_group = NULL; -	if (cgit_enable_index_links) +	if (ctx.cfg.enable_index_links)  		columns++; -	cgit_print_docstart(cgit_root_title, item); -	cgit_print_pageheader(cgit_root_title, 0); +	cgit_print_docstart(ctx.cfg.root_title, item); +	cgit_print_pageheader(ctx.cfg.root_title, 0);  	html("<table summary='repository list' class='list nowrap'>"); -	if (cgit_index_header) { +	if (ctx.cfg.index_header) {  		htmlf("<tr class='nohover'><td colspan='%d' class='include-block'>",  		      columns); -		html_include(cgit_index_header); +		html_include(ctx.cfg.index_header);  		html("</td></tr>");  	}  	html("<tr class='nohover'>" @@ -65,7 +65,7 @@ void cgit_print_repolist(struct cacheitem *item)  	     "<th class='left'>Description</th>"  	     "<th class='left'>Owner</th>"  	     "<th class='left'>Idle</th>"); -	if (cgit_enable_index_links) +	if (ctx.cfg.enable_index_links)  		html("<th>Links</th>");  	html("</tr>\n"); @@ -87,13 +87,13 @@ void cgit_print_repolist(struct cacheitem *item)  		html_txt(cgit_repo->name);  		html_link_close();  		html("</td><td>"); -		html_ntxt(cgit_max_repodesc_len, cgit_repo->desc); +		html_ntxt(ctx.cfg.max_repodesc_len, cgit_repo->desc);  		html("</td><td>");  		html_txt(cgit_repo->owner);  		html("</td><td>");  		print_modtime(cgit_repo);  		html("</td>"); -		if (cgit_enable_index_links) { +		if (ctx.cfg.enable_index_links) {  			html("<td>");  			html_link_open(cgit_repourl(cgit_repo->url),  				       NULL, "button"); diff --git a/ui-shared.c b/ui-shared.c index 6a41fb0..b96237d 100644 --- a/ui-shared.c +++ b/ui-shared.c @@ -42,16 +42,16 @@ void cgit_print_error(char *msg)  char *cgit_rooturl()  { -	if (cgit_virtual_root) -		return fmt("%s/", cgit_virtual_root); +	if (ctx.cfg.virtual_root) +		return fmt("%s/", ctx.cfg.virtual_root);  	else -		return cgit_script_name; +		return ctx.cfg.script_name;  }  char *cgit_repourl(const char *reponame)  { -	if (cgit_virtual_root) { -		return fmt("%s/%s/", cgit_virtual_root, reponame); +	if (ctx.cfg.virtual_root) { +		return fmt("%s/%s/", ctx.cfg.virtual_root, reponame);  	} else {  		return fmt("?r=%s", reponame);  	} @@ -63,8 +63,8 @@ char *cgit_fileurl(const char *reponame, const char *pagename,  	char *tmp;  	char *delim; -	if (cgit_virtual_root) { -		tmp = fmt("%s/%s/%s/%s", cgit_virtual_root, reponame, +	if (ctx.cfg.virtual_root) { +		tmp = fmt("%s/%s/%s/%s", ctx.cfg.virtual_root, reponame,  			  pagename, (filename ? filename:""));  		delim = "?";  	} else { @@ -110,14 +110,14 @@ const char *cgit_repobasename(const char *reponame)  char *cgit_currurl()  { -	if (!cgit_virtual_root) -		return cgit_script_name; +	if (!ctx.cfg.virtual_root) +		return ctx.cfg.script_name;  	else if (ctx.qry.page) -		return fmt("%s/%s/%s/", cgit_virtual_root, ctx.qry.repo, ctx.qry.page); +		return fmt("%s/%s/%s/", ctx.cfg.virtual_root, ctx.qry.repo, ctx.qry.page);  	else if (ctx.qry.repo) -		return fmt("%s/%s/", cgit_virtual_root, ctx.qry.repo); +		return fmt("%s/%s/", ctx.cfg.virtual_root, ctx.qry.repo);  	else -		return fmt("%s/", cgit_virtual_root); +		return fmt("%s/", ctx.cfg.virtual_root);  }  static char *repolink(char *title, char *class, char *page, char *head, @@ -137,9 +137,9 @@ static char *repolink(char *title, char *class, char *page, char *head,  		html("'");  	}  	html(" href='"); -	if (cgit_virtual_root) { -		html_attr(cgit_virtual_root); -		if (cgit_virtual_root[strlen(cgit_virtual_root) - 1] != '/') +	if (ctx.cfg.virtual_root) { +		html_attr(ctx.cfg.virtual_root); +		if (ctx.cfg.virtual_root[strlen(ctx.cfg.virtual_root) - 1] != '/')  			html("/");  		html_attr(cgit_repo->url);  		if (cgit_repo->url[strlen(cgit_repo->url) - 1] != '/') @@ -151,7 +151,7 @@ static char *repolink(char *title, char *class, char *page, char *head,  				html_attr(path);  		}  	} else { -		html(cgit_script_name); +		html(ctx.cfg.script_name);  		html("?url=");  		html_attr(cgit_repo->url);  		if (cgit_repo->url[strlen(cgit_repo->url) - 1] != '/') @@ -229,11 +229,11 @@ void cgit_log_link(char *name, char *title, char *class, char *head,  void cgit_commit_link(char *name, char *title, char *class, char *head,  		      char *rev)  { -	if (strlen(name) > cgit_max_msg_len && cgit_max_msg_len >= 15) { -		name[cgit_max_msg_len] = '\0'; -		name[cgit_max_msg_len - 1] = '.'; -		name[cgit_max_msg_len - 2] = '.'; -		name[cgit_max_msg_len - 3] = '.'; +	if (strlen(name) > ctx.cfg.max_msg_len && ctx.cfg.max_msg_len >= 15) { +		name[ctx.cfg.max_msg_len] = '\0'; +		name[ctx.cfg.max_msg_len - 1] = '.'; +		name[ctx.cfg.max_msg_len - 2] = '.'; +		name[ctx.cfg.max_msg_len - 3] = '.';  	}  	reporevlink("commit", name, title, class, head, rev, NULL);  } @@ -374,10 +374,10 @@ void cgit_print_docstart(char *title, struct cacheitem *item)  	html_txt(title);  	html("</title>\n");  	htmlf("<meta name='generator' content='cgit %s'/>\n", cgit_version); -	if (cgit_robots && *cgit_robots) -		htmlf("<meta name='robots' content='%s'/>\n", cgit_robots); +	if (ctx.cfg.robots && *ctx.cfg.robots) +		htmlf("<meta name='robots' content='%s'/>\n", ctx.cfg.robots);  	html("<link rel='stylesheet' type='text/css' href='"); -	html_attr(cgit_css); +	html_attr(ctx.cfg.css);  	html("'/>\n");  	html("</head>\n");  	html("<body>\n"); @@ -439,7 +439,7 @@ void add_hidden_formfields(int incl_head, int incl_search, char *page)  {  	char *url; -	if (!cgit_virtual_root) { +	if (!ctx.cfg.virtual_root) {  		url = fmt("%s/%s", ctx.qry.repo, page);  		if (ctx.qry.path)  			url = fmt("%s/%s", url, ctx.qry.path); @@ -474,7 +474,7 @@ void cgit_print_pageheader(char *title, int show_search)  	html("<tr><td class='sidebar'>\n<a href='");  	html_attr(cgit_rooturl());  	htmlf("'><img src='%s' alt='cgit'/></a>\n", -	      cgit_logo); +	      ctx.cfg.logo);  	html("</td></tr>\n<tr><td class='sidebar'>\n");  	if (ctx.qry.repo) {  		html("<h1 class='first'>"); @@ -501,12 +501,12 @@ void cgit_print_pageheader(char *title, int show_search)  		for_each_ref(print_archive_ref, &header); -		if (cgit_repo->clone_url || cgit_clone_prefix) { +		if (cgit_repo->clone_url || ctx.cfg.clone_prefix) {  			html("<h1>clone</h1>\n");  			if (cgit_repo->clone_url)  				url = cgit_repo->clone_url;  			else -				url = fmt("%s%s", cgit_clone_prefix, +				url = fmt("%s%s", ctx.cfg.clone_prefix,  					  cgit_repo->url);  			html("<a class='menu' href='");  			html_attr(url); @@ -531,7 +531,7 @@ void cgit_print_pageheader(char *title, int show_search)  		html("<h1>search</h1>\n");  		html("<form method='get' action='"); -		if (cgit_virtual_root) +		if (ctx.cfg.virtual_root)  			html_attr(cgit_fileurl(ctx.qry.repo, "log",  					       ctx.qry.path, NULL));  		html("'>\n"); @@ -546,7 +546,7 @@ void cgit_print_pageheader(char *title, int show_search)  		html("'/>\n");  		html("</form>\n");  	} else { -		if (!cgit_index_info || html_include(cgit_index_info)) +		if (!ctx.cfg.index_info || html_include(ctx.cfg.index_info))  			html(default_info);  	} diff --git a/ui-summary.c b/ui-summary.c index bbd4464..0a44994 100644 --- a/ui-summary.c +++ b/ui-summary.c @@ -187,14 +187,14 @@ void cgit_print_summary()  		html_include(cgit_repo->readme);  		html("</div>");  	} -	if (cgit_summary_log > 0) -		cgit_print_log(ctx.qry.head, 0, cgit_summary_log, NULL, +	if (ctx.cfg.summary_log > 0) +		cgit_print_log(ctx.qry.head, 0, ctx.cfg.summary_log, NULL,  			       NULL, NULL, 0);  	html("<table summary='repository info' class='list nowrap'>"); -	if (cgit_summary_log > 0) +	if (ctx.cfg.summary_log > 0)  		html("<tr class='nohover'><td colspan='4'> </td></tr>"); -	cgit_print_branches(cgit_summary_branches); +	cgit_print_branches(ctx.cfg.summary_branches);  	html("<tr class='nohover'><td colspan='4'> </td></tr>"); -	cgit_print_tags(cgit_summary_tags); +	cgit_print_tags(ctx.cfg.summary_tags);  	html("</table>");  } | 
