Using os.UserHomeDir for user.HomeDir helps us deduplicate the
logic and keep the behavior consistent.
Also make os.UserHomeDir return "/sdcard" in android.
See: https://go-review.googlesource.com/c/go/+/37960/1/src/os/user/lookup_stubs.go#48
Fixes #31070
Change-Id: I521bad050bc5761ecc5c0085501374d2cf8e6897
Reviewed-on: https://go-review.googlesource.com/c/go/+/169540
Run-TryBot: Daniel Martà <mvdan@mvdan.cc>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Daniel Martà <mvdan@mvdan.cc>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
}
// On some geese the home directory is not always defined.
switch runtime.GOOS {
- case "nacl", "android":
+ case "nacl":
return "/", nil
+ case "android":
+ return "/sdcard", nil
case "darwin":
if runtime.GOARCH == "arm" || runtime.GOARCH == "arm64" {
return "/", nil
if err == nil {
return u, nil
}
+
+ homeDir, _ := os.UserHomeDir()
u = &User{
Uid: uid,
Gid: currentGID(),
Username: os.Getenv("USER"),
Name: "", // ignored
- HomeDir: os.Getenv("HOME"),
+ HomeDir: homeDir,
}
// On NaCL and Android, return a dummy user instead of failing.
switch runtime.GOOS {
if u.Username == "" {
u.Username = "nacl"
}
- if u.HomeDir == "" {
- u.HomeDir = "/"
- }
case "android":
if u.Uid == "" {
u.Uid = "1"
if u.Username == "" {
u.Username = "android"
}
- if u.HomeDir == "" {
- u.HomeDir = "/sdcard"
- }
}
// cgo isn't available, but if we found the minimum information
// without it, use it: