[PATCH 14/19] ui-summary.c: use struct strbuf instead of fixed-size buffers

John Keeping john at keeping.me.uk
Sun Apr 7 11:30:05 CEST 2013


Signed-off-by: John Keeping <john at keeping.me.uk>
---
 ui-summary.c | 16 +++++++++++-----
 1 file changed, 11 insertions(+), 5 deletions(-)

diff --git a/ui-summary.c b/ui-summary.c
index bd123ef..91f4061 100644
--- a/ui-summary.c
+++ b/ui-summary.c
@@ -17,6 +17,7 @@
 static void print_url(char *base, char *suffix)
 {
 	int columns = 3;
+	struct strbuf basebuf = STRBUF_INIT;
 
 	if (ctx.repo->enable_log_filecount)
 		columns++;
@@ -25,13 +26,16 @@ static void print_url(char *base, char *suffix)
 
 	if (!base || !*base)
 		return;
-	if (suffix && *suffix)
-		base = fmt("%s/%s", base, suffix);
+	if (suffix && *suffix) {
+		strbuf_addf(&basebuf, "%s/%s", base, suffix);
+		base = basebuf.buf;
+	}
 	htmlf("<tr><td colspan='%d'><a href='", columns);
 	html_url_path(base);
 	html("'>");
 	html_txt(base);
 	html("</a></td></tr>\n");
+	strbuf_release(&basebuf);
 }
 
 static void print_urls(char *txt, char *suffix)
@@ -111,9 +115,11 @@ void cgit_print_repo_readme(char *path)
 	}
 
 	/* Prepend repo path to relative readme path unless tracked. */
-	if (!ref && *ctx.repo->readme != '/')
-		ctx.repo->readme = xstrdup(fmt("%s/%s", ctx.repo->path,
-					       ctx.repo->readme));
+	if (!ref && *ctx.repo->readme != '/') {
+		struct strbuf buf = STRBUF_INIT;
+		strbuf_addf(&buf, "%s/%s", ctx.repo->path, ctx.repo->readme);
+		ctx.repo->readme = strbuf_detach(&buf, NULL);
+	}
 
 	/* If a subpath is specified for the about page, make it relative
 	 * to the directory containing the configured readme.
-- 
1.8.2.692.g17a9715





More information about the CGit mailing list