Thread (2 messages) flat view 2 messages, 2 authors, 2016-06-15

Re: [PATCH] http: use strbuf API in quote_ref_url

From: Johannes Schindelin <hidden>
Date: 2016-06-15 22:46:21

Hi,

On Sat, 7 Mar 2009, Tay Ray Chuan wrote:
In addition, ''quote_ref_url'' inserts a slash between the base URL and
remote ref path only if needed. Previously, this insertion wasn't
contingent on the lack of a separating slash.

Signed-off-by: Tay Ray Chuan <redacted>
Acked-by: Johannes Schindelin <redacted>
---
I would prefer to give my ACK explicitely... :-)
quoted hunk ↗ jump to hunk
 http.c |   29 ++++++++++-------------------
 1 files changed, 10 insertions(+), 19 deletions(-)
diff --git a/http.c b/http.c
index cdedeb6..9de4130 100644
--- a/http.c
+++ b/http.c
@@ -577,31 +577,22 @@ static inline int hex(int v)

 static char *quote_ref_url(const char *base, const char *ref)
 {
+	struct strbuf buf = STRBUF_INIT;
 	const char *cp;
-	char *dp, *qref;
-	int len, baselen, ch;
+	int ch;
+
+	strbuf_addstr(&buf, base);
+	if (strcmp(base+strlen(base)-1, "/") && strcmp(ref, "/"))
+		strbuf_addstr(&buf, "/");
I would not have scratched my head that much if it read like this:

	if (buf.len && buf.buf[buf.len - 1] != '/' && *ref != '/')
		strbuf_addch(&buf, '/');
 	for (cp = ref; (ch = *cp) != 0; cp++) {
-		if (needs_quote(ch)) {
-			*dp++ = '%';
-			*dp++ = hex((ch >> 4) & 0xF);
-			*dp++ = hex(ch & 0xF);
-		}
+		if (needs_quote(ch))
+			strbuf_addf(&buf, "%%%02x", ch);
 		else
-			*dp++ = ch;
+			strbuf_addch(&buf, *cp);
 	}
Seems as if you could remove even the curly brackets here.

Other than that, it indeed looks like an ACK from me...

Ciao,
Dscho
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help