diff --git a/mfer/manifest.go b/mfer/manifest.go index e1eda63..21730ab 100644 --- a/mfer/manifest.go +++ b/mfer/manifest.go @@ -156,22 +156,25 @@ func (m *manifest) addFile(p string, fi fs.FileInfo, sfsIndex int) error { if !m.scanOptions.IncludeDotfiles && pathIsHidden(p) { return nil } - if fi != nil && fi.IsDir() { + if fi == nil { + // fi should come from Walk; if nil, stat to get info + var err error + fi, err = m.sourceFS[sfsIndex].Stat(p) + if err != nil { + return err + } + } + if fi.IsDir() { // manifests contain only files, directories are implied. return nil } - // FIXME test if 'fi' is already result of stat - fileinfo, staterr := m.sourceFS[sfsIndex].Stat(p) - if staterr != nil { - return staterr - } cleanPath := p if cleanPath[0:1] == "/" { cleanPath = cleanPath[1:] } nf := &manifestFile{ path: cleanPath, - info: fileinfo, + info: fi, } m.files = append(m.files, nf) m.totalFileSize = m.totalFileSize + fi.Size()