Print error when HOME is not set (#7376)

In some configurations, such as when using the runit supervisor and its
tool chpst, the HOME variable might be unset. This resulted in an
unclear error message that was hard to pin down.
master
Midgard 2018-05-28 16:00:42 +00:00 committed by Loïc Blot
parent a78659ed05
commit 67ed56be3b
1 changed files with 18 additions and 3 deletions

View File

@ -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;
}