X-Git-Url: http://www.git.cypherpunks.ru/?p=goredo.git;a=blobdiff_plain;f=cleanup.go;h=bdd295dd3ee6689f8ed93af330f4f30b7de1303a;hp=52f149602a8af22e11fca86d146876e41510fcfb;hb=b4eefdd675c9aef9ff8bd1089d031ee05733195b;hpb=2e85fe511f4f0410e4b8a1dcdb127396b7f3f7c0 diff --git a/cleanup.go b/cleanup.go index 52f1496..bdd295d 100644 --- a/cleanup.go +++ b/cleanup.go @@ -1,6 +1,6 @@ /* goredo -- djb's redo implementation on pure Go -Copyright (C) 2020-2021 Sergey Matveev +Copyright (C) 2020-2023 Sergey Matveev 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 @@ -32,6 +32,7 @@ const ( CleanupFull = "full" CleanupLog = "log" CleanupTmp = "tmp" + CleanupLock = "lock" ) var DryRun *bool @@ -52,6 +53,7 @@ func redoDirClean(root, what string) error { if err != nil { return err } + defer dir.Close() for { fis, err := dir.Readdir(1 << 10) if err != nil { @@ -65,7 +67,17 @@ func redoDirClean(root, what string) error { pth = cwdMustRel(root, fi.Name()) switch what { case CleanupLog: - if strings.HasSuffix(fi.Name(), LogSuffix) { + if strings.HasSuffix(fi.Name(), LogSuffix) || + strings.HasSuffix(fi.Name(), LogRecSuffix) { + fmt.Println(pth) + if !*DryRun { + if err = os.Remove(pth); err != nil { + return err + } + } + } + case CleanupLock: + if strings.HasSuffix(fi.Name(), LockSuffix) { fmt.Println(pth) if !*DryRun { if err = os.Remove(pth); err != nil { @@ -87,7 +99,7 @@ func redoDirClean(root, what string) error { } } } - return dir.Close() + return nil } func cleanupWalker(root, what string) error { @@ -121,6 +133,12 @@ func cleanupWalker(root, what string) error { } else { err = redoDirClean(pth, what) } + } else if (what == CleanupTmp || what == CleanupFull) && + strings.HasPrefix(fi.Name(), TmpPrefix) { + fmt.Println(pthRel) + if !*DryRun { + err = os.RemoveAll(pth) + } } else { err = cleanupWalker(pth, what) } @@ -140,5 +158,5 @@ func cleanupWalker(root, what string) error { } } } - return dir.Close() + return nil }