Skip to content

Commit

Permalink
os: have UserCacheDir return an error on failure
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
andybons committed Jun 25, 2018
1 parent 4f172e7 commit 50bd1c4
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 7 deletions.
2 changes: 1 addition & 1 deletion api/go1.11.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
15 changes: 9 additions & 6 deletions src/os/file.go
Original file line number Diff line number Diff line change
Expand Up @@ -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"

Expand All @@ -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.
Expand Down

0 comments on commit 50bd1c4

Please sign in to comment.