MoonBit CAB, CHM, MSZIP, and LZX archive reader
Dependencies
let listing = @moonmspack.list(input)
println(listing.format)
for item in listing.entries { println(item.name) }let listing = @moonmspack.read_cab(cab_bytes)
for entry in listing.entries {
println(entry.name)
}///|
let listing = @moonmspack.read_cab(cab_bytes)
///|
let file = listing.entries[0]
///|
let content = @moonmspack.extract_cab_entry(cab_bytes, file, limits={
max_entries: 1000,
max_output: 16 * 1024 * 1024,
max_window: 32768,
})let listing = @moonmspack.read_chm_entries(chm_bytes)
for entry in listing.entries {
println(entry.name)
}pub suberror MspackError {
MspackError(String)
}pub struct ArchiveListing {
format : String
entries : Array[ArchiveEntry]
warnings : Array[String]
} derive(Show)fn HuffmanTable::decode(self : HuffmanTable, bits : BitReader) -> (BitReader, Int) raise MspackErrorfn chm_section(header : ChmHeader, index : Int, length : Int, limits? : Limits) -> ChmSection raise MspackErrorfn copy_range(data : Bytes, offset~ : Int, size~ : Int, limits? : Limits) -> Bytes raise MspackErrorfn decode_lzx_block(data : Bytes, window_bits~ : Int, expected~ : Int, limits? : Limits) -> Bytes raise MspackErrorfn decode_lzx_code_lengths(bits : BitReader, pretree : HuffmanTable, count : Int, previous? : Int) -> (BitReader, Array[Int]) raise MspackErrorfn decode_lzx_tree(bits : BitReader, pretree : HuffmanTable, symbols : Int) -> (BitReader, HuffmanTable) raise MspackErrorfn emit_lzx_tokens(window : LzxWindow, tokens : Array[LzxToken], limits? : Limits) -> Bytes raise MspackErrorfn extract_cab_entry(data : Bytes, entry : ArchiveEntry, limits? : Limits) -> Bytes raise MspackErrorfn extract_chm_entry(data : Bytes, header : ChmHeader, entry : ArchiveEntry, limits? : Limits) -> Bytes raise MspackErrorfn inspect_cab_blocks(data : Bytes, entry : ArchiveEntry, limits? : Limits) -> Array[CabBlock] raise MspackErrorfn list_chm_directory(data : Bytes, header : ChmHeader, directory : ChmDirectory, limits? : Limits) -> Array[ArchiveEntry] raise MspackErrorfn lzx_header_bytes() -> Intfn lzx_match_distance(slot : Int, footer : Int, recent0 : Int, recent1 : Int, recent2 : Int, window_bits : Int) -> Int raise MspackErrorfn lzx_token_from_symbols(main_symbol : Int, length_symbol : Int, distance : Int) -> LzxToken raise MspackErrorfn lzx_uses_aligned_tree(block_type : Int) -> Boolfn read_chm_section(data : Bytes, section : ChmSection, relative : Int, length : Int, limits? : Limits) -> Bytes raise MspackErrorfn validate_cab_entry_blocks(data : Bytes, entry : ArchiveEntry, limits? : Limits) -> Array[CabBlock] raise MspackErrorInstall
Download zipMoonBit CAB, CHM, MSZIP, and LZX archive reader
Dependencies