about summary refs log tree commit diff stats
path: root/ui-plain.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-plain.c
parentRemove redundant calls to fmt("%s", ...) (diff)
downloadcgit-fb3655df3bf85bd405c5921bbd4b3a54c705c839.tar.gz
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.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/ui-plain.c b/ui-plain.c index 6b0d84b..9c86542 100644 --- a/ui-plain.c +++ b/ui-plain.c
@@ -109,9 +109,9 @@ static int print_object(const unsigned char *sha1, const char *path)
109static char *buildpath(const char *base, int baselen, const char *path) 109static 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
117static void print_dir(const unsigned char *sha1, const char *base, 117static 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
147static void print_dir_entry(const unsigned char *sha1, const char *base, 148static 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
164static void print_dir_tail(void) 166static void print_dir_tail(void)