Archive-Libarchive
view release on metacpan or search on metacpan
lib/Archive/Libarchive.pm view on Meta::CPAN
package Archive::Libarchive;
use strict;
use warnings;
use 5.020;
use experimental qw( signatures );
use Archive::Libarchive::Lib;
use Archive::Libarchive::ArchiveRead;
use Archive::Libarchive::ArchiveWrite;
use Archive::Libarchive::Match;
use Archive::Libarchive::DiskRead;
use Archive::Libarchive::DiskWrite;
use Archive::Libarchive::Entry;
use Archive::Libarchive::EntryLinkResolver;
use parent qw( Exporter );
# ABSTRACT: Modern Perl bindings to libarchive
our $VERSION = '0.10'; # VERSION
my $ffi = Archive::Libarchive::Lib->ffi;
$ffi->mangler(undef);
$ffi->attach( archive_bzlib_version => [] => 'string' );
$ffi->attach( archive_liblz4_version => [] => 'string' );
$ffi->attach( archive_liblzma_version => [] => 'string' );
$ffi->attach( archive_version_details => [] => 'string' );
$ffi->attach( archive_version_number => [] => 'int' );
$ffi->attach( archive_version_string => [] => 'string' );
$ffi->attach( archive_zlib_version => [] => 'string' );
$ffi->ignore_not_found(1);
$ffi->attach( archive_cng_version => [] => 'string' );
$ffi->attach( archive_commoncrypto_version => [] => 'string' );
$ffi->attach( archive_libacl_version => [] => 'string' );
$ffi->attach( archive_libattr_version => [] => 'string' );
$ffi->attach( archive_libbsdxml_version => [] => 'string' );
$ffi->attach( archive_libexpat_version => [] => 'string' );
$ffi->attach( archive_libiconv_version => [] => 'string' );
$ffi->attach( archive_liblzo2_version => [] => 'string' );
$ffi->attach( archive_libmd_version => [] => 'string' );
$ffi->attach( archive_libpcre2_version => [] => 'string' );
$ffi->attach( archive_libpcre_version => [] => 'string' );
$ffi->attach( archive_librichacl_version => [] => 'string' );
$ffi->attach( archive_libxml2_version => [] => 'string' );
$ffi->attach( archive_mbedtls_version => [] => 'string' );
$ffi->attach( archive_nettle_version => [] => 'string' );
$ffi->attach( archive_openssl_version => [] => 'string' );
$ffi->attach( archive_libzstd_version => [] => 'string' );
$ffi->attach( archive_wincrypt_version => [] => 'string' );
$ffi->ignore_not_found(0);
sub versions ($class)
{
my %v = (
perl => $],
);
foreach my $symbol (keys %Archive::Libarchive::)
{
next if $symbol eq 'archive_version_number';
if($symbol =~ /^archive_(.*)_version\z/)
{
my $name = $1;
my $version = __PACKAGE__->$symbol;
$v{$name} = $version // 'undef';
}
}
foreach my $mod (qw( FFI::Platypus Archive::Libarchive FFI::CheckLib Alien::Libarchive3 ))
{
my $version = $mod->VERSION;
$v{$mod} = $version if defined $version;
}
%v;
}
require Archive::Libarchive::Lib::Constants unless $Archive::Libarchive::no_gen;
our @EXPORT_OK = grep /^(archive|ARCHIVE|AE)_/, keys %Archive::Libarchive::;
our %EXPORT_TAGS = (
all => \@EXPORT_OK,
const => [grep /^(ARCHIVE|AE)_/, @EXPORT_OK],
func => [grep /^archive_/, @EXPORT_OK],
);
1;
__END__
=pod
=encoding UTF-8
=head1 NAME
Archive::Libarchive - Modern Perl bindings to libarchive
=head1 VERSION
version 0.10
=head1 SYNOPSIS
use 5.020;
use Archive::Libarchive qw( :const );
my $r = Archive::Libarchive::ArchiveRead->new;
( run in 2.052 seconds using v1.01-cache-2.11-cpan-302cb4679cc )