aboutsummaryrefslogtreecommitdiff
path: root/http.c
diff options
context:
space:
mode:
authorTay Ray Chuan <rctay89@gmail.com>2009-06-06 16:43:43 +0800
committerJunio C Hamano <gitster@pobox.com>2009-06-06 10:56:27 -0700
commit5ace994f3384726fa993de526fc059d1343a6463 (patch)
tree53e991dbb695ccd8fcb9827cfe568395ffc18f30 /http.c
parente917674597cc0b345ad2d6e29fd1a03e1039615a (diff)
downloadgit-5ace994f3384726fa993de526fc059d1343a6463.tar.gz
git-5ace994f3384726fa993de526fc059d1343a6463.tar.xz
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>
Diffstat (limited to 'http.c')
-rw-r--r--http.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/http.c b/http.c
index 3ca60bb8f..75fce9e94 100644
--- a/http.c
+++ b/http.c
@@ -620,6 +620,7 @@ void finish_all_active_slots(void)
}
}
+/* Helpers for modifying and creating URLs */
static inline int needs_quote(int ch)
{
if (((ch >= 'A') && (ch <= 'Z'))
@@ -640,15 +641,20 @@ static inline int hex(int v)
return 'A' + v - 10;
}
+static void end_url_with_slash(struct strbuf *buf, const char *url)
+{
+ strbuf_addstr(buf, url);
+ if (buf->len && buf->buf[buf->len - 1] != '/')
+ strbuf_addstr(buf, "/");
+}
+
static char *quote_ref_url(const char *base, const char *ref)
{
struct strbuf buf = STRBUF_INIT;
const char *cp;
int ch;
- strbuf_addstr(&buf, base);
- if (buf.len && buf.buf[buf.len - 1] != '/' && *ref != '/')
- strbuf_addstr(&buf, "/");
+ end_url_with_slash(&buf, base);
for (cp = ref; (ch = *cp) != 0; cp++)
if (needs_quote(ch))