aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2018-06-13 17:11:13 -0400
committerDavid Robillard <d@drobilla.net>2020-06-21 18:12:04 +0200
commit6fcf2dce8d519b4fee2b7b891e3710061cca981c (patch)
tree3997ea2ed4a86d4c94afe7147653e444903b7dd7
parent9bbe2a22b4d8c320fc4d767b4b24d2b83270f6a5 (diff)
downloadserd-6fcf2dce8d519b4fee2b7b891e3710061cca981c.tar.gz
serd-6fcf2dce8d519b4fee2b7b891e3710061cca981c.tar.bz2
serd-6fcf2dce8d519b4fee2b7b891e3710061cca981c.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.h7
-rw-r--r--src/node.c4
-rw-r--r--src/serdi.c2
-rw-r--r--tests/serd_test.c15
4 files changed, 12 insertions, 16 deletions
diff --git a/serd/serd.h b/serd/serd.h
index fc2c4522..f2468157 100644
--- a/serd/serd.h
+++ b/serd/serd.h
@@ -625,15 +625,14 @@ 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.
*/
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.
diff --git a/src/node.c b/src/node.c
index a5baa1ad..0b876646 100644
--- a/src/node.c
+++ b/src/node.c
@@ -453,7 +453,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;
@@ -474,7 +474,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 d8d8437f..0c304d01 100644
--- a/src/serdi.c
+++ b/src/serdi.c
@@ -199,7 +199,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 cc541da2..2201242c 100644
--- a/tests/serd_test.c
+++ b/tests/serd_test.c
@@ -82,7 +82,6 @@ test_sink(void* handle,
static void
test_file_uri(const char* hostname,
const char* path,
- bool escape,
const char* expected_uri,
const char* expected_path)
{
@@ -90,7 +89,7 @@ test_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);
@@ -332,17 +331,15 @@ test_strerror(void)
static void
test_uri_parsing(void)
{
- test_file_uri(NULL, "C:/My 100%", true,
+ test_file_uri(NULL, "C:/My 100%",
"file:///C:/My%20100%%", NULL);
- test_file_uri("ahost", "C:\\Pointless Space", true,
+ test_file_uri("ahost", "C:\\Pointless Space",
"file://ahost/C:/Pointless%20Space", "C:/Pointless Space");
- test_file_uri(NULL, "/foo/bar", true,
+ test_file_uri(NULL, "/foo/bar",
"file:///foo/bar", NULL);
- test_file_uri("bhost", "/foo/bar", true,
+ test_file_uri("bhost", "/foo/bar",
"file://bhost/foo/bar", NULL);
- test_file_uri(NULL, "a/relative path", false,
- "a/relative path", NULL);
- test_file_uri(NULL, "a/relative <path>", true,
+ test_file_uri(NULL, "a/relative <path>",
"a/relative%20%3Cpath%3E", NULL);
// Test tolerance of parsing junk URI escapes