[PATCH 19/19] ui-shared.c: use struct strbuf instead of fmt()
John Keeping
john at keeping.me.uk
Sun Apr 7 11:30:10 CEST 2013
Signed-off-by: John Keeping <john at keeping.me.uk>
---
ui-shared.c | 41 ++++++++++++++++++++++++-----------------
1 file changed, 24 insertions(+), 17 deletions(-)
diff --git a/ui-shared.c b/ui-shared.c
index b93b77a..b155684 100644
--- a/ui-shared.c
+++ b/ui-shared.c
@@ -56,13 +56,15 @@ const char *cgit_httpscheme()
const char *cgit_hosturl()
{
+ struct strbuf sb = STRBUF_INIT;
if (ctx.env.http_host)
return ctx.env.http_host;
if (!ctx.env.server_name)
return NULL;
if (!ctx.env.server_port || atoi(ctx.env.server_port) == 80)
return ctx.env.server_name;
- return xstrdup(fmt("%s:%s", ctx.env.server_name, ctx.env.server_port));
+ strbuf_addf(&sb, "%s:%s", ctx.env.server_name, ctx.env.server_port);
+ return strbuf_detach(&sb, NULL);
}
const char *cgit_rooturl()
@@ -75,31 +77,32 @@ const char *cgit_rooturl()
char *cgit_repourl(const char *reponame)
{
- if (ctx.cfg.virtual_root) {
- return fmt("%s%s/", ctx.cfg.virtual_root, reponame);
- } else {
- return fmt("?r=%s", reponame);
- }
+ struct strbuf sb = STRBUF_INIT;
+ if (ctx.cfg.virtual_root)
+ strbuf_addf(&sb, "%s%s/", ctx.cfg.virtual_root, reponame);
+ else
+ strbuf_addf(&sb, "?r=%s", reponame);
+ return strbuf_detach(&sb, NULL);
}
char *cgit_fileurl(const char *reponame, const char *pagename,
const char *filename, const char *query)
{
- char *tmp;
+ struct strbuf sb = STRBUF_INIT;
char *delim;
if (ctx.cfg.virtual_root) {
- tmp = fmt("%s%s/%s/%s", ctx.cfg.virtual_root, reponame,
- pagename, (filename ? filename:""));
+ strbuf_addf(&sb, "%s%s/%s/%s", ctx.cfg.virtual_root, reponame,
+ pagename, (filename ? filename:""));
delim = "?";
} else {
- tmp = fmt("?url=%s/%s/%s", reponame, pagename,
- (filename ? filename : ""));
+ strbuf_addf(&sb, "?url=%s/%s/%s", reponame, pagename,
+ (filename ? filename : ""));
delim = "&";
}
if (query)
- tmp = fmt("%s%s%s", tmp, delim, query);
- return tmp;
+ strbuf_addf(&sb, "%s%s", delim, query);
+ return strbuf_detach(&sb, NULL);
}
char *cgit_pageurl(const char *reponame, const char *pagename,
@@ -548,21 +551,21 @@ void cgit_submodule_link(const char *class, char *path, const char *rev)
htmlf("class='%s' ", class);
html("href='");
if (item) {
- html_attr(fmt(item->util, rev));
+ html_attrf(item->util, rev);
} else if (ctx.repo->module_link) {
dir = strrchr(path, '/');
if (dir)
dir++;
else
dir = path;
- html_attr(fmt(ctx.repo->module_link, dir, rev));
+ html_attrf(ctx.repo->module_link, dir, rev);
} else {
html("#");
}
html("'>");
html_txt(path);
html("</a>");
- html_txt(fmt(" @ %.7s", rev));
+ html_txtf(" @ %.7s", rev);
if (item && tail)
path[len - 1] = tail;
}
@@ -678,12 +681,16 @@ void cgit_print_docstart(struct cgit_context *ctx)
html("'/>\n");
}
if (host && ctx->repo && ctx->qry.head) {
+ struct strbuf sb = STRBUF_INIT;
+ strbuf_addf(&sb, "h=%s", ctx->qry.head);
+
html("<link rel='alternate' title='Atom feed' href='");
html(cgit_httpscheme());
html_attr(cgit_hosturl());
html_attr(cgit_fileurl(ctx->repo->url, "atom", ctx->qry.vpath,
- fmt("h=%s", ctx->qry.head)));
+ sb.buf));
html("' type='application/atom+xml'/>\n");
+ strbuf_release(&sb);
}
if (ctx->cfg.head_include)
html_include(ctx->cfg.head_include);
--
1.8.2.692.g17a9715
More information about the CGit
mailing list