From 50bd1c4d4eb4fac8ddeb5f063c099daccfb71b26 Mon Sep 17 00:00:00 2001 From: Andrew Bonventre Date: Mon, 25 Jun 2018 14:26:53 -0400 Subject: [PATCH] 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 Reviewed-by: Josh Bleecher Snyder Reviewed-by: Brad Fitzpatrick TryBot-Result: Gobot Gobot --- api/go1.11.txt | 2 +- src/os/file.go | 15 +++++++++------ 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.