diff options
author | David Robillard <d@drobilla.net> | 2018-06-13 17:11:13 -0400 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2018-11-25 22:12:47 +0100 |
commit | 191392584bebb14bed9bb325f54a035e0072622a (patch) | |
tree | 928b4df5bb0f991fb7b15fb257486ef29fc8ca57 | |
parent | 29f0cefc019e8e93e8ae9bb016c8dc93711173a0 (diff) | |
download | serd-191392584bebb14bed9bb325f54a035e0072622a.tar.gz serd-191392584bebb14bed9bb325f54a035e0072622a.tar.bz2 serd-191392584bebb14bed9bb325f54a035e0072622a.zip |
Remove escape parameter from serd_new_file_uri
Since characters are escaped because they are not valid characters in a URI,
any use of this function without escaping is problematic at best.
-rw-r--r-- | serd/serd.h | 7 | ||||
-rw-r--r-- | src/node.c | 4 | ||||
-rw-r--r-- | src/serdi.c | 2 | ||||
-rw-r--r-- | tests/serd_test.c | 15 |
4 files changed, 12 insertions, 16 deletions
diff --git a/serd/serd.h b/serd/serd.h index 7b295f7b..825726d6 100644 --- a/serd/serd.h +++ b/serd/serd.h @@ -603,16 +603,15 @@ serd_node_resolve(const SerdNode* node, const SerdNode* base); /** Create a new file URI node from a file system path and optional hostname. - Backslashes in Windows paths will be converted and '%' will always be - percent encoded. If `escape` is true, all other invalid characters will be - percent encoded as well. + Backslashes in Windows paths will be converted, and other characters will be + percent encoded as necessary. If `path` is relative, `hostname` is ignored. If `out` is not NULL, it will be set to the parsed URI. */ SERD_API SerdNode* -serd_new_file_uri(const char* path, const char* hostname, bool escape); +serd_new_file_uri(const char* path, const char* hostname); /** Create a new URI from a string, relative to a base URI. @@ -387,7 +387,7 @@ is_uri_path_char(const char c) } SerdNode* -serd_new_file_uri(const char* path, const char* hostname, bool escape) +serd_new_file_uri(const char* path, const char* hostname) { const size_t path_len = strlen(path); const size_t hostname_len = hostname ? strlen(hostname) : 0; @@ -408,7 +408,7 @@ serd_new_file_uri(const char* path, const char* hostname, bool escape) serd_buffer_sink("/", 1, 1, &buffer); } else if (path[i] == '%') { serd_buffer_sink("%%", 1, 2, &buffer); - } else if (!escape || is_uri_path_char(path[i])) { + } else if (is_uri_path_char(path[i])) { serd_buffer_sink(path + i, 1, 1, &buffer); } else { char escape_str[4] = { '%', 0, 0, 0 }; diff --git a/src/serdi.c b/src/serdi.c index 8a9e0c79..7543ed7c 100644 --- a/src/serdi.c +++ b/src/serdi.c @@ -186,7 +186,7 @@ main(int argc, char** argv) if (a < argc) { // Base URI given on command line base = serd_new_uri((const char*)argv[a]); } else if (!from_string && !from_stdin) { // Use input file URI - base = serd_new_file_uri(input, NULL, true); + base = serd_new_file_uri(input, NULL); } FILE* out_fd = stdout; diff --git a/tests/serd_test.c b/tests/serd_test.c index 857dd89b..fea37af4 100644 --- a/tests/serd_test.c +++ b/tests/serd_test.c @@ -82,7 +82,6 @@ test_sink(void* handle, static int check_file_uri(const char* hostname, const char* path, - bool escape, const char* expected_uri, const char* expected_path) { @@ -90,7 +89,7 @@ check_file_uri(const char* hostname, expected_path = path; } - SerdNode* node = serd_new_file_uri(path, hostname, escape); + SerdNode* node = serd_new_file_uri(path, hostname); const char* node_str = serd_node_get_string(node); char* out_hostname = NULL; char* out_path = serd_file_uri_parse(node_str, &out_hostname); @@ -283,18 +282,16 @@ main(void) // Test file URI escaping and parsing - if (check_file_uri(NULL, "C:/My 100%", true, + if (check_file_uri(NULL, "C:/My 100%", "file:///C:/My%20100%%", NULL) || - check_file_uri("ahost", "C:\\Pointless Space", true, + check_file_uri("ahost", "C:\\Pointless Space", "file://ahost/C:/Pointless%20Space", "C:/Pointless Space") || - check_file_uri(NULL, "/foo/bar", true, + check_file_uri(NULL, "/foo/bar", "file:///foo/bar", NULL) || - check_file_uri("bhost", "/foo/bar", true, + check_file_uri("bhost", "/foo/bar", "file://bhost/foo/bar", NULL) || - check_file_uri(NULL, "a/relative path", false, - "a/relative path", NULL) || - check_file_uri(NULL, "a/relative <path>", true, + check_file_uri(NULL, "a/relative <path>", "a/relative%20%3Cpath%3E", NULL)) { return 1; } |