summaryrefslogtreecommitdiffabout
Unidiff
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--cgit.c5
-rw-r--r--cgit.h2
-rw-r--r--cgitrc.5.txt4
-rw-r--r--cmd.c2
-rw-r--r--ui-atom.c4
5 files changed, 15 insertions, 2 deletions
diff --git a/cgit.c b/cgit.c
index 6ccf4aa..38bc136 100644
--- a/cgit.c
+++ b/cgit.c
@@ -160,24 +160,26 @@ void config_cb(const char *name, const char *value)
160 else if (!strcmp(name, "cache-scanrc-ttl")) 160 else if (!strcmp(name, "cache-scanrc-ttl"))
161 ctx.cfg.cache_scanrc_ttl = atoi(value); 161 ctx.cfg.cache_scanrc_ttl = atoi(value);
162 else if (!strcmp(name, "cache-static-ttl")) 162 else if (!strcmp(name, "cache-static-ttl"))
163 ctx.cfg.cache_static_ttl = atoi(value); 163 ctx.cfg.cache_static_ttl = atoi(value);
164 else if (!strcmp(name, "cache-dynamic-ttl")) 164 else if (!strcmp(name, "cache-dynamic-ttl"))
165 ctx.cfg.cache_dynamic_ttl = atoi(value); 165 ctx.cfg.cache_dynamic_ttl = atoi(value);
166 else if (!strcmp(name, "about-filter")) 166 else if (!strcmp(name, "about-filter"))
167 ctx.cfg.about_filter = new_filter(value, 0); 167 ctx.cfg.about_filter = new_filter(value, 0);
168 else if (!strcmp(name, "commit-filter")) 168 else if (!strcmp(name, "commit-filter"))
169 ctx.cfg.commit_filter = new_filter(value, 0); 169 ctx.cfg.commit_filter = new_filter(value, 0);
170 else if (!strcmp(name, "embedded")) 170 else if (!strcmp(name, "embedded"))
171 ctx.cfg.embedded = atoi(value); 171 ctx.cfg.embedded = atoi(value);
172 else if (!strcmp(name, "max-atom-items"))
173 ctx.cfg.max_atom_items = atoi(value);
172 else if (!strcmp(name, "max-message-length")) 174 else if (!strcmp(name, "max-message-length"))
173 ctx.cfg.max_msg_len = atoi(value); 175 ctx.cfg.max_msg_len = atoi(value);
174 else if (!strcmp(name, "max-repodesc-length")) 176 else if (!strcmp(name, "max-repodesc-length"))
175 ctx.cfg.max_repodesc_len = atoi(value); 177 ctx.cfg.max_repodesc_len = atoi(value);
176 else if (!strcmp(name, "max-blob-size")) 178 else if (!strcmp(name, "max-blob-size"))
177 ctx.cfg.max_blob_size = atoi(value); 179 ctx.cfg.max_blob_size = atoi(value);
178 else if (!strcmp(name, "max-repo-count")) 180 else if (!strcmp(name, "max-repo-count"))
179 ctx.cfg.max_repo_count = atoi(value); 181 ctx.cfg.max_repo_count = atoi(value);
180 else if (!strcmp(name, "max-commit-count")) 182 else if (!strcmp(name, "max-commit-count"))
181 ctx.cfg.max_commit_count = atoi(value); 183 ctx.cfg.max_commit_count = atoi(value);
182 else if (!strcmp(name, "scan-path")) 184 else if (!strcmp(name, "scan-path"))
183 if (!ctx.cfg.nocache && ctx.cfg.cache_size) 185 if (!ctx.cfg.nocache && ctx.cfg.cache_size)
@@ -245,24 +247,26 @@ static void querystring_cb(const char *name, const char *value)
245 } else if (!strcmp(name, "name")) { 247 } else if (!strcmp(name, "name")) {
246 ctx.qry.name = xstrdup(value); 248 ctx.qry.name = xstrdup(value);
247 } else if (!strcmp(name, "mimetype")) { 249 } else if (!strcmp(name, "mimetype")) {
248 ctx.qry.mimetype = xstrdup(value); 250 ctx.qry.mimetype = xstrdup(value);
249 } else if (!strcmp(name, "s")){ 251 } else if (!strcmp(name, "s")){
250 ctx.qry.sort = xstrdup(value); 252 ctx.qry.sort = xstrdup(value);
251 } else if (!strcmp(name, "showmsg")) { 253 } else if (!strcmp(name, "showmsg")) {
252 ctx.qry.showmsg = atoi(value); 254 ctx.qry.showmsg = atoi(value);
253 } else if (!strcmp(name, "period")) { 255 } else if (!strcmp(name, "period")) {
254 ctx.qry.period = xstrdup(value); 256 ctx.qry.period = xstrdup(value);
255 } else if (!strcmp(name, "ss")) { 257 } else if (!strcmp(name, "ss")) {
256 ctx.qry.ssdiff = atoi(value); 258 ctx.qry.ssdiff = atoi(value);
259 } else if (!strcmp(name, "all")) {
260 ctx.qry.show_all = atoi(value);
257 } 261 }
258} 262}
259 263
260char *xstrdupn(const char *str) 264char *xstrdupn(const char *str)
261{ 265{
262 return (str ? xstrdup(str) : NULL); 266 return (str ? xstrdup(str) : NULL);
263} 267}
264 268
265static void prepare_context(struct cgit_context *ctx) 269static void prepare_context(struct cgit_context *ctx)
266{ 270{
267 memset(ctx, 0, sizeof(*ctx)); 271 memset(ctx, 0, sizeof(*ctx));
268 ctx->cfg.agefile = "info/web/last-modified"; 272 ctx->cfg.agefile = "info/web/last-modified";
@@ -287,24 +291,25 @@ static void prepare_context(struct cgit_context *ctx)
287 ctx->cfg.max_blob_size = 0; 291 ctx->cfg.max_blob_size = 0;
288 ctx->cfg.max_stats = 0; 292 ctx->cfg.max_stats = 0;
289 ctx->cfg.module_link = "./?repo=%s&page=commit&id=%s"; 293 ctx->cfg.module_link = "./?repo=%s&page=commit&id=%s";
290 ctx->cfg.renamelimit = -1; 294 ctx->cfg.renamelimit = -1;
291 ctx->cfg.robots = "index, nofollow"; 295 ctx->cfg.robots = "index, nofollow";
292 ctx->cfg.root_title = "Git repository browser"; 296 ctx->cfg.root_title = "Git repository browser";
293 ctx->cfg.root_desc = "a fast webinterface for the git dscm"; 297 ctx->cfg.root_desc = "a fast webinterface for the git dscm";
294 ctx->cfg.script_name = CGIT_SCRIPT_NAME; 298 ctx->cfg.script_name = CGIT_SCRIPT_NAME;
295 ctx->cfg.section = ""; 299 ctx->cfg.section = "";
296 ctx->cfg.summary_branches = 10; 300 ctx->cfg.summary_branches = 10;
297 ctx->cfg.summary_log = 10; 301 ctx->cfg.summary_log = 10;
298 ctx->cfg.summary_tags = 10; 302 ctx->cfg.summary_tags = 10;
303 ctx->cfg.max_atom_items = 10;
299 ctx->cfg.ssdiff = 0; 304 ctx->cfg.ssdiff = 0;
300 ctx->env.cgit_config = xstrdupn(getenv("CGIT_CONFIG")); 305 ctx->env.cgit_config = xstrdupn(getenv("CGIT_CONFIG"));
301 ctx->env.http_host = xstrdupn(getenv("HTTP_HOST")); 306 ctx->env.http_host = xstrdupn(getenv("HTTP_HOST"));
302 ctx->env.https = xstrdupn(getenv("HTTPS")); 307 ctx->env.https = xstrdupn(getenv("HTTPS"));
303 ctx->env.no_http = xstrdupn(getenv("NO_HTTP")); 308 ctx->env.no_http = xstrdupn(getenv("NO_HTTP"));
304 ctx->env.path_info = xstrdupn(getenv("PATH_INFO")); 309 ctx->env.path_info = xstrdupn(getenv("PATH_INFO"));
305 ctx->env.query_string = xstrdupn(getenv("QUERY_STRING")); 310 ctx->env.query_string = xstrdupn(getenv("QUERY_STRING"));
306 ctx->env.request_method = xstrdupn(getenv("REQUEST_METHOD")); 311 ctx->env.request_method = xstrdupn(getenv("REQUEST_METHOD"));
307 ctx->env.script_name = xstrdupn(getenv("SCRIPT_NAME")); 312 ctx->env.script_name = xstrdupn(getenv("SCRIPT_NAME"));
308 ctx->env.server_name = xstrdupn(getenv("SERVER_NAME")); 313 ctx->env.server_name = xstrdupn(getenv("SERVER_NAME"));
309 ctx->env.server_port = xstrdupn(getenv("SERVER_PORT")); 314 ctx->env.server_port = xstrdupn(getenv("SERVER_PORT"));
310 ctx->page.mimetype = "text/html"; 315 ctx->page.mimetype = "text/html";
diff --git a/cgit.h b/cgit.h
index 9b1e3f8..8884f9e 100644
--- a/cgit.h
+++ b/cgit.h
@@ -137,24 +137,25 @@ struct cgit_query {
137 char *sha1; 137 char *sha1;
138 char *sha2; 138 char *sha2;
139 char *path; 139 char *path;
140 char *name; 140 char *name;
141 char *mimetype; 141 char *mimetype;
142 char *url; 142 char *url;
143 char *period; 143 char *period;
144 int ofs; 144 int ofs;
145 int nohead; 145 int nohead;
146 char *sort; 146 char *sort;
147 int showmsg; 147 int showmsg;
148 int ssdiff; 148 int ssdiff;
149 int show_all;
149}; 150};
150 151
151struct cgit_config { 152struct cgit_config {
152 char *agefile; 153 char *agefile;
153 char *cache_root; 154 char *cache_root;
154 char *clone_prefix; 155 char *clone_prefix;
155 char *css; 156 char *css;
156 char *favicon; 157 char *favicon;
157 char *footer; 158 char *footer;
158 char *head_include; 159 char *head_include;
159 char *header; 160 char *header;
160 char *index_header; 161 char *index_header;
@@ -176,24 +177,25 @@ struct cgit_config {
176 int cache_root_ttl; 177 int cache_root_ttl;
177 int cache_scanrc_ttl; 178 int cache_scanrc_ttl;
178 int cache_static_ttl; 179 int cache_static_ttl;
179 int embedded; 180 int embedded;
180 int enable_filter_overrides; 181 int enable_filter_overrides;
181 int enable_index_links; 182 int enable_index_links;
182 int enable_log_filecount; 183 int enable_log_filecount;
183 int enable_log_linecount; 184 int enable_log_linecount;
184 int enable_remote_branches; 185 int enable_remote_branches;
185 int enable_subject_links; 186 int enable_subject_links;
186 int enable_tree_linenumbers; 187 int enable_tree_linenumbers;
187 int local_time; 188 int local_time;
189 int max_atom_items;
188 int max_repo_count; 190 int max_repo_count;
189 int max_commit_count; 191 int max_commit_count;
190 int max_lock_attempts; 192 int max_lock_attempts;
191 int max_msg_len; 193 int max_msg_len;
192 int max_repodesc_len; 194 int max_repodesc_len;
193 int max_blob_size; 195 int max_blob_size;
194 int max_stats; 196 int max_stats;
195 int nocache; 197 int nocache;
196 int noplainemail; 198 int noplainemail;
197 int noheader; 199 int noheader;
198 int renamelimit; 200 int renamelimit;
199 int snapshots; 201 int snapshots;
diff --git a/cgitrc.5.txt b/cgitrc.5.txt
index fcd4308..5c24381 100644
--- a/cgitrc.5.txt
+++ b/cgitrc.5.txt
@@ -163,24 +163,28 @@ local-time::
163 Flag which, if set to "1", makes cgit print commit and tag times in the 163 Flag which, if set to "1", makes cgit print commit and tag times in the
164 servers timezone. Default value: "0". 164 servers timezone. Default value: "0".
165 165
166logo:: 166logo::
167 Url which specifies the source of an image which will be used as a logo 167 Url which specifies the source of an image which will be used as a logo
168 on all cgit pages. Default value: "/cgit.png". 168 on all cgit pages. Default value: "/cgit.png".
169 169
170logo-link:: 170logo-link::
171 Url loaded when clicking on the cgit logo image. If unspecified the 171 Url loaded when clicking on the cgit logo image. If unspecified the
172 calculated url of the repository index page will be used. Default 172 calculated url of the repository index page will be used. Default
173 value: none. 173 value: none.
174 174
175max-atom-items::
176 Specifies the number of items to display in atom feeds view. Default
177 value: "10".
178
175max-commit-count:: 179max-commit-count::
176 Specifies the number of entries to list per page in "log" view. Default 180 Specifies the number of entries to list per page in "log" view. Default
177 value: "50". 181 value: "50".
178 182
179max-message-length:: 183max-message-length::
180 Specifies the maximum number of commit message characters to display in 184 Specifies the maximum number of commit message characters to display in
181 "log" view. Default value: "80". 185 "log" view. Default value: "80".
182 186
183max-repo-count:: 187max-repo-count::
184 Specifies the number of entries to list per page on therepository 188 Specifies the number of entries to list per page on therepository
185 index page. Default value: "50". 189 index page. Default value: "50".
186 190
diff --git a/cmd.c b/cmd.c
index 766f903..ad784fc 100644
--- a/cmd.c
+++ b/cmd.c
@@ -24,25 +24,25 @@
24#include "ui-stats.h" 24#include "ui-stats.h"
25#include "ui-summary.h" 25#include "ui-summary.h"
26#include "ui-tag.h" 26#include "ui-tag.h"
27#include "ui-tree.h" 27#include "ui-tree.h"
28 28
29static void HEAD_fn(struct cgit_context *ctx) 29static void HEAD_fn(struct cgit_context *ctx)
30{ 30{
31 cgit_clone_head(ctx); 31 cgit_clone_head(ctx);
32} 32}
33 33
34static void atom_fn(struct cgit_context *ctx) 34static void atom_fn(struct cgit_context *ctx)
35{ 35{
36 cgit_print_atom(ctx->qry.head, ctx->qry.path, 10); 36 cgit_print_atom(ctx->qry.head, ctx->qry.path, ctx->cfg.max_atom_items);
37} 37}
38 38
39static void about_fn(struct cgit_context *ctx) 39static void about_fn(struct cgit_context *ctx)
40{ 40{
41 if (ctx->repo) 41 if (ctx->repo)
42 cgit_print_repo_readme(ctx->qry.path); 42 cgit_print_repo_readme(ctx->qry.path);
43 else 43 else
44 cgit_print_site_readme(); 44 cgit_print_site_readme();
45} 45}
46 46
47static void blob_fn(struct cgit_context *ctx) 47static void blob_fn(struct cgit_context *ctx)
48{ 48{
diff --git a/ui-atom.c b/ui-atom.c
index 808b2d0..9f049ae 100644
--- a/ui-atom.c
+++ b/ui-atom.c
@@ -76,25 +76,27 @@ void add_entry(struct commit *commit, char *host)
76 cgit_free_commitinfo(info); 76 cgit_free_commitinfo(info);
77} 77}
78 78
79 79
80void cgit_print_atom(char *tip, char *path, int max_count) 80void cgit_print_atom(char *tip, char *path, int max_count)
81{ 81{
82 char *host; 82 char *host;
83 const char *argv[] = {NULL, tip, NULL, NULL, NULL}; 83 const char *argv[] = {NULL, tip, NULL, NULL, NULL};
84 struct commit *commit; 84 struct commit *commit;
85 struct rev_info rev; 85 struct rev_info rev;
86 int argc = 2; 86 int argc = 2;
87 87
88 if (!tip) 88 if (ctx.qry.show_all)
89 argv[1] = "--all";
90 else if (!tip)
89 argv[1] = ctx.qry.head; 91 argv[1] = ctx.qry.head;
90 92
91 if (path) { 93 if (path) {
92 argv[argc++] = "--"; 94 argv[argc++] = "--";
93 argv[argc++] = path; 95 argv[argc++] = path;
94 } 96 }
95 97
96 init_revisions(&rev, NULL); 98 init_revisions(&rev, NULL);
97 rev.abbrev = DEFAULT_ABBREV; 99 rev.abbrev = DEFAULT_ABBREV;
98 rev.commit_format = CMIT_FMT_DEFAULT; 100 rev.commit_format = CMIT_FMT_DEFAULT;
99 rev.verbose_header = 1; 101 rev.verbose_header = 1;
100 rev.show_root_diff = 0; 102 rev.show_root_diff = 0;