diff options
| author | Marin Ivanov <[email protected]> | 2024-03-29 00:57:19 +0200 |
|---|---|---|
| committer | Marin Ivanov <[email protected]> | 2024-03-29 00:57:19 +0200 |
| commit | 5f2bcbaf163ff096137cab84bafc7bd1e8301447 (patch) | |
| tree | 51a77d5bc7df10dd723525ac153b9120bc23d2e1 /reader.go | |
| parent | f1fdc384ae82da620d53c1660bf4969beed992e6 (diff) | |
works
Diffstat (limited to 'reader.go')
| -rw-r--r-- | reader.go | 26 |
1 files changed, 13 insertions, 13 deletions
@@ -54,10 +54,10 @@ type ReadCloser struct { // The file content can be accessed by calling Open. type File struct { FileHeader - zip *Reader - zipr io.ReaderAt - HeaderOffset int64 // includes overall ZIP archive baseOffset - zip64 bool // zip64 extended information extra field presence + zip *Reader + zipr io.ReaderAt + Offset int64 // includes overall ZIP archive baseOffset + zip64 bool // zip64 extended information extra field presence } // OpenReader will open the Zip file specified by name and return a ReadCloser. @@ -143,7 +143,7 @@ func (z *Reader) init(r io.ReaderAt, size int64) error { if err != nil { return err } - f.HeaderOffset += z.baseOffset + f.Offset += z.baseOffset z.File = append(z.File, f) } if uint16(len(z.File)) != uint16(end.DirectoryRecords) { // only compare 16 bits here @@ -187,7 +187,7 @@ func (f *File) DataOffset() (offset int64, err error) { if err != nil { return } - return f.HeaderOffset + bodyOffset, nil + return f.Offset + bodyOffset, nil } // Open returns a ReadCloser that provides access to the File's contents. @@ -198,7 +198,7 @@ func (f *File) Open() (io.ReadCloser, error) { return nil, err } size := int64(f.CompressedSize64) - r := io.NewSectionReader(f.zipr, f.HeaderOffset+bodyOffset, size) + r := io.NewSectionReader(f.zipr, f.Offset+bodyOffset, size) dcomp := f.zip.decompressor(f.Method) if dcomp == nil { return nil, ErrAlgorithm @@ -206,7 +206,7 @@ func (f *File) Open() (io.ReadCloser, error) { var rc io.ReadCloser = dcomp(r) var desr io.Reader if f.hasDataDescriptor() { - desr = io.NewSectionReader(f.zipr, f.HeaderOffset+bodyOffset+size, dataDescriptorLen) + desr = io.NewSectionReader(f.zipr, f.Offset+bodyOffset+size, dataDescriptorLen) } rc = &checksumReader{ rc: rc, @@ -224,7 +224,7 @@ func (f *File) OpenRaw() (io.Reader, error) { if err != nil { return nil, err } - r := io.NewSectionReader(f.zipr, f.HeaderOffset+bodyOffset, int64(f.CompressedSize64)) + r := io.NewSectionReader(f.zipr, f.Offset+bodyOffset, int64(f.CompressedSize64)) return r, nil } @@ -287,7 +287,7 @@ func (r *checksumReader) Close() error { return r.rc.Close() } // and returns the file body offset. func (f *File) findBodyOffset() (int64, error) { var buf [fileHeaderLen]byte - if _, err := f.zipr.ReadAt(buf[:], f.HeaderOffset); err != nil { + if _, err := f.zipr.ReadAt(buf[:], f.Offset); err != nil { return 0, err } b := readBuf(buf[:]) @@ -325,7 +325,7 @@ func readDirectoryHeader(f *File, r io.Reader) error { commentLen := int(b.uint16()) b = b[4:] // skipped start disk number and internal attributes (2x uint16) f.ExternalAttrs = b.uint32() - f.HeaderOffset = int64(b.uint32()) + f.Offset = int64(b.uint32()) d := make([]byte, filenameLen+extraLen+commentLen) if _, err := io.ReadFull(r, d); err != nil { return err @@ -354,7 +354,7 @@ func readDirectoryHeader(f *File, r io.Reader) error { needUSize := f.UncompressedSize == ^uint32(0) needCSize := f.CompressedSize == ^uint32(0) - needHeaderOffset := f.HeaderOffset == int64(^uint32(0)) + needHeaderOffset := f.Offset == int64(^uint32(0)) // Best effort to find what we need. // Other zip authors might not even follow the basic format, @@ -396,7 +396,7 @@ parseExtras: if len(fieldBuf) < 8 { return ErrFormat } - f.HeaderOffset = int64(fieldBuf.uint64()) + f.Offset = int64(fieldBuf.uint64()) } case ntfsExtraID: if len(fieldBuf) < 4 { |
