summaryrefslogtreecommitdiffabout
Unidiff
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--cgit.c2
-rw-r--r--cgit.h1
-rw-r--r--cgitrc.5.txt4
-rw-r--r--ui-shared.c4
4 files changed, 10 insertions, 1 deletions
diff --git a/cgit.c b/cgit.c
index ae20257..513ea12 100644
--- a/cgit.c
+++ b/cgit.c
@@ -10,48 +10,50 @@
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 config_cb(const char *name, const char *value) 20void config_cb(const char *name, const char *value)
21{ 21{
22 if (!strcmp(name, "root-title")) 22 if (!strcmp(name, "root-title"))
23 ctx.cfg.root_title = xstrdup(value); 23 ctx.cfg.root_title = xstrdup(value);
24 else if (!strcmp(name, "root-desc")) 24 else if (!strcmp(name, "root-desc"))
25 ctx.cfg.root_desc = xstrdup(value); 25 ctx.cfg.root_desc = xstrdup(value);
26 else if (!strcmp(name, "root-readme")) 26 else if (!strcmp(name, "root-readme"))
27 ctx.cfg.root_readme = xstrdup(value); 27 ctx.cfg.root_readme = xstrdup(value);
28 else if (!strcmp(name, "css")) 28 else if (!strcmp(name, "css"))
29 ctx.cfg.css = xstrdup(value); 29 ctx.cfg.css = xstrdup(value);
30 else if (!strcmp(name, "favicon")) 30 else if (!strcmp(name, "favicon"))
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"))
37 ctx.cfg.logo = xstrdup(value); 39 ctx.cfg.logo = xstrdup(value);
38 else if (!strcmp(name, "index-header")) 40 else if (!strcmp(name, "index-header"))
39 ctx.cfg.index_header = xstrdup(value); 41 ctx.cfg.index_header = xstrdup(value);
40 else if (!strcmp(name, "index-info")) 42 else if (!strcmp(name, "index-info"))
41 ctx.cfg.index_info = xstrdup(value); 43 ctx.cfg.index_info = xstrdup(value);
42 else if (!strcmp(name, "logo-link")) 44 else if (!strcmp(name, "logo-link"))
43 ctx.cfg.logo_link = xstrdup(value); 45 ctx.cfg.logo_link = xstrdup(value);
44 else if (!strcmp(name, "module-link")) 46 else if (!strcmp(name, "module-link"))
45 ctx.cfg.module_link = xstrdup(value); 47 ctx.cfg.module_link = xstrdup(value);
46 else if (!strcmp(name, "virtual-root")) { 48 else if (!strcmp(name, "virtual-root")) {
47 ctx.cfg.virtual_root = trim_end(value, '/'); 49 ctx.cfg.virtual_root = trim_end(value, '/');
48 if (!ctx.cfg.virtual_root && (!strcmp(value, "/"))) 50 if (!ctx.cfg.virtual_root && (!strcmp(value, "/")))
49 ctx.cfg.virtual_root = ""; 51 ctx.cfg.virtual_root = "";
50 } else if (!strcmp(name, "nocache")) 52 } else if (!strcmp(name, "nocache"))
51 ctx.cfg.nocache = atoi(value); 53 ctx.cfg.nocache = atoi(value);
52 else if (!strcmp(name, "snapshots")) 54 else if (!strcmp(name, "snapshots"))
53 ctx.cfg.snapshots = cgit_parse_snapshots_mask(value); 55 ctx.cfg.snapshots = cgit_parse_snapshots_mask(value);
54 else if (!strcmp(name, "enable-index-links")) 56 else if (!strcmp(name, "enable-index-links"))
55 ctx.cfg.enable_index_links = atoi(value); 57 ctx.cfg.enable_index_links = atoi(value);
56 else if (!strcmp(name, "enable-log-filecount")) 58 else if (!strcmp(name, "enable-log-filecount"))
57 ctx.cfg.enable_log_filecount = atoi(value); 59 ctx.cfg.enable_log_filecount = atoi(value);
diff --git a/cgit.h b/cgit.h
index 07a277a..78b30ba 100644
--- a/cgit.h
+++ b/cgit.h
@@ -115,48 +115,49 @@ struct cgit_query {
115 char *page; 115 char *page;
116 char *search; 116 char *search;
117 char *grep; 117 char *grep;
118 char *head; 118 char *head;
119 char *sha1; 119 char *sha1;
120 char *sha2; 120 char *sha2;
121 char *path; 121 char *path;
122 char *name; 122 char *name;
123 char *mimetype; 123 char *mimetype;
124 char *url; 124 char *url;
125 char *period; 125 char *period;
126 int ofs; 126 int ofs;
127 int nohead; 127 int nohead;
128 char *sort; 128 char *sort;
129 int showmsg; 129 int showmsg;
130}; 130};
131 131
132struct cgit_config { 132struct cgit_config {
133 char *agefile; 133 char *agefile;
134 char *cache_root; 134 char *cache_root;
135 char *clone_prefix; 135 char *clone_prefix;
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;
142 char *logo; 143 char *logo;
143 char *logo_link; 144 char *logo_link;
144 char *module_link; 145 char *module_link;
145 char *repo_group; 146 char *repo_group;
146 char *robots; 147 char *robots;
147 char *root_title; 148 char *root_title;
148 char *root_desc; 149 char *root_desc;
149 char *root_readme; 150 char *root_readme;
150 char *script_name; 151 char *script_name;
151 char *virtual_root; 152 char *virtual_root;
152 int cache_size; 153 int cache_size;
153 int cache_dynamic_ttl; 154 int cache_dynamic_ttl;
154 int cache_max_create_time; 155 int cache_max_create_time;
155 int cache_repo_ttl; 156 int cache_repo_ttl;
156 int cache_root_ttl; 157 int cache_root_ttl;
157 int cache_static_ttl; 158 int cache_static_ttl;
158 int enable_index_links; 159 int enable_index_links;
159 int enable_log_filecount; 160 int enable_log_filecount;
160 int enable_log_linecount; 161 int enable_log_linecount;
161 int local_time; 162 int local_time;
162 int max_repo_count; 163 int max_repo_count;
diff --git a/cgitrc.5.txt b/cgitrc.5.txt
index 7879f75..683f3b5 100644
--- a/cgitrc.5.txt
+++ b/cgitrc.5.txt
@@ -63,48 +63,52 @@ enable-index-links::
63 Flag which, when set to "1", will make cgit generate extra links for 63 Flag which, when set to "1", will make cgit generate extra links for
64 each repo in the repository index (specifically, to the "summary", 64 each repo in the repository index (specifically, to the "summary",
65 "commit" and "tree" pages). Default value: "0". 65 "commit" and "tree" pages). Default value: "0".
66 66
67enable-log-filecount:: 67enable-log-filecount::
68 Flag which, when set to "1", will make cgit print the number of 68 Flag which, when set to "1", will make cgit print the number of
69 modified files for each commit on the repository log page. Default 69 modified files for each commit on the repository log page. Default
70 value: "0". 70 value: "0".
71 71
72enable-log-linecount:: 72enable-log-linecount::
73 Flag which, when set to "1", will make cgit print the number of added 73 Flag which, when set to "1", will make cgit print the number of added
74 and removed lines for each commit on the repository log page. Default 74 and removed lines for each commit on the repository log page. Default
75 value: "0". 75 value: "0".
76 76
77favicon:: 77favicon::
78 Url used as link to a shortcut icon for cgit. If specified, it is 78 Url used as link to a shortcut icon for cgit. If specified, it is
79 suggested to use the value "/favicon.ico" since certain browsers will 79 suggested to use the value "/favicon.ico" since certain browsers will
80 ignore other values. Default value: none. 80 ignore other values. Default value: none.
81 81
82footer:: 82footer::
83 The content of the file specified with this option will be included 83 The content of the file specified with this option will be included
84 verbatim at the bottom of all pages (i.e. it replaces the standard 84 verbatim at the bottom of all pages (i.e. it replaces the standard
85 "generated by..." message. Default value: none. 85 "generated by..." message. Default value: none.
86 86
87head-include::
88 The content of the file specified with this option will be included
89 verbatim in the html HEAD section on all pages. Default value: none.
90
87header:: 91header::
88 The content of the file specified with this option will be included 92 The content of the file specified with this option will be included
89 verbatim at the top of all pages. Default value: none. 93 verbatim at the top of all pages. Default value: none.
90 94
91include:: 95include::
92 Name of a configfile to include before the rest of the current config- 96 Name of a configfile to include before the rest of the current config-
93 file is parsed. Default value: none. 97 file is parsed. Default value: none.
94 98
95index-header:: 99index-header::
96 The content of the file specified with this option will be included 100 The content of the file specified with this option will be included
97 verbatim above the repository index. This setting is deprecated, and 101 verbatim above the repository index. This setting is deprecated, and
98 will not be supported by cgit-1.0 (use root-readme instead). Default 102 will not be supported by cgit-1.0 (use root-readme instead). Default
99 value: none. 103 value: none.
100 104
101index-info:: 105index-info::
102 The content of the file specified with this option will be included 106 The content of the file specified with this option will be included
103 verbatim below the heading on the repository index page. This setting 107 verbatim below the heading on the repository index page. This setting
104 is deprecated, and will not be supported by cgit-1.0 (use root-desc 108 is deprecated, and will not be supported by cgit-1.0 (use root-desc
105 instead). Default value: none. 109 instead). Default value: none.
106 110
107local-time:: 111local-time::
108 Flag which, if set to "1", makes cgit print commit and tag times in the 112 Flag which, if set to "1", makes cgit print commit and tag times in the
109 servers timezone. Default value: "0". 113 servers timezone. Default value: "0".
110 114
diff --git a/ui-shared.c b/ui-shared.c
index 10be3c0..66d5b82 100644
--- a/ui-shared.c
+++ b/ui-shared.c
@@ -495,50 +495,52 @@ void cgit_print_docstart(struct cgit_context *ctx)
495 char *host = cgit_hosturl(); 495 char *host = cgit_hosturl();
496 html(cgit_doctype); 496 html(cgit_doctype);
497 html("<html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en' lang='en'>\n"); 497 html("<html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en' lang='en'>\n");
498 html("<head>\n"); 498 html("<head>\n");
499 html("<title>"); 499 html("<title>");
500 html_txt(ctx->page.title); 500 html_txt(ctx->page.title);
501 html("</title>\n"); 501 html("</title>\n");
502 htmlf("<meta name='generator' content='cgit %s'/>\n", cgit_version); 502 htmlf("<meta name='generator' content='cgit %s'/>\n", cgit_version);
503 if (ctx->cfg.robots && *ctx->cfg.robots) 503 if (ctx->cfg.robots && *ctx->cfg.robots)
504 htmlf("<meta name='robots' content='%s'/>\n", ctx->cfg.robots); 504 htmlf("<meta name='robots' content='%s'/>\n", ctx->cfg.robots);
505 html("<link rel='stylesheet' type='text/css' href='"); 505 html("<link rel='stylesheet' type='text/css' href='");
506 html_attr(ctx->cfg.css); 506 html_attr(ctx->cfg.css);
507 html("'/>\n"); 507 html("'/>\n");
508 if (ctx->cfg.favicon) { 508 if (ctx->cfg.favicon) {
509 html("<link rel='shortcut icon' href='"); 509 html("<link rel='shortcut icon' href='");
510 html_attr(ctx->cfg.favicon); 510 html_attr(ctx->cfg.favicon);
511 html("'/>\n"); 511 html("'/>\n");
512 } 512 }
513 if (host && ctx->repo) { 513 if (host && ctx->repo) {
514 html("<link rel='alternate' title='Atom feed' href='"); 514 html("<link rel='alternate' title='Atom feed' href='");
515 html(cgit_httpscheme()); 515 html(cgit_httpscheme());
516 html_attr(cgit_hosturl()); 516 html_attr(cgit_hosturl());
517 html_attr(cgit_fileurl(ctx->repo->url, "atom", ctx->qry.path, 517 html_attr(cgit_fileurl(ctx->repo->url, "atom", ctx->qry.path,
518 fmt("h=%s", ctx->qry.head))); 518 fmt("h=%s", ctx->qry.head)));
519 html("' type='application/atom+xml'/>"); 519 html("' type='application/atom+xml'/>\n");
520 } 520 }
521 if (ctx->cfg.head_include)
522 html_include(ctx->cfg.head_include);
521 html("</head>\n"); 523 html("</head>\n");
522 html("<body>\n"); 524 html("<body>\n");
523 if (ctx->cfg.header) 525 if (ctx->cfg.header)
524 html_include(ctx->cfg.header); 526 html_include(ctx->cfg.header);
525} 527}
526 528
527void cgit_print_docend() 529void cgit_print_docend()
528{ 530{
529 html("</div>"); 531 html("</div>");
530 if (ctx.cfg.footer) 532 if (ctx.cfg.footer)
531 html_include(ctx.cfg.footer); 533 html_include(ctx.cfg.footer);
532 else { 534 else {
533 htmlf("<div class='footer'>generated by cgit %s at ", 535 htmlf("<div class='footer'>generated by cgit %s at ",
534 cgit_version); 536 cgit_version);
535 cgit_print_date(time(NULL), FMT_LONGDATE, ctx.cfg.local_time); 537 cgit_print_date(time(NULL), FMT_LONGDATE, ctx.cfg.local_time);
536 html("</div>\n"); 538 html("</div>\n");
537 } 539 }
538 html("</body>\n</html>\n"); 540 html("</body>\n</html>\n");
539} 541}
540 542
541int print_branch_option(const char *refname, const unsigned char *sha1, 543int print_branch_option(const char *refname, const unsigned char *sha1,
542 int flags, void *cb_data) 544 int flags, void *cb_data)
543{ 545{
544 char *name = (char *)refname; 546 char *name = (char *)refname;