diff options
author | Junio C Hamano <gitster@pobox.com> | 2020-05-06 00:54:26 +0300 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2020-05-06 00:54:26 +0300 |
commit | fd65fc3960a972ab2f03b94d08f0e421d9ee22bb (patch) | |
tree | 05661137277959a67079a9f8fd43bde7e83b92fa /strbuf.c | |
parent | b34789c0b0d3b137f0bb516b417bd8d75e0cb306 (diff) | |
parent | b44d0118ac5074215ece7ae2bb86ad0713f70674 (diff) |
Merge branch 'bc/wildcard-credential'
Update the parser used for credential.<URL>.<variable>
configuration, to handle <URL>s with '/' in them correctly.
* bc/wildcard-credential:
credential: fix matching URLs with multiple levels in path
Diffstat (limited to 'strbuf.c')
-rw-r--r-- | strbuf.c | 8 |
1 files changed, 5 insertions, 3 deletions
@@ -479,15 +479,17 @@ void strbuf_addbuf_percentquote(struct strbuf *dst, const struct strbuf *src) } } -#define URL_UNSAFE_CHARS " <>\"%{}|\\^`:/?#[]@!$&'()*+,;=" +#define URL_UNSAFE_CHARS " <>\"%{}|\\^`:?#[]@!$&'()*+,;=" -void strbuf_add_percentencode(struct strbuf *dst, const char *src) +void strbuf_add_percentencode(struct strbuf *dst, const char *src, int flags) { 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)) + if (ch <= 0x1F || ch >= 0x7F || + (ch == '/' && (flags & STRBUF_ENCODE_SLASH)) || + strchr(URL_UNSAFE_CHARS, ch)) strbuf_addf(dst, "%%%02X", (unsigned char)ch); else strbuf_addch(dst, ch); |