]> ruderich.org/simon Gitweb - nsscash/nsscash.git/blobdiff - main.go
nsscash: write state on each successful run
[nsscash/nsscash.git] / main.go
diff --git a/main.go b/main.go
index db21997fee0cf71bdcfe5ed2836b7b092ea5b10b..52727408962b0030baef955f4c679131e32ad734 100644 (file)
--- a/main.go
+++ b/main.go
@@ -61,7 +61,9 @@ func main() {
                if err != nil {
                        log.Fatal(err)
                }
-               err = WriteStateIfChanged(cfg.StatePath, state)
+               // NOTE: Make sure to call WriteState() only if there were no
+               // errors (see WriteState() and README)
+               err = WriteState(cfg.StatePath, state)
                if err != nil {
                        log.Fatal(err)
                }
@@ -86,14 +88,23 @@ func main() {
                if t == FileTypePlain {
                        x.Write(src)
                } else if t == FileTypePasswd {
-               pws, err := ParsePasswds(bytes.NewReader(src))
-               if err != nil {
-                       log.Fatal(err)
-               }
-               err = SerializePasswds(&x, pws)
-               if err != nil {
-                       log.Fatal(err)
-               }
+                       pws, err := ParsePasswds(bytes.NewReader(src))
+                       if err != nil {
+                               log.Fatal(err)
+                       }
+                       err = SerializePasswds(&x, pws)
+                       if err != nil {
+                               log.Fatal(err)
+                       }
+               } else if t == FileTypeGroup {
+                       grs, err := ParseGroups(bytes.NewReader(src))
+                       if err != nil {
+                               log.Fatal(err)
+                       }
+                       err = SerializeGroups(&x, grs)
+                       if err != nil {
+                               log.Fatal(err)
+                       }
                } else {
                        log.Fatalf("unsupported file type %v", t)
                }