]> Cypherpunks repositories - gostls13.git/commitdiff
os/user: use os.UserHomeDir for user.HomeDir
authorLE Manh Cuong <cuong.manhle.vn@gmail.com>
Wed, 27 Mar 2019 05:39:45 +0000 (12:39 +0700)
committerBrad Fitzpatrick <bradfitz@golang.org>
Thu, 28 Mar 2019 15:02:16 +0000 (15:02 +0000)
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>
src/os/file.go
src/os/user/lookup_stubs.go

index 258a3e6109840cf9ef27f2f5fe1bae8d15f6e1b9..86af707865d5b83e8c71086a65a5a0a17fd4b420 100644 (file)
@@ -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
index 61bf1dc7a6f7704f1f746843ec4c38e8ceb7685f..6a20d787810dde36558f7e7694fba737b67285b1 100644 (file)
@@ -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: