]> Cypherpunks repositories - gostls13.git/commitdiff
os: only fallback to root directory if $HOME fails for UserHomeDir
authorElias Naur <mail@eliasnaur.com>
Sun, 17 Mar 2019 15:01:27 +0000 (16:01 +0100)
committerElias Naur <mail@eliasnaur.com>
Sun, 17 Mar 2019 19:13:01 +0000 (19:13 +0000)
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: Tobias Klauser <tobias.klauser@gmail.com>
src/os/file.go

index d880a37569dd898a28005e9f7198060bfac9c76b..5f715f4275293a9e2d29443b4d7d0df2584f8791 100644 (file)
@@ -445,6 +445,12 @@ func UserHomeDir() (string, error) {
                env, enverr = "USERPROFILE", "%userprofile%"
        case "plan9":
                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":
                return "/", nil
        case "darwin":
@@ -452,9 +458,6 @@ func UserHomeDir() (string, error) {
                        return "/", nil
                }
        }
-       if v := Getenv(env); v != "" {
-               return v, nil
-       }
        return "", errors.New(enverr + " is not defined")
 }