aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--cache.c2
-rw-r--r--cgit.c34
-rw-r--r--cgit.h1
-rw-r--r--configfile.c6
-rw-r--r--html.c6
-rw-r--r--parsing.c6
-rw-r--r--shared.c48
-rw-r--r--ui-atom.c2
-rw-r--r--ui-commit.c1
-rw-r--r--ui-diff.c5
-rw-r--r--ui-log.c6
-rw-r--r--ui-refs.c12
-rw-r--r--ui-repolist.c14
-rw-r--r--ui-shared.c64
-rw-r--r--ui-snapshot.c2
-rw-r--r--ui-stats.c17
-rw-r--r--ui-tag.c2
-rw-r--r--ui-tree.c8
18 files changed, 125 insertions, 111 deletions
diff --git a/cache.c b/cache.c
index 47cdcb4..3127fc2 100644
--- a/cache.c
+++ b/cache.c
@@ -363,7 +363,7 @@ int cache_process(int size, const char *path, const char *key, int ttl,
363/* Return a strftime formatted date/time 363/* Return a strftime formatted date/time
364 * NB: the result from this function is to shared memory 364 * NB: the result from this function is to shared memory
365 */ 365 */
366char *sprintftime(const char *format, time_t time) 366static char *sprintftime(const char *format, time_t time)
367{ 367{
368 static char buf[64]; 368 static char buf[64];
369 struct tm *tm; 369 struct tm *tm;
diff --git a/cgit.c b/cgit.c
index 2ccf864..afafcce 100644
--- a/cgit.c
+++ b/cgit.c
@@ -18,7 +18,7 @@
18 18
19const char *cgit_version = CGIT_VERSION; 19const char *cgit_version = CGIT_VERSION;
20 20
21void add_mimetype(const char *name, const char *value) 21static void add_mimetype(const char *name, const char *value)
22{ 22{
23 struct string_list_item *item; 23 struct string_list_item *item;
24 24
@@ -26,7 +26,7 @@ void add_mimetype(const char *name, const char *value)
26 item->util = xstrdup(value); 26 item->util = xstrdup(value);
27} 27}
28 28
29struct cgit_filter *new_filter(const char *cmd, filter_type filtertype) 29static struct cgit_filter *new_filter(const char *cmd, filter_type filtertype)
30{ 30{
31 struct cgit_filter *f; 31 struct cgit_filter *f;
32 int args_size = 0; 32 int args_size = 0;
@@ -58,7 +58,7 @@ struct cgit_filter *new_filter(const char *cmd, filter_type filtertype)
58 58
59static void process_cached_repolist(const char *path); 59static void process_cached_repolist(const char *path);
60 60
61void repo_config(struct cgit_repo *repo, const char *name, const char *value) 61static void repo_config(struct cgit_repo *repo, const char *name, const char *value)
62{ 62{
63 struct string_list_item *item; 63 struct string_list_item *item;
64 64
@@ -114,7 +114,7 @@ void repo_config(struct cgit_repo *repo, const char *name, const char *value)
114 } 114 }
115} 115}
116 116
117void config_cb(const char *name, const char *value) 117static void config_cb(const char *name, const char *value)
118{ 118{
119 if (!strcmp(name, "section") || !strcmp(name, "repo.group")) 119 if (!strcmp(name, "section") || !strcmp(name, "repo.group"))
120 ctx.cfg.section = xstrdup(value); 120 ctx.cfg.section = xstrdup(value);
@@ -333,7 +333,7 @@ static void querystring_cb(const char *name, const char *value)
333 } 333 }
334} 334}
335 335
336char *xstrdupn(const char *str) 336static char *xstrdupn(const char *str)
337{ 337{
338 return (str ? xstrdup(str) : NULL); 338 return (str ? xstrdup(str) : NULL);
339} 339}
@@ -414,8 +414,8 @@ struct refmatch {
414 int match; 414 int match;
415}; 415};
416 416
417int find_current_ref(const char *refname, const unsigned char *sha1, 417static int find_current_ref(const char *refname, const unsigned char *sha1,
418 int flags, void *cb_data) 418 int flags, void *cb_data)
419{ 419{
420 struct refmatch *info; 420 struct refmatch *info;
421 421
@@ -427,7 +427,13 @@ int find_current_ref(const char *refname, const unsigned char *sha1,
427 return info->match; 427 return info->match;
428} 428}
429 429
430char *find_default_branch(struct cgit_repo *repo) 430static void free_refmatch_inner(struct refmatch *info)
431{
432 if (info->first_ref)
433 free(info->first_ref);
434}
435
436static char *find_default_branch(struct cgit_repo *repo)
431{ 437{
432 struct refmatch info; 438 struct refmatch info;
433 char *ref; 439 char *ref;
@@ -442,6 +448,8 @@ char *find_default_branch(struct cgit_repo *repo)
442 ref = info.first_ref; 448 ref = info.first_ref;
443 if (ref) 449 if (ref)
444 ref = xstrdup(ref); 450 ref = xstrdup(ref);
451 free_refmatch_inner(&info);
452
445 return ref; 453 return ref;
446} 454}
447 455
@@ -569,13 +577,13 @@ static void process_request(void *cbdata)
569 cgit_print_docend(); 577 cgit_print_docend();
570} 578}
571 579
572int cmp_repos(const void *a, const void *b) 580static int cmp_repos(const void *a, const void *b)
573{ 581{
574 const struct cgit_repo *ra = a, *rb = b; 582 const struct cgit_repo *ra = a, *rb = b;
575 return strcmp(ra->url, rb->url); 583 return strcmp(ra->url, rb->url);
576} 584}
577 585
578char *build_snapshot_setting(int bitmap) 586static char *build_snapshot_setting(int bitmap)
579{ 587{
580 const struct cgit_snapshot_format *f; 588 const struct cgit_snapshot_format *f;
581 char *result = xstrdup(""); 589 char *result = xstrdup("");
@@ -595,7 +603,7 @@ char *build_snapshot_setting(int bitmap)
595 return result; 603 return result;
596} 604}
597 605
598char *get_first_line(char *txt) 606static char *get_first_line(char *txt)
599{ 607{
600 char *t = xstrdup(txt); 608 char *t = xstrdup(txt);
601 char *p = strchr(t, '\n'); 609 char *p = strchr(t, '\n');
@@ -604,7 +612,7 @@ char *get_first_line(char *txt)
604 return t; 612 return t;
605} 613}
606 614
607void print_repo(FILE *f, struct cgit_repo *repo) 615static void print_repo(FILE *f, struct cgit_repo *repo)
608{ 616{
609 fprintf(f, "repo.url=%s\n", repo->url); 617 fprintf(f, "repo.url=%s\n", repo->url);
610 fprintf(f, "repo.name=%s\n", repo->name); 618 fprintf(f, "repo.name=%s\n", repo->name);
@@ -649,7 +657,7 @@ void print_repo(FILE *f, struct cgit_repo *repo)
649 fprintf(f, "\n"); 657 fprintf(f, "\n");
650} 658}
651 659
652void print_repolist(FILE *f, struct cgit_repolist *list, int start) 660static void print_repolist(FILE *f, struct cgit_repolist *list, int start)
653{ 661{
654 int i; 662 int i;
655 663
diff --git a/cgit.h b/cgit.h
index c655bd8..ed5cf14 100644
--- a/cgit.h
+++ b/cgit.h
@@ -304,6 +304,7 @@ extern char *strlpart(char *txt, int maxlen);
304extern char *strrpart(char *txt, int maxlen); 304extern char *strrpart(char *txt, int maxlen);
305 305
306extern void cgit_add_ref(struct reflist *list, struct refinfo *ref); 306extern void cgit_add_ref(struct reflist *list, struct refinfo *ref);
307extern void cgit_free_reflist_inner(struct reflist *list);
307extern int cgit_refs_cb(const char *refname, const unsigned char *sha1, 308extern int cgit_refs_cb(const char *refname, const unsigned char *sha1,
308 int flags, void *cb_data); 309 int flags, void *cb_data);
309 310
diff --git a/configfile.c b/configfile.c
index 3fa217f..d98989c 100644
--- a/configfile.c
+++ b/configfile.c
@@ -10,7 +10,7 @@
10#include <stdio.h> 10#include <stdio.h>
11#include "configfile.h" 11#include "configfile.h"
12 12
13int next_char(FILE *f) 13static int next_char(FILE *f)
14{ 14{
15 int c = fgetc(f); 15 int c = fgetc(f);
16 if (c == '\r') { 16 if (c == '\r') {
@@ -23,7 +23,7 @@ int next_char(FILE *f)
23 return c; 23 return c;
24} 24}
25 25
26void skip_line(FILE *f) 26static void skip_line(FILE *f)
27{ 27{
28 int c; 28 int c;
29 29
@@ -31,7 +31,7 @@ void skip_line(FILE *f)
31 ; 31 ;
32} 32}
33 33
34int read_config_line(FILE *f, char *line, const char **value, int bufsize) 34static int read_config_line(FILE *f, char *line, const char **value, int bufsize)
35{ 35{
36 int i = 0, isname = 0; 36 int i = 0, isname = 0;
37 37
diff --git a/html.c b/html.c
index 90cc1c0..b5c6903 100644
--- a/html.c
+++ b/html.c
@@ -39,7 +39,7 @@ static const char* url_escape_table[256] = {
39 "%fe", "%ff" 39 "%fe", "%ff"
40}; 40};
41 41
42int htmlfd = STDOUT_FILENO; 42static int htmlfd = STDOUT_FILENO;
43 43
44char *fmt(const char *format, ...) 44char *fmt(const char *format, ...)
45{ 45{
@@ -266,7 +266,7 @@ int html_include(const char *filename)
266 return 0; 266 return 0;
267} 267}
268 268
269int hextoint(char c) 269static int hextoint(char c)
270{ 270{
271 if (c >= 'a' && c <= 'f') 271 if (c >= 'a' && c <= 'f')
272 return 10 + c - 'a'; 272 return 10 + c - 'a';
@@ -278,7 +278,7 @@ int hextoint(char c)
278 return -1; 278 return -1;
279} 279}
280 280
281char *convert_query_hexchar(char *txt) 281static char *convert_query_hexchar(char *txt)
282{ 282{
283 int d1, d2, n; 283 int d1, d2, n;
284 n = strlen(txt); 284 n = strlen(txt);
diff --git a/parsing.c b/parsing.c
index 9b7efb3..658621d 100644
--- a/parsing.c
+++ b/parsing.c
@@ -52,7 +52,7 @@ void cgit_parse_url(const char *url)
52 } 52 }
53} 53}
54 54
55char *substr(const char *head, const char *tail) 55static char *substr(const char *head, const char *tail)
56{ 56{
57 char *buf; 57 char *buf;
58 58
@@ -64,7 +64,7 @@ char *substr(const char *head, const char *tail)
64 return buf; 64 return buf;
65} 65}
66 66
67char *parse_user(char *t, char **name, char **email, unsigned long *date) 67static char *parse_user(char *t, char **name, char **email, unsigned long *date)
68{ 68{
69 char *p = t; 69 char *p = t;
70 int mode = 1; 70 int mode = 1;
@@ -101,7 +101,7 @@ char *parse_user(char *t, char **name, char **email, unsigned long *date)
101#ifdef NO_ICONV 101#ifdef NO_ICONV
102#define reencode(a, b, c) 102#define reencode(a, b, c)
103#else 103#else
104const char *reencode(char **txt, const char *src_enc, const char *dst_enc) 104static const char *reencode(char **txt, const char *src_enc, const char *dst_enc)
105{ 105{
106 char *tmp; 106 char *tmp;
107 107
diff --git a/shared.c b/shared.c
index e732064..cc06930 100644
--- a/shared.c
+++ b/shared.c
@@ -158,7 +158,7 @@ void cgit_add_ref(struct reflist *list, struct refinfo *ref)
158 list->refs[list->count++] = ref; 158 list->refs[list->count++] = ref;
159} 159}
160 160
161struct refinfo *cgit_mk_refinfo(const char *refname, const unsigned char *sha1) 161static struct refinfo *cgit_mk_refinfo(const char *refname, const unsigned char *sha1)
162{ 162{
163 struct refinfo *ref; 163 struct refinfo *ref;
164 164
@@ -176,6 +176,42 @@ struct refinfo *cgit_mk_refinfo(const char *refname, const unsigned char *sha1)
176 return ref; 176 return ref;
177} 177}
178 178
179static void cgit_free_taginfo(struct taginfo *tag)
180{
181 if (tag->tagger)
182 free(tag->tagger);
183 if (tag->tagger_email)
184 free(tag->tagger_email);
185 if (tag->msg)
186 free(tag->msg);
187 free(tag);
188}
189
190static void cgit_free_refinfo(struct refinfo *ref)
191{
192 if (ref->refname)
193 free((char *)ref->refname);
194 switch (ref->object->type) {
195 case OBJ_TAG:
196 cgit_free_taginfo(ref->tag);
197 break;
198 case OBJ_COMMIT:
199 cgit_free_commitinfo(ref->commit);
200 break;
201 }
202 free(ref);
203}
204
205void cgit_free_reflist_inner(struct reflist *list)
206{
207 int i;
208
209 for (i = 0; i < list->count; i++) {
210 cgit_free_refinfo(list->refs[i]);
211 }
212 free(list->refs);
213}
214
179int cgit_refs_cb(const char *refname, const unsigned char *sha1, int flags, 215int cgit_refs_cb(const char *refname, const unsigned char *sha1, int flags,
180 void *cb_data) 216 void *cb_data)
181{ 217{
@@ -187,8 +223,8 @@ int cgit_refs_cb(const char *refname, const unsigned char *sha1, int flags,
187 return 0; 223 return 0;
188} 224}
189 225
190void cgit_diff_tree_cb(struct diff_queue_struct *q, 226static void cgit_diff_tree_cb(struct diff_queue_struct *q,
191 struct diff_options *options, void *data) 227 struct diff_options *options, void *data)
192{ 228{
193 int i; 229 int i;
194 230
@@ -224,7 +260,7 @@ static int load_mmfile(mmfile_t *file, const unsigned char *sha1)
224char *diffbuf = NULL; 260char *diffbuf = NULL;
225int buflen = 0; 261int buflen = 0;
226 262
227int filediff_cb(void *priv, mmbuffer_t *mb, int nbuf) 263static int filediff_cb(void *priv, mmbuffer_t *mb, int nbuf)
228{ 264{
229 int i; 265 int i;
230 266
@@ -461,14 +497,14 @@ int readfile(const char *path, char **buf, size_t *size)
461 return (*size == st.st_size ? 0 : e); 497 return (*size == st.st_size ? 0 : e);
462} 498}
463 499
464int is_token_char(char c) 500static int is_token_char(char c)
465{ 501{
466 return isalnum(c) || c == '_'; 502 return isalnum(c) || c == '_';
467} 503}
468 504
469/* Replace name with getenv(name), return pointer to zero-terminating char 505/* Replace name with getenv(name), return pointer to zero-terminating char
470 */ 506 */
471char *expand_macro(char *name, int maxlength) 507static char *expand_macro(char *name, int maxlength)
472{ 508{
473 char *value; 509 char *value;
474 int len; 510 int len;
diff --git a/ui-atom.c b/ui-atom.c
index b218456..5b5525d 100644
--- a/ui-atom.c
+++ b/ui-atom.c
@@ -10,7 +10,7 @@
10#include "html.h" 10#include "html.h"
11#include "ui-shared.h" 11#include "ui-shared.h"
12 12
13void add_entry(struct commit *commit, char *host) 13static void add_entry(struct commit *commit, char *host)
14{ 14{
15 char delim = '&'; 15 char delim = '&';
16 char *hex; 16 char *hex;
diff --git a/ui-commit.c b/ui-commit.c
index 74f37c8..0783285 100644
--- a/ui-commit.c
+++ b/ui-commit.c
@@ -74,6 +74,7 @@ void cgit_print_commit(char *hex, const char *prefix)
74 html(" /"); 74 html(" /");
75 cgit_tree_link(prefix, NULL, NULL, ctx.qry.head, tmp, prefix); 75 cgit_tree_link(prefix, NULL, NULL, ctx.qry.head, tmp, prefix);
76 } 76 }
77 free(tmp);
77 html("</td></tr>\n"); 78 html("</td></tr>\n");
78 for (p = commit->parents; p; p = p->next) { 79 for (p = commit->parents; p; p = p->next) {
79 parent = lookup_commit_reference(p->item->object.sha1); 80 parent = lookup_commit_reference(p->item->object.sha1);
diff --git a/ui-diff.c b/ui-diff.c
index 49e5b46..7de7802 100644
--- a/ui-diff.c
+++ b/ui-diff.c
@@ -166,8 +166,9 @@ static void inspect_filepair(struct diff_filepair *pair)
166 total_rems += lines_removed; 166 total_rems += lines_removed;
167} 167}
168 168
169void cgit_print_diffstat(const unsigned char *old_sha1, 169static void cgit_print_diffstat(const unsigned char *old_sha1,
170 const unsigned char *new_sha1, const char *prefix) 170 const unsigned char *new_sha1,
171 const char *prefix)
171{ 172{
172 int i; 173 int i;
173 174
diff --git a/ui-log.c b/ui-log.c
index 2f41602..857c05c 100644
--- a/ui-log.c
+++ b/ui-log.c
@@ -28,7 +28,7 @@ static const char *column_colors_html[] = {
28 28
29#define COLUMN_COLORS_HTML_MAX (ARRAY_SIZE(column_colors_html) - 1) 29#define COLUMN_COLORS_HTML_MAX (ARRAY_SIZE(column_colors_html) - 1)
30 30
31void count_lines(char *line, int size) 31static void count_lines(char *line, int size)
32{ 32{
33 if (size <= 0) 33 if (size <= 0)
34 return; 34 return;
@@ -40,7 +40,7 @@ void count_lines(char *line, int size)
40 rem_lines++; 40 rem_lines++;
41} 41}
42 42
43void inspect_files(struct diff_filepair *pair) 43static void inspect_files(struct diff_filepair *pair)
44{ 44{
45 unsigned long old_size = 0; 45 unsigned long old_size = 0;
46 unsigned long new_size = 0; 46 unsigned long new_size = 0;
@@ -95,7 +95,7 @@ next:
95 } 95 }
96} 96}
97 97
98void print_commit(struct commit *commit, struct rev_info *revs) 98static void print_commit(struct commit *commit, struct rev_info *revs)
99{ 99{
100 struct commitinfo *info; 100 struct commitinfo *info;
101 int cols = revs->graph ? 3 : 2; 101 int cols = revs->graph ? 3 : 2;
diff --git a/ui-refs.c b/ui-refs.c
index ce06b08..e89f836 100644
--- a/ui-refs.c
+++ b/ui-refs.c
@@ -103,6 +103,7 @@ static void print_tag_downloads(const struct cgit_repo *repo, const char *ref)
103 const struct cgit_snapshot_format* f; 103 const struct cgit_snapshot_format* f;
104 char *filename; 104 char *filename;
105 const char *basename; 105 const char *basename;
106 int free_ref = 0;
106 107
107 if (!ref || strlen(ref) < 2) 108 if (!ref || strlen(ref) < 2)
108 return; 109 return;
@@ -111,8 +112,10 @@ static void print_tag_downloads(const struct cgit_repo *repo, const char *ref)
111 if (prefixcmp(ref, basename) != 0) { 112 if (prefixcmp(ref, basename) != 0) {
112 if ((ref[0] == 'v' || ref[0] == 'V') && isdigit(ref[1])) 113 if ((ref[0] == 'v' || ref[0] == 'V') && isdigit(ref[1]))
113 ref++; 114 ref++;
114 if (isdigit(ref[0])) 115 if (isdigit(ref[0])) {
115 ref = xstrdup(fmt("%s-%s", basename, ref)); 116 ref = xstrdup(fmt("%s-%s", basename, ref));
117 free_ref = 1;
118 }
116 } 119 }
117 120
118 for (f = cgit_snapshot_formats; f->suffix; f++) { 121 for (f = cgit_snapshot_formats; f->suffix; f++) {
@@ -122,6 +125,9 @@ static void print_tag_downloads(const struct cgit_repo *repo, const char *ref)
122 cgit_snapshot_link(filename, NULL, NULL, NULL, NULL, filename); 125 cgit_snapshot_link(filename, NULL, NULL, NULL, NULL, filename);
123 html("&nbsp;&nbsp;"); 126 html("&nbsp;&nbsp;");
124 } 127 }
128
129 if (free_ref)
130 free((char *)ref);
125} 131}
126static int print_tag(struct refinfo *ref) 132static int print_tag(struct refinfo *ref)
127{ 133{
@@ -205,6 +211,8 @@ void cgit_print_branches(int maxcount)
205 211
206 if (maxcount < list.count) 212 if (maxcount < list.count)
207 print_refs_link("heads"); 213 print_refs_link("heads");
214
215 cgit_free_reflist_inner(&list);
208} 216}
209 217
210void cgit_print_tags(int maxcount) 218void cgit_print_tags(int maxcount)
@@ -229,6 +237,8 @@ void cgit_print_tags(int maxcount)
229 237
230 if (maxcount < list.count) 238 if (maxcount < list.count)
231 print_refs_link("tags"); 239 print_refs_link("tags");
240
241 cgit_free_reflist_inner(&list);
232} 242}
233 243
234void cgit_print_refs() 244void cgit_print_refs()
diff --git a/ui-repolist.c b/ui-repolist.c
index 1ae22aa..66c88c4 100644
--- a/ui-repolist.c
+++ b/ui-repolist.c
@@ -12,7 +12,7 @@
12#include "ui-shared.h" 12#include "ui-shared.h"
13#include <strings.h> 13#include <strings.h>
14 14
15time_t read_agefile(char *path) 15static time_t read_agefile(char *path)
16{ 16{
17 time_t result; 17 time_t result;
18 size_t size; 18 size_t size;
@@ -76,7 +76,7 @@ static void print_modtime(struct cgit_repo *repo)
76 cgit_print_age(t, -1, NULL); 76 cgit_print_age(t, -1, NULL);
77} 77}
78 78
79int is_match(struct cgit_repo *repo) 79static int is_match(struct cgit_repo *repo)
80{ 80{
81 if (!ctx.qry.search) 81 if (!ctx.qry.search)
82 return 1; 82 return 1;
@@ -91,7 +91,7 @@ int is_match(struct cgit_repo *repo)
91 return 0; 91 return 0;
92} 92}
93 93
94int is_in_url(struct cgit_repo *repo) 94static int is_in_url(struct cgit_repo *repo)
95{ 95{
96 if (!ctx.qry.url) 96 if (!ctx.qry.url)
97 return 1; 97 return 1;
@@ -100,7 +100,7 @@ int is_in_url(struct cgit_repo *repo)
100 return 0; 100 return 0;
101} 101}
102 102
103void print_sort_header(const char *title, const char *sort) 103static void print_sort_header(const char *title, const char *sort)
104{ 104{
105 htmlf("<th class='left'><a href='%s?s=%s", cgit_rooturl(), sort); 105 htmlf("<th class='left'><a href='%s?s=%s", cgit_rooturl(), sort);
106 if (ctx.qry.search) { 106 if (ctx.qry.search) {
@@ -110,7 +110,7 @@ void print_sort_header(const char *title, const char *sort)
110 htmlf("'>%s</a></th>", title); 110 htmlf("'>%s</a></th>", title);
111} 111}
112 112
113void print_header() 113static void print_header()
114{ 114{
115 html("<tr class='nohover'>"); 115 html("<tr class='nohover'>");
116 print_sort_header("Name", "name"); 116 print_sort_header("Name", "name");
@@ -124,7 +124,7 @@ void print_header()
124} 124}
125 125
126 126
127void print_pager(int items, int pagelen, char *search, char *sort) 127static void print_pager(int items, int pagelen, char *search, char *sort)
128{ 128{
129 int i, ofs; 129 int i, ofs;
130 char *class = NULL; 130 char *class = NULL;
@@ -223,7 +223,7 @@ struct sortcolumn sortcolumn[] = {
223 {NULL, NULL} 223 {NULL, NULL}
224}; 224};
225 225
226int sort_repolist(char *field) 226static int sort_repolist(char *field)
227{ 227{
228 struct sortcolumn *column; 228 struct sortcolumn *column;
229 229
diff --git a/ui-shared.c b/ui-shared.c
index 80f4aee..968933f 100644
--- a/ui-shared.c
+++ b/ui-shared.c
@@ -121,18 +121,6 @@ const char *cgit_repobasename(const char *reponame)
121 return rvbuf; 121 return rvbuf;
122} 122}
123 123
124char *cgit_currurl()