mirror of
https://github.com/containers/podman.git
synced 2025-12-02 19:28:58 +08:00
Move to containers/image v5 and containers/buildah to v1.11.4. Replace an equality check with a type assertion when checking for a docker.ErrUnauthorizedForCredentials in `podman login`. Signed-off-by: Nalin Dahyabhai <nalin@redhat.com>
60 lines
1.4 KiB
Go
60 lines
1.4 KiB
Go
package compression
|
|
|
|
import (
|
|
"io"
|
|
|
|
"github.com/klauspost/compress/zstd"
|
|
)
|
|
|
|
type wrapperZstdDecoder struct {
|
|
decoder *zstd.Decoder
|
|
}
|
|
|
|
func (w *wrapperZstdDecoder) Close() error {
|
|
w.decoder.Close()
|
|
return nil
|
|
}
|
|
|
|
func (w *wrapperZstdDecoder) DecodeAll(input, dst []byte) ([]byte, error) {
|
|
return w.decoder.DecodeAll(input, dst)
|
|
}
|
|
|
|
func (w *wrapperZstdDecoder) Read(p []byte) (int, error) {
|
|
return w.decoder.Read(p)
|
|
}
|
|
|
|
func (w *wrapperZstdDecoder) Reset(r io.Reader) error {
|
|
return w.decoder.Reset(r)
|
|
}
|
|
|
|
func (w *wrapperZstdDecoder) WriteTo(wr io.Writer) (int64, error) {
|
|
return w.decoder.WriteTo(wr)
|
|
}
|
|
|
|
func zstdReader(buf io.Reader) (io.ReadCloser, error) {
|
|
decoder, err := zstd.NewReader(buf)
|
|
return &wrapperZstdDecoder{decoder: decoder}, err
|
|
}
|
|
|
|
func zstdWriter(dest io.Writer) (io.WriteCloser, error) {
|
|
return zstd.NewWriter(dest)
|
|
}
|
|
|
|
func zstdWriterWithLevel(dest io.Writer, level int) (io.WriteCloser, error) {
|
|
el := zstd.EncoderLevelFromZstd(level)
|
|
return zstd.NewWriter(dest, zstd.WithEncoderLevel(el))
|
|
}
|
|
|
|
// zstdCompressor is a CompressorFunc for the zstd compression algorithm.
|
|
func zstdCompressor(r io.Writer, level *int) (io.WriteCloser, error) {
|
|
if level == nil {
|
|
return zstdWriter(r)
|
|
}
|
|
return zstdWriterWithLevel(r, *level)
|
|
}
|
|
|
|
// ZstdDecompressor is a DecompressorFunc for the zstd compression algorithm.
|
|
func ZstdDecompressor(r io.Reader) (io.ReadCloser, error) {
|
|
return zstdReader(r)
|
|
}
|