]> Cypherpunks.ru repositories - goredo.git/blobdiff - depfix.go
Do not shadow variables
[goredo.git] / depfix.go
index 7ce7cb68b8d1cb9c3348b45dc1bf33d3036211f0..bc4452cef820c3a40b507bd860ec9094be701d5a 100644 (file)
--- a/depfix.go
+++ b/depfix.go
@@ -20,6 +20,7 @@ package main
 import (
        "errors"
        "io"
+       "io/fs"
        "os"
        "path"
        "strings"
@@ -31,7 +32,7 @@ func depFix(root string) error {
        tracef(CDebug, "depfix: entering %s", root)
        dir, err := os.Open(root)
        if err != nil {
-               return err
+               return ErrLine(err)
        }
        defer dir.Close()
        for {
@@ -40,7 +41,7 @@ func depFix(root string) error {
                        if err == io.EOF {
                                break
                        }
-                       return err
+                       return ErrLine(err)
                }
                for _, entry := range entries {
                        if entry.IsDir() {
@@ -55,10 +56,10 @@ func depFix(root string) error {
        redoDir := path.Join(root, RedoDir)
        dir, err = os.Open(redoDir)
        if err != nil {
-               if os.IsNotExist(err) {
+               if errors.Is(err, fs.ErrNotExist) {
                        return nil
                }
-               return err
+               return ErrLine(err)
        }
        defer dir.Close()
        redoDirChanged := false
@@ -68,7 +69,7 @@ func depFix(root string) error {
                        if err == io.EOF {
                                break
                        }
-                       return err
+                       return ErrLine(err)
                }
                for _, entry := range entries {
                        if !strings.HasSuffix(entry.Name(), DepSuffix) {
@@ -78,7 +79,7 @@ func depFix(root string) error {
                        fdDepPath := path.Join(redoDir, entry.Name())
                        fdDep, err := os.Open(fdDepPath)
                        if err != nil {
-                               return err
+                               return ErrLine(err)
                        }
                        defer fdDep.Close()
                        r := recfile.NewReader(fdDep)
@@ -90,7 +91,7 @@ func depFix(root string) error {
                                        if errors.Is(err, io.EOF) {
                                                break
                                        }
-                                       return err
+                                       return ErrLine(err)
                                }
                                fieldses = append(fieldses, fields)
                                m := make(map[string]string, len(fields))
@@ -107,24 +108,24 @@ func depFix(root string) error {
                                tracef(CDebug, "depfix: checking %s/%s -> %s", root, entry.Name(), dep)
                                theirInode, err := inodeFromRec(m)
                                if err != nil {
-                                       return err
+                                       return ErrLine(err)
                                }
-                               theirHsh := m["Hash"]
+                               theirHsh := mustHashDecode(m["Hash"])
                                fd, err := os.Open(path.Join(root, dep))
                                if err != nil {
-                                       if os.IsNotExist(err) {
+                                       if errors.Is(err, fs.ErrNotExist) {
                                                tracef(
                                                        CDebug, "depfix: %s/%s -> %s: not exists",
                                                        root, entry.Name(), dep,
                                                )
                                                continue
                                        }
-                                       return err
+                                       return ErrLine(err)
                                }
-                               inode, err := inodeFromFileByFd(fd)
+                               inode, _, err := inodeFromFileByFd(fd)
                                if err != nil {
                                        fd.Close()
-                                       return err
+                                       return ErrLine(err)
                                }
                                if inode.Size != theirInode.Size {
                                        tracef(
@@ -145,7 +146,7 @@ func depFix(root string) error {
                                hsh, err := fileHash(fd)
                                fd.Close()
                                if err != nil {
-                                       return err
+                                       return ErrLine(err)
                                }
                                if hsh != theirHsh {
                                        tracef(
@@ -157,7 +158,7 @@ func depFix(root string) error {
                                fields = []recfile.Field{
                                        {Name: "Type", Value: DepTypeIfchange},
                                        {Name: "Target", Value: dep},
-                                       {Name: "Hash", Value: hsh},
+                                       {Name: "Hash", Value: hsh.String()},
                                }
                                fields = append(fields, inode.RecfileFields()...)
                                fieldses[len(fieldses)-1] = fields
@@ -174,7 +175,7 @@ func depFix(root string) error {
                        redoDirChanged = true
                        fdDep, err = tempfile(redoDir, entry.Name())
                        if err != nil {
-                               return err
+                               return ErrLine(err)
                        }
                        defer fdDep.Close()
                        tracef(
@@ -183,32 +184,32 @@ func depFix(root string) error {
                        )
                        w := recfile.NewWriter(fdDep)
                        if _, err := w.WriteFields(fieldses[0]...); err != nil {
-                               return err
+                               return ErrLine(err)
                        }
                        fieldses = fieldses[1:]
                        for _, fields := range fieldses {
                                if _, err := w.RecordStart(); err != nil {
-                                       return err
+                                       return ErrLine(err)
                                }
                                if _, err := w.WriteFields(fields...); err != nil {
-                                       return err
+                                       return ErrLine(err)
                                }
                        }
                        if !NoSync {
                                if err = fdDep.Sync(); err != nil {
-                                       return err
+                                       return ErrLine(err)
                                }
                        }
                        fdDep.Close()
                        if err = os.Rename(fdDep.Name(), fdDepPath); err != nil {
-                               return err
+                               return ErrLine(err)
                        }
                        tracef(CRedo, "%s", fdDepPath)
                }
        }
        if redoDirChanged && !NoSync {
                if err = syncDir(redoDir); err != nil {
-                       return nil
+                       return err
                }
        }
        return nil