aboutsummaryrefslogtreecommitdiffstats
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
5CACHE_ROOT = /var/cache/cgit 5CACHE_ROOT = /var/cache/cgit
6 6
7EXTLIBS = ../git/libgit.a ../git/xdiff/lib.a -lz -lcrypto 7EXTLIBS = ../git/libgit.a ../git/xdiff/lib.a -lz -lcrypto
8OBJECTS = cache.o parsing.o html.o ui-shared.o ui-repolist.o ui-summary.o \ 8OBJECTS = shared.o cache.o parsing.o html.o ui-shared.o ui-repolist.o \
9 ui-log.o ui-view.c 9 ui-summary.o ui-log.o ui-view.c
10 10
11CFLAGS += -Wall 11CFLAGS += -Wall
12 12
diff --git a/cgit.c b/cgit.c
index 52d9bd3..d1abaa0 100644
--- a/cgit.c
+++ b/cgit.c
@@ -10,80 +10,6 @@
10 10
11const char cgit_version[] = CGIT_VERSION; 11const char cgit_version[] = CGIT_VERSION;
12 12
13int htmlfd = 0;
14
15char *cgit_root = "/usr/src/git";
16char *cgit_root_title = "Git repository browser";
17char *cgit_css = "/cgit.css";
18char *cgit_logo = "/git-logo.png";
19char *cgit_logo_link = "http://www.kernel.org/pub/software/scm/git/docs/";
20char *cgit_virtual_root = NULL;
21
22char *cgit_cache_root = "/var/cache/cgit";
23
24int cgit_max_lock_attempts = 5;
25int cgit_cache_root_ttl = 5;
26int cgit_cache_repo_ttl = 5;
27int cgit_cache_dynamic_ttl = 5;
28int cgit_cache_static_ttl = -1;
29int cgit_cache_max_create_time = 5;
30
31char *cgit_repo_name = NULL;
32char *cgit_repo_desc = NULL;
33char *cgit_repo_owner = NULL;
34
35int cgit_query_has_symref = 0;
36int cgit_query_has_sha1 = 0;
37
38char *cgit_querystring = NULL;
39char *cgit_query_repo = NULL;
40char *cgit_query_page = NULL;
41char *cgit_query_head = NULL;
42char *cgit_query_sha1 = NULL;
43
44struct cacheitem cacheitem;
45
46void cgit_global_config_cb(const char *name, const char *value)
47{
48 if (!strcmp(name, "root"))
49 cgit_root = xstrdup(value);
50 else if (!strcmp(name, "root-title"))
51 cgit_root_title = xstrdup(value);
52 else if (!strcmp(name, "css"))
53 cgit_css = xstrdup(value);
54 else if (!strcmp(name, "logo"))
55 cgit_logo = xstrdup(value);
56 else if (!strcmp(name, "logo-link"))
57 cgit_logo_link = xstrdup(value);
58 else if (!strcmp(name, "virtual-root"))
59 cgit_virtual_root = xstrdup(value);
60}
61
62void cgit_repo_config_cb(const char *name, const char *value)
63{
64 if (!strcmp(name, "name"))
65 cgit_repo_name = xstrdup(value);
66 else if (!strcmp(name, "desc"))
67 cgit_repo_desc = xstrdup(value);
68 else if (!strcmp(name, "owner"))
69 cgit_repo_owner = xstrdup(value);
70}
71
72void cgit_querystring_cb(const char *name, const char *value)
73{
74 if (!strcmp(name,"r"))
75 cgit_query_repo = xstrdup(value);
76 else if (!strcmp(name, "p"))
77 cgit_query_page = xstrdup(value);
78 else if (!strcmp(name, "h")) {
79 cgit_query_head = xstrdup(value);
80 cgit_query_has_symref = 1;
81 } else if (!strcmp(name, "id")) {
82 cgit_query_sha1 = xstrdup(value);
83 cgit_query_has_sha1 = 1;
84 }
85}
86
87static void cgit_print_repo_page(struct cacheitem *item) 13static void cgit_print_repo_page(struct cacheitem *item)
88{ 14{
89 if (chdir(fmt("%s/%s", cgit_root, cgit_query_repo)) || 15 if (chdir(fmt("%s/%s", cgit_root, cgit_query_repo)) ||
@@ -120,7 +46,7 @@ static void cgit_fill_cache(struct cacheitem *item)
120 cgit_print_repolist(item); 46 cgit_print_repolist(item);
121} 47}
122 48
123static void cgit_refresh_cache(struct cacheitem *item) 49static void cgit_check_cache(struct cacheitem *item)
124{ 50{
125 int i = 0; 51 int i = 0;
126 52
@@ -162,10 +88,13 @@ static void cgit_print_cache(struct cacheitem *item)
162 88
163int main(int argc, const char **argv) 89int main(int argc, const char **argv)
164{ 90{
91 struct cacheitem item;
92
165 cgit_read_config("/etc/cgitrc", cgit_global_config_cb); 93 cgit_read_config("/etc/cgitrc", cgit_global_config_cb);
166 cgit_querystring = xstrdup(getenv("QUERY_STRING")); 94 cgit_querystring = xstrdup(getenv("QUERY_STRING"));
167 cgit_parse_query(cgit_querystring, cgit_querystring_cb); 95 cgit_parse_query(cgit_querystring, cgit_querystring_cb);
168 cgit_refresh_cache(&cacheitem); 96
169 cgit_print_cache(&cacheitem); 97 cgit_check_cache(&item);
98 cgit_print_cache(&item);
170 return 0; 99 return 0;
171} 100}
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;
47 47
48extern int htmlfd; 48extern int htmlfd;
49 49
50extern void cgit_global_config_cb(const char *name, const char *value);
51extern void cgit_repo_config_cb(const char *name, const char *value);
52extern void cgit_querystring_cb(const char *name, const char *value);
53
50extern char *fmt(const char *format,...); 54extern char *fmt(const char *format,...);
51 55
52extern void html(const char *txt); 56extern void html(const char *txt);
@@ -79,7 +83,4 @@ extern void cgit_print_summary();
79extern void cgit_print_log(const char *tip, int ofs, int cnt); 83extern void cgit_print_log(const char *tip, int ofs, int cnt);
80extern void cgit_print_view(char *hex); 84extern void cgit_print_view(char *hex);
81 85
82extern void cgit_repo_config_cb(const char *name, const char *value);
83
84
85#endif /* CGIT_H */ 86#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 @@
1#include "cgit.h"
2
3char *cgit_root = "/usr/src/git";
4char *cgit_root_title = "Git repository browser";
5char *cgit_css = "/cgit.css";
6char *cgit_logo = "/git-logo.png";
7char *cgit_logo_link = "http://www.kernel.org/pub/software/scm/git/docs/";
8char *cgit_virtual_root = NULL;
9
10char *cgit_cache_root = "/var/cache/cgit";
11
12int cgit_max_lock_attempts = 5;
13int cgit_cache_root_ttl = 5;
14int cgit_cache_repo_ttl = 5;
15int cgit_cache_dynamic_ttl = 5;
16int cgit_cache_static_ttl = -1;
17int cgit_cache_max_create_time = 5;
18
19char *cgit_repo_name = NULL;
20char *cgit_repo_desc = NULL;
21char *cgit_repo_owner = NULL;
22
23int cgit_query_has_symref = 0;
24int cgit_query_has_sha1 = 0;
25
26char *cgit_querystring = NULL;
27char *cgit_query_repo = NULL;
28char *cgit_query_page = NULL;
29char *cgit_query_head = NULL;
30char *cgit_query_sha1 = NULL;
31
32int htmlfd = 0;
33
34void cgit_global_config_cb(const char *name, const char *value)
35{
36 if (!strcmp(name, "root"))
37 cgit_root = xstrdup(value);
38 else if (!strcmp(name, "root-title"))
39 cgit_root_title = xstrdup(value);
40 else if (!strcmp(name, "css"))
41 cgit_css = xstrdup(value);
42 else if (!strcmp(name, "logo"))
43 cgit_logo = xstrdup(value);
44 else if (!strcmp(name, "logo-link"))
45 cgit_logo_link = xstrdup(value);
46 else if (!strcmp(name, "virtual-root"))
47 cgit_virtual_root = xstrdup(value);
48}
49
50void cgit_repo_config_cb(const char *name, const char *value)
51{
52 if (!strcmp(name, "name"))
53 cgit_repo_name = xstrdup(value);
54 else if (!strcmp(name, "desc"))
55 cgit_repo_desc = xstrdup(value);
56 else if (!strcmp(name, "owner"))
57 cgit_repo_owner = xstrdup(value);
58}
59
60void cgit_querystring_cb(const char *name, const char *value)
61{
62 if (!strcmp(name,"r"))
63 cgit_query_repo = xstrdup(value);
64 else if (!strcmp(name, "p"))
65 cgit_query_page = xstrdup(value);
66 else if (!strcmp(name, "h")) {
67 cgit_query_head = xstrdup(value);
68 cgit_query_has_symref = 1;
69 } else if (!strcmp(name, "id")) {
70 cgit_query_sha1 = xstrdup(value);
71 cgit_query_has_sha1 = 1;
72 }
73}
74