txt: ## dist_cpan-FRITH-Archive-Libarchive-Raw.md
  ## Archive::Libarchive::Raw
  
  Archive::Libarchive::Raw - Raw interface to libarchive using NativeCall.
  
  ## Build Status
  
  [![Actions Status](https://github.com/frithnanth/perl6-Archive-Libarchive-Raw/workflows/test/badge.svg)](https://github.com/frithnanth/perl6-Archive-Libarchive-Raw/actions)
  
  ## Example
  
  ```
  use v6;
  
  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.
  
  ## Description
  
  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> .
  
  ## Prerequisites
  
  This module requires the libarchive library to be installed. Please follow the
  instructions below based on your platform:
  
  ### Debian Linux
  
  ```
  sudo apt-get install libarchive13
  
  ```
  
  ## Installation
  
  ```
  $ zef install Archive::Libarchive::Raw
  
  ```
  
  ## Testing
  
  To run the tests:
  
  ```
  $ prove -e "raku -Ilib"
  
  ```
  
  ## Note
  
  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.
  
  ## Author
  
  Fernando Santagata
  
  ## Contributions
  
  Many thanks to Jonathan Worthington for the Windows installer code.
  Many thanks to Curt Tilmes for implementing a bunch of calls to libarchive, and providing tests.
  
  ## Copyright and license
  
  The Artistic License 2.0
  