diff --git a/common/util/FileUtil.cpp b/common/util/FileUtil.cpp index 726407177d..40c13d5a64 100644 --- a/common/util/FileUtil.cpp +++ b/common/util/FileUtil.cpp @@ -8,26 +8,26 @@ #include #endif -std::string FileUtil::GetExecutablePath() { +std::string FileUtil::GetProjectPath() { #ifdef _WIN32 char buffer[FILENAME_MAX]; GetModuleFileNameA(NULL, buffer, FILENAME_MAX); std::string::size_type pos = - std::string(buffer).find_last_of("/\\"); // Strip executable from file path - return std::string(buffer).substr(0, pos); + std::string(buffer).rfind("\\jak-project\\"); // Strip file path down to \jak-project\ directory + return std::string(buffer).substr(0, pos + 12); // + 12 to include "\jak-project" in the returned filepath #else // do Linux stuff char buffer[FILENAME_MAX]; readlink("/proc/self/exe", buffer, FILENAME_MAX); // /proc/self acts like a "virtual folder" containing information about // the current process std::string::size_type pos = - std::string(buffer).find_last_of("/\\"); // Strip executable from file path - return std::string(buffer).substr(0, pos); + std::string(buffer).find_last_of("/jak-project/"); // Strip file path down to /jak-project/ directory + return std::string(buffer).substr(0, pos + 12); // + 12 to include "/jak-project" in the returned filepath #endif } std::string FileUtil::get_file_path(const std::vector& input) { - std::string currentPath = FileUtil::GetExecutablePath(); + std::string currentPath = FileUtil::GetProjectPath(); char dirSeparator; #ifdef _WIN32 diff --git a/common/util/FileUtil.h b/common/util/FileUtil.h index 97e4ea97e5..a5ebddcfe8 100644 --- a/common/util/FileUtil.h +++ b/common/util/FileUtil.h @@ -3,6 +3,6 @@ #include namespace FileUtil { -std::string GetExecutablePath(); +std::string GetProjectPath(); std::string get_file_path(const std::vector& input); } // namespace FileUtil