If the $HOME or $LTTNG_HOME is not defined, fallback on getpwuid(3) of
the process uid.
Fixes #815
Signed-off-by: David Goulet <dgoulet@efficios.com>
char *utils_get_home_dir(void)
{
char *val = NULL;
+ struct passwd *pwd;
+
val = getenv(DEFAULT_LTTNG_HOME_ENV_VAR);
if (val != NULL) {
- return val;
+ goto end;
+ }
+ val = getenv(DEFAULT_LTTNG_FALLBACK_HOME_ENV_VAR);
+ if (val != NULL) {
+ goto end;
}
- return getenv(DEFAULT_LTTNG_FALLBACK_HOME_ENV_VAR);
+
+ /* Fallback on the password file entry. */
+ pwd = getpwuid(getuid());
+ if (!pwd) {
+ goto end;
+ }
+ val = pwd->pw_dir;
+
+ DBG3("Home directory is '%s'", val);
+
+end:
+ return val;
}
/*