-rw-r--r-- | cgit.c | 2 | ||||
-rw-r--r-- | cgit.h | 1 | ||||
-rw-r--r-- | ui-shared.c | 14 |
3 files changed, 13 insertions, 4 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, "footer")) | ||
29 | ctx.cfg.footer = xstrdup(value); | ||
28 | else if (!strcmp(name, "logo")) | 30 | else if (!strcmp(name, "logo")) |
29 | ctx.cfg.logo = xstrdup(value); | 31 | ctx.cfg.logo = xstrdup(value); |
30 | else if (!strcmp(name, "index-header")) | 32 | else if (!strcmp(name, "index-header")) |
31 | ctx.cfg.index_header = xstrdup(value); | 33 | ctx.cfg.index_header = xstrdup(value); |
32 | else if (!strcmp(name, "index-info")) | 34 | else if (!strcmp(name, "index-info")) |
33 | ctx.cfg.index_info = xstrdup(value); | 35 | ctx.cfg.index_info = xstrdup(value); |
34 | else if (!strcmp(name, "logo-link")) | 36 | else if (!strcmp(name, "logo-link")) |
35 | ctx.cfg.logo_link = xstrdup(value); | 37 | ctx.cfg.logo_link = xstrdup(value); |
36 | else if (!strcmp(name, "module-link")) | 38 | else if (!strcmp(name, "module-link")) |
37 | ctx.cfg.module_link = xstrdup(value); | 39 | ctx.cfg.module_link = xstrdup(value); |
38 | else if (!strcmp(name, "virtual-root")) { | 40 | else if (!strcmp(name, "virtual-root")) { |
39 | ctx.cfg.virtual_root = trim_end(value, '/'); | 41 | ctx.cfg.virtual_root = trim_end(value, '/'); |
40 | if (!ctx.cfg.virtual_root && (!strcmp(value, "/"))) | 42 | if (!ctx.cfg.virtual_root && (!strcmp(value, "/"))) |
41 | ctx.cfg.virtual_root = ""; | 43 | ctx.cfg.virtual_root = ""; |
42 | } else if (!strcmp(name, "nocache")) | 44 | } else if (!strcmp(name, "nocache")) |
43 | ctx.cfg.nocache = atoi(value); | 45 | ctx.cfg.nocache = atoi(value); |
@@ -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 *footer; | ||
128 | char *index_header; | 129 | char *index_header; |
129 | char *index_info; | 130 | char *index_info; |
130 | char *logo; | 131 | char *logo; |
131 | char *logo_link; | 132 | char *logo_link; |
132 | char *module_link; | 133 | char *module_link; |
133 | char *repo_group; | 134 | char *repo_group; |
134 | char *robots; | 135 | char *robots; |
135 | char *root_title; | 136 | char *root_title; |
136 | char *root_desc; | 137 | char *root_desc; |
137 | char *root_readme; | 138 | char *root_readme; |
138 | char *script_name; | 139 | char *script_name; |
139 | char *virtual_root; | 140 | char *virtual_root; |
140 | int cache_size; | 141 | int cache_size; |
141 | int cache_dynamic_ttl; | 142 | int cache_dynamic_ttl; |
142 | int cache_max_create_time; | 143 | int cache_max_create_time; |
143 | int cache_repo_ttl; | 144 | int cache_repo_ttl; |
diff --git a/ui-shared.c b/ui-shared.c index cd98387..8a00099 100644 --- a/ui-shared.c +++ b/ui-shared.c | |||
@@ -430,36 +430,42 @@ void cgit_print_docstart(struct cgit_context *ctx) | |||
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 | html("</head>\n"); | 440 | html("</head>\n"); |
441 | html("<body>\n"); | 441 | html("<body>\n"); |
442 | } | 442 | } |
443 | 443 | ||
444 | void cgit_print_docend() | 444 | void cgit_print_docend() |
445 | { | 445 | { |
446 | html("</div><div class='footer'>generated "); | 446 | html("</div>"); |
447 | cgit_print_date(time(NULL), FMT_LONGDATE); | 447 | if (ctx.cfg.footer) |
448 | htmlf(" by cgit %s", cgit_version); | 448 | html_include(ctx.cfg.footer); |
449 | html("</div>\n</body>\n</html>\n"); | 449 | else { |
450 | html("<div class='footer'>generated "); | ||
451 | cgit_print_date(time(NULL), FMT_LONGDATE); | ||
452 | htmlf(" by cgit %s", cgit_version); | ||
453 | html("</div>\n"); | ||
454 | } | ||
455 | html("</body>\n</html>\n"); | ||
450 | } | 456 | } |
451 | 457 | ||
452 | int print_branch_option(const char *refname, const unsigned char *sha1, | 458 | int print_branch_option(const char *refname, const unsigned char *sha1, |
453 | int flags, void *cb_data) | 459 | int flags, void *cb_data) |
454 | { | 460 | { |
455 | char *name = (char *)refname; | 461 | char *name = (char *)refname; |
456 | html_option(name, name, ctx.qry.head); | 462 | html_option(name, name, ctx.qry.head); |
457 | return 0; | 463 | return 0; |
458 | } | 464 | } |
459 | 465 | ||
460 | int print_archive_ref(const char *refname, const unsigned char *sha1, | 466 | int print_archive_ref(const char *refname, const unsigned char *sha1, |
461 | int flags, void *cb_data) | 467 | int flags, void *cb_data) |
462 | { | 468 | { |
463 | struct tag *tag; | 469 | struct tag *tag; |
464 | struct taginfo *info; | 470 | struct taginfo *info; |
465 | struct object *obj; | 471 | struct object *obj; |