fs/Features: add macro FS_CHARSET_ALWAYS_UTF8

This commit is contained in:
Max Kellermann 2019-04-24 14:28:55 +02:00
parent 162845cc6d
commit 7a98a784b2
2 changed files with 13 additions and 6 deletions

View File

@ -32,24 +32,24 @@ AllocatedPath::~AllocatedPath() noexcept = default;
AllocatedPath
AllocatedPath::FromUTF8(const char *path_utf8) noexcept
{
#if defined(HAVE_FS_CHARSET) || defined(_WIN32)
#ifdef FS_CHARSET_ALWAYS_UTF8
return FromFS(path_utf8);
#else
try {
return AllocatedPath(::PathFromUTF8(path_utf8));
} catch (...) {
return nullptr;
}
#else
return FromFS(path_utf8);
#endif
}
AllocatedPath
AllocatedPath::FromUTF8Throw(const char *path_utf8)
{
#if defined(HAVE_FS_CHARSET) || defined(_WIN32)
return AllocatedPath(::PathFromUTF8(path_utf8));
#else
#ifdef FS_CHARSET_ALWAYS_UTF8
return FromFS(path_utf8);
#else
return AllocatedPath(::PathFromUTF8(path_utf8));
#endif
}

View File

@ -26,4 +26,11 @@
#define HAVE_FS_CHARSET
#endif
#if !defined(HAVE_FS_CHARSET) && !defined(_WIN32)
/**
* Is the filesystem character set hard-coded to UTF-8?
*/
#define FS_CHARSET_ALWAYS_UTF8
#endif
#endif