github.com/telepresenceio/telepresence/v2@v2.20.0-pro.6.0.20240517030216-236ea954e789/pkg/client/cli/intercept/prepare_mount_windows.go (about) 1 package intercept 2 3 import ( 4 "fmt" 5 "os" 6 7 "github.com/telepresenceio/telepresence/v2/pkg/errcat" 8 ) 9 10 func PrepareMount(_ string, mountPoint string) (string, error) { 11 var err error 12 if mountPoint == "" { 13 // Find a free drive letter. Background at T, loop around and skip C and D, 14 // A and B aren't often used nowadays. No floppy-disks. 15 for _, c := range "TUVXYZABEFGHIJKLMNOPQR" { 16 _, err = os.Stat(fmt.Sprintf(`%c:\`, c)) 17 if os.IsNotExist(err) { 18 return fmt.Sprintf(`%c:`, c), nil 19 } 20 } 21 return "", errcat.User.New("found no available drive to use as mount point") 22 } 23 24 // Mount point must be a drive letter 25 ok := len(mountPoint) == 2 && mountPoint[1] == ':' 26 if ok { 27 dl := mountPoint[0] 28 ok = dl >= 'A' && dl <= 'Z' || dl >= 'a' && dl <= 'z' 29 } 30 if !ok { 31 err = errcat.User.New("mount point must be a drive letter followed by a colon") 32 } 33 return mountPoint, err 34 }