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);
|
assert(path != nullptr);
|
||||||
|
|
||||||
Path path2 = Path::FromUTF8(path);
|
Path path2 = Path::FromUTF8(path, error);
|
||||||
if (path2.IsNull()) {
|
if (path2.IsNull())
|
||||||
error.Format(path_domain,
|
|
||||||
"Failed to convert path to file system charset: %s",
|
|
||||||
path);
|
|
||||||
return Path::Null();
|
return Path::Null();
|
||||||
}
|
|
||||||
|
|
||||||
#ifndef WIN32
|
#ifndef WIN32
|
||||||
if (!g_path_is_absolute(path) && path[0] != '~') {
|
if (!g_path_is_absolute(path) && path[0] != '~') {
|
||||||
|
@ -138,8 +138,12 @@ glue_mapper_init(Error &error)
|
|||||||
if (playlist_dir.IsNull() && error.IsDefined())
|
if (playlist_dir.IsNull() && error.IsDefined())
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
if (music_dir.IsNull()) {
|
||||||
|
music_dir = Path::FromUTF8(g_get_user_special_dir(G_USER_DIRECTORY_MUSIC),
|
||||||
|
error);
|
||||||
if (music_dir.IsNull())
|
if (music_dir.IsNull())
|
||||||
music_dir = Path::FromUTF8(g_get_user_special_dir(G_USER_DIRECTORY_MUSIC));
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
mapper_init(std::move(music_dir), std::move(playlist_dir));
|
mapper_init(std::move(music_dir), std::move(playlist_dir));
|
||||||
return true;
|
return true;
|
||||||
|
@ -21,6 +21,7 @@
|
|||||||
#include "fs/Path.hxx"
|
#include "fs/Path.hxx"
|
||||||
#include "ConfigGlobal.hxx"
|
#include "ConfigGlobal.hxx"
|
||||||
#include "system/FatalError.hxx"
|
#include "system/FatalError.hxx"
|
||||||
|
#include "util/Error.hxx"
|
||||||
#include "util/Domain.hxx"
|
#include "util/Domain.hxx"
|
||||||
#include "gcc.h"
|
#include "gcc.h"
|
||||||
|
|
||||||
@ -89,6 +90,18 @@ Path Path::FromUTF8(const char *path_utf8)
|
|||||||
return Path(Donate(), p);
|
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
|
gcc_pure
|
||||||
static bool
|
static bool
|
||||||
IsSupportedCharset(const char *charset)
|
IsSupportedCharset(const char *charset)
|
||||||
|
@ -44,6 +44,8 @@
|
|||||||
# endif
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
class Error;
|
||||||
|
|
||||||
extern const class Domain path_domain;
|
extern const class Domain path_domain;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -151,6 +153,9 @@ public:
|
|||||||
gcc_pure
|
gcc_pure
|
||||||
static Path FromUTF8(const char *path_utf8);
|
static Path FromUTF8(const char *path_utf8);
|
||||||
|
|
||||||
|
gcc_pure
|
||||||
|
static Path FromUTF8(const char *path_utf8, Error &error);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Convert the path to UTF-8.
|
* Convert the path to UTF-8.
|
||||||
* Returns empty string on error or if #path_fs is null pointer.
|
* Returns empty string on error or if #path_fs is null pointer.
|
||||||
|
Loading…
Reference in New Issue
Block a user