summaryrefslogtreecommitdiffabout
path: root/cgit.c
Unidiff
Diffstat (limited to 'cgit.c') (more/less context) (show whitespace changes)
-rw-r--r--cgit.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/cgit.c b/cgit.c
index f6bb0c7..aa1107a 100644
--- a/cgit.c
+++ b/cgit.c
@@ -8,24 +8,32 @@
8 8
9#include "cgit.h" 9#include "cgit.h"
10#include "cache.h" 10#include "cache.h"
11#include "cmd.h" 11#include "cmd.h"
12#include "configfile.h" 12#include "configfile.h"
13#include "html.h" 13#include "html.h"
14#include "ui-shared.h" 14#include "ui-shared.h"
15#include "ui-stats.h" 15#include "ui-stats.h"
16#include "scan-tree.h" 16#include "scan-tree.h"
17 17
18const char *cgit_version = CGIT_VERSION; 18const char *cgit_version = CGIT_VERSION;
19 19
20void add_mimetype(const char *name, const char *value)
21{
22 struct string_list_item *item;
23
24 item = string_list_insert(xstrdup(name), &ctx.cfg.mimetypes);
25 item->util = xstrdup(value);
26}
27
20void config_cb(const char *name, const char *value) 28void config_cb(const char *name, const char *value)
21{ 29{
22 if (!strcmp(name, "root-title")) 30 if (!strcmp(name, "root-title"))
23 ctx.cfg.root_title = xstrdup(value); 31 ctx.cfg.root_title = xstrdup(value);
24 else if (!strcmp(name, "root-desc")) 32 else if (!strcmp(name, "root-desc"))
25 ctx.cfg.root_desc = xstrdup(value); 33 ctx.cfg.root_desc = xstrdup(value);
26 else if (!strcmp(name, "root-readme")) 34 else if (!strcmp(name, "root-readme"))
27 ctx.cfg.root_readme = xstrdup(value); 35 ctx.cfg.root_readme = xstrdup(value);
28 else if (!strcmp(name, "css")) 36 else if (!strcmp(name, "css"))
29 ctx.cfg.css = xstrdup(value); 37 ctx.cfg.css = xstrdup(value);
30 else if (!strcmp(name, "favicon")) 38 else if (!strcmp(name, "favicon"))
31 ctx.cfg.favicon = xstrdup(value); 39 ctx.cfg.favicon = xstrdup(value);
@@ -94,24 +102,26 @@ void config_cb(const char *name, const char *value)
94 else if (!strcmp(name, "summary-tags")) 102 else if (!strcmp(name, "summary-tags"))
95 ctx.cfg.summary_tags = atoi(value); 103 ctx.cfg.summary_tags = atoi(value);
96 else if (!strcmp(name, "agefile")) 104 else if (!strcmp(name, "agefile"))
97 ctx.cfg.agefile = xstrdup(value); 105 ctx.cfg.agefile = xstrdup(value);
98 else if (!strcmp(name, "renamelimit")) 106 else if (!strcmp(name, "renamelimit"))
99 ctx.cfg.renamelimit = atoi(value); 107 ctx.cfg.renamelimit = atoi(value);
100 else if (!strcmp(name, "robots")) 108 else if (!strcmp(name, "robots"))
101 ctx.cfg.robots = xstrdup(value); 109 ctx.cfg.robots = xstrdup(value);
102 else if (!strcmp(name, "clone-prefix")) 110 else if (!strcmp(name, "clone-prefix"))
103 ctx.cfg.clone_prefix = xstrdup(value); 111 ctx.cfg.clone_prefix = xstrdup(value);
104 else if (!strcmp(name, "local-time")) 112 else if (!strcmp(name, "local-time"))
105 ctx.cfg.local_time = atoi(value); 113 ctx.cfg.local_time = atoi(value);
114 else if (!prefixcmp(name, "mimetype."))
115 add_mimetype(name + 9, value);
106 else if (!strcmp(name, "repo.group")) 116 else if (!strcmp(name, "repo.group"))
107 ctx.cfg.repo_group = xstrdup(value); 117 ctx.cfg.repo_group = xstrdup(value);
108 else if (!strcmp(name, "repo.url")) 118 else if (!strcmp(name, "repo.url"))
109 ctx.repo = cgit_add_repo(value); 119 ctx.repo = cgit_add_repo(value);
110 else if (!strcmp(name, "repo.name")) 120 else if (!strcmp(name, "repo.name"))
111 ctx.repo->name = xstrdup(value); 121 ctx.repo->name = xstrdup(value);
112 else if (ctx.repo && !strcmp(name, "repo.path")) 122 else if (ctx.repo && !strcmp(name, "repo.path"))
113 ctx.repo->path = trim_end(value, '/'); 123 ctx.repo->path = trim_end(value, '/');
114 else if (ctx.repo && !strcmp(name, "repo.clone-url")) 124 else if (ctx.repo && !strcmp(name, "repo.clone-url"))
115 ctx.repo->clone_url = xstrdup(value); 125 ctx.repo->clone_url = xstrdup(value);
116 else if (ctx.repo && !strcmp(name, "repo.desc")) 126 else if (ctx.repo && !strcmp(name, "repo.desc"))
117 ctx.repo->desc = xstrdup(value); 127 ctx.repo->desc = xstrdup(value);
@@ -206,24 +216,25 @@ static void prepare_context(struct cgit_context *ctx)
206 ctx->cfg.root_desc = "a fast webinterface for the git dscm"; 216 ctx->cfg.root_desc = "a fast webinterface for the git dscm";
207 ctx->cfg.script_name = CGIT_SCRIPT_NAME; 217 ctx->cfg.script_name = CGIT_SCRIPT_NAME;
208 ctx->cfg.summary_branches = 10; 218 ctx->cfg.summary_branches = 10;
209 ctx->cfg.summary_log = 10; 219 ctx->cfg.summary_log = 10;
210 ctx->cfg.summary_tags = 10; 220 ctx->cfg.summary_tags = 10;
211 ctx->page.mimetype = "text/html"; 221 ctx->page.mimetype = "text/html";
212 ctx->page.charset = PAGE_ENCODING; 222 ctx->page.charset = PAGE_ENCODING;
213 ctx->page.filename = NULL; 223 ctx->page.filename = NULL;
214 ctx->page.size = 0; 224 ctx->page.size = 0;
215 ctx->page.modified = time(NULL); 225 ctx->page.modified = time(NULL);
216 ctx->page.expires = ctx->page.modified; 226 ctx->page.expires = ctx->page.modified;
217 ctx->page.etag = NULL; 227 ctx->page.etag = NULL;
228 memset(&ctx->cfg.mimetypes, 0, sizeof(struct string_list));
218} 229}
219 230
220struct refmatch { 231struct refmatch {
221 char *req_ref; 232 char *req_ref;
222 char *first_ref; 233 char *first_ref;
223 int match; 234 int match;
224}; 235};
225 236
226int find_current_ref(const char *refname, const unsigned char *sha1, 237int find_current_ref(const char *refname, const unsigned char *sha1,
227 int flags, void *cb_data) 238 int flags, void *cb_data)
228{ 239{
229 struct refmatch *info; 240 struct refmatch *info;