diff --git a/files/serialfile.go b/files/serialfile.go index 77871d352..176038cde 100644 --- a/files/serialfile.go +++ b/files/serialfile.go @@ -3,6 +3,7 @@ package files import ( "errors" "fmt" + "io/fs" "os" "path/filepath" ) @@ -51,10 +52,18 @@ func NewSerialFileWithFilter(path string, filter *Filter, stat os.FileInfo) (Nod case mode.IsDir(): // for directories, stat all of the contents first, so we know what files to // open when Entries() is called - contents, err := os.ReadDir(path) + entries, err := os.ReadDir(path) if err != nil { return nil, err } + contents := make([]fs.FileInfo, 0, len(entries)) + for _, entry := range entries { + content, err := entry.Info() + if err != nil { + return nil, err + } + contents = append(contents, content) + } return &serialFile{path, contents, stat, filter}, nil case mode&os.ModeSymlink != 0: target, err := os.Readlink(path)