Path: add FromUTF8() overload that returns an Error
This commit is contained in:
parent
bf4ee48efa
commit
1ee6a78cb7
@ -53,13 +53,9 @@ ParsePath(const char *path, Error &error)
|
||||
{
|
||||
assert(path != nullptr);
|
||||
|
||||
Path path2 = Path::FromUTF8(path);
|
||||
if (path2.IsNull()) {
|
||||
error.Format(path_domain,
|
||||
"Failed to convert path to file system charset: %s",
|
||||
path);
|
||||
Path path2 = Path::FromUTF8(path, error);
|
||||
if (path2.IsNull())
|
||||
return Path::Null();
|
||||
}
|
||||
|
||||
#ifndef WIN32
|
||||
if (!g_path_is_absolute(path) && path[0] != '~') {
|
||||
|
@ -138,8 +138,12 @@ glue_mapper_init(Error &error)
|
||||
if (playlist_dir.IsNull() && error.IsDefined())
|
||||
return false;
|
||||
|
||||
if (music_dir.IsNull())
|
||||
music_dir = Path::FromUTF8(g_get_user_special_dir(G_USER_DIRECTORY_MUSIC));
|
||||
if (music_dir.IsNull()) {
|
||||
music_dir = Path::FromUTF8(g_get_user_special_dir(G_USER_DIRECTORY_MUSIC),
|
||||
error);
|
||||
if (music_dir.IsNull())
|
||||
return false;
|
||||
}
|
||||
|
||||
mapper_init(std::move(music_dir), std::move(playlist_dir));
|
||||
return true;
|
||||
|
@ -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)
|
||||
|
@ -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.
|
||||
|
Loading…
Reference in New Issue
Block a user