github.com/Cloud-Foundations/Dominator@v0.3.4/lib/filesystem/iterators.go (about) 1 package filesystem 2 3 import ( 4 "path" 5 ) 6 7 func (directory *DirectoryInode) forEachEntry(directoryName string, 8 fn func(name string, inodeNumber uint64, inode GenericInode) error) error { 9 for _, dirent := range directory.EntryList { 10 name := path.Join(directoryName, dirent.Name) 11 if err := fn(name, dirent.InodeNumber, dirent.inode); err != nil { 12 return err 13 } 14 if inode, ok := dirent.inode.(*DirectoryInode); ok { 15 if err := inode.forEachEntry(name, fn); err != nil { 16 return err 17 } 18 } 19 } 20 return nil 21 } 22 23 func (fs *FileSystem) forEachFile( 24 fn func(name string, inodeNumber uint64, inode GenericInode) error) error { 25 if err := fn("/", 0, &fs.DirectoryInode); err != nil { 26 return err 27 } 28 return fs.DirectoryInode.forEachEntry("/", fn) 29 }