From c1e60b6e336dba3820cb27442cec33d15b2a5f7d Mon Sep 17 00:00:00 2001 From: LE Manh Cuong Date: Wed, 27 Mar 2019 12:39:45 +0700 Subject: [PATCH] os/user: use os.UserHomeDir for user.HomeDir MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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í TryBot-Result: Gobot Gobot Reviewed-by: Daniel Martí Reviewed-by: Brad Fitzpatrick --- src/os/file.go | 4 +++- src/os/user/lookup_stubs.go | 10 +++------- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/src/os/file.go b/src/os/file.go index 258a3e6109..86af707865 100644 --- a/src/os/file.go +++ b/src/os/file.go @@ -468,8 +468,10 @@ func UserHomeDir() (string, error) { } // 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 diff --git a/src/os/user/lookup_stubs.go b/src/os/user/lookup_stubs.go index 61bf1dc7a6..6a20d78781 100644 --- a/src/os/user/lookup_stubs.go +++ b/src/os/user/lookup_stubs.go @@ -26,12 +26,14 @@ func current() (*User, error) { 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 { @@ -42,9 +44,6 @@ func current() (*User, error) { if u.Username == "" { u.Username = "nacl" } - if u.HomeDir == "" { - u.HomeDir = "/" - } case "android": if u.Uid == "" { u.Uid = "1" @@ -52,9 +51,6 @@ func current() (*User, error) { 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: