summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSean E. Russell <ser@ser1.net>2020-02-20 18:57:06 -0600
committerSean E. Russell <ser@ser1.net>2020-02-20 18:57:06 -0600
commitcbad9c124ed077c9d9c0fe1abb258edaddb7df0b (patch)
tree2ed90089158828d2384a3c33ff788d14567f5e87
parenta2d04d316d477de484f9f9b47d612c66f9a589f6 (diff)
Fixes #15, crash when battery info includes devices
-rw-r--r--widgets/battery.go21
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)