all repos — cgit @ 1a9e56607eae2df2f4522b41294d94cb09fc4e5c

a hyperfast web frontend for git written in c

ui-shared.c: Refactor add_clone_urls()

Make use of strbuf_split_str() and strbuf lists to split clone URLs.

Signed-off-by: Lukas Fleischer <cgit@cryptocrack.de>
Lukas Fleischer cgit@cryptocrack.de
Thu, 05 Feb 2015 10:11:42 +0100
commit

1a9e56607eae2df2f4522b41294d94cb09fc4e5c

parent

c58cec9dff273b44c428cfaee24e5e3743c0034e

1 files changed, 10 insertions(+), 22 deletions(-)

jump to
M ui-shared.cui-shared.c

@@ -751,31 +751,19 @@ }

static void add_clone_urls(void (*fn)(const char *), char *txt, char *suffix) { - struct strbuf buf = STRBUF_INIT; - char *h = txt, *t, c; - - while (h && *h) { - while (h && *h == ' ') - h++; - if (!*h) - break; - t = h; - while (t && *t && *t != ' ') - t++; - c = *t; - *t = 0; + struct strbuf **url_list = strbuf_split_str(txt, ' ', 0); + int i; - if (suffix && *suffix) { - strbuf_reset(&buf); - strbuf_addf(&buf, "%s/%s", h, suffix); - h = buf.buf; - } - fn(h); - *t = c; - h = t; + for (i = 0; url_list[i]; i++) { + strbuf_rtrim(url_list[i]); + if (url_list[i]->len == 0) + continue; + if (suffix && *suffix) + strbuf_addf(url_list[i], "/%s", suffix); + fn(url_list[i]->buf); } - strbuf_release(&buf); + strbuf_list_free(url_list); } void cgit_add_clone_urls(void (*fn)(const char *))