Merge pull request #638 from hmsdao/patch-fixpath

Added long paths fix for samba network shares
This commit is contained in:
Alexander Neumann 2016-10-05 17:07:53 +02:00
commit 6f72164bbe
1 changed files with 15 additions and 1 deletions

View File

@ -5,6 +5,7 @@ import (
"os"
"path/filepath"
"runtime"
"strings"
)
// File is an open file on a file system.
@ -26,7 +27,20 @@ func fixpath(name string) string {
if runtime.GOOS == "windows" {
abspath, err := filepath.Abs(name)
if err == nil {
return "\\\\?\\" + abspath
// Check if \\?\UNC\ already exist
if strings.HasPrefix(abspath, `\\?\UNC\`) {
return abspath
}
// Check if \\?\ already exist
if strings.HasPrefix(abspath, `\\?\`) {
return abspath
}
// Check if path starts with \\
if strings.HasPrefix(abspath, `\\`) {
return strings.Replace(abspath, `\\`, `\\?\UNC\`, 1)
}
// Normal path
return `\\?\` + abspath
}
}
return name