From 4301a110e4fc87cdbca41b542d775cf31b405caf Mon Sep 17 00:00:00 2001 From: Jan De Dobbeleer Date: Wed, 9 Sep 2020 10:03:31 +0200 Subject: [PATCH 1/2] fix: remove unicode chars before parsing battery XML --- battery_darwin.go | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/battery_darwin.go b/battery_darwin.go index e6e24b0..f898ec2 100644 --- a/battery_darwin.go +++ b/battery_darwin.go @@ -24,6 +24,8 @@ package battery import ( "math" "os/exec" + "strings" + "unicode" plist "howett.net/plist" ) @@ -50,8 +52,17 @@ func readBatteries() ([]*battery, error) { return nil, nil } + // Battery XML data can contain illegal unicode characters + printOnly := func(r rune) rune { + if unicode.IsPrint(r) { + return r + } + return -1 + } + batteryXML := []byte(strings.Map(printOnly, string(out))) + var data []*battery - if _, err = plist.Unmarshal(out, &data); err != nil { + if _, err = plist.Unmarshal(batteryXML, &data); err != nil { return nil, err } return data, nil From 638ac69b87e9ac5b3ba0404ea8469bfcf6d5440c Mon Sep 17 00:00:00 2001 From: Denys Vitali Date: Tue, 20 Oct 2020 19:46:07 +0200 Subject: [PATCH 2/2] add NotCharging state --- battery.go | 2 ++ battery_test.go | 1 + 2 files changed, 3 insertions(+) diff --git a/battery.go b/battery.go index 54fc59b..10eb766 100644 --- a/battery.go +++ b/battery.go @@ -51,6 +51,7 @@ const ( Full Charging Discharging + NotCharging ) var states = [...]string{ @@ -59,6 +60,7 @@ var states = [...]string{ Full: "Full", Charging: "Charging", Discharging: "Discharging", + NotCharging: "Not Charging", } func (s State) String() string { diff --git a/battery_test.go b/battery_test.go index 901618a..43ef54d 100644 --- a/battery_test.go +++ b/battery_test.go @@ -35,6 +35,7 @@ func TestNewState(t *testing.T) { }{ {"Charging", Charging, nil}, {"charging", Charging, nil}, + {"Not Charging", NotCharging, nil}, {"strange", Unknown, fmt.Errorf("Invalid state `strange`")}, }