Commit bedb6a18 authored by Elias Naur's avatar Elias Naur

os: only fallback to root directory if $HOME fails for UserHomeDir

UserHomeDir always returns "/" for platforms where the home directory
is not always well defined. However, the user might set HOME before
running a Go program on those platforms and on at least iOS, HOME
is actually set to something useful (the root of the app specific
writable directory).

This CL changes UserHomeDir to use the root directory "/" only if
$HOME is empty.

Change-Id: Icaa01de53cd585d527d9a23b1629375d6b7f67e9
Reviewed-on: https://go-review.googlesource.com/c/go/+/167802
Run-TryBot: Elias Naur <mail@eliasnaur.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: default avatarTobias Klauser <tobias.klauser@gmail.com>
parent a734601b
...@@ -445,6 +445,12 @@ func UserHomeDir() (string, error) { ...@@ -445,6 +445,12 @@ func UserHomeDir() (string, error) {
env, enverr = "USERPROFILE", "%userprofile%" env, enverr = "USERPROFILE", "%userprofile%"
case "plan9": case "plan9":
env, enverr = "home", "$home" env, enverr = "home", "$home"
}
if v := Getenv(env); v != "" {
return v, nil
}
// On some geese the home directory is not always defined.
switch runtime.GOOS {
case "nacl", "android": case "nacl", "android":
return "/", nil return "/", nil
case "darwin": case "darwin":
...@@ -452,9 +458,6 @@ func UserHomeDir() (string, error) { ...@@ -452,9 +458,6 @@ func UserHomeDir() (string, error) {
return "/", nil return "/", nil
} }
} }
if v := Getenv(env); v != "" {
return v, nil
}
return "", errors.New(enverr + " is not defined") return "", errors.New(enverr + " is not defined")
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment