aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2018-06-13 17:11:13 -0400
committerDavid Robillard <d@drobilla.net>2018-11-25 22:12:47 +0100
commit191392584bebb14bed9bb325f54a035e0072622a (patch)
tree928b4df5bb0f991fb7b15fb257486ef29fc8ca57
parent29f0cefc019e8e93e8ae9bb016c8dc93711173a0 (diff)
downloadserd-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.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 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.
diff --git a/src/node.c b/src/node.c
index 13b13f65..9e437c5e 100644
--- a/src/node.c
+++ b/src/node.c
@@ -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;
}