tracef(CDebug, "depfix: entering %s", root)
dir, err := os.Open(root)
if err != nil {
- return err
+ return ErrLine(err)
}
defer dir.Close()
for {
if err == io.EOF {
break
}
- return err
+ return ErrLine(err)
}
for _, entry := range entries {
if entry.IsDir() {
if os.IsNotExist(err) {
return nil
}
- return err
+ return ErrLine(err)
}
defer dir.Close()
redoDirChanged := false
if err == io.EOF {
break
}
- return err
+ return ErrLine(err)
}
for _, entry := range entries {
if !strings.HasSuffix(entry.Name(), DepSuffix) {
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)
if errors.Is(err, io.EOF) {
break
}
- return err
+ return ErrLine(err)
}
fieldses = append(fieldses, fields)
m := make(map[string]string, len(fields))
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"]
fd, err := os.Open(path.Join(root, dep))
)
continue
}
- return err
+ return ErrLine(err)
}
inode, err := inodeFromFileByFd(fd)
if err != nil {
fd.Close()
- return err
+ return ErrLine(err)
}
if inode.Size != theirInode.Size {
tracef(
hsh, err := fileHash(fd)
fd.Close()
if err != nil {
- return err
+ return ErrLine(err)
}
if hsh != theirHsh {
tracef(
redoDirChanged = true
fdDep, err = tempfile(redoDir, entry.Name())
if err != nil {
- return err
+ return ErrLine(err)
}
defer fdDep.Close()
tracef(
)
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