aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Bonventre <andybons@golang.org>2018-06-25 14:26:53 -0400
committerAndrew Bonventre <andybons@golang.org>2018-06-25 18:59:39 +0000
commit50bd1c4d4eb4fac8ddeb5f063c099daccfb71b26 (patch)
treed09e8c91e7c137ec23621d13fcb065103576526d
parent4f172e7a75d6deef4441c96e1e01c31159f54a6c (diff)
downloadgo-50bd1c4d4eb4fac8ddeb5f063c099daccfb71b26.tar.gz
go-50bd1c4d4eb4fac8ddeb5f063c099daccfb71b26.zip
os: have UserCacheDir return an error on failure
Previously, it would return an empty string if it could not determine the user's cache directory. Return an error instead. Change-Id: I74f00b1ad3858efa3fe2700c599271ebfe5764b6 Reviewed-on: https://go-review.googlesource.com/120757 Run-TryBot: Andrew Bonventre <andybons@golang.org> Reviewed-by: Josh Bleecher Snyder <josharian@gmail.com> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
-rw-r--r--api/go1.11.txt2
-rw-r--r--src/os/file.go15
2 files changed, 10 insertions, 7 deletions
diff --git a/api/go1.11.txt b/api/go1.11.txt
index d8428b288f..1c641eac51 100644
--- a/api/go1.11.txt
+++ b/api/go1.11.txt
@@ -451,7 +451,7 @@ pkg net/http/httptrace, type ClientTrace struct, Got1xxResponse func(int, textpr
pkg os, const ModeIrregular = 524288
pkg os, const ModeIrregular FileMode
pkg os, const ModeType = 2399666176
-pkg os, func UserCacheDir() string
+pkg os, func UserCacheDir() (string, error)
pkg os/signal, func Ignored(os.Signal) bool
pkg regexp/syntax, method (Op) String() string
pkg runtime/trace, func IsEnabled() bool
diff --git a/src/os/file.go b/src/os/file.go
index fa73919620..cba70d78fb 100644
--- a/src/os/file.go
+++ b/src/os/file.go
@@ -342,25 +342,28 @@ func TempDir() string {
// On Plan 9, it returns $home/lib/cache.
//
// If the location cannot be determined (for example, $HOME is not defined),
-// then it will return an empty string.
-func UserCacheDir() string {
+// then it will return an error.
+func UserCacheDir() (string, error) {
var dir string
switch runtime.GOOS {
case "windows":
dir = Getenv("LocalAppData")
+ if dir == "" {
+ return "", errors.New("%LocalAppData% is not defined")
+ }
case "darwin":
dir = Getenv("HOME")
if dir == "" {
- return ""
+ return "", errors.New("$HOME is not defined")
}
dir += "/Library/Caches"
case "plan9":
dir = Getenv("home")
if dir == "" {
- return ""
+ return "", errors.New("$home is not defined")
}
dir += "/lib/cache"
@@ -369,13 +372,13 @@ func UserCacheDir() string {
if dir == "" {
dir = Getenv("HOME")
if dir == "" {
- return ""
+ return "", errors.New("neither $XDG_CACHE_HOME nor $HOME are defined")
}
dir += "/.cache"
}
}
- return dir
+ return dir, nil
}
// Chmod changes the mode of the named file to mode.