"Failed to get current executable path");
pathRemoveFile(buf, '\\');
+ std::string exepath(buf);
+
// Use ".\bin\.."
- path_share = std::string(buf) + "\\..";
+ path_share = exepath + "\\..";
+ if (detectMSVCBuildDir(exepath)) {
+ // The msvc build dir schould normaly not be present if properly installed,
+ // but its usefull for debugging.
+ path_share += DIR_DELIM "..";
+ }
- // Use "C:\Documents and Settings\user\Application Data\<PROJECT_NAME>"
+ // Use "C:\Users\<user>\AppData\Roaming\<PROJECT_NAME_C>"
DWORD len = GetEnvironmentVariable("APPDATA", buf, sizeof(buf));
FATAL_ERROR_IF(len == 0 || len > sizeof(buf), "Failed to get APPDATA");
- path_user = std::string(buf) + DIR_DELIM + PROJECT_NAME;
+ path_user = std::string(buf) + DIR_DELIM + PROJECT_NAME_C;
return true;
}
//// Linux
-#elif defined(__linux__)
+#elif defined(__linux__) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__DragonFly__)
bool setSystemPaths()
{
if (!setSystemPaths())
errorstream << "Failed to get one or more system-wide path" << std::endl;
+
+# ifdef _WIN32
+ path_cache = path_user + DIR_DELIM + "cache";
+# else
// Initialize path_cache
// First try $XDG_CACHE_HOME/PROJECT_NAME
const char *cache_dir = getenv("XDG_CACHE_HOME");
}
// Migrate cache folder to new location if possible
migrateCachePath();
-#endif
+# endif // _WIN32
+#endif // RUN_IN_PLACE
infostream << "Detected share path: " << path_share << std::endl;
infostream << "Detected user path: " << path_user << std::endl;