diff options
author | Aren Villanueva <arenvillanueva@yomogi-soft.com> | 2016-04-20 17:49:48 +1000 |
---|---|---|
committer | Aren Villanueva <arenvillanueva@yomogi-soft.com> | 2016-04-20 17:49:48 +1000 |
commit | e5c1a2c3f7bc97e75f885ea1af6d1ac0cf1efb46 (patch) | |
tree | 4bb17a37e213a75ce9b4a17a0314b3212bbb20c0 /drivers/unix | |
parent | 30e5df6e21911a1952e5301600c036e603821fc4 (diff) |
Implements get_executable_path for OS X should proc_pidpath in os_osx.mm doesn't succeed. Silences the warning for javascript as the function currently appears superfluous.
Diffstat (limited to 'drivers/unix')
-rw-r--r-- | drivers/unix/os_unix.cpp | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/drivers/unix/os_unix.cpp b/drivers/unix/os_unix.cpp index 359758290f..4fa46b16cd 100644 --- a/drivers/unix/os_unix.cpp +++ b/drivers/unix/os_unix.cpp @@ -44,6 +44,10 @@ #include "stream_peer_tcp_posix.h" #include "packet_peer_udp_posix.h" +#ifdef __APPLE__ +#include <mach-o/dyld.h> +#endif + #ifdef __FreeBSD__ #include <sys/param.h> #endif @@ -508,6 +512,23 @@ String OS_Unix::get_executable_path() const { realpath(OS::get_executable_path().utf8().get_data(), resolved_path); return String(resolved_path); +#elif defined(__APPLE__) + char temp_path[1]; + uint32_t buff_size=1; + _NSGetExecutablePath(temp_path, &buff_size); + + char* resolved_path = new char[buff_size + 1]; + + if (_NSGetExecutablePath(resolved_path, &buff_size) == 1) + WARN_PRINT("MAXPATHLEN is too small"); + + String path(resolved_path); + delete[] resolved_path; + + return path; +#elif defined(EMSCRIPTEN) + // We return nothing + return String(); #else ERR_PRINT("Warning, don't know how to obtain executable path on this OS! Please override this function properly."); return OS::get_executable_path(); |