summaryrefslogtreecommitdiff
path: root/src/input/Open.cxx
diff options
context:
space:
mode:
authorMax Kellermann <max@duempel.org>2015-03-05 08:50:26 +0100
committerMax Kellermann <max@duempel.org>2015-03-05 08:51:01 +0100
commitddec10d494a7177156bf58c2bb9d2cbffc184918 (patch)
treeee3131555127abdc72f89a333c1a99410c0d6cc4 /src/input/Open.cxx
parent758e969cb62c92e0e838c4376344cc8d9176c04e (diff)
input/Open: convert UTF-8 to filesystem charset for OpenLocalInputStream()
Diffstat (limited to 'src/input/Open.cxx')
-rw-r--r--src/input/Open.cxx11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/input/Open.cxx b/src/input/Open.cxx
index 5f3196709..6bcca0b84 100644
--- a/src/input/Open.cxx
+++ b/src/input/Open.cxx
@@ -26,6 +26,7 @@
#include "plugins/RewindInputPlugin.hxx"
#include "fs/Traits.hxx"
#include "fs/Path.hxx"
+#include "fs/AllocatedPath.hxx"
#include "util/Error.hxx"
#include "util/Domain.hxx"
@@ -34,10 +35,14 @@ InputStream::Open(const char *url,
Mutex &mutex, Cond &cond,
Error &error)
{
- if (PathTraitsUTF8::IsAbsolute(url))
- /* TODO: the parameter is UTF-8, not filesystem charset */
- return OpenLocalInputStream(Path::FromFS(url),
+ if (PathTraitsUTF8::IsAbsolute(url)) {
+ const auto path = AllocatedPath::FromUTF8(url, error);
+ if (path.IsNull())
+ return nullptr;
+
+ return OpenLocalInputStream(path,
mutex, cond, error);
+ }
input_plugins_for_each_enabled(plugin) {
InputStream *is;