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.