Files
squashfs/internal/decompress/zstd.go
T
2022-06-19 16:25:50 -05:00

32 lines
565 B
Go

package decompress
import (
"bytes"
"io"
"github.com/klauspost/compress/zstd"
)
type Zstd struct{}
func (z Zstd) Reader(src io.Reader) (io.ReadCloser, error) {
r, err := zstd.NewReader(src)
return r.IOReadCloser(), err
}
type ZstdDecodeAll struct {
rdr *zstd.Decoder
}
func (z *ZstdDecodeAll) Reader(src io.Reader) (io.ReadCloser, error) {
if z.rdr == nil {
z.rdr, _ = zstd.NewReader(nil)
}
data, err := io.ReadAll(src)
if err != nil {
return nil, err
}
out, err := z.rdr.DecodeAll(data, nil)
return io.NopCloser(bytes.NewReader(out)), err
}