github.com/demonoid81/moby@v0.0.0-20200517203328-62dd8e17c460/pkg/longpath/longpath.go (about) 1 // longpath introduces some constants and helper functions for handling long paths 2 // in Windows, which are expected to be prepended with `\\?\` and followed by either 3 // a drive letter, a UNC server\share, or a volume identifier. 4 5 package longpath // import "github.com/demonoid81/moby/pkg/longpath" 6 7 import ( 8 "strings" 9 ) 10 11 // Prefix is the longpath prefix for Windows file paths. 12 const Prefix = `\\?\` 13 14 // AddPrefix will add the Windows long path prefix to the path provided if 15 // it does not already have it. 16 func AddPrefix(path string) string { 17 if !strings.HasPrefix(path, Prefix) { 18 if strings.HasPrefix(path, `\\`) { 19 // This is a UNC path, so we need to add 'UNC' to the path as well. 20 path = Prefix + `UNC` + path[1:] 21 } else { 22 path = Prefix + path 23 } 24 } 25 return path 26 }