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 19:28:15 -0600
commitf3af092b12dbea8ac717876e7ecd1d323954ca80 (patch)
tree49a07adf0f099fd87acf051f35cdba8b29263c3f
parenta2d04d316d477de484f9f9b47d612c66f9a589f6 (diff)
Fixes #15, crash when battery info includes devices
-rw-r--r--CHANGELOG.md1
-rw-r--r--widgets/battery.go21
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)