summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--Makefile4
-rw-r--r--cgit.c83
-rw-r--r--cgit.h7
-rw-r--r--shared.c74
4 files changed, 86 insertions, 82 deletions
diff --git a/Makefile b/Makefile
index 4e532d0..c029637 100644
--- a/Makefile
+++ b/Makefile
@@ -5,8 +5,8 @@ INSTALL_CSS = /var/www/htdocs/cgit.css
 CACHE_ROOT = /var/cache/cgit
 
 EXTLIBS = ../git/libgit.a ../git/xdiff/lib.a -lz -lcrypto
-OBJECTS = cache.o parsing.o html.o ui-shared.o ui-repolist.o ui-summary.o \
-	ui-log.o ui-view.c
+OBJECTS = shared.o cache.o parsing.o html.o ui-shared.o ui-repolist.o \
+	ui-summary.o ui-log.o ui-view.c
 
 CFLAGS += -Wall
 
diff --git a/cgit.c b/cgit.c
index 52d9bd3..d1abaa0 100644
--- a/cgit.c
+++ b/cgit.c
@@ -10,80 +10,6 @@
 
 const char cgit_version[] = CGIT_VERSION;
 
-int htmlfd = 0;
-
-char *cgit_root         = "/usr/src/git";
-char *cgit_root_title   = "Git repository browser";
-char *cgit_css          = "/cgit.css";
-char *cgit_logo         = "/git-logo.png";
-char *cgit_logo_link    = "http://www.kernel.org/pub/software/scm/git/docs/";
-char *cgit_virtual_root = NULL;
-
-char *cgit_cache_root   = "/var/cache/cgit";
-
-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;
-
-char *cgit_repo_name    = NULL;
-char *cgit_repo_desc    = NULL;
-char *cgit_repo_owner   = NULL;
-
-int cgit_query_has_symref = 0;
-int cgit_query_has_sha1   = 0;
-
-char *cgit_querystring  = NULL;
-char *cgit_query_repo   = NULL;
-char *cgit_query_page   = NULL;
-char *cgit_query_head   = NULL;
-char *cgit_query_sha1   = NULL;
-
-struct cacheitem cacheitem;
-
-void cgit_global_config_cb(const char *name, const char *value)
-{
-	if (!strcmp(name, "root"))
-		cgit_root = xstrdup(value);
-	else if (!strcmp(name, "root-title"))
-		cgit_root_title = xstrdup(value);
-	else if (!strcmp(name, "css"))
-		cgit_css = xstrdup(value);
-	else if (!strcmp(name, "logo"))
-		cgit_logo = xstrdup(value);
-	else if (!strcmp(name, "logo-link"))
-		cgit_logo_link = xstrdup(value);
-	else if (!strcmp(name, "virtual-root"))
-		cgit_virtual_root = xstrdup(value);
-}
-
-void cgit_repo_config_cb(const char *name, const char *value)
-{
-	if (!strcmp(name, "name"))
-		cgit_repo_name = xstrdup(value);
-	else if (!strcmp(name, "desc"))
-		cgit_repo_desc = xstrdup(value);
-	else if (!strcmp(name, "owner"))
-		cgit_repo_owner = xstrdup(value);
-}
-
-void cgit_querystring_cb(const char *name, const char *value)
-{
-	if (!strcmp(name,"r"))
-		cgit_query_repo = xstrdup(value);
-	else if (!strcmp(name, "p"))
-		cgit_query_page = xstrdup(value);
-	else if (!strcmp(name, "h")) {
-		cgit_query_head = xstrdup(value);
-		cgit_query_has_symref = 1;
-	} else if (!strcmp(name, "id")) {
-		cgit_query_sha1 = xstrdup(value);
-		cgit_query_has_sha1 = 1;
-	}
-}
-
 static void cgit_print_repo_page(struct cacheitem *item)
 {
 	if (chdir(fmt("%s/%s", cgit_root, cgit_query_repo)) || 
@@ -120,7 +46,7 @@ static void cgit_fill_cache(struct cacheitem *item)
 		cgit_print_repolist(item);
 }
 
-static void cgit_refresh_cache(struct cacheitem *item)
+static void cgit_check_cache(struct cacheitem *item)
 {
 	int i = 0;
 
@@ -162,10 +88,13 @@ static void cgit_print_cache(struct cacheitem *item)
 
 int main(int argc, const char **argv)
 {
+	struct cacheitem item;
+
 	cgit_read_config("/etc/cgitrc", cgit_global_config_cb);
 	cgit_querystring = xstrdup(getenv("QUERY_STRING"));
 	cgit_parse_query(cgit_querystring, cgit_querystring_cb);
-	cgit_refresh_cache(&cacheitem);
-	cgit_print_cache(&cacheitem);
+
+	cgit_check_cache(&item);
+	cgit_print_cache(&item);
 	return 0;
 }
diff --git a/cgit.h b/cgit.h
index 9c7f0b4..c1dcc97 100644
--- a/cgit.h
+++ b/cgit.h
@@ -47,6 +47,10 @@ extern char *cgit_query_sha1;
 
 extern int htmlfd;
 
+extern void cgit_global_config_cb(const char *name, const char *value);
+extern void cgit_repo_config_cb(const char *name, const char *value);
+extern void cgit_querystring_cb(const char *name, const char *value);
+
 extern char *fmt(const char *format,...);
 
 extern void html(const char *txt);
@@ -79,7 +83,4 @@ extern void cgit_print_summary();
 extern void cgit_print_log(const char *tip, int ofs, int cnt);
 extern void cgit_print_view(char *hex);
 
-extern void cgit_repo_config_cb(const char *name, const char *value);
-
-
 #endif /* CGIT_H */
diff --git a/shared.c b/shared.c
new file mode 100644
index 0000000..c58a2ff
--- /dev/null
+++ b/shared.c
@@ -0,0 +1,74 @@
+#include "cgit.h"
+
+char *cgit_root         = "/usr/src/git";
+char *cgit_root_title   = "Git repository browser";
+char *cgit_css          = "/cgit.css";
+char *cgit_logo         = "/git-logo.png";
+char *cgit_logo_link    = "http://www.kernel.org/pub/software/scm/git/docs/";
+char *cgit_virtual_root = NULL;
+
+char *cgit_cache_root   = "/var/cache/cgit";
+
+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;
+
+char *cgit_repo_name    = NULL;
+char *cgit_repo_desc    = NULL;
+char *cgit_repo_owner   = NULL;
+
+int cgit_query_has_symref = 0;
+int cgit_query_has_sha1   = 0;
+
+char *cgit_querystring  = NULL;
+char *cgit_query_repo   = NULL;
+char *cgit_query_page   = NULL;
+char *cgit_query_head   = NULL;
+char *cgit_query_sha1   = NULL;
+
+int htmlfd = 0;
+
+void cgit_global_config_cb(const char *name, const char *value)
+{
+	if (!strcmp(name, "root"))
+		cgit_root = xstrdup(value);
+	else if (!strcmp(name, "root-title"))
+		cgit_root_title = xstrdup(value);
+	else if (!strcmp(name, "css"))
+		cgit_css = xstrdup(value);
+	else if (!strcmp(name, "logo"))
+		cgit_logo = xstrdup(value);
+	else if (!strcmp(name, "logo-link"))
+		cgit_logo_link = xstrdup(value);
+	else if (!strcmp(name, "virtual-root"))
+		cgit_virtual_root = xstrdup(value);
+}
+
+void cgit_repo_config_cb(const char *name, const char *value)
+{
+	if (!strcmp(name, "name"))
+		cgit_repo_name = xstrdup(value);
+	else if (!strcmp(name, "desc"))
+		cgit_repo_desc = xstrdup(value);
+	else if (!strcmp(name, "owner"))
+		cgit_repo_owner = xstrdup(value);
+}
+
+void cgit_querystring_cb(const char *name, const char *value)
+{
+	if (!strcmp(name,"r"))
+		cgit_query_repo = xstrdup(value);
+	else if (!strcmp(name, "p"))
+		cgit_query_page = xstrdup(value);
+	else if (!strcmp(name, "h")) {
+		cgit_query_head = xstrdup(value);
+		cgit_query_has_symref = 1;
+	} else if (!strcmp(name, "id")) {
+		cgit_query_sha1 = xstrdup(value);
+		cgit_query_has_sha1 = 1;
+	}
+}
+