summaryrefslogtreecommitdiff
path: root/pkg/archive/path_windows.go
blob: 7e18c8e4493de353665df912bf5520bd2c62a862 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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
}