15 func walker(sink chan Ent, root []string) error {
16 files, err := os.ReadDir(path.Join(root...)) // it is already sorted
21 ents := make([]Ent, 0, len(files))
22 for _, file := range files {
23 ent := Ent{name: append([]string{}, append(root, file.Name())...)}
24 info, err = file.Info()
27 ent.name[len(ent.name)-1] += "/"
28 } else if info.Mode().IsRegular() {
29 ent.size = info.Size()
31 ent.mtime = info.ModTime().Unix()
33 log.Println("can not stat:", path.Join(ent.name...), ":", err)
35 ents = append(ents, ent)
37 for _, ent := range ents {
45 err = walker(sink, ent.name)
47 log.Println("can not stat:", path.Join(ent.name...), ":", err)