mirror of
https://github.com/RetroDECK/ES-DE.git
synced 2025-01-18 07:05:39 +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)
|
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))
|
if(isRegularFile(exePath))
|
||||||
exePath = getParent(exePath);
|
exePath = getParent(exePath);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue