diff options
| author | Jakob Unterwurzacher | 2018-04-02 16:56:29 +0200 | 
|---|---|---|
| committer | Jakob Unterwurzacher | 2018-04-02 16:56:29 +0200 | 
| commit | e6caf56ea4ab10e747aa5dfc0a768cb8176ebe6a (patch) | |
| tree | 5b1859e86df71e2b6ddf0f210a96644667ef70b5 | |
| parent | f28d85fad599ffaef9a8e1f353911c81a6605d2f (diff) | |
fsck: sort files alphabetically
This makes fsck runs deterministic.
| -rw-r--r-- | fsck.go | 18 | 
1 files changed, 18 insertions, 0 deletions
| @@ -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 +} | 
