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 19:28:15 -0600 |
commit | f3af092b12dbea8ac717876e7ecd1d323954ca80 (patch) | |
tree | 49a07adf0f099fd87acf051f35cdba8b29263c3f | |
parent | a2d04d316d477de484f9f9b47d612c66f9a589f6 (diff) |
Fixes #15, crash when battery info includes devices
-rw-r--r-- | CHANGELOG.md | 1 | ||||
-rw-r--r-- | widgets/battery.go | 21 |
2 files changed, 20 insertions, 2 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index 521e9b8..f4468be 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,6 +23,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [3.3.2] - ?? +- Fixes #15, crash caused by battery widget when some accessories have batteries - Fixes #57, colors with dashes in the name not found. - Also, cjbassi/gotop#127 and cjbassi/gotop#130 were released back in v3.1.0. 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) |