From ffab6ad5e96d5c42c66e2e05cef99fada481617b Mon Sep 17 00:00:00 2001 From: Matt Drollette Date: Sat, 13 Dec 2014 13:58:26 -0600 Subject: [PATCH] walk netdb dir --- reseed/service.go | 44 ++++++++++++++++++++------------------------ 1 file changed, 20 insertions(+), 24 deletions(-) diff --git a/reseed/service.go b/reseed/service.go index 2da1609..a4ab05d 100644 --- a/reseed/service.go +++ b/reseed/service.go @@ -195,33 +195,29 @@ func NewLocalNetDb(path string) *LocalNetDbImpl { } func (db *LocalNetDbImpl) RouterInfos() (routerInfos []routerInfo, err error) { - var src []os.FileInfo - if src, err = ioutil.ReadDir(db.Path); nil != err { - return - } - - // randomize the file order - files := make([]os.FileInfo, len(src)) - perm := rand.Perm(len(src)) - for i, v := range perm { - files[v] = src[i] - } - r, _ := regexp.Compile("^routerInfo-[A-Za-z0-9-=~]+.dat$") - for _, file := range files { - if r.MatchString(file.Name()) { - riBytes, err := ioutil.ReadFile(filepath.Join(db.Path, file.Name())) - if nil != err { - log.Println(err) - continue - } - - routerInfos = append(routerInfos, routerInfo{ - Name: file.Name(), - Data: riBytes, - }) + files := make(map[string]os.FileInfo) + walkpath := func(path string, f os.FileInfo, err error) error { + if r.MatchString(f.Name()) { + files[path] = f } + return nil + } + + filepath.Walk(db.Path, walkpath) + + for path, file := range files { + riBytes, err := ioutil.ReadFile(path) + if nil != err { + log.Println(err) + continue + } + + routerInfos = append(routerInfos, routerInfo{ + Name: file.Name(), + Data: riBytes, + }) } return