Skip to content
This repository was archived by the owner on Nov 19, 2024. It is now read-only.

Commit 07b70a6

Browse files
authored
gzip: expose gzip.Multistream (#407)
1 parent de08bfa commit 07b70a6

File tree

1 file changed

+15
-6
lines changed

1 file changed

+15
-6
lines changed

gz.go

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,10 @@ type Gz struct {
2020
// than no compression.
2121
CompressionLevel int
2222

23+
// DisableMultistream controls whether the reader supports multistream files.
24+
// See https://pkg.go.dev/compress/gzip#example-Reader.Multistream
25+
DisableMultistream bool
26+
2327
// Use a fast parallel Gzip implementation. This is only
2428
// effective for large streams (about 1 MB or greater).
2529
Multithreaded bool
@@ -65,14 +69,19 @@ func (gz Gz) OpenWriter(w io.Writer) (io.WriteCloser, error) {
6569
}
6670

6771
func (gz Gz) OpenReader(r io.Reader) (io.ReadCloser, error) {
68-
var rc io.ReadCloser
69-
var err error
7072
if gz.Multithreaded {
71-
rc, err = pgzip.NewReader(r)
72-
} else {
73-
rc, err = gzip.NewReader(r)
73+
gzR, err := pgzip.NewReader(r)
74+
if gzR != nil && gz.DisableMultistream {
75+
gzR.Multistream(false)
76+
}
77+
return gzR, err
78+
}
79+
80+
gzR, err := gzip.NewReader(r)
81+
if gzR != nil && gz.DisableMultistream {
82+
gzR.Multistream(false)
7483
}
75-
return rc, err
84+
return gzR, err
7685
}
7786

7887
// magic number at the beginning of gzip files

0 commit comments

Comments
 (0)