Commit 50bd1c4d authored by Andrew Bonventre's avatar Andrew Bonventre

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: default avatarJosh Bleecher Snyder <josharian@gmail.com>
Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
parent 4f172e7a
...@@ -451,7 +451,7 @@ pkg net/http/httptrace, type ClientTrace struct, Got1xxResponse func(int, textpr ...@@ -451,7 +451,7 @@ pkg net/http/httptrace, type ClientTrace struct, Got1xxResponse func(int, textpr
pkg os, const ModeIrregular = 524288 pkg os, const ModeIrregular = 524288
pkg os, const ModeIrregular FileMode pkg os, const ModeIrregular FileMode
pkg os, const ModeType = 2399666176 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 os/signal, func Ignored(os.Signal) bool
pkg regexp/syntax, method (Op) String() string pkg regexp/syntax, method (Op) String() string
pkg runtime/trace, func IsEnabled() bool pkg runtime/trace, func IsEnabled() bool
......
...@@ -342,25 +342,28 @@ func TempDir() string { ...@@ -342,25 +342,28 @@ func TempDir() string {
// On Plan 9, it returns $home/lib/cache. // On Plan 9, it returns $home/lib/cache.
// //
// If the location cannot be determined (for example, $HOME is not defined), // If the location cannot be determined (for example, $HOME is not defined),
// then it will return an empty string. // then it will return an error.
func UserCacheDir() string { func UserCacheDir() (string, error) {
var dir string var dir string
switch runtime.GOOS { switch runtime.GOOS {
case "windows": case "windows":
dir = Getenv("LocalAppData") dir = Getenv("LocalAppData")
if dir == "" {
return "", errors.New("%LocalAppData% is not defined")
}
case "darwin": case "darwin":
dir = Getenv("HOME") dir = Getenv("HOME")
if dir == "" { if dir == "" {
return "" return "", errors.New("$HOME is not defined")
} }
dir += "/Library/Caches" dir += "/Library/Caches"
case "plan9": case "plan9":
dir = Getenv("home") dir = Getenv("home")
if dir == "" { if dir == "" {
return "" return "", errors.New("$home is not defined")
} }
dir += "/lib/cache" dir += "/lib/cache"
...@@ -369,13 +372,13 @@ func UserCacheDir() string { ...@@ -369,13 +372,13 @@ func UserCacheDir() string {
if dir == "" { if dir == "" {
dir = Getenv("HOME") dir = Getenv("HOME")
if dir == "" { if dir == "" {
return "" return "", errors.New("neither $XDG_CACHE_HOME nor $HOME are defined")
} }
dir += "/.cache" dir += "/.cache"
} }
} }
return dir return dir, nil
} }
// Chmod changes the mode of the named file to mode. // Chmod changes the mode of the named file to mode.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment