Listing Contents Guide
Concepts
Listing shows archive contents, file sizes, and metadata without extraction. Useful for inspecting archives before processing.
By Format
CAB files
# Basic listing
cabriolet list archive.cab
# Verbose with details
cabriolet list --verbose archive.cab
# Get detailed info
cabriolet info archive.cabRuby API:
decompressor = Cabriolet::CAB::Decompressor.new
cabinet = decompressor.open('archive.cab')
cabinet.files.each do |file|
puts "#{file.filename} (#{file.length} bytes)"
endCHM files
cabriolet chm-list help.chm
cabriolet chm-info help.chmRuby API:
decompressor = Cabriolet::CHM::Decompressor.new
chm = decompressor.open('help.chm')
chm.all_files.each do |file|
section = file.section.id == 0 ? "Uncompressed" : "Compressed"
puts "#{file.filename} (#{file.length} bytes, #{section})"
endSZDD files
cabriolet szdd-info file.tx_Ruby API:
decompressor = Cabriolet::SZDD::Decompressor.new
header = decompressor.open('file.tx_')
puts "Format: #{header.format}"
puts "Size: #{header.length} bytes"
puts "Missing char: '#{header.missing_char}'"KWAJ Files
cabriolet kwaj-info setup.kwjRuby API:
decompressor = Cabriolet::KWAJ::Decompressor.new
header = decompressor.open('setup.kwj')
puts "Compression: #{header.compression_name}"
puts "Size: #{header.length || 'unknown'} bytes"
puts "Filename: #{header.filename}" if header.filenameHLP Files
cabriolet hlp-info help.hlpRuby API:
decompressor = Cabriolet::HLP::Decompressor.new
header = decompressor.open('help.hlp')
header.files.each do |file|
compression = file.compressed? ? "LZSS" : "none"
puts "#{file.filename}: #{file.length} bytes (#{compression})"
endLIT Files
cabriolet lit-info book.litRuby API:
decompressor = Cabriolet::LIT::Decompressor.new
header = decompressor.open('book.lit')
puts "Encrypted: #{header.encrypted?}"
puts "Files: #{header.files.size}"
header.files.each do |file|
puts " #{file.filename} (#{file.length} bytes)"
endOAB Files
cabriolet oab-info full.oabRuby API:
# Check if full or patch
io_system = Cabriolet::System::IOSystem.new
handle = io_system.open('file.oab', Cabriolet::Constants::MODE_READ)
header_data = io_system.read(handle, 16)
full_header = Cabriolet::Binary::OABStructures::FullHeader.read(header_data)
if full_header.valid?
puts "Type: Full OAB"
puts "Target size: #{full_header.target_size} bytes"
end