summaryrefslogtreecommitdiffabout
path: root/cgit.c
Unidiff
Diffstat (limited to 'cgit.c') (more/less context) (ignore whitespace changes)
-rw-r--r--cgit.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/cgit.c b/cgit.c
index 73b1f02..1f46e0d 100644
--- a/cgit.c
+++ b/cgit.c
@@ -1,27 +1,28 @@
1/* cgit.c: cgi for the git scm 1/* cgit.c: cgi for the git scm
2 * 2 *
3 * Copyright (C) 2006 Lars Hjemli 3 * Copyright (C) 2006 Lars Hjemli
4 * 4 *
5 * Licensed under GNU General Public License v2 5 * Licensed under GNU General Public License v2
6 * (see COPYING for full license text) 6 * (see COPYING for full license text)
7 */ 7 */
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 "ui-shared.h" 13#include "ui-shared.h"
13 14
14const char *cgit_version = CGIT_VERSION; 15const char *cgit_version = CGIT_VERSION;
15 16
16void config_cb(const char *name, const char *value) 17void config_cb(const char *name, const char *value)
17{ 18{
18 if (!strcmp(name, "root-title")) 19 if (!strcmp(name, "root-title"))
19 ctx.cfg.root_title = xstrdup(value); 20 ctx.cfg.root_title = xstrdup(value);
20 else if (!strcmp(name, "css")) 21 else if (!strcmp(name, "css"))
21 ctx.cfg.css = xstrdup(value); 22 ctx.cfg.css = xstrdup(value);
22 else if (!strcmp(name, "logo")) 23 else if (!strcmp(name, "logo"))
23 ctx.cfg.logo = xstrdup(value); 24 ctx.cfg.logo = xstrdup(value);
24 else if (!strcmp(name, "index-header")) 25 else if (!strcmp(name, "index-header"))
25 ctx.cfg.index_header = xstrdup(value); 26 ctx.cfg.index_header = xstrdup(value);
26 else if (!strcmp(name, "index-info")) 27 else if (!strcmp(name, "index-info"))
27 ctx.cfg.index_info = xstrdup(value); 28 ctx.cfg.index_info = xstrdup(value);
@@ -90,33 +91,33 @@ void config_cb(const char *name, const char *value)
90 else if (ctx.repo && !strcmp(name, "repo.defbranch")) 91 else if (ctx.repo && !strcmp(name, "repo.defbranch"))
91 ctx.repo->defbranch = xstrdup(value); 92 ctx.repo->defbranch = xstrdup(value);
92 else if (ctx.repo && !strcmp(name, "repo.snapshots")) 93 else if (ctx.repo && !strcmp(name, "repo.snapshots"))
93 ctx.repo->snapshots = ctx.cfg.snapshots & cgit_parse_snapshots_mask(value); /* XXX: &? */ 94 ctx.repo->snapshots = ctx.cfg.snapshots & cgit_parse_snapshots_mask(value); /* XXX: &? */
94 else if (ctx.repo && !strcmp(name, "repo.enable-log-filecount")) 95 else if (ctx.repo && !strcmp(name, "repo.enable-log-filecount"))
95 ctx.repo->enable_log_filecount = ctx.cfg.enable_log_filecount * atoi(value); 96 ctx.repo->enable_log_filecount = ctx.cfg.enable_log_filecount * atoi(value);
96 else if (ctx.repo && !strcmp(name, "repo.enable-log-linecount")) 97 else if (ctx.repo && !strcmp(name, "repo.enable-log-linecount"))
97 ctx.repo->enable_log_linecount = ctx.cfg.enable_log_linecount * atoi(value); 98 ctx.repo->enable_log_linecount = ctx.cfg.enable_log_linecount * atoi(value);
98 else if (ctx.repo && !strcmp(name, "repo.module-link")) 99 else if (ctx.repo && !strcmp(name, "repo.module-link"))
99 ctx.repo->module_link= xstrdup(value); 100 ctx.repo->module_link= xstrdup(value);
100 else if (ctx.repo && !strcmp(name, "repo.readme") && value != NULL) { 101 else if (ctx.repo && !strcmp(name, "repo.readme") && value != NULL) {
101 if (*value == '/') 102 if (*value == '/')
102 ctx.repo->readme = xstrdup(value); 103 ctx.repo->readme = xstrdup(value);
103 else 104 else
104 ctx.repo->readme = xstrdup(fmt("%s/%s", ctx.repo->path, value)); 105 ctx.repo->readme = xstrdup(fmt("%s/%s", ctx.repo->path, value));
105 } else if (!strcmp(name, "include")) 106 } else if (!strcmp(name, "include"))
106 cgit_read_config(value, config_cb); 107 parse_configfile(value, config_cb);
107} 108}
108 109
109static void querystring_cb(const char *name, const char *value) 110static void querystring_cb(const char *name, const char *value)
110{ 111{
111 if (!strcmp(name,"r")) { 112 if (!strcmp(name,"r")) {
112 ctx.qry.repo = xstrdup(value); 113 ctx.qry.repo = xstrdup(value);
113 ctx.repo = cgit_get_repoinfo(value); 114 ctx.repo = cgit_get_repoinfo(value);
114 } else if (!strcmp(name, "p")) { 115 } else if (!strcmp(name, "p")) {
115 ctx.qry.page = xstrdup(value); 116 ctx.qry.page = xstrdup(value);
116 } else if (!strcmp(name, "url")) { 117 } else if (!strcmp(name, "url")) {
117 cgit_parse_url(value); 118 cgit_parse_url(value);
118 } else if (!strcmp(name, "qt")) { 119 } else if (!strcmp(name, "qt")) {
119 ctx.qry.grep = xstrdup(value); 120 ctx.qry.grep = xstrdup(value);
120 } else if (!strcmp(name, "q")) { 121 } else if (!strcmp(name, "q")) {
121 ctx.qry.search = xstrdup(value); 122 ctx.qry.search = xstrdup(value);
122 } else if (!strcmp(name, "h")) { 123 } else if (!strcmp(name, "h")) {
@@ -423,33 +424,33 @@ static void cgit_parse_args(int argc, const char **argv)
423 ctx.qry.ofs = atoi(argv[i]+6); 424 ctx.qry.ofs = atoi(argv[i]+6);
424 } 425 }
425 } 426 }
426} 427}
427 428
428int main(int argc, const char **argv) 429int main(int argc, const char **argv)
429{ 430{
430 struct cacheitem item; 431 struct cacheitem item;
431 const char *cgit_config_env = getenv("CGIT_CONFIG"); 432 const char *cgit_config_env = getenv("CGIT_CONFIG");
432 433
433 prepare_context(&ctx); 434 prepare_context(&ctx);
434 item.st.st_mtime = time(NULL); 435 item.st.st_mtime = time(NULL);
435 cgit_repolist.length = 0; 436 cgit_repolist.length = 0;
436 cgit_repolist.count = 0; 437 cgit_repolist.count = 0;
437 cgit_repolist.repos = NULL; 438 cgit_repolist.repos = NULL;
438 439
439 cgit_read_config(cgit_config_env ? cgit_config_env : CGIT_CONFIG, 440 parse_configfile(cgit_config_env ? cgit_config_env : CGIT_CONFIG,
440 config_cb); 441 config_cb);
441 if (getenv("SCRIPT_NAME")) 442 if (getenv("SCRIPT_NAME"))
442 ctx.cfg.script_name = xstrdup(getenv("SCRIPT_NAME")); 443 ctx.cfg.script_name = xstrdup(getenv("SCRIPT_NAME"));
443 if (getenv("QUERY_STRING")) 444 if (getenv("QUERY_STRING"))
444 ctx.qry.raw = xstrdup(getenv("QUERY_STRING")); 445 ctx.qry.raw = xstrdup(getenv("QUERY_STRING"));
445 cgit_parse_args(argc, argv); 446 cgit_parse_args(argc, argv);
446 cgit_parse_query(ctx.qry.raw, querystring_cb); 447 cgit_parse_query(ctx.qry.raw, querystring_cb);
447 if (!cgit_prepare_cache(&item)) 448 if (!cgit_prepare_cache(&item))
448 return 0; 449 return 0;
449 if (ctx.cfg.nocache) { 450 if (ctx.cfg.nocache) {
450 cgit_fill_cache(&item, 0); 451 cgit_fill_cache(&item, 0);
451 } else { 452 } else {
452 cgit_check_cache(&item); 453 cgit_check_cache(&item);
453 cgit_print_cache(&item); 454 cgit_print_cache(&item);
454 } 455 }
455 return 0; 456 return 0;