github.com/Cloud-Foundations/Dominator@v0.3.4/lib/filesystem/untar/sort.go (about)

     1  package untar
     2  
     3  import (
     4  	"sort"
     5  
     6  	"github.com/Cloud-Foundations/Dominator/lib/filesystem"
     7  )
     8  
     9  type directoryEntryList []*filesystem.DirectoryEntry
    10  
    11  func sortDirectory(directory *filesystem.DirectoryInode) {
    12  	var entryList directoryEntryList
    13  	entryList = directory.EntryList
    14  	sort.Sort(entryList)
    15  	directory.EntryList = entryList
    16  	// Recurse through directories.
    17  	for _, dirent := range directory.EntryList {
    18  		if inode, ok := dirent.Inode().(*filesystem.DirectoryInode); ok {
    19  			sortDirectory(inode)
    20  		}
    21  	}
    22  }
    23  
    24  func (list directoryEntryList) Len() int {
    25  	return len(list)
    26  }
    27  
    28  func (list directoryEntryList) Less(left, right int) bool {
    29  	if list[left].Name < list[right].Name {
    30  		return true
    31  	}
    32  	return false
    33  }
    34  
    35  func (list directoryEntryList) Swap(left, right int) {
    36  	list[left], list[right] = list[right], list[left]
    37  }