40 lines
867 B
Go
40 lines
867 B
Go
package state
|
|
|
|
import (
|
|
"bareos-zabbix-check/config"
|
|
"fmt"
|
|
"os"
|
|
)
|
|
|
|
// Parse parses a bareos state file
|
|
func (s *State) Parse(c *config.Config) (err error) {
|
|
s.config = c
|
|
// Open the state file
|
|
file, err := os.Open(c.StateFile())
|
|
if err != nil {
|
|
return fmt.Errorf("INFO Couldn't open state file : %s", err)
|
|
}
|
|
defer file.Close()
|
|
|
|
err = s.parseHeader(file)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
err = s.parseJobs(file)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
return
|
|
}
|
|
|
|
// readNextBytes : Reads the next "number" bytes from a "file", returns the number of bytes actually read as well as the bytes read
|
|
func (s *State) readNextBytes(file *os.File, number int) (n int, bytes []byte, err error) {
|
|
bytes = make([]byte, number)
|
|
n, err = file.Read(bytes)
|
|
if err != nil {
|
|
return 0, nil, fmt.Errorf("file.Read failed in %s : %s", s.config.StateFile(), err)
|
|
}
|
|
|
|
return
|
|
}
|