mirror of
https://github.com/blacktop/ipsw.git
synced 2026-06-07 12:27:36 +00:00
44 lines
1.2 KiB
Go
44 lines
1.2 KiB
Go
//go:build !darwin
|
|
|
|
package comp
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/blacktop/lzfse-cgo"
|
|
)
|
|
|
|
// compress compresses the given data using the specified algorithm.
|
|
func compress(data []byte, algorithm Algorithm) ([]byte, error) {
|
|
if len(data) == 0 {
|
|
return nil, fmt.Errorf("input data is empty")
|
|
}
|
|
|
|
// Fallback to lzfse-cgo for LZFSE on other platforms
|
|
if algorithm == LZFSE || algorithm == LZFSE_IBOOT {
|
|
compressedData := lzfse.EncodeBuffer(data)
|
|
if len(compressedData) == 0 {
|
|
return nil, fmt.Errorf("failed to LZFSE compress data")
|
|
}
|
|
return compressedData, nil
|
|
}
|
|
return nil, fmt.Errorf("compression algorithm not supported on this platform")
|
|
}
|
|
|
|
// decompress decompresses the given data using the specified algorithm.
|
|
func decompress(data []byte, algorithm Algorithm) ([]byte, error) {
|
|
if len(data) == 0 {
|
|
return nil, fmt.Errorf("input data is empty")
|
|
}
|
|
|
|
// Fallback to lzfse-cgo for LZFSE on other platforms
|
|
if algorithm == LZFSE || algorithm == LZFSE_IBOOT {
|
|
decompressedData := lzfse.DecodeBuffer(data)
|
|
if len(decompressedData) == 0 {
|
|
return nil, fmt.Errorf("failed to LZFSE decompress data")
|
|
}
|
|
return decompressedData, nil
|
|
}
|
|
return nil, fmt.Errorf("decompression algorithm not supported on this platform")
|
|
}
|