shithub: hugo

Download patch

ref: a3892685bc33b7518894ea21ae2d8a7c9f29e735
parent: f0c8585b5003ee2bb49f331a2fef9e4f2a780d13
author: Cyrill Schumacher <[email protected]>
date: Thu Feb 19 04:19:35 EST 2015

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

--- a/helpers/path.go
+++ b/helpers/path.go
@@ -16,9 +16,6 @@
 import (
 	"errors"
 	"fmt"
-	"github.com/spf13/afero"
-	jww "github.com/spf13/jwalterweatherman"
-	"github.com/spf13/viper"
 	"io"
 	"os"
 	"path/filepath"
@@ -25,6 +22,10 @@
 	"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 @@
 }
 
 // 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 @@
 		}
 
 		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
 }