diff options
author | Sean E. Russell <ser@ser1.net> | 2020-02-20 18:57:06 -0600 |
---|---|---|
committer | Sean E. Russell <ser@ser1.net> | 2020-02-20 18:57:06 -0600 |
commit | cbad9c124ed077c9d9c0fe1abb258edaddb7df0b (patch) | |
tree | 2ed90089158828d2384a3c33ff788d14567f5e87 | |
parent | a2d04d316d477de484f9f9b47d612c66f9a589f6 (diff) |
Fixes #15, crash when battery info includes devices
-rw-r--r-- | widgets/battery.go | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/widgets/battery.go b/widgets/battery.go index 89620bb..00764c0 100644 --- a/widgets/battery.go +++ b/widgets/battery.go @@ -52,8 +52,25 @@ func (b *BatteryWidget) Scale(i int) { func (self *BatteryWidget) update() { batteries, err := battery.GetAll() if err != nil { - log.Printf("failed to get battery info: %v", err) - return + switch errt := err.(type) { + case battery.ErrFatal: + log.Printf("fatal error fetching battery info: %v", err) + return + case battery.Errors: + batts := make([]*battery.Battery, 0) + for i, e := range errt { + if e == nil { + batts = append(batts, batteries[i]) + } else { + log.Printf("recoverable error fetching battery info; skipping battery: %v", e) + } + } + if len(batts) < 1 { + log.Print("no usable batteries found") + return + } + batteries = batts + } } for i, battery := range batteries { id := makeId(i) |