summaryrefslogtreecommitdiff
path: root/vendor/github.com/Microsoft/hcsshim/internal/longpath/longpath.go
blob: e5b8b85e09ae52ffae87c7ba44342d2e2fe3ad72 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
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
}