about summary refs log tree commit diff
path: root/cgit.c
diff options
context:
space:
mode:
authorLars Hjemli <hjemli@gmail.com>2008-02-16 13:07:13 +0100
committerLars Hjemli <hjemli@gmail.com>2008-02-16 13:10:50 +0100
commitb228d4ff82a65fdcd4a7364759fe36a0bdda5978 (patch)
tree33b8cc2ff48113f8d7ad3ba88c7ea19a7cac570a /cgit.c
parentIntroduce struct cgit_context (diff)
downloadcgit-pink-b228d4ff82a65fdcd4a7364759fe36a0bdda5978.tar.gz
cgit-pink-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>
Diffstat (limited to 'cgit.c')
-rw-r--r--cgit.c33
1 files changed, 17 insertions, 16 deletions
diff --git a/cgit.c b/cgit.c
index 8a30c3c..f0907a1 100644
--- a/cgit.c
+++ b/cgit.c
@@ -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);