mirror of
https://github.com/RetroDECK/ES-DE.git
synced 2024-11-22 14:15:38 +00:00
Hopefully fixed non-ASCII paths not working on Windows.
Kind of emulator-dependent on if this works or not.
This commit is contained in:
parent
1500edbde3
commit
df896cb933
|
@ -61,6 +61,7 @@ SystemData::~SystemData()
|
|||
delete mRootFolder;
|
||||
}
|
||||
|
||||
|
||||
std::string strreplace(std::string str, const std::string& replace, const std::string& with)
|
||||
{
|
||||
size_t pos;
|
||||
|
@ -75,7 +76,7 @@ std::string strreplace(std::string str, const std::string& replace, const std::s
|
|||
// everything else: assume bash and escape special characters with backslashes
|
||||
std::string escapePath(const boost::filesystem::path& path)
|
||||
{
|
||||
#ifdef _WIN32
|
||||
#ifdef WIN32
|
||||
// windows escapes stuff by just putting everything in quotes
|
||||
return '"' + fs::path(path).make_preferred().string() + '"';
|
||||
#else
|
||||
|
@ -123,7 +124,7 @@ void SystemData::launchGame(Window* window, FileData* game)
|
|||
|
||||
LOG(LogInfo) << " " << command;
|
||||
std::cout << "==============================================\n";
|
||||
int exitCode = system(command.c_str());
|
||||
int exitCode = runSystemCommand(command);
|
||||
std::cout << "==============================================\n";
|
||||
|
||||
if(exitCode != 0)
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
#include <stdlib.h>
|
||||
#include <boost/filesystem.hpp>
|
||||
#include <iostream>
|
||||
#include <codecvt>
|
||||
|
||||
std::string getHomePath()
|
||||
{
|
||||
|
@ -51,4 +52,18 @@ int runRestartCommand()
|
|||
#else // osx / linux
|
||||
return system("sudo shutdown -r now");
|
||||
#endif
|
||||
}
|
||||
|
||||
int runSystemCommand(const std::string& cmd_utf8)
|
||||
{
|
||||
#ifdef WIN32
|
||||
// on Windows we use _wsystem to support non-ASCII paths
|
||||
// which requires converting from utf8 to a wstring
|
||||
typedef std::codecvt_utf8<wchar_t> convert_type;
|
||||
std::wstring_convert<convert_type, wchar_t> converter;
|
||||
std::wstring wchar_str = converter.from_bytes(cmd_utf8);
|
||||
return _wsystem(wchar_str.c_str());
|
||||
#else
|
||||
return system(cmd_utf8.c_str());
|
||||
#endif
|
||||
}
|
|
@ -21,3 +21,4 @@ std::string getHomePath();
|
|||
|
||||
int runShutdownCommand(); // shut down the system (returns 0 if successful)
|
||||
int runRestartCommand(); // restart the system (returns 0 if successful)
|
||||
int runSystemCommand(const std::string& cmd_utf8); // run a utf-8 encoded in the shell (requires wstring conversion on Windows)
|
Loading…
Reference in a new issue