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 <https://github.com/estebanlm/pharo-cig> I 
> am releasing a new pharo library binding. This time for `libarchive`, a 
> multi-format archive and compression library: pharo-archive 
> <https://github.com/estebanlm/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
> 
> &#8203;

Reply via email to