in internal/vfs/zip/archive.go [203:234]
func (a *zipArchive) Open(ctx context.Context, name string) (vfs.File, error) {
file := a.findFile(name)
if file == nil {
if a.findDirectory(name) != nil {
return nil, errNotFile
}
return nil, os.ErrNotExist
}
if !file.Mode().IsRegular() {
return nil, errNotFile
}
dataOffset, err := a.fs.dataOffsetCache.FindOrFetch(a.cacheNamespace, name, func() (interface{}, error) {
return file.DataOffset()
})
if err != nil {
return nil, err
}
// only read from dataOffset up to the size of the compressed file
reader := a.reader.SectionReader(ctx, dataOffset.(int64), int64(file.CompressedSize64)) //nolint:gosec
switch file.Method {
case zip.Deflate:
return newDeflateReader(reader), nil
case zip.Store:
return reader, nil
default:
return nil, fmt.Errorf("unsupported compression method: %x", file.Method)
}
}