summaryrefslogtreecommitdiffabout
path: root/cgit.c
Side-by-side diff
Diffstat (limited to 'cgit.c') (more/less context) (show 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
@@ -8,42 +8,42 @@
#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;
@@ -82,13 +82,13 @@ 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;
@@ -150,13 +150,13 @@ static void cgit_print_repo_page(struct cacheitem *item)
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:
@@ -209,13 +209,13 @@ static void cgit_fill_cache(struct cacheitem *item, int use_cache)
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);
@@ -255,16 +255,16 @@ 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);
@@ -288,30 +288,31 @@ 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;