summaryrefslogtreecommitdiffabout
path: root/cgit.c
Side-by-side diff
Diffstat (limited to 'cgit.c') (more/less context) (ignore whitespace changes)
-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
@@ -6,46 +6,46 @@
* (see COPYING for full license text)
*/
#include "cgit.h"
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));
cgit_print_docend();
return 0;
}
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;
}
struct refmatch {
char *req_ref;
char *first_ref;
int match;
@@ -80,17 +80,17 @@ char *find_default_branch(struct repoinfo *repo)
static void cgit_print_repo_page(struct cacheitem *item)
{
char *title, *tmp;
int show_search;
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",
strerror(errno)));
cgit_print_docend();
return;
}
@@ -148,17 +148,17 @@ static void cgit_print_repo_page(struct cacheitem *item)
return;
}
cgit_print_pageheader(ctx.qry.page, show_search);
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:
cgit_print_tree(ctx.qry.sha1, ctx.qry.path);
break;
case CMD_COMMIT:
cgit_print_commit(ctx.qry.sha1);
break;
@@ -207,17 +207,17 @@ static void cgit_fill_cache(struct cacheitem *item, int use_cache)
chdir(buf);
}
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));
}
if (!cache_exist(item)) {
if (!cache_lock(item)) {
sleep(1);
goto top;
}
@@ -253,20 +253,20 @@ static void cgit_print_cache(struct cacheitem *item)
}
static void cgit_parse_args(int argc, const char **argv)
{
int i;
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);
}
if (!strncmp(argv[i], "--repo=", 7)) {
ctx.qry.repo = xstrdup(argv[i]+7);
}
if (!strncmp(argv[i], "--page=", 7)) {
@@ -286,33 +286,34 @@ static void cgit_parse_args(int argc, const char **argv)
}
}
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;
cgit_repolist.count = 0;
cgit_repolist.repos = NULL;
cgit_read_config(cgit_config_env ? cgit_config_env : CGIT_CONFIG,
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);
cgit_print_cache(&item);
}
return 0;
}