aboutsummaryrefslogtreecommitdiffstats
path: root/src/uri.c
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2011-05-24 17:17:26 +0000
committerDavid Robillard <d@drobilla.net>2011-05-24 17:17:26 +0000
commitba61f0950156b04dfae0320927543420020b7fc9 (patch)
tree4f9d0d520c7e73833d322221a90e21c3bdf5d3df /src/uri.c
parent2dff746982463158fdf7c3a4a47fee92b1d61551 (diff)
downloadserd-ba61f0950156b04dfae0320927543420020b7fc9.tar.gz
serd-ba61f0950156b04dfae0320927543420020b7fc9.tar.bz2
serd-ba61f0950156b04dfae0320927543420020b7fc9.zip
Add serd_uri_to_path to API.
Remove unused SERD_ANON_END statement flag. git-svn-id: http://svn.drobilla.net/serd/trunk@191 490d8e77-9747-427b-9fa3-0b8f29cee8a0
Diffstat (limited to 'src/uri.c')
-rw-r--r--src/uri.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/src/uri.c b/src/uri.c
index 4f1ef3a5..921de4b7 100644
--- a/src/uri.c
+++ b/src/uri.c
@@ -25,6 +25,32 @@
// #define URI_DEBUG 1
SERD_API
+const uint8_t*
+serd_uri_to_path(const uint8_t* uri)
+{
+ const uint8_t* filename = NULL;
+ if (serd_uri_string_has_scheme(uri)) {
+ // Absolute URI, ensure it a file and chop scheme
+ if (strncmp((const char*)uri, "file:", 5)) {
+ fprintf(stderr, "Unsupported URI scheme `%s'\n", uri);
+ return NULL;
+#ifdef __WIN32__
+ } else if (!strncmp((const char*)uri, "file:///", 8)) {
+ filename = uri + 8;
+#else
+ } else if (!strncmp((const char*)uri, "file://", 7)) {
+ filename = uri + 7;
+#endif
+ } else {
+ filename = uri + 5;
+ }
+ } else {
+ filename = uri;
+ }
+ return filename;
+}
+
+SERD_API
bool
serd_uri_string_has_scheme(const uint8_t* utf8)
{