aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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.