aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/porting.cpp21
1 files changed, 18 insertions, 3 deletions
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;
}