aboutsummaryrefslogtreecommitdiff
path: root/state/parser.go
diff options
context:
space:
mode:
authorJulien Dessaux2020-01-30 17:44:42 +0100
committerJulien Dessaux2020-01-30 17:44:42 +0100
commitbea8e5aba8fc84dcb0c980c3948ed6d78719dded (patch)
treef84f2722b98f4c2996b64ce24ac322c9709617ed /state/parser.go
parentDocument where C structures for state file header and job entry come from (diff)
downloadbareos-zabbix-check-bea8e5aba8fc84dcb0c980c3948ed6d78719dded.tar.gz
bareos-zabbix-check-bea8e5aba8fc84dcb0c980c3948ed6d78719dded.tar.bz2
bareos-zabbix-check-bea8e5aba8fc84dcb0c980c3948ed6d78719dded.zip
Big rafactoring : code split in several modules and some other best practices
Diffstat (limited to '')
-rw-r--r--state/parser.go40
1 files changed, 40 insertions, 0 deletions
diff --git a/state/parser.go b/state/parser.go
new file mode 100644
index 0000000..60f5394
--- /dev/null
+++ b/state/parser.go
@@ -0,0 +1,40 @@
+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
+}