From 4631e48a3b576942454e5534cd269ff3f5c1a56d Mon Sep 17 00:00:00 2001 From: Sergey Matveev Date: Sun, 4 Jun 2023 11:24:38 +0300 Subject: [PATCH] Use more efficient ReadDir instead of Readdir --- cleanup.go | 30 +++++++++++++++--------------- depfix.go | 34 +++++++++++++++++----------------- targets.go | 16 ++++++++-------- 3 files changed, 40 insertions(+), 40 deletions(-) diff --git a/cleanup.go b/cleanup.go index bdd295d..d0b508d 100644 --- a/cleanup.go +++ b/cleanup.go @@ -55,7 +55,7 @@ func redoDirClean(root, what string) error { } defer dir.Close() for { - fis, err := dir.Readdir(1 << 10) + entries, err := dir.ReadDir(1 << 10) if err != nil { if err == io.EOF { break @@ -63,12 +63,12 @@ func redoDirClean(root, what string) error { return err } var pth string - for _, fi := range fis { - pth = cwdMustRel(root, fi.Name()) + for _, entry := range entries { + pth = cwdMustRel(root, entry.Name()) switch what { case CleanupLog: - if strings.HasSuffix(fi.Name(), LogSuffix) || - strings.HasSuffix(fi.Name(), LogRecSuffix) { + if strings.HasSuffix(entry.Name(), LogSuffix) || + strings.HasSuffix(entry.Name(), LogRecSuffix) { fmt.Println(pth) if !*DryRun { if err = os.Remove(pth); err != nil { @@ -77,7 +77,7 @@ func redoDirClean(root, what string) error { } } case CleanupLock: - if strings.HasSuffix(fi.Name(), LockSuffix) { + if strings.HasSuffix(entry.Name(), LockSuffix) { fmt.Println(pth) if !*DryRun { if err = os.Remove(pth); err != nil { @@ -86,7 +86,7 @@ func redoDirClean(root, what string) error { } } case CleanupTmp: - if strings.HasPrefix(fi.Name(), TmpPrefix) { + if strings.HasPrefix(entry.Name(), TmpPrefix) { fmt.Println(pth) if !*DryRun { if err = os.Remove(pth); err != nil { @@ -113,18 +113,18 @@ func cleanupWalker(root, what string) error { } 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 { - pth := path.Join(root, fi.Name()) - pthRel := cwdMustRel(root, fi.Name()) - if fi.IsDir() { - if fi.Name() == RedoDir { + for _, entry := range entries { + pth := path.Join(root, entry.Name()) + pthRel := cwdMustRel(root, entry.Name()) + if entry.IsDir() { + if entry.Name() == RedoDir { if what == CleanupFull { fmt.Println(pthRel) if !*DryRun { @@ -134,7 +134,7 @@ func cleanupWalker(root, what string) error { err = redoDirClean(pth, what) } } else if (what == CleanupTmp || what == CleanupFull) && - strings.HasPrefix(fi.Name(), TmpPrefix) { + strings.HasPrefix(entry.Name(), TmpPrefix) { fmt.Println(pthRel) if !*DryRun { err = os.RemoveAll(pth) @@ -148,7 +148,7 @@ func cleanupWalker(root, what string) error { continue } if (what == CleanupTmp || what == CleanupFull) && - strings.HasPrefix(fi.Name(), TmpPrefix) { + strings.HasPrefix(entry.Name(), TmpPrefix) { fmt.Println(pthRel) if !*DryRun { if err = os.Remove(pth); err != nil { diff --git a/depfix.go b/depfix.go index 289e16c..7ce7cb6 100644 --- a/depfix.go +++ b/depfix.go @@ -35,16 +35,16 @@ func depFix(root string) error { } 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 } } @@ -63,19 +63,19 @@ func depFix(root string) error { 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 @@ -104,7 +104,7 @@ func depFix(root string) error { 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 @@ -115,7 +115,7 @@ func depFix(root string) error { if os.IsNotExist(err) { tracef( CDebug, "depfix: %s/%s -> %s: not exists", - root, fi.Name(), dep, + root, entry.Name(), dep, ) continue } @@ -129,7 +129,7 @@ func depFix(root string) error { if inode.Size != theirInode.Size { tracef( CDebug, "depfix: %s/%s -> %s: size differs", - root, fi.Name(), dep, + root, entry.Name(), dep, ) fd.Close() continue @@ -137,7 +137,7 @@ func depFix(root string) error { if inode.Equals(theirInode) { tracef( CDebug, "depfix: %s/%s -> %s: inode is equal", - root, fi.Name(), dep, + root, entry.Name(), dep, ) fd.Close() continue @@ -150,7 +150,7 @@ func depFix(root string) error { if hsh != theirHsh { tracef( CDebug, "depfix: %s/%s -> %s: hash differs", - root, fi.Name(), dep, + root, entry.Name(), dep, ) continue } @@ -163,7 +163,7 @@ func depFix(root string) error { fieldses[len(fieldses)-1] = fields tracef( CDebug, "depfix: %s/%s -> %s: inode updated", - root, fi.Name(), dep, + root, entry.Name(), dep, ) depChanged = true } @@ -172,14 +172,14 @@ func depFix(root string) error { 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 { diff --git a/targets.go b/targets.go index 5d2342e..dca27f4 100644 --- a/targets.go +++ b/targets.go @@ -36,30 +36,30 @@ func targetsCollect(root string, tgts map[string]struct{}) error { } 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() { + for _, entry := range entries { + if !entry.IsDir() { continue } - pth := path.Join(root, fi.Name()) - if fi.Name() == RedoDir { + pth := path.Join(root, entry.Name()) + if entry.Name() == RedoDir { redoDir, err := os.Open(pth) if err != nil { return err } - redoFis, err := redoDir.Readdir(0) + redoEntries, err := redoDir.ReadDir(0) redoDir.Close() if err != nil { return err } - for _, redoFi := range redoFis { - name := redoFi.Name() + for _, redoEntry := range redoEntries { + name := redoEntry.Name() if strings.HasSuffix(name, DepSuffix) { name = cwdMustRel(root, name) tgts[name[:len(name)-len(DepSuffix)]] = struct{}{} -- 2.44.0