diff options
author | John Keeping | 2013-04-06 10:28:57 +0100 |
---|---|---|
committer | Jason A. Donenfeld | 2013-04-08 16:12:52 +0200 |
commit | fb3655df3bf85bd405c5921bbd4b3a54c705c839 (patch) | |
tree | 419a962a0b82f5ba3023791549044ff462229250 /ui-plain.c | |
parent | 42d5476f258e7909682f1b611da00d64507d45c6 (diff) | |
download | cgit-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-plain.c')
-rw-r--r-- | ui-plain.c | 6 |
1 files changed, 4 insertions, 2 deletions
@@ -109,9 +109,9 @@ static int print_object(const unsigned char *sha1, const char *path) | |||
109 | static char *buildpath(const char *base, int baselen, const char *path) | 109 | static char *buildpath(const char *base, int baselen, const char *path) |
110 | { | 110 | { |
111 | if (path[0]) | 111 | if (path[0]) |
112 | return fmt("%.*s%s/", baselen, base, path); | 112 | return fmtalloc("%.*s%s/", baselen, base, path); |
113 | else | 113 | else |
114 | return fmt("%.*s/", baselen, base); | 114 | return fmtalloc("%.*s/", baselen, base); |
115 | } | 115 | } |
116 | 116 | ||
117 | static void print_dir(const unsigned char *sha1, const char *base, | 117 | static void print_dir(const unsigned char *sha1, const char *base, |
@@ -142,6 +142,7 @@ static void print_dir(const unsigned char *sha1, const char *base, | |||
142 | fullpath); | 142 | fullpath); |
143 | html("</li>\n"); | 143 | html("</li>\n"); |
144 | } | 144 | } |
145 | free(fullpath); | ||
145 | } | 146 | } |
146 | 147 | ||
147 | static void print_dir_entry(const unsigned char *sha1, const char *base, | 148 | static void print_dir_entry(const unsigned char *sha1, const char *base, |
@@ -159,6 +160,7 @@ static void print_dir_entry(const unsigned char *sha1, const char *base, | |||
159 | cgit_plain_link(path, NULL, NULL, ctx.qry.head, ctx.qry.sha1, | 160 | cgit_plain_link(path, NULL, NULL, ctx.qry.head, ctx.qry.sha1, |
160 | fullpath); | 161 | fullpath); |
161 | html("</li>\n"); | 162 | html("</li>\n"); |
163 | free(fullpath); | ||
162 | } | 164 | } |
163 | 165 | ||
164 | static void print_dir_tail(void) | 166 | static void print_dir_tail(void) |