internal/uri/uri_windows.go (21 lines of code) (raw):

package uri import ( "path/filepath" "strings" ) // wrapPath prepends Windows-style paths (C:\path) // with an additional slash to account for an empty hostname // in a valid file-scheme URI per RFC 8089 func wrapPath(path string) string { return "/" + path } func PathFromURI(uri string) (string, error) { p, err := parseUri(uri) if err != nil { return "", err } p = strings.TrimPrefix(p, "/") return filepath.FromSlash(p), nil } // MustPathFromURI on Windows strips the leading '/' // which occurs in Windows-style paths (e.g. file:///C:/) // as url.URL methods don't account for that // (see golang/go#6027). func MustPathFromURI(uri string) string { p := mustParseUri(uri) p = strings.TrimPrefix(p, "/") return filepath.FromSlash(p) }