| package longpath | |
| import ( | |
| "path/filepath" | |
| "strings" | |
| ) | |
| // LongAbs makes a path absolute and returns it in NT long path form. | |
| func LongAbs(path string) (string, error) { | |
| if strings.HasPrefix(path, `\\?\`) || strings.HasPrefix(path, `\\.\`) { | |
| return path, nil | |
| } | |
| if !filepath.IsAbs(path) { | |
| absPath, err := filepath.Abs(path) | |
| if err != nil { | |
| return "", err | |
| } | |
| path = absPath | |
| } | |
| if strings.HasPrefix(path, `\\`) { | |
| return `\\?\UNC\` + path[2:], nil | |
| } | |
| return `\\?\` + path, nil | |
| } |