diff options
| author | Ophestra <cat@gensokyo.uk> | 2026-07-25 14:03:03 +0900 |
|---|---|---|
| committer | Ophestra <cat@gensokyo.uk> | 2026-07-25 14:03:34 +0900 |
| commit | e5abf51296fa1405c4a6314eafc1b97d247c5b60 (patch) | |
| tree | 8e54f3a684dd0b875756b3a4eca13cd79ab695f1 /internal/xz/dec_util.go | |
| parent | e26914cd6f86341daff4c3d7282d9a8cf8e4611a (diff) | |
internal/pkg: decompress xz streams
This uses a port of the public domain xz implementation.
Signed-off-by: Ophestra <cat@gensokyo.uk>
Diffstat (limited to 'internal/xz/dec_util.go')
| -rw-r--r-- | internal/xz/dec_util.go | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/internal/xz/dec_util.go b/internal/xz/dec_util.go new file mode 100644 index 00000000..c4227522 --- /dev/null +++ b/internal/xz/dec_util.go @@ -0,0 +1,52 @@ +/* + * XZ decompressor utility functions + * + * Author: Michael Cross <https://github.com/xi2> + * + * This file has been put into the public domain. + * You can do whatever you want with this file. + */ + +package xz + +func getLE32(buf []byte) uint32 { + return uint32(buf[0]) | + uint32(buf[1])<<8 | + uint32(buf[2])<<16 | + uint32(buf[3])<<24 +} + +func getBE32(buf []byte) uint32 { + return uint32(buf[0])<<24 | + uint32(buf[1])<<16 | + uint32(buf[2])<<8 | + uint32(buf[3]) +} + +func putLE32(val uint32, buf []byte) { + buf[0] = byte(val) + buf[1] = byte(val >> 8) + buf[2] = byte(val >> 16) + buf[3] = byte(val >> 24) + return +} + +func putBE32(val uint32, buf []byte) { + buf[0] = byte(val >> 24) + buf[1] = byte(val >> 16) + buf[2] = byte(val >> 8) + buf[3] = byte(val) + return +} + +func putLE64(val uint64, buf []byte) { + buf[0] = byte(val) + buf[1] = byte(val >> 8) + buf[2] = byte(val >> 16) + buf[3] = byte(val >> 24) + buf[4] = byte(val >> 32) + buf[5] = byte(val >> 40) + buf[6] = byte(val >> 48) + buf[7] = byte(val >> 56) + return +} |
