mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-24 12:15:52 +00:00
Escape the special character in vsphere windows path
This commit is contained in:
parent
0083786ca9
commit
0fd36b00bb
@ -75,7 +75,7 @@ func getUpperPath(path string) string {
|
||||
// Check whether a directory/file is a link type or not
|
||||
// LinkType could be SymbolicLink, Junction, or HardLink
|
||||
func isLinkPath(path string) (bool, error) {
|
||||
cmd := fmt.Sprintf("(Get-Item -Path %s).LinkType", path)
|
||||
cmd := fmt.Sprintf("(Get-Item -Path %s).LinkType", escapeWindowsPath(path))
|
||||
output, err := exec.Command("powershell", "/c", cmd).CombinedOutput()
|
||||
if err != nil {
|
||||
return false, err
|
||||
@ -86,6 +86,17 @@ func isLinkPath(path string) (bool, error) {
|
||||
return false, nil
|
||||
}
|
||||
|
||||
// Escape the special character in vsphere windows path
|
||||
func escapeWindowsPath(path string) (string) {
|
||||
if strings.Contains(path, "``[") || strings.Contains(path, "``]") || strings.Contains(path, "` ") {
|
||||
return path
|
||||
}
|
||||
escapeLeft := strings.Replace(path, "[", "``[", -1)
|
||||
escapeRight := strings.Replace(escapeLeft, "]", "``]", -1)
|
||||
escapeSpace := strings.Replace(escapeRight, " ", "` ", -1)
|
||||
return escapeSpace
|
||||
}
|
||||
|
||||
// evalSymlink returns the path name after the evaluation of any symbolic links.
|
||||
// If the path after evaluation is a device path or network connection, the original path is returned
|
||||
func evalSymlink(path string) (string, error) {
|
||||
@ -113,7 +124,7 @@ func evalSymlink(path string) (string, error) {
|
||||
}
|
||||
}
|
||||
// This command will give the target path of a given symlink
|
||||
cmd := fmt.Sprintf("(Get-Item -Path %s).Target", upperpath)
|
||||
cmd := fmt.Sprintf("(Get-Item -Path %s).Target", escapeWindowsPath(upperpath))
|
||||
output, err := exec.Command("powershell", "/c", cmd).CombinedOutput()
|
||||
if err != nil {
|
||||
return "", err
|
||||
|
Loading…
Reference in New Issue
Block a user