mirror of
https://github.com/RetroDECK/ES-DE.git
synced 2025-01-17 22:55:38 +00:00
Use platform-specific methods for exePath
This commit is contained in:
parent
939bc817e6
commit
08335841be
|
@ -194,8 +194,21 @@ namespace Utils
|
|||
|
||||
void setExePath(const std::string& _path)
|
||||
{
|
||||
exePath = getCanonicalPath(_path);
|
||||
constexpr int path_max = 32767;
|
||||
#if defined(_WIN32)
|
||||
std::wstring result(path_max, 0);
|
||||
if(GetModuleFileNameW(nullptr, &result[0], path_max) != 0)
|
||||
exePath = convertFromWideString(result);
|
||||
#else
|
||||
std::string result(path_max, 0);
|
||||
if(readlink("/proc/self/exe", &result[0], path_max) != -1)
|
||||
exePath = result;
|
||||
#endif
|
||||
exePath = getCanonicalPath(exePath);
|
||||
|
||||
// Fallback to argv[0] if everything else fails
|
||||
if (exePath.empty())
|
||||
exePath = getCanonicalPath(_path);
|
||||
if(isRegularFile(exePath))
|
||||
exePath = getParent(exePath);
|
||||
|
||||
|
|
Loading…
Reference in a new issue