35 lines
685 B
Go
35 lines
685 B
Go
//go:build !no_gpl && !no_obsolete
|
|
|
|
package decompress
|
|
|
|
import "errors"
|
|
|
|
// The types of compression supported by squashfs
|
|
const (
|
|
ZlibCompression = uint16(iota + 1)
|
|
LZMACompression
|
|
LZOCompression
|
|
XZCompression
|
|
LZ4Compression
|
|
ZSTDCompression
|
|
)
|
|
|
|
func GetDecompressor(compType uint16) (Decompressor, error) {
|
|
switch compType {
|
|
case ZlibCompression:
|
|
return Zlib{}, nil
|
|
case LZMACompression:
|
|
return Lzma{}, nil
|
|
case LZOCompression:
|
|
return Lzo{}, nil
|
|
case XZCompression:
|
|
return Xz{}, nil
|
|
case LZ4Compression:
|
|
return Lz4{}, nil
|
|
case ZSTDCompression:
|
|
return &Zstd{}, nil
|
|
default:
|
|
return nil, errors.New("invalid compression type. possible corrupted archive")
|
|
}
|
|
}
|