diff options
author | Marco Trevisan (TreviƱo) <mail@3v1n0.net> | 2018-03-08 14:52:14 +0100 |
---|---|---|
committer | Alexander Larsson <alexl@redhat.com> | 2018-03-08 15:05:19 +0100 |
commit | 8dc121ffa40250cfab463d3cb53ef4455421e88e (patch) | |
tree | 443d38ceb3bdb8af922a5d0fdd5e882704db9f86 | |
parent | bb254b40b724dce327ecb832adc0029e995231c7 (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.c | 22 |
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; } |