Skip to content

Commit

Permalink
Merge pull request #1347 from atoulme/windows_errors
Browse files Browse the repository at this point in the history
Return all Windows partitions
  • Loading branch information
shirou committed Oct 9, 2022
2 parents 16b3aac + dbc0f20 commit 769daaf
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 9 deletions.
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))
}

0 comments on commit 769daaf

Please sign in to comment.