fsck: sort files alphabetically
This makes fsck runs deterministic.
This commit is contained in:
parent
f28d85fad5
commit
e6caf56ea4
18
fsck.go
18
fsck.go
@ -4,6 +4,8 @@ import (
|
||||
"fmt"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"sort"
|
||||
"strings"
|
||||
"syscall"
|
||||
|
||||
"github.com/hanwen/go-fuse/fuse"
|
||||
@ -27,6 +29,8 @@ func (ck *fsckObj) dir(path string) {
|
||||
ck.errorCount++
|
||||
return
|
||||
}
|
||||
// Sort alphabetically
|
||||
sort.Sort(sortableDirEntries(entries))
|
||||
for _, entry := range entries {
|
||||
if entry.Name == "." || entry.Name == ".." {
|
||||
continue
|
||||
@ -102,3 +106,17 @@ func fsck(args *argContainer) {
|
||||
os.Exit(exitcodes.FsckErrors)
|
||||
}
|
||||
}
|
||||
|
||||
type sortableDirEntries []fuse.DirEntry
|
||||
|
||||
func (s sortableDirEntries) Len() int {
|
||||
return len(s)
|
||||
}
|
||||
|
||||
func (s sortableDirEntries) Swap(i, j int) {
|
||||
s[i], s[j] = s[j], s[i]
|
||||
}
|
||||
|
||||
func (s sortableDirEntries) Less(i, j int) bool {
|
||||
return strings.Compare(s[i].Name, s[j].Name) < 0
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user