These are really nice utility things we can leverage (and a great example of the utility of pharo-cig) - thanks for doing this and sharing the work!

On Sat, 5 Jul 2025, at 11:18 AM, Esteban Lorenzano via Pharo-users wrote:

Hi,

As part of my work with pharo-cig I am releasing a new pharo library binding. This time for libarchive, a multi-format archive and compression library: pharo-archive.

You can read and write any zip file:


"list contents of a file"
| fileRef arc archive paths entryHolder entry |

arc := LibArchive uniqueInstance.

fileRef := '/path/to/file.zip' asFileReference.
fileRef exists 
    ifFalse: [ self error: 'File ', fileRef fullName, ' not found.' ]. 

archive := arc read_new.
arc read_support_filter_all: archive.
arc read_support_format_all: archive.
arc 
    read_open_filenameArg1: archive 
    _filename: fileRef fullName 
    _block_size: 10240.

paths := OrderedCollection new.
entryHolder := ArchiveEntry newValueHolder.
[ (arc read_next_headerArg1: archive arg2: entryHolder) = 0 ] 
whileTrue: [ 
    entry := entryHolder value.
    paths add: (arc entry_pathname: entry). 
    arc read_data_skip: archive.
].

arc read_free: archive.

paths inspect

Esteban