aboutsummaryrefslogtreecommitdiffhomepage
path: root/internal/pkg/pkg.go
diff options
context:
space:
mode:
authorOphestra <cat@gensokyo.uk>2026-06-02 15:37:55 +0900
committerOphestra <cat@gensokyo.uk>2026-06-02 15:37:55 +0900
commit74c18390b4d0e33f960622fa158be09f46491eb7 (patch)
tree2168d0c44a626c843f770b4b8dd277eab3849943 /internal/pkg/pkg.go
parent1490b32387e52a21dc19495e15d32ee635bef710 (diff)
internal/pkg: correctly scrub substitute status
Scrubbing for status predates substitutes. This change fixes scrub handling of substitute status entries. Signed-off-by: Ophestra <cat@gensokyo.uk>
Diffstat (limited to 'internal/pkg/pkg.go')
-rw-r--r--internal/pkg/pkg.go23
1 files changed, 16 insertions, 7 deletions
diff --git a/internal/pkg/pkg.go b/internal/pkg/pkg.go
index 262ff667..d98b3753 100644
--- a/internal/pkg/pkg.go
+++ b/internal/pkg/pkg.go
@@ -1107,19 +1107,28 @@ func (c *Cache) Scrub(checks int) error {
got := p.Get().(*Checksum)
defer p.Put(got)
- if _, err := os.Stat(c.base.Append(
+ var ok bool
+ for _, name := range [...]string{
dirIdentifier,
- ent.Name(),
- ).String()); err != nil {
- if !errors.Is(err, os.ErrNotExist) {
- addErr(dir.Append(ent.Name()), err)
+ dirSubstitute,
+ } {
+ if _, err := os.Stat(c.base.Append(
+ name,
+ ent.Name(),
+ ).String()); err != nil {
+ if !errors.Is(err, os.ErrNotExist) {
+ addErr(dir.Append(ent.Name()), err)
+ }
+ continue
}
+ ok = true
+ }
+ if !ok {
seMu.Lock()
se.DanglingStatus = append(se.DanglingStatus, *want)
seMu.Unlock()
- return false
}
- return true
+ return ok
}}
}
wg.Wait()