Browse Source

serd_node_new_uri_from_path => serd_node_new_file_uri.

git-svn-id: http://svn.drobilla.net/serd/trunk@331 490d8e77-9747-427b-9fa3-0b8f29cee8a0
zrythm_meson
David Robillard 11 years ago
parent
commit
1725dfdf7c
  1. 2
      ChangeLog
  2. 8
      serd/serd.h
  3. 6
      src/node.c
  4. 12
      tests/serd_test.c

2
ChangeLog

@ -31,7 +31,7 @@ serd (UNRELEASED) unstable; urgency=low @@ -31,7 +31,7 @@ serd (UNRELEASED) unstable; urgency=low
document, to prevent silent merging of distinct blank nodes.
* Handle files and strings that start with a UTF-8 Byte Order Mark.
* Add serd_writer_get_env().
* Add serd_node_new_uri_from_path() and serd_file_uri_parse() and implement
* Add serd_node_new_file_uri() and serd_file_uri_parse() and implement
proper URI to/from path hex escaping, etc.
* Add serd_uri_serialise_relative() for making URIs relative to a base
where possible (by chopping a common prefix and adding dot segments).

8
serd/serd.h

@ -422,15 +422,15 @@ serd_node_new_uri_from_string(const uint8_t* str, @@ -422,15 +422,15 @@ serd_node_new_uri_from_string(const uint8_t* str,
SerdURI* out);
/**
Create a new file URI node from a file system path.
Create a new file URI node from a file system path and optional hostname.
If @c path is relative, @c hostname is ignored.
If @c out is not NULL, it will be set to the parsed URI.
*/
SERD_API
SerdNode
serd_node_new_uri_from_path(const uint8_t* path,
const uint8_t* hostname,
SerdURI* out);
serd_node_new_file_uri(const uint8_t* path,
const uint8_t* hostname,
SerdURI* out);
/**
Create a new node by serialising @c uri into a new string.

6
src/node.c

@ -133,9 +133,9 @@ is_uri_path_char(const uint8_t c) @@ -133,9 +133,9 @@ is_uri_path_char(const uint8_t c)
SERD_API
SerdNode
serd_node_new_uri_from_path(const uint8_t* path,
const uint8_t* hostname,
SerdURI* out)
serd_node_new_file_uri(const uint8_t* path,
const uint8_t* hostname,
SerdURI* out)
{
const size_t path_len = strlen((const char*)path);
const size_t hostname_len = hostname ? strlen((const char*)hostname) : 0;

12
tests/serd_test.c

@ -252,10 +252,10 @@ main() @@ -252,10 +252,10 @@ main()
return failure("Bad path %s for %s\n", serd_uri_to_path(uri), uri);
}
// Test serd_node_new_uri_from_path and serd_file_uri_parse
// Test serd_node_new_file_uri and serd_file_uri_parse
SerdURI furi;
const uint8_t* path_str = USTR("C:/My 100%");
SerdNode file_node = serd_node_new_uri_from_path(path_str, 0, &furi);
SerdNode file_node = serd_node_new_file_uri(path_str, 0, &furi);
uint8_t* hostname = NULL;
uint8_t* out_path = serd_file_uri_parse(file_node.buf, &hostname);
if (strcmp((const char*)file_node.buf, "file:///C:/My%20100%%")) {
@ -270,7 +270,7 @@ main() @@ -270,7 +270,7 @@ main()
serd_node_free(&file_node);
path_str = USTR("C:\\Pointless Space");
file_node = serd_node_new_uri_from_path(path_str, USTR("pwned"), 0);
file_node = serd_node_new_file_uri(path_str, USTR("pwned"), 0);
hostname = NULL;
out_path = serd_file_uri_parse(file_node.buf, &hostname);
if (strcmp((const char*)file_node.buf, "file://pwned/C:/Pointless%20Space")) {
@ -286,7 +286,7 @@ main() @@ -286,7 +286,7 @@ main()
serd_node_free(&file_node);
path_str = USTR("/foo/bar");
file_node = serd_node_new_uri_from_path(path_str, 0, 0);
file_node = serd_node_new_file_uri(path_str, 0, 0);
hostname = NULL;
out_path = serd_file_uri_parse(file_node.buf, &hostname);
if (strcmp((const char*)file_node.buf, "file:///foo/bar")) {
@ -301,7 +301,7 @@ main() @@ -301,7 +301,7 @@ main()
serd_node_free(&file_node);
path_str = USTR("/foo/bar");
file_node = serd_node_new_uri_from_path(path_str, USTR("localhost"), 0);
file_node = serd_node_new_file_uri(path_str, USTR("localhost"), 0);
out_path = serd_file_uri_parse(file_node.buf, &hostname);
if (strcmp((const char*)file_node.buf, "file://localhost/foo/bar")) {
return failure("Bad URI %s\n", file_node.buf);
@ -316,7 +316,7 @@ main() @@ -316,7 +316,7 @@ main()
serd_node_free(&file_node);
path_str = USTR("a/relative path");
file_node = serd_node_new_uri_from_path(path_str, 0, 0);
file_node = serd_node_new_file_uri(path_str, 0, 0);
out_path = serd_file_uri_parse(file_node.buf, &hostname);
if (strcmp((const char*)file_node.buf, "a/relative%20path")) {
return failure("Bad URI %s\n", file_node.buf);

Loading…
Cancel
Save