aboutsummaryrefslogtreecommitdiffstats
path: root/ui-summary.c
diff options
context:
space:
mode:
authorJohn Keeping2013-04-06 10:28:57 +0100
committerJason A. Donenfeld2013-04-08 16:12:52 +0200
commitfb3655df3bf85bd405c5921bbd4b3a54c705c839 (patch)
tree419a962a0b82f5ba3023791549044ff462229250 /ui-summary.c
parent42d5476f258e7909682f1b611da00d64507d45c6 (diff)
downloadcgit-fb3655df3bf85bd405c5921bbd4b3a54c705c839.tar.gz
cgit-fb3655df3bf85bd405c5921bbd4b3a54c705c839.tar.bz2
cgit-fb3655df3bf85bd405c5921bbd4b3a54c705c839.zip
use struct strbuf instead of static buffers
Use "struct strbuf" from Git to remove the limit on file path length. Notes on scan-tree: This is slightly involved since I decided to pass the strbuf into add_repo() and modify if whenever a new file name is required, which should avoid any extra allocations within that function. The pattern there is to append the filename, use it and then reset the buffer to its original length (retaining a trailing '/'). Notes on ui-snapshot: Since write_archive modifies the argv array passed to it we copy the argv_array values into a new array of char* and then free the original argv_array structure and the new array without worrying about what the values now look like. Signed-off-by: John Keeping <john@keeping.me.uk>
Diffstat (limited to 'ui-summary.c')
-rw-r--r--ui-summary.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/ui-summary.c b/ui-summary.c
index bd123ef..f965b32 100644
--- a/ui-summary.c
+++ b/ui-summary.c
@@ -17,6 +17,7 @@
17static void print_url(char *base, char *suffix) 17static void print_url(char *base, char *suffix)
18{ 18{
19 int columns = 3; 19 int columns = 3;
20 struct strbuf basebuf = STRBUF_INIT;
20 21
21 if (ctx.repo->enable_log_filecount) 22 if (ctx.repo->enable_log_filecount)
22 columns++; 23 columns++;
@@ -25,13 +26,16 @@ static void print_url(char *base, char *suffix)
25 26
26 if (!base || !*base) 27 if (!base || !*base)
27 return; 28 return;
28 if (suffix && *suffix) 29 if (suffix && *suffix) {
29 base = fmt("%s/%s", base, suffix); 30 strbuf_addf(&basebuf, "%s/%s", base, suffix);
31 base = basebuf.buf;
32 }
30 htmlf("<tr><td colspan='%d'><a href='", columns); 33 htmlf("<tr><td colspan='%d'><a href='", columns);
31 html_url_path(base); 34 html_url_path(base);
32 html("'>"); 35 html("'>");
33 html_txt(base); 36 html_txt(base);
34 html("</a></td></tr>\n"); 37 html("</a></td></tr>\n");
38 strbuf_release(&basebuf);
35} 39}
36 40
37static void print_urls(char *txt, char *suffix) 41static void print_urls(char *txt, char *suffix)
@@ -112,8 +116,8 @@ void cgit_print_repo_readme(char *path)
112 116
113 /* Prepend repo path to relative readme path unless tracked. */ 117 /* Prepend repo path to relative readme path unless tracked. */
114 if (!ref && *ctx.repo->readme != '/') 118 if (!ref && *ctx.repo->readme != '/')
115 ctx.repo->readme = xstrdup(fmt("%s/%s", ctx.repo->path, 119 ctx.repo->readme = fmtalloc("%s/%s", ctx.repo->path,
116 ctx.repo->readme)); 120 ctx.repo->readme);
117 121
118 /* If a subpath is specified for the about page, make it relative 122 /* If a subpath is specified for the about page, make it relative
119 * to the directory containing the configured readme. 123 * to the directory containing the configured readme.