mirror of
https://github.com/rwinkhart/uni-nut.git
synced 2026-09-06 00:47:14 -04:00
Restore inner-loop error handling; optimize variable detection
This commit is contained in:
@@ -36,6 +36,7 @@ func (c *Client) Close() error {
|
|||||||
return c.conn.Close()
|
return c.conn.Close()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetListVar updates NutKeyValMap with the current status of all variables from <upsID>.
|
||||||
func (c *Client) GetListVar(upsID string) error {
|
func (c *Client) GetListVar(upsID string) error {
|
||||||
cmd := "LIST VAR \"" + upsID + "\""
|
cmd := "LIST VAR \"" + upsID + "\""
|
||||||
if err := c.write(cmd); err != nil {
|
if err := c.write(cmd); err != nil {
|
||||||
@@ -50,13 +51,19 @@ func (c *Client) GetListVar(upsID string) error {
|
|||||||
return fmt.Errorf("pre-loop error: expected %q, got %q", expected, l)
|
return fmt.Errorf("pre-loop error: expected %q, got %q", expected, l)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
outer:
|
||||||
for {
|
for {
|
||||||
l, _ := c.read()
|
l, err := c.read()
|
||||||
if !strings.HasPrefix(l, "VAR \""+upsID+"\" ") {
|
if err != nil {
|
||||||
break
|
return fmt.Errorf("in-loop error: %w", err)
|
||||||
}
|
}
|
||||||
lSplit := strings.Split(l, " ")
|
lSplit := strings.Split(l, " ")
|
||||||
|
switch lSplit[0] {
|
||||||
|
case "VAR":
|
||||||
NutKeyValMap[strings.Trim(lSplit[2], "\"")] = strings.Trim(strings.Join(lSplit[3:], " "), "\"")
|
NutKeyValMap[strings.Trim(lSplit[2], "\"")] = strings.Trim(strings.Join(lSplit[3:], " "), "\"")
|
||||||
|
default:
|
||||||
|
break outer
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user