From a3892685bc33b7518894ea21ae2d8a7c9f29e735 Mon Sep 17 00:00:00 2001 From: Cyrill Schumacher Date: Thu, 19 Feb 2015 09:19:35 +1100 Subject: [PATCH] Add trailing file separator to temp dir Make sure that the file separator is added to the temp dir in all cases. This prevents cache temp files being written to the root temp folder. Fixes #910 --- helpers/path.go | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/helpers/path.go b/helpers/path.go index 884d807cb..20255a835 100644 --- a/helpers/path.go +++ b/helpers/path.go @@ -16,15 +16,16 @@ package helpers import ( "errors" "fmt" - "github.com/spf13/afero" - jww "github.com/spf13/jwalterweatherman" - "github.com/spf13/viper" "io" "os" "path/filepath" "regexp" "strings" "unicode" + + "github.com/spf13/afero" + jww "github.com/spf13/jwalterweatherman" + "github.com/spf13/viper" ) // Bridge for common functionality in filepath vs path @@ -439,12 +440,16 @@ func WriteToDisk(inpath string, r io.Reader, fs afero.Fs) (err error) { } // GetTempDir returns the OS default temp directory with trailing slash -// if subPath is not empty then it will be created recursively +// if subPath is not empty then it will be created recursively with mode 777 rwx rwx rwx func GetTempDir(subPath string, fs afero.Fs) string { - dir := os.TempDir() - if FilePathSeparator != dir[len(dir)-1:] { - dir = dir + FilePathSeparator + addSlash := func(p string) string { + if FilePathSeparator != p[len(p)-1:] { + p = p + FilePathSeparator + } + return p } + dir := addSlash(os.TempDir()) + if subPath != "" { // preserve windows backslash :-( if FilePathSeparator == "\\" { @@ -456,16 +461,14 @@ func GetTempDir(subPath string, fs afero.Fs) string { } if exists, _ := Exists(dir, fs); exists { - return dir + return addSlash(dir) } - err := fs.MkdirAll(dir, 0777) // rwx, rw, r + err := fs.MkdirAll(dir, 0777) if err != nil { panic(err) } - if FilePathSeparator != dir[len(dir)-1:] { - dir = dir + FilePathSeparator - } + dir = addSlash(dir) } return dir }