fix unicode url problem on windows
This commit is contained in:
parent
acfa76aa38
commit
be01912539
|
@ -192,7 +192,7 @@ bool CreateFullPath(const std::string &fullPath)
|
|||
{
|
||||
int panicCounter = 100;
|
||||
LOG_TRACE(Common_Filesystem, "path %s", fullPath.c_str());
|
||||
|
||||
LOG_WARNING(Common_Filesystem, "path %s", fullPath.c_str());
|
||||
if (FileUtil::Exists(fullPath))
|
||||
{
|
||||
LOG_WARNING(Common_Filesystem, "path exists %s", fullPath.c_str());
|
||||
|
@ -577,15 +577,23 @@ void CopyDir(const std::string &source_path, const std::string &dest_path)
|
|||
// Returns the current directory
|
||||
std::string GetCurrentDir()
|
||||
{
|
||||
char *dir;
|
||||
// Get the current working directory (getcwd uses malloc)
|
||||
#ifdef _WIN32
|
||||
wchar_t *dir;
|
||||
if (!(dir = _wgetcwd(nullptr, 0))) {
|
||||
#else
|
||||
char *dir;
|
||||
if (!(dir = getcwd(nullptr, 0))) {
|
||||
|
||||
#endif
|
||||
LOG_ERROR(Common_Filesystem, "GetCurrentDirectory failed: %s",
|
||||
GetLastErrorMsg());
|
||||
return nullptr;
|
||||
}
|
||||
#ifdef _WIN32
|
||||
std::string strDir = Common::UTF16ToUTF8(dir);
|
||||
#else
|
||||
std::string strDir = dir;
|
||||
#endif
|
||||
free(dir);
|
||||
return strDir;
|
||||
}
|
||||
|
@ -593,7 +601,11 @@ std::string GetCurrentDir()
|
|||
// Sets the current directory to the given directory
|
||||
bool SetCurrentDir(const std::string &directory)
|
||||
{
|
||||
#ifdef _WIN32
|
||||
return _wchdir(Common::UTF8ToUTF16W(directory).c_str()) == 0;
|
||||
#else
|
||||
return chdir(directory.c_str()) == 0;
|
||||
#endif
|
||||
}
|
||||
|
||||
#if defined(__APPLE__)
|
||||
|
@ -618,9 +630,9 @@ std::string& GetExeDirectory()
|
|||
static std::string exe_path;
|
||||
if (exe_path.empty())
|
||||
{
|
||||
TCHAR tchar_exe_path[2048];
|
||||
GetModuleFileName(nullptr, tchar_exe_path, 2048);
|
||||
exe_path = Common::TStrToUTF8(tchar_exe_path);
|
||||
wchar_t wchar_exe_path[2048];
|
||||
GetModuleFileNameW(nullptr, wchar_exe_path, 2048);
|
||||
exe_path = Common::UTF16ToUTF8(wchar_exe_path);
|
||||
exe_path = exe_path.substr(0, exe_path.find_last_of('\\'));
|
||||
}
|
||||
return exe_path;
|
||||
|
|
Reference in New Issue