mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-27 13:37:30 +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
|
// Check whether a directory/file is a link type or not
|
||||||
// LinkType could be SymbolicLink, Junction, or HardLink
|
// LinkType could be SymbolicLink, Junction, or HardLink
|
||||||
func isLinkPath(path string) (bool, error) {
|
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()
|
output, err := exec.Command("powershell", "/c", cmd).CombinedOutput()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return false, err
|
return false, err
|
||||||
@ -86,6 +86,17 @@ func isLinkPath(path string) (bool, error) {
|
|||||||
return false, nil
|
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.
|
// 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
|
// If the path after evaluation is a device path or network connection, the original path is returned
|
||||||
func evalSymlink(path string) (string, error) {
|
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
|
// 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()
|
output, err := exec.Command("powershell", "/c", cmd).CombinedOutput()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return "", err
|
||||||
|
Loading…
Reference in New Issue
Block a user