From 1490e862cc9883a8802c9a92da28312bd1663ac0 Mon Sep 17 00:00:00 2001 From: Unknwon Date: Sun, 2 Aug 2015 11:41:28 +0800 Subject: [PATCH] custom workDir function to handle speical case in Windows --- modules/setting/setting.go | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/modules/setting/setting.go b/modules/setting/setting.go index f826a3a4..9e9e564b 100644 --- a/modules/setting/setting.go +++ b/modules/setting/setting.go @@ -168,7 +168,18 @@ func ExecPath() (string, error) { // WorkDir returns absolute path of work directory. func WorkDir() (string, error) { execPath, err := ExecPath() - return path.Dir(strings.Replace(execPath, "\\", "/", -1)), err + if err != nil { + return execPath, err + } + + // Note: we don't use path.Dir here because it does not handle case + // which path starts with two "/" in Windows: "//psf/Home/..." + execPath = strings.Replace(execPath, "\\", "/", -1) + i := strings.LastIndex(execPath, "/") + if i == -1 { + return execPath, nil + } + return execPath[:i], nil } func forcePathSeparator(path string) {