diff --git a/src/porting.cpp b/src/porting.cpp index 1e3d610bc..240ee0af0 100644 --- a/src/porting.cpp +++ b/src/porting.cpp @@ -351,6 +351,21 @@ bool getCurrentExecPath(char *buf, size_t len) #endif +//// Non-Windows +#if !defined(_WIN32) + +const char *getHomeOrFail() +{ + const char *home = getenv("HOME"); + // In rare cases the HOME environment variable may be unset + FATAL_ERROR_IF(!home, + "Required environment variable HOME is not set"); + return home; +} + +#endif + + //// Windows #if defined(_WIN32) @@ -430,7 +445,7 @@ bool setSystemPaths() } #ifndef __ANDROID__ - path_user = std::string(getenv("HOME")) + DIR_DELIM "." + path_user = std::string(getHomeOrFail()) + DIR_DELIM "." + PROJECT_NAME; #endif @@ -454,7 +469,7 @@ bool setSystemPaths() } CFRelease(resources_url); - path_user = std::string(getenv("HOME")) + path_user = std::string(getHomeOrFail()) + "/Library/Application Support/" + PROJECT_NAME; return true; @@ -466,7 +481,7 @@ bool setSystemPaths() bool setSystemPaths() { path_share = STATIC_SHAREDIR; - path_user = std::string(getenv("HOME")) + DIR_DELIM "." + path_user = std::string(getHomeOrFail()) + DIR_DELIM "." + lowercase(PROJECT_NAME); return true; }