Skip to content

Commit 4105b12

Browse files
Ahmet OzturkAhmet Ozturk
authored andcommitted
fix drive letter case conversion for output
1 parent a36da71 commit 4105b12

File tree

1 file changed

+27
-12
lines changed

1 file changed

+27
-12
lines changed

pkg/snclient/check_drivesize_windows.go

Lines changed: 27 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -274,7 +274,13 @@ func (l *CheckDrivesize) setDeviceInfo(drive map[string]string) {
274274
drive["removable"] = "1"
275275
}
276276

277-
driveUTF16, err := syscall.UTF16PtrFromString(drive["drive_or_id"])
277+
// drivePath needs to be in form 'X:\'
278+
drivePath, _ := drive["drive_or_id"]
279+
drivePath = strings.ToUpper(drivePath)
280+
if !strings.HasSuffix(drivePath, "\\") {
281+
drivePath += "\\"
282+
}
283+
driveUTF16, err := syscall.UTF16PtrFromString(drivePath)
278284
if err != nil {
279285
log.Warnf("Cannot convert drive to UTF16 : %s: %s", drive["drive_or_id"], err.Error())
280286

@@ -357,10 +363,13 @@ func (l *CheckDrivesize) setDrives(requiredDrives map[string]map[string]string)
357363
if !ok {
358364
entry = make(map[string]string)
359365
}
360-
entry["drive"] = strings.ToLower(logicalDrive)
361-
entry["drive_or_id"] = strings.ToLower(logicalDrive)
362-
entry["drive_or_name"] = strings.ToLower(logicalDrive)
363-
entry["letter"] = fmt.Sprintf("%c", logicalDrive[0])
366+
// Need to convert 'X:\' to -> 'x:'
367+
// That is the default used output format
368+
logicalDriveConverted := strings.ToLower(logicalDrive[0 : len(logicalDrive)-1])
369+
entry["drive"] = logicalDriveConverted
370+
entry["drive_or_id"] = logicalDriveConverted
371+
entry["drive_or_name"] = logicalDriveConverted
372+
entry["letter"] = fmt.Sprintf("%c", logicalDriveConverted[0])
364373
requiredDrives[logicalDrive] = entry
365374
}
366375

@@ -436,6 +445,8 @@ func (l *CheckDrivesize) setVolume(requiredDisks map[string]map[string]string, v
436445
return
437446
}
438447
names := syscall.UTF16ToString(buffer)
448+
// The path name is given with uppercase, convert it.
449+
// names = strings.ToLower(names)
439450
driveOrID := names
440451
if driveOrID == "" {
441452
driveOrID = volumeGUIDPath
@@ -477,9 +488,9 @@ func (l *CheckDrivesize) setCustomPath(path string, requiredDisks map[string]map
477488
if hasRemoteName && strings.HasPrefix(path, remoteName) {
478489
requiredDisks[key] = utils.CloneStringMap(discoveredNetworkShares[key])
479490
// drive["remote_name"] = \\SERVER\SHARENAME
480-
// drive["drive"] = X:\
481-
// pathExample1 = \\SERVER\SHARENAME -> X:\
482-
// pathExample2 = \\SERVER\SHARENAME\FOO\BAR -> X:\FOO\BAR
491+
// drive["drive"] = x:
492+
// pathExample1 = \\SERVER\SHARENAME -> x:
493+
// pathExample2 = \\SERVER\SHARENAME\FOO\BAR -> x:\FOO\BAR
483494
pathReplaced := strings.Replace(path, drive["remote_name"], drive["drive"], 1)
484495
requiredDisks[key]["drive"] = pathReplaced
485496
// It is better to let users set their own detailSyntax or okSyntax, we give them the attributes for it
@@ -495,6 +506,7 @@ func (l *CheckDrivesize) setCustomPath(path string, requiredDisks map[string]map
495506
switch len(path) {
496507
case 1, 2:
497508
path = strings.TrimSuffix(path, ":") + ":"
509+
path = strings.ToLower(path)
498510
availDisks := map[string]map[string]string{}
499511
err = l.setDrives(availDisks)
500512
for driveOrID := range availDisks {
@@ -593,11 +605,14 @@ func (l *CheckDrivesize) setShares(requiredDisks map[string]map[string]string) {
593605
drive = make(map[string]string)
594606
}
595607
drive["id"] = remoteName
596-
drive["drive"] = strings.ToLower(logicalDrive)
597-
drive["drive_or_id"] = strings.ToLower(logicalDrive)
608+
// Need to convert 'X:\' to -> 'x:'
609+
// That is the default used output format
610+
logicalDriveConverted := strings.ToLower(logicalDrive[0 : len(logicalDrive)-1])
611+
drive["drive"] = logicalDriveConverted
612+
drive["drive_or_id"] = logicalDriveConverted
598613
// It is better to let users set their own detailSyntax or okSyntax, we give them the attributes for it
599-
drive["drive_or_name"] = strings.ToLower(logicalDrive)
600-
drive["letter"] = strings.ToLower(logicalDrive)
614+
drive["drive_or_name"] = logicalDriveConverted
615+
drive["letter"] = fmt.Sprintf("%c", logicalDriveConverted[0])
601616
drive["remote_name"] = remoteName
602617
if isNetworkDrivePersistent(logicalDrive) {
603618
drive["persistent"] = "1"

0 commit comments

Comments
 (0)