-rw-r--r-- | cgit.c | 2 | ||||
-rw-r--r-- | cgit.h | 1 | ||||
-rw-r--r-- | cgitrc | 2 | ||||
-rw-r--r-- | ui-shared.c | 5 |
4 files changed, 10 insertions, 0 deletions
@@ -12,32 +12,34 @@ | |||
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 | 15 | ||
16 | const char *cgit_version = CGIT_VERSION; | 16 | const char *cgit_version = CGIT_VERSION; |
17 | 17 | ||
18 | void config_cb(const char *name, const char *value) | 18 | void config_cb(const char *name, const char *value) |
19 | { | 19 | { |
20 | if (!strcmp(name, "root-title")) | 20 | if (!strcmp(name, "root-title")) |
21 | ctx.cfg.root_title = xstrdup(value); | 21 | ctx.cfg.root_title = xstrdup(value); |
22 | else if (!strcmp(name, "root-desc")) | 22 | else if (!strcmp(name, "root-desc")) |
23 | ctx.cfg.root_desc = xstrdup(value); | 23 | ctx.cfg.root_desc = xstrdup(value); |
24 | else if (!strcmp(name, "root-readme")) | 24 | else if (!strcmp(name, "root-readme")) |
25 | ctx.cfg.root_readme = xstrdup(value); | 25 | ctx.cfg.root_readme = xstrdup(value); |
26 | else if (!strcmp(name, "css")) | 26 | else if (!strcmp(name, "css")) |
27 | ctx.cfg.css = xstrdup(value); | 27 | ctx.cfg.css = xstrdup(value); |
28 | else if (!strcmp(name, "favicon")) | ||
29 | ctx.cfg.favicon = xstrdup(value); | ||
28 | else if (!strcmp(name, "footer")) | 30 | else if (!strcmp(name, "footer")) |
29 | ctx.cfg.footer = xstrdup(value); | 31 | ctx.cfg.footer = xstrdup(value); |
30 | else if (!strcmp(name, "logo")) | 32 | else if (!strcmp(name, "logo")) |
31 | ctx.cfg.logo = xstrdup(value); | 33 | ctx.cfg.logo = xstrdup(value); |
32 | else if (!strcmp(name, "index-header")) | 34 | else if (!strcmp(name, "index-header")) |
33 | ctx.cfg.index_header = xstrdup(value); | 35 | ctx.cfg.index_header = xstrdup(value); |
34 | else if (!strcmp(name, "index-info")) | 36 | else if (!strcmp(name, "index-info")) |
35 | ctx.cfg.index_info = xstrdup(value); | 37 | ctx.cfg.index_info = xstrdup(value); |
36 | else if (!strcmp(name, "logo-link")) | 38 | else if (!strcmp(name, "logo-link")) |
37 | ctx.cfg.logo_link = xstrdup(value); | 39 | ctx.cfg.logo_link = xstrdup(value); |
38 | else if (!strcmp(name, "module-link")) | 40 | else if (!strcmp(name, "module-link")) |
39 | ctx.cfg.module_link = xstrdup(value); | 41 | ctx.cfg.module_link = xstrdup(value); |
40 | else if (!strcmp(name, "virtual-root")) { | 42 | else if (!strcmp(name, "virtual-root")) { |
41 | ctx.cfg.virtual_root = trim_end(value, '/'); | 43 | ctx.cfg.virtual_root = trim_end(value, '/'); |
42 | if (!ctx.cfg.virtual_root && (!strcmp(value, "/"))) | 44 | if (!ctx.cfg.virtual_root && (!strcmp(value, "/"))) |
43 | ctx.cfg.virtual_root = ""; | 45 | ctx.cfg.virtual_root = ""; |
@@ -112,32 +112,33 @@ struct cgit_query { | |||
112 | char *search; | 112 | char *search; |
113 | char *grep; | 113 | char *grep; |
114 | char *head; | 114 | char *head; |
115 | char *sha1; | 115 | char *sha1; |
116 | char *sha2; | 116 | char *sha2; |
117 | char *path; | 117 | char *path; |
118 | char *name; | 118 | char *name; |
119 | char *mimetype; | 119 | char *mimetype; |
120 | int ofs; | 120 | int ofs; |
121 | }; | 121 | }; |
122 | 122 | ||
123 | struct cgit_config { | 123 | struct cgit_config { |
124 | char *agefile; | 124 | char *agefile; |
125 | char *cache_root; | 125 | char *cache_root; |
126 | char *clone_prefix; | 126 | char *clone_prefix; |
127 | char *css; | 127 | char *css; |
128 | char *favicon; | ||
128 | char *footer; | 129 | char *footer; |
129 | char *index_header; | 130 | char *index_header; |
130 | char *index_info; | 131 | char *index_info; |
131 | char *logo; | 132 | char *logo; |
132 | char *logo_link; | 133 | char *logo_link; |
133 | char *module_link; | 134 | char *module_link; |
134 | char *repo_group; | 135 | char *repo_group; |
135 | char *robots; | 136 | char *robots; |
136 | char *root_title; | 137 | char *root_title; |
137 | char *root_desc; | 138 | char *root_desc; |
138 | char *root_readme; | 139 | char *root_readme; |
139 | char *script_name; | 140 | char *script_name; |
140 | char *virtual_root; | 141 | char *virtual_root; |
141 | int cache_size; | 142 | int cache_size; |
142 | int cache_dynamic_ttl; | 143 | int cache_dynamic_ttl; |
143 | int cache_max_create_time; | 144 | int cache_max_create_time; |
@@ -94,32 +94,34 @@ | |||
94 | #root-desc=a fast web interface for the git dscm | 94 | #root-desc=a fast web interface for the git dscm |
95 | 95 | ||
96 | 96 | ||
97 | ## If specified, the file at this path will be included as HTML in the | 97 | ## If specified, the file at this path will be included as HTML in the |
98 | ## sidebar on the repository index page | 98 | ## sidebar on the repository index page |
99 | #index-info= | 99 | #index-info= |
100 | 100 | ||
101 | 101 | ||
102 | ## If specified, the file at this path will be included as HTML above | 102 | ## If specified, the file at this path will be included as HTML above |
103 | ## the repository index | 103 | ## the repository index |
104 | #index-header= | 104 | #index-header= |
105 | 105 | ||
106 | 106 | ||
107 | ## Link to css file | 107 | ## Link to css file |
108 | #css=/cgit/cgit.css | 108 | #css=/cgit/cgit.css |
109 | 109 | ||
110 | ## Link to favicon | ||
111 | #favicon=/favicon.ico | ||
110 | 112 | ||
111 | ## Link to logo file | 113 | ## Link to logo file |
112 | #logo=/cgit/git-logo.png | 114 | #logo=/cgit/git-logo.png |
113 | 115 | ||
114 | 116 | ||
115 | ## Url loaded when clicking the logo | 117 | ## Url loaded when clicking the logo |
116 | #logo-link=http://www.kernel.org/pub/software/scm/git/docs/ | 118 | #logo-link=http://www.kernel.org/pub/software/scm/git/docs/ |
117 | 119 | ||
118 | 120 | ||
119 | ## Url loaded when clicking a submodule link | 121 | ## Url loaded when clicking a submodule link |
120 | #module-link=./?repo=%s&page=commit&id=%s | 122 | #module-link=./?repo=%s&page=commit&id=%s |
121 | 123 | ||
122 | 124 | ||
123 | ## Shared prefix which, when combined with repo url, becomes the url used | 125 | ## Shared prefix which, when combined with repo url, becomes the url used |
124 | ## to clone the repo | 126 | ## to clone the repo |
125 | #clone-prefix= | 127 | #clone-prefix= |
diff --git a/ui-shared.c b/ui-shared.c index 8a00099..6f83d2a 100644 --- a/ui-shared.c +++ b/ui-shared.c | |||
@@ -424,32 +424,37 @@ void cgit_print_http_headers(struct cgit_context *ctx) | |||
424 | } | 424 | } |
425 | 425 | ||
426 | void cgit_print_docstart(struct cgit_context *ctx) | 426 | void cgit_print_docstart(struct cgit_context *ctx) |
427 | { | 427 | { |
428 | html(cgit_doctype); | 428 | html(cgit_doctype); |
429 | html("<html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en' lang='en'>\n"); | 429 | html("<html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en' lang='en'>\n"); |
430 | html("<head>\n"); | 430 | html("<head>\n"); |
431 | html("<title>"); | 431 | html("<title>"); |
432 | html_txt(ctx->page.title); | 432 | html_txt(ctx->page.title); |
433 | html("</title>\n"); | 433 | html("</title>\n"); |
434 | htmlf("<meta name='generator' content='cgit %s'/>\n", cgit_version); | 434 | htmlf("<meta name='generator' content='cgit %s'/>\n", cgit_version); |
435 | if (ctx->cfg.robots && *ctx->cfg.robots) | 435 | if (ctx->cfg.robots && *ctx->cfg.robots) |
436 | htmlf("<meta name='robots' content='%s'/>\n", ctx->cfg.robots); | 436 | htmlf("<meta name='robots' content='%s'/>\n", ctx->cfg.robots); |
437 | html("<link rel='stylesheet' type='text/css' href='"); | 437 | html("<link rel='stylesheet' type='text/css' href='"); |
438 | html_attr(ctx->cfg.css); | 438 | html_attr(ctx->cfg.css); |
439 | html("'/>\n"); | 439 | html("'/>\n"); |
440 | if (ctx->cfg.favicon) { | ||
441 | html("<link rel='shortcut icon' href='"); | ||
442 | html_attr(ctx->cfg.favicon); | ||
443 | html("'/>\n"); | ||
444 | } | ||
440 | html("</head>\n"); | 445 | html("</head>\n"); |
441 | html("<body>\n"); | 446 | html("<body>\n"); |
442 | } | 447 | } |
443 | 448 | ||
444 | void cgit_print_docend() | 449 | void cgit_print_docend() |
445 | { | 450 | { |
446 | html("</div>"); | 451 | html("</div>"); |
447 | if (ctx.cfg.footer) | 452 | if (ctx.cfg.footer) |
448 | html_include(ctx.cfg.footer); | 453 | html_include(ctx.cfg.footer); |
449 | else { | 454 | else { |
450 | html("<div class='footer'>generated "); | 455 | html("<div class='footer'>generated "); |
451 | cgit_print_date(time(NULL), FMT_LONGDATE); | 456 | cgit_print_date(time(NULL), FMT_LONGDATE); |
452 | htmlf(" by cgit %s", cgit_version); | 457 | htmlf(" by cgit %s", cgit_version); |
453 | html("</div>\n"); | 458 | html("</div>\n"); |
454 | } | 459 | } |
455 | html("</body>\n</html>\n"); | 460 | html("</body>\n</html>\n"); |