#include <unistd.h>
#include <inttypes.h>
#include <grp.h>
+#include <pwd.h>
#include <common/common.h>
#include <common/runas.h>
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;
}
/*
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);
}