diff options
-rw-r--r-- | .gitignore | 5 | ||||
-rw-r--r-- | Makefile | 21 | ||||
-rw-r--r-- | cgit-doc.css | 3 | ||||
-rw-r--r-- | cgit.c | 8 | ||||
-rw-r--r-- | cgit.h | 4 | ||||
-rw-r--r-- | cgitrc.5.txt | 122 | ||||
-rw-r--r-- | ui-atom.c | 6 | ||||
-rw-r--r-- | ui-blob.c | 8 | ||||
-rw-r--r-- | ui-plain.c | 6 | ||||
-rw-r--r-- | ui-shared.c | 26 | ||||
-rw-r--r-- | ui-shared.h | 1 | ||||
-rw-r--r-- | ui-snapshot.c | 23 | ||||
-rw-r--r-- | ui-tree.c | 26 |
13 files changed, 177 insertions, 82 deletions
@@ -2,5 +2,10 @@ | |||
2 | cgit | 2 | cgit |
3 | cgit.conf | 3 | cgit.conf |
4 | VERSION | 4 | VERSION |
5 | cgitrc.5 | ||
6 | cgitrc.5.fo | ||
7 | cgitrc.5.html | ||
8 | cgitrc.5.pdf | ||
9 | cgitrc.5.xml | ||
5 | *.o | 10 | *.o |
6 | *.d | 11 | *.d |
@@ -1,4 +1,4 @@ | |||
1 | CGIT_VERSION = v0.8.2 | 1 | CGIT_VERSION = v0.8.2.1 |
2 | CGIT_SCRIPT_NAME = cgit.cgi | 2 | CGIT_SCRIPT_NAME = cgit.cgi |
3 | CGIT_SCRIPT_PATH = /var/www/htdocs/cgit | 3 | CGIT_SCRIPT_PATH = /var/www/htdocs/cgit |
4 | CGIT_DATA_PATH = $(CGIT_SCRIPT_PATH) | 4 | CGIT_DATA_PATH = $(CGIT_SCRIPT_PATH) |
@@ -100,7 +100,8 @@ ifdef NEEDS_LIBICONV | |||
100 | endif | 100 | endif |
101 | 101 | ||
102 | 102 | ||
103 | .PHONY: all libgit test install uninstall clean force-version get-git | 103 | .PHONY: all libgit test install uninstall clean force-version get-git \ |
104 | doc man-doc html-doc clean-doc | ||
104 | 105 | ||
105 | all: cgit | 106 | all: cgit |
106 | 107 | ||
@@ -149,8 +150,22 @@ uninstall: | |||
149 | rm -f $(CGIT_DATA_PATH)/cgit.css | 150 | rm -f $(CGIT_DATA_PATH)/cgit.css |
150 | rm -f $(CGIT_DATA_PATH)/cgit.png | 151 | rm -f $(CGIT_DATA_PATH)/cgit.png |
151 | 152 | ||
152 | clean: | 153 | doc: man-doc html-doc pdf-doc |
154 | |||
155 | man-doc: cgitrc.5.txt | ||
156 | a2x -f manpage cgitrc.5.txt | ||
157 | |||
158 | html-doc: cgitrc.5.txt | ||
159 | a2x -f xhtml --stylesheet=cgit-doc.css cgitrc.5.txt | ||
160 | |||
161 | pdf-doc: cgitrc.5.txt | ||
162 | a2x -f pdf cgitrc.5.txt | ||
163 | |||
164 | clean: clean-doc | ||
153 | rm -f cgit VERSION *.o *.d | 165 | rm -f cgit VERSION *.o *.d |
154 | 166 | ||
167 | clean-doc: | ||
168 | rm -f cgitrc.5 cgitrc.5.html cgitrc.5.pdf cgitrc.5.xml cgitrc.5.fo | ||
169 | |||
155 | get-git: | 170 | get-git: |
156 | curl $(GIT_URL) | tar -xj && rm -rf git && mv git-$(GIT_VER) git | 171 | curl $(GIT_URL) | tar -xj && rm -rf git && mv git-$(GIT_VER) git |
diff --git a/cgit-doc.css b/cgit-doc.css new file mode 100644 index 0000000..5a399b6 --- /dev/null +++ b/cgit-doc.css | |||
@@ -0,0 +1,3 @@ | |||
1 | div.variablelist dt { | ||
2 | margin-top: 1em; | ||
3 | } | ||
@@ -31,6 +31,8 @@ void config_cb(const char *name, const char *value) | |||
31 | ctx.cfg.favicon = xstrdup(value); | 31 | ctx.cfg.favicon = xstrdup(value); |
32 | else if (!strcmp(name, "footer")) | 32 | else if (!strcmp(name, "footer")) |
33 | ctx.cfg.footer = xstrdup(value); | 33 | ctx.cfg.footer = xstrdup(value); |
34 | else if (!strcmp(name, "head-include")) | ||
35 | ctx.cfg.head_include = xstrdup(value); | ||
34 | else if (!strcmp(name, "header")) | 36 | else if (!strcmp(name, "header")) |
35 | ctx.cfg.header = xstrdup(value); | 37 | ctx.cfg.header = xstrdup(value); |
36 | else if (!strcmp(name, "logo")) | 38 | else if (!strcmp(name, "logo")) |
@@ -210,6 +212,7 @@ static void prepare_context(struct cgit_context *ctx) | |||
210 | ctx->page.size = 0; | 212 | ctx->page.size = 0; |
211 | ctx->page.modified = time(NULL); | 213 | ctx->page.modified = time(NULL); |
212 | ctx->page.expires = ctx->page.modified; | 214 | ctx->page.expires = ctx->page.modified; |
215 | ctx->page.etag = NULL; | ||
213 | } | 216 | } |
214 | 217 | ||
215 | struct refmatch { | 218 | struct refmatch { |
@@ -289,6 +292,8 @@ static int prepare_repo_cmd(struct cgit_context *ctx) | |||
289 | if (get_sha1(ctx->qry.head, sha1)) { | 292 | if (get_sha1(ctx->qry.head, sha1)) { |
290 | tmp = xstrdup(ctx->qry.head); | 293 | tmp = xstrdup(ctx->qry.head); |
291 | ctx->qry.head = ctx->repo->defbranch; | 294 | ctx->qry.head = ctx->repo->defbranch; |
295 | ctx->page.status = 404; | ||
296 | ctx->page.statusmsg = "not found"; | ||
292 | cgit_print_http_headers(ctx); | 297 | cgit_print_http_headers(ctx); |
293 | cgit_print_docstart(ctx); | 298 | cgit_print_docstart(ctx); |
294 | cgit_print_pageheader(ctx); | 299 | cgit_print_pageheader(ctx); |
@@ -433,6 +438,7 @@ static int calc_ttl() | |||
433 | int main(int argc, const char **argv) | 438 | int main(int argc, const char **argv) |
434 | { | 439 | { |
435 | const char *cgit_config_env = getenv("CGIT_CONFIG"); | 440 | const char *cgit_config_env = getenv("CGIT_CONFIG"); |
441 | const char *method = getenv("REQUEST_METHOD"); | ||
436 | const char *path; | 442 | const char *path; |
437 | char *qry; | 443 | char *qry; |
438 | int err, ttl; | 444 | int err, ttl; |
@@ -479,6 +485,8 @@ int main(int argc, const char **argv) | |||
479 | 485 | ||
480 | ttl = calc_ttl(); | 486 | ttl = calc_ttl(); |
481 | ctx.page.expires += ttl*60; | 487 | ctx.page.expires += ttl*60; |
488 | if (method && !strcmp(method, "HEAD")) | ||
489 | ctx.cfg.nocache = 1; | ||
482 | if (ctx.cfg.nocache) | 490 | if (ctx.cfg.nocache) |
483 | ctx.cfg.cache_size = 0; | 491 | ctx.cfg.cache_size = 0; |
484 | err = cache_process(ctx.cfg.cache_size, ctx.cfg.cache_root, | 492 | err = cache_process(ctx.cfg.cache_size, ctx.cfg.cache_root, |
@@ -136,6 +136,7 @@ struct cgit_config { | |||
136 | char *css; | 136 | char *css; |
137 | char *favicon; | 137 | char *favicon; |
138 | char *footer; | 138 | char *footer; |
139 | char *head_include; | ||
139 | char *header; | 140 | char *header; |
140 | char *index_header; | 141 | char *index_header; |
141 | char *index_info; | 142 | char *index_info; |
@@ -182,7 +183,10 @@ struct cgit_page { | |||
182 | char *mimetype; | 183 | char *mimetype; |
183 | char *charset; | 184 | char *charset; |
184 | char *filename; | 185 | char *filename; |
186 | char *etag; | ||
185 | char *title; | 187 | char *title; |
188 | int status; | ||
189 | char *statusmsg; | ||
186 | }; | 190 | }; |
187 | 191 | ||
188 | struct cgit_context { | 192 | struct cgit_context { |
diff --git a/cgitrc.5.txt b/cgitrc.5.txt index 771bb7d..a207fe0 100644 --- a/cgitrc.5.txt +++ b/cgitrc.5.txt | |||
@@ -1,14 +1,14 @@ | |||
1 | CGITRC | 1 | CGITRC(5) |
2 | ====== | 2 | ======== |
3 | 3 | ||
4 | 4 | ||
5 | NAME | 5 | NAME |
6 | ---- | 6 | ---- |
7 | cgitrc - runtime configuration for cgit | 7 | cgitrc - runtime configuration for cgit |
8 |