summaryrefslogtreecommitdiffabout
Side-by-side diff
Diffstat (more/less context) (show whitespace changes)
-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
@@ -4,10 +4,10 @@ INSTALL_BIN = /var/www/htdocs/cgit.cgi
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
all: cgit
diff --git a/cgit.c b/cgit.c
index 52d9bd3..d1abaa0 100644
--- a/cgit.c
+++ b/cgit.c
@@ -9,82 +9,8 @@
#include "cgit.h"
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)) ||
cgit_read_config("info/cgit", cgit_repo_config_cb)) {
@@ -119,9 +45,9 @@ static void cgit_fill_cache(struct cacheitem *item)
else
cgit_print_repolist(item);
}
-static void cgit_refresh_cache(struct cacheitem *item)
+static void cgit_check_cache(struct cacheitem *item)
{
int i = 0;
cache_prepare(item);
@@ -161,11 +87,14 @@ 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
@@ -46,8 +46,12 @@ extern char *cgit_query_head;
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);
extern void htmlf(const char *format,...);
@@ -78,8 +82,5 @@ extern void cgit_print_repolist(struct cacheitem *item);
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
--- a/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;
+ }
+}
+