mountlib: make directory entries be returned in sorted order
This commit is contained in:
parent
ca19fd2d7e
commit
6da6b2556b
2 changed files with 12 additions and 2 deletions
|
@ -3,6 +3,7 @@ package mountlib
|
|||
import (
|
||||
"os"
|
||||
"path"
|
||||
"sort"
|
||||
"strings"
|
||||
"sync"
|
||||
"time"
|
||||
|
@ -288,8 +289,8 @@ func (d *Dir) Lookup(name string) (node Node, err error) {
|
|||
return node, nil
|
||||
}
|
||||
|
||||
// ReadDirAll reads the contents of the directory
|
||||
func (d *Dir) ReadDirAll() (items []Node, err error) {
|
||||
// ReadDirAll reads the contents of the directory sorted
|
||||
func (d *Dir) ReadDirAll() (items Nodes, err error) {
|
||||
// fs.Debugf(d.path, "Dir.ReadDirAll")
|
||||
d.mu.Lock()
|
||||
defer d.mu.Unlock()
|
||||
|
@ -301,6 +302,7 @@ func (d *Dir) ReadDirAll() (items []Node, err error) {
|
|||
for _, item := range d.items {
|
||||
items = append(items, item)
|
||||
}
|
||||
sort.Sort(items)
|
||||
// fs.Debugf(d.path, "Dir.ReadDirAll OK with %d entries", len(items))
|
||||
return items, nil
|
||||
}
|
||||
|
|
|
@ -27,6 +27,14 @@ var (
|
|||
_ Node = (*Dir)(nil)
|
||||
)
|
||||
|
||||
// Nodes is a slice of Node
|
||||
type Nodes []Node
|
||||
|
||||
// Sort functions
|
||||
func (ns Nodes) Len() int { return len(ns) }
|
||||
func (ns Nodes) Swap(i, j int) { ns[i], ns[j] = ns[j], ns[i] }
|
||||
func (ns Nodes) Less(i, j int) bool { return ns[i].DirEntry().Remote() < ns[j].DirEntry().Remote() }
|
||||
|
||||
// Noder represents something which can return a node
|
||||
type Noder interface {
|
||||
fmt.Stringer
|
||||
|
|
Loading…
Reference in a new issue