@matheusbsbs / matheus-bagliano / commits / 5ace994f33
Fork 0

http: create function end_url_with_slash

The logic to append a slash to the url if necessary in quote_ref_url (added in 113106e "http.c: use strbuf API in quote_ref_url") has been moved to a new function, end_url_with_slash. The method takes a strbuf, the URL, and the path to be appended to the URL. It first adds the URL to the strbuf. It then appends a slash if the URL does not end with a slash. The check on ref in quote_ref_url for a slash at the beginning has been removed as a result of using end_url_with_slash. This check is not needed, because slashes will be quoted anyway. Signed-off-by: Tay Ray Chuan <rctay89@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Tay Ray Chuan committed Jun 6, 2009 at 16:43 UTC 5ace994f3384726fa993de526fc059d1343a6463
1 file changed +9 -3
http.c
+9 -3
@@ -620,6 +620,7 @@ void finish_all_active_slots(void)
620 }
621 }
622
623 +/* Helpers for modifying and creating URLs */
624 static inline int needs_quote(int ch)
625 {
626 if (((ch >= 'A') && (ch <= 'Z'))
@@ -640,15 +641,20 @@ static inline int hex(int v)
641 return 'A' + v - 10;
642 }
643
644 +static void end_url_with_slash(struct strbuf *buf, const char *url)
645 +{
646 + strbuf_addstr(buf, url);
647 + if (buf->len && buf->buf[buf->len - 1] != '/')
648 + strbuf_addstr(buf, "/");
649 +}
650 +
651 static char *quote_ref_url(const char *base, const char *ref)
652 {
653 struct strbuf buf = STRBUF_INIT;
654 const char *cp;
655 int ch;
656
649 - strbuf_addstr(&buf, base);
650 - if (buf.len && buf.buf[buf.len - 1] != '/' && *ref != '/')
651 - strbuf_addstr(&buf, "/");
657 + end_url_with_slash(&buf, base);
658
659 for (cp = ref; (ch = *cp) != 0; cp++)
660 if (needs_quote(ch))