/*
goredo -- djb's redo implementation on pure Go
-Copyright (C) 2020-2022 Sergey Matveev <stargrave@stargrave.org>
+Copyright (C) 2020-2023 Sergey Matveev <stargrave@stargrave.org>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
}
defer dir.Close()
for {
- fis, err := dir.Readdir(1 << 10)
+ entries, err := dir.ReadDir(1 << 10)
if err != nil {
if err == io.EOF {
break
}
return err
}
- for _, fi := range fis {
- if fi.IsDir() {
- if err = depFix(path.Join(root, fi.Name())); err != nil {
+ for _, entry := range entries {
+ if entry.IsDir() {
+ if err = depFix(path.Join(root, entry.Name())); err != nil {
return err
}
}
defer dir.Close()
redoDirChanged := false
for {
- fis, err := dir.Readdir(1 << 10)
+ entries, err := dir.ReadDir(1 << 10)
if err != nil {
if err == io.EOF {
break
}
return err
}
- for _, fi := range fis {
- if !strings.HasSuffix(fi.Name(), DepSuffix) {
+ for _, entry := range entries {
+ if !strings.HasSuffix(entry.Name(), DepSuffix) {
continue
}
- tracef(CDebug, "depfix: checking %s/%s", root, fi.Name())
- fdDepPath := path.Join(redoDir, fi.Name())
+ tracef(CDebug, "depfix: checking %s/%s", root, entry.Name())
+ fdDepPath := path.Join(redoDir, entry.Name())
fdDep, err := os.Open(fdDepPath)
if err != nil {
return err
if dep == "" {
return ErrMissingTarget
}
- tracef(CDebug, "depfix: checking %s/%s -> %s", root, fi.Name(), dep)
+ tracef(CDebug, "depfix: checking %s/%s -> %s", root, entry.Name(), dep)
theirInode, err := inodeFromRec(m)
if err != nil {
return err
if os.IsNotExist(err) {
tracef(
CDebug, "depfix: %s/%s -> %s: not exists",
- root, fi.Name(), dep,
+ root, entry.Name(), dep,
)
continue
}
return err
}
- inode, err := inodeFromFile(fd)
+ inode, err := inodeFromFileByFd(fd)
if err != nil {
fd.Close()
return err
if inode.Size != theirInode.Size {
tracef(
CDebug, "depfix: %s/%s -> %s: size differs",
- root, fi.Name(), dep,
+ root, entry.Name(), dep,
)
fd.Close()
continue
if inode.Equals(theirInode) {
tracef(
CDebug, "depfix: %s/%s -> %s: inode is equal",
- root, fi.Name(), dep,
+ root, entry.Name(), dep,
)
fd.Close()
continue
if hsh != theirHsh {
tracef(
CDebug, "depfix: %s/%s -> %s: hash differs",
- root, fi.Name(), dep,
+ root, entry.Name(), dep,
)
continue
}
fieldses[len(fieldses)-1] = fields
tracef(
CDebug, "depfix: %s/%s -> %s: inode updated",
- root, fi.Name(), dep,
+ root, entry.Name(), dep,
)
depChanged = true
}
continue
}
redoDirChanged = true
- fdDep, err = tempfile(redoDir, fi.Name())
+ fdDep, err = tempfile(redoDir, entry.Name())
if err != nil {
return err
}
defer fdDep.Close()
tracef(
CDebug, "depfix: %s/%s: tmp %s",
- root, fi.Name(), fdDep.Name(),
+ root, entry.Name(), fdDep.Name(),
)
w := recfile.NewWriter(fdDep)
if _, err := w.WriteFields(fieldses[0]...); err != nil {