Help language development. Donate to The Perl Foundation
Archive::Libarchive::Raw - A simple interface to libarchive
use Archive::Libarchive::Raw; use Archive::Libarchive::Constants; sub MAIN(:$file! where { .IO.f // die "file '$file' not found" }) { my archive $a = archive_read_new(); archive_read_support_filter_all($a); archive_read_support_format_all($a); archive_read_open_filename($a, $file, 10240) == ARCHIVE_OK or die 'Unable to open archive'; my archive_entry $entry .= new; while archive_read_next_header($a, $entry) == ARCHIVE_OK { my $name = archive_entry_pathname($entry); say $name; archive_read_data_skip($a); } archive_read_free($a) == ARCHIVE_OK or die 'Unable to free internal data structure'; }
For more examples see the example directory.
Archive::Libarchive::Raw is a set of simple bindings to libarchive using NativeCall.
As the Libarchive site (http://www.libarchive.org/) states, its implementation is able to:
Read a variety of formats, including tar, pax, cpio, zip, xar, lha, ar, cab, mtree, rar, and ISO images.
Write tar, pax, cpio, zip, xar, ar, ISO, mtree, and shar archives.
Handle automatically archives compressed with gzip, bzip2, lzip, xz, lzma, or compress.
For more details on libarchive see https://github.com/libarchive/libarchive/wiki/ManualPages.
This module requires the libarchive library to be installed. Please follow the instructions below based on your platform:
sudo apt-get install libarchive13
The compiled version of the library can be downloaded here: https://www.libarchive.org/downloads/
$ zef install Archive::Libarchive::Raw
This module relies on a C library which might not be present in one's installation, so it's not a substitute for a pure Raku module.
This is a raw interface to the functions provided by the C library; any program that uses this module might need to use NativeCall. If you wish to use a higher level interface, please take a look at Archive::Libarchive.
Fernando Santagata
Many thanks to Curt Tilmes for implementing a bunch of calls to libarchive, and providing tests.
The Artistic License 2.0