lib/versioner: Clean the versions dir of symlinks, not the full folder

GitHub-Pull-Request: https://github.com/syncthing/syncthing/pull/4289
This commit is contained in:
Jakob Borg
2017-08-08 13:13:08 +00:00
parent a3c17f8f81
commit fa5c890ff6
9 changed files with 207 additions and 36 deletions

View File

@@ -8,12 +8,6 @@
// simple default versioning scheme.
package versioner
import (
"os"
"path/filepath"
"runtime"
)
type Versioner interface {
Archive(filePath string) error
}
@@ -24,23 +18,3 @@ const (
TimeFormat = "20060102-150405"
TimeGlob = "[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]-[0-9][0-9][0-9][0-9][0-9][0-9]" // glob pattern matching TimeFormat
)
func cleanSymlinks(dir string) {
if runtime.GOOS == "windows" {
// We don't do symlinks on Windows. Additionally, there may
// be things that look like symlinks that are not, which we
// should leave alone. Deduplicated files, for example.
return
}
filepath.Walk(dir, func(path string, info os.FileInfo, err error) error {
if err != nil {
return err
}
if info.Mode()&os.ModeSymlink != 0 {
l.Infoln("Removing incorrectly versioned symlink", path)
os.Remove(path)
return filepath.SkipDir
}
return nil
})
}