]> git.ipfire.org Git - thirdparty/git.git/blobdiff - strbuf.c
unpack-trees: also allow get_progress() to work on a different index
[thirdparty/git.git] / strbuf.c
index f19da55b0783dc2d1bf4cab0e0ce76be5711cc55..bb0065ccaf5b764323cd727dbabe3061bbe328e4 100644 (file)
--- a/strbuf.c
+++ b/strbuf.c
@@ -479,6 +479,21 @@ void strbuf_addbuf_percentquote(struct strbuf *dst, const struct strbuf *src)
        }
 }
 
+#define URL_UNSAFE_CHARS " <>\"%{}|\\^`:/?#[]@!$&'()*+,;="
+
+void strbuf_add_percentencode(struct strbuf *dst, const char *src)
+{
+       size_t i, len = strlen(src);
+
+       for (i = 0; i < len; i++) {
+               unsigned char ch = src[i];
+               if (ch <= 0x1F || ch >= 0x7F || strchr(URL_UNSAFE_CHARS, ch))
+                       strbuf_addf(dst, "%%%02X", (unsigned char)ch);
+               else
+                       strbuf_addch(dst, ch);
+       }
+}
+
 size_t strbuf_fread(struct strbuf *sb, size_t size, FILE *f)
 {
        size_t res;