diff options
| author | 2026-03-05 17:36:48 +0800 | |
|---|---|---|
| committer | 2026-03-05 18:38:29 +0800 | |
| commit | beabb6085d42cbb961e3a5dc217fdd840fee4b0d (patch) | |
| tree | 64ea334e74925284228254631bd4e8bea89001d2 /internal/zlib/reader_reset.go | |
| parent | internal/zlib: Unexport Reset (diff) | |
| signature | No signature | |
internal/compress: Import flate and such from klauspost/compress
Diffstat (limited to 'internal/zlib/reader_reset.go')
| -rw-r--r-- | internal/zlib/reader_reset.go | 91 |
1 files changed, 0 insertions, 91 deletions
diff --git a/internal/zlib/reader_reset.go b/internal/zlib/reader_reset.go deleted file mode 100644 index 4d9d4471..00000000 --- a/internal/zlib/reader_reset.go +++ /dev/null @@ -1,91 +0,0 @@ -// Copyright 2009 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package zlib - -import ( - "bufio" - "encoding/binary" - "errors" - "io" - - "codeberg.org/lindenii/furgit/internal/adler32" - - "github.com/klauspost/compress/flate" -) - -// reset resets receiver to read a new zlib stream. -func (z *Reader) reset(r io.Reader, dict []byte) error { - *z = Reader{decompressor: z.decompressor} - var input flate.Reader - if fr, ok := r.(flate.Reader); ok { - input = fr - } else { - input = bufio.NewReader(r) - } - z.counter = &countingFlateReader{inner: input} - z.r = z.counter - - // Read the header (RFC 1950 section 2.2.). - _, z.err = io.ReadFull(z.r, z.scratch[0:2]) - if z.err != nil { - if errors.Is(z.err, io.EOF) { - z.err = io.ErrUnexpectedEOF - } - - return z.err - } - - h := binary.BigEndian.Uint16(z.scratch[:2]) - if (z.scratch[0]&0x0f != zlibDeflate) || (z.scratch[0]>>4 > zlibMaxWindow) || (h%31 != 0) { - z.err = ErrHeader - - return z.err - } - - haveDict := z.scratch[1]&0x20 != 0 - if haveDict { - _, z.err = io.ReadFull(z.r, z.scratch[0:4]) - if z.err != nil { - if errors.Is(z.err, io.EOF) { - z.err = io.ErrUnexpectedEOF - } - - return z.err - } - - checksum := binary.BigEndian.Uint32(z.scratch[:4]) - if checksum != adler32.Checksum(dict) { - z.err = ErrDictionary - - return z.err - } - } - - if z.decompressor != nil { - resetter, ok := z.decompressor.(flate.Resetter) - if !ok { - panic("zlib: pooled decompressor does not implement flate.Resetter") - } - - z.err = resetter.Reset(z.r, dict) - if z.err != nil { - return z.err - } - - z.digest = adler32.New() - - return nil - } - - if haveDict { - z.decompressor = flate.NewReaderDict(z.r, dict) - } else { - z.decompressor = flate.NewReader(z.r) - } - - z.digest = adler32.New() - - return nil -} |
