summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarco Trevisan (TreviƱo) <mail@3v1n0.net>2018-03-08 14:52:14 +0100
committerAlexander Larsson <alexl@redhat.com>2018-03-08 15:05:19 +0100
commit8dc121ffa40250cfab463d3cb53ef4455421e88e (patch)
tree443d38ceb3bdb8af922a5d0fdd5e882704db9f86
parentbb254b40b724dce327ecb832adc0029e995231c7 (diff)
xdg-user-dirs-update: give priority to $HOME
https://bugs.freedesktop.org/show_bug.cgi?id=105398
-rw-r--r--xdg-user-dirs-update.c22
1 files changed, 15 insertions, 7 deletions
diff --git a/xdg-user-dirs-update.c b/xdg-user-dirs-update.c
index 0924a1e..6a99db0 100644
--- a/xdg-user-dirs-update.c
+++ b/xdg-user-dirs-update.c
@@ -277,18 +277,26 @@ get_home_dir (void)
{
struct passwd *pw;
static char *home_dir = NULL;
+ const char *home_env;
if (home_dir != NULL)
return home_dir;
- setpwent ();
- pw = getpwuid (getuid ());
- endpwent ();
-
- if (pw && pw->pw_dir)
- home_dir = strdup (pw->pw_dir);
+ home_env = getenv ("HOME");
+
+ if (home_env && *home_env)
+ {
+ home_dir = strdup (home_env);
+ }
else
- home_dir = getenv ("HOME");
+ {
+ setpwent ();
+ pw = getpwuid (getuid ());
+ endpwent ();
+
+ if (pw && pw->pw_dir)
+ home_dir = strdup (pw->pw_dir);
+ }
return home_dir;
}