Fix: add a get HOME dir fallback to getpwuid
[lttng-tools.git] / src / common / utils.c
index b345100ea0fa5ad6517d28c72cbc53a5bd87e391..cf610fb3bbb29c206b95616b78db2341fcf61599 100644 (file)
@@ -633,11 +633,28 @@ LTTNG_HIDDEN
 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;
 }
 
 /*
@@ -660,7 +677,7 @@ size_t utils_get_current_time_str(const char *format, char *dst, size_t len)
        timeinfo = localtime(&rawtime);
        ret = strftime(dst, len, format, timeinfo);
        if (ret == 0) {
-               ERR("Unable to strftime with format %s at dst %p of len %lu", format,
+               ERR("Unable to strftime with format %s at dst %p of len %zu", format,
                                dst, len);
        }
 
This page took 0.023402 seconds and 4 git commands to generate.