diff options
author | Max Kellermann <max@duempel.org> | 2013-09-12 10:02:11 +0200 |
---|---|---|
committer | Max Kellermann <max@duempel.org> | 2013-09-12 10:17:41 +0200 |
commit | 1ee6a78cb727561e75a5d60135bb0cd7956f70b0 (patch) | |
tree | 1b04fc472927341f818d3d571456fb495dd43ece /src/fs | |
parent | bf4ee48efad262c650b6b1a5b61ebe837d59f910 (diff) | |
download | mpd-1ee6a78cb727561e75a5d60135bb0cd7956f70b0.tar.gz mpd-1ee6a78cb727561e75a5d60135bb0cd7956f70b0.tar.xz mpd-1ee6a78cb727561e75a5d60135bb0cd7956f70b0.zip |
Path: add FromUTF8() overload that returns an Error
Diffstat (limited to 'src/fs')
-rw-r--r-- | src/fs/Path.cxx | 13 | ||||
-rw-r--r-- | src/fs/Path.hxx | 5 |
2 files changed, 18 insertions, 0 deletions
diff --git a/src/fs/Path.cxx b/src/fs/Path.cxx index c063025c8..f04823661 100644 --- a/src/fs/Path.cxx +++ b/src/fs/Path.cxx @@ -21,6 +21,7 @@ #include "fs/Path.hxx" #include "ConfigGlobal.hxx" #include "system/FatalError.hxx" +#include "util/Error.hxx" #include "util/Domain.hxx" #include "gcc.h" @@ -89,6 +90,18 @@ Path Path::FromUTF8(const char *path_utf8) return Path(Donate(), p); } +Path +Path::FromUTF8(const char *path_utf8, Error &error) +{ + Path path = FromUTF8(path_utf8); + if (path.IsNull()) + error.Format(path_domain, + "Failed to convert to file system charset: %s", + path_utf8); + + return path; +} + gcc_pure static bool IsSupportedCharset(const char *charset) diff --git a/src/fs/Path.hxx b/src/fs/Path.hxx index dd4cf38a7..8bfc9b8c4 100644 --- a/src/fs/Path.hxx +++ b/src/fs/Path.hxx @@ -44,6 +44,8 @@ # endif #endif +class Error; + extern const class Domain path_domain; /** @@ -151,6 +153,9 @@ public: gcc_pure static Path FromUTF8(const char *path_utf8); + gcc_pure + static Path FromUTF8(const char *path_utf8, Error &error); + /** * Convert the path to UTF-8. * Returns empty string on error or if #path_fs is null pointer. |