diff --git a/storm/Log.cpp b/storm/Log.cpp index eb0f65a..6ab023a 100644 --- a/storm/Log.cpp +++ b/storm/Log.cpp @@ -5,12 +5,19 @@ #include #include #include +#include + #if defined(WHOA_SYSTEM_LINUX) -# include -# include +#include +#include #endif + #if defined(WHOA_SYSTEM_MAC) -# include +#include +#include +#include +#include +#include #endif @@ -163,7 +170,25 @@ static const char* PrependDefaultDir(char* newfilename, uint32_t newfilenamesize #endif #if defined(WHOA_SYSTEM_MAC) - // TODO: GetModuleFileName() for Mac implementation + newfilename[0] = '\0'; + + char path[PATH_MAX] = {0}; + char actualPath[PATH_MAX] = {0}; + uint32_t size = PATH_MAX; + if (_NSGetExecutablePath(path, &size) == 0) { + if (!realpath(path, actualPath)) { + actualPath[0] = '\0'; + } + } + + char* slash = SStrChrR(actualPath, '/'); + if (slash) { + slash[0] = '\0'; + } + + SStrCopy(newfilename, actualPath, newfilenamesize); + SStrPack(newfilename, "/", newfilenamesize); + SStrPack(newfilename, filename, newfilenamesize); #endif } diff --git a/storm/Log.hpp b/storm/Log.hpp index 4e248e2..fa6f66a 100644 --- a/storm/Log.hpp +++ b/storm/Log.hpp @@ -2,6 +2,8 @@ #define STORM_LOG_HPP +#include + #include "storm/Common.hpp" #include "storm/String.hpp"