Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Return all Windows partitions #1347

Merged
merged 2 commits into from Oct 9, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
12 changes: 9 additions & 3 deletions disk/disk_windows.go
Expand Up @@ -80,6 +80,9 @@ func UsageWithContext(ctx context.Context, path string) (*UsageStat, error) {
}

func PartitionsWithContext(ctx context.Context, all bool) ([]PartitionStat, error) {
warnings := common.Warnings{
Verbose: true,
}
var ret []PartitionStat
lpBuffer := make([]byte, 254)
diskret, _, err := procGetLogicalDriveStringsW.Call(
Expand All @@ -94,7 +97,9 @@ func PartitionsWithContext(ctx context.Context, all bool) ([]PartitionStat, erro
typepath, _ := windows.UTF16PtrFromString(path)
typeret, _, _ := procGetDriveType.Call(uintptr(unsafe.Pointer(typepath)))
if typeret == 0 {
return ret, windows.GetLastError()
err := windows.GetLastError()
warnings.Add(err)
continue
}
// 2: DRIVE_REMOVABLE 3: DRIVE_FIXED 4: DRIVE_REMOTE 5: DRIVE_CDROM

Expand All @@ -118,7 +123,8 @@ func PartitionsWithContext(ctx context.Context, all bool) ([]PartitionStat, erro
if typeret == 5 || typeret == 2 {
continue // device is not ready will happen if there is no disk in the drive
}
return ret, err
warnings.Add(err)
continue
}
opts := []string{"rw"}
if lpFileSystemFlags&fileReadOnlyVolume != 0 {
Expand All @@ -138,7 +144,7 @@ func PartitionsWithContext(ctx context.Context, all bool) ([]PartitionStat, erro
}
}
}
return ret, nil
return ret, warnings.Reference()
}

func IOCountersWithContext(ctx context.Context, names ...string) (map[string]IOCountersStat, error) {
Expand Down
2 changes: 1 addition & 1 deletion host/host_linux.go
Expand Up @@ -395,7 +395,7 @@ func SensorsTemperaturesWithContext(ctx context.Context) ([]TemperatureStat, err
}
}

var warns Warnings
var warns common.Warnings

if len(files) == 0 { // handle distributions without hwmon, like raspbian #391, parse legacy thermal_zone files
files, err = filepath.Glob(common.HostSys("/class/thermal/thermal_zone*/"))
Expand Down
16 changes: 11 additions & 5 deletions host/types.go → internal/common/warnings.go
@@ -1,11 +1,10 @@
package host
package common

import (
"fmt"
)
import "fmt"

type Warnings struct {
List []error
List []error
Verbose bool
}

func (w *Warnings) Add(err error) {
Expand All @@ -20,5 +19,12 @@ func (w *Warnings) Reference() error {
}

func (w *Warnings) Error() string {
if w.Verbose {
str := ""
for i, e := range w.List {
str += fmt.Sprintf("\tError %d: %s\n", i, e.Error())
}
return str
}
return fmt.Sprintf("Number of warnings: %v", len(w.List))
}