From a5e908667693f96ac9fc6b62f061d693ee63e089 Mon Sep 17 00:00:00 2001 From: Zhiming Wang Date: Sun, 29 Jun 2014 19:48:01 -0700 Subject: [PATCH] Let @uri produce uppercase hexadecimal digits... instead of lowercase ones. According to RFC 3986, The uppercase hexadecimal digits 'A' through 'F' are equivalent to the lowercase digits 'a' through 'f', respectively. If two URIs differ only in the case of hexadecimal digits used in percent-encoded octets, they are equivalent. For consistency, URI producers and normalizers should use uppercase hexadecimal digits for all percent- encodings. See https://github.com/stedolan/jq/issues/451 for details. Test suite and manual are also updated to reflect this change. Signed-off-by: Nicolas Williams --- builtin.c | 2 +- docs/content/3.manual/manual.yml | 4 ++-- tests/all.test | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/builtin.c b/builtin.c index 7b215e6..8a809f5 100644 --- a/builtin.c +++ b/builtin.c @@ -413,7 +413,7 @@ static jv f_format(jv input, jv fmt) { if (ch < 128 && unreserved[ch]) { line = jv_string_append_buf(line, s, 1); } else { - line = jv_string_concat(line, jv_string_fmt("%%%02x", ch)); + line = jv_string_concat(line, jv_string_fmt("%%%02X", ch)); } s++; } diff --git a/docs/content/3.manual/manual.yml b/docs/content/3.manual/manual.yml index 2e83129..b460e95 100644 --- a/docs/content/3.manual/manual.yml +++ b/docs/content/3.manual/manual.yml @@ -1350,7 +1350,7 @@ sections: * `@uri`: Applies percent-encoding, by mapping all reserved URI - characters to a `%xx` sequence. + characters to a `%XX` sequence. * `@csv`: @@ -1379,7 +1379,7 @@ sections: will produce the following output for the input `{"search":"what is jq?"}`: - "http://www.google.com/search?q=what%20is%20jq%3f" + "http://www.google.com/search?q=what%20is%20jq%3F" Note that the slashes, question mark, etc. in the URL are not escaped, as they were part of the string literal. diff --git a/tests/all.test b/tests/all.test index 0b5b947..171c808 100644 --- a/tests/all.test +++ b/tests/all.test @@ -67,13 +67,13 @@ null "\"<>&'\\\"\"" "1,\"<>&'\"\"\"" "<>&'"" -"%3c%3e%26'%22" +"%3C%3E%26'%22" "'<>&'\\''\"'" "PD4mJyI=" @uri "\u03bc" -"%ce%bc" +"%CE%BC" @html "\(.)" "" -- 2.40.0