| package archive | |
| import ( | |
| "fmt" | |
| "path/filepath" | |
| "strings" | |
| ) | |
| // checkSystemDriveAndRemoveDriveLetter is the Windows implementation | |
| // of CheckSystemDriveAndRemoveDriveLetter | |
| func checkSystemDriveAndRemoveDriveLetter(path string) (string, error) { | |
| if len(path) == 2 && string(path[1]) == ":" { | |
| return "", fmt.Errorf("no relative path specified in %q", path) | |
| } | |
| if !filepath.IsAbs(path) || len(path) < 2 { | |
| return filepath.FromSlash(path), nil | |
| } | |
| if string(path[1]) == ":" && !strings.EqualFold(string(path[0]), "c") { | |
| return "", fmt.Errorf("the specified path is not on the system drive (C:)") | |
| } | |
| return filepath.FromSlash(path[2:]), nil | |
| } |