]> granicus.if.org Git - cgit/commitdiff
ui-shared.c: Refactor add_clone_urls()
authorLukas Fleischer <cgit@cryptocrack.de>
Thu, 5 Feb 2015 09:11:42 +0000 (10:11 +0100)
committerJason A. Donenfeld <Jason@zx2c4.com>
Thu, 5 Feb 2015 09:44:11 +0000 (10:44 +0100)
Make use of strbuf_split_str() and strbuf lists to split clone URLs.

Signed-off-by: Lukas Fleischer <cgit@cryptocrack.de>
ui-shared.c

index d8cc4d7a3d43beaee1a423a22ea9a33d8a5487e5..1a84afc6bf39564aa73ef7f58826fe9f67f985f1 100644 (file)
@@ -751,31 +751,19 @@ void cgit_print_docend()
 
 static void add_clone_urls(void (*fn)(const char *), char *txt, char *suffix)
 {
-       struct strbuf buf = STRBUF_INIT;
-       char *h = txt, *t, c;
+       struct strbuf **url_list = strbuf_split_str(txt, ' ', 0);
+       int i;
 
-       while (h && *h) {
-               while (h && *h == ' ')
-                       h++;
-               if (!*h)
-                       break;
-               t = h;
-               while (t && *t && *t != ' ')
-                       t++;
-               c = *t;
-               *t = 0;
-
-               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 *))