// Make sure we're using "/" since URLs are "/"-based.
rawURL = filepath.ToSlash(rawURL)
+ if len(rawURL) > 1 && rawURL[1] == ':' {
+ // Assume we're dealing with a drive letter. In which case we
+ // force the 'file' scheme to avoid "net/url" URL.String() prepending
+ // our url with "./".
+ rawURL = "file://" + rawURL
+ }
+
u, err := url.Parse(rawURL)
if err != nil {
return nil, err
}
- if len(rawURL) > 1 && rawURL[1] == ':' {
- // Assume we're dealing with a drive letter file path where the drive
- // letter has been parsed into the URL Scheme, and the rest of the path
- // has been parsed into the URL Path without the leading ':' character.
- u.Path = fmt.Sprintf("%s:%s", string(rawURL[0]), u.Path)
- u.Scheme = ""
- }
-
if len(u.Host) > 1 && u.Host[1] == ':' && strings.HasPrefix(rawURL, "file://") {
// Assume we're dealing with a drive letter file path where the drive
// letter has been parsed into the URL Host.