mirror of
https://git.proxmox.com/git/libarchive-perl
synced 2025-10-04 23:25:50 +00:00
import from svn://proxdev/server/svn//libarchive-perl/pmg3
This commit is contained in:
commit
918a6904d6
15
LibArchive/Changes
Normal file
15
LibArchive/Changes
Normal file
@ -0,0 +1,15 @@
|
||||
Revision history for Perl extension LibArchive.
|
||||
|
||||
2.2.4 Wed Jul 18 10:50:00 CEST 2007
|
||||
- code cleanup
|
||||
|
||||
- pumped version number
|
||||
|
||||
- only export read interface
|
||||
|
||||
- bug fixes
|
||||
|
||||
0.01 Fri Jul 13 12:41:39 2007
|
||||
- original version; created by h2xs 1.23 with options
|
||||
|
||||
|
247
LibArchive/LibArchive.xs
Normal file
247
LibArchive/LibArchive.xs
Normal file
@ -0,0 +1,247 @@
|
||||
#include "EXTERN.h"
|
||||
#include "perl.h"
|
||||
#include "XSUB.h"
|
||||
|
||||
#include "ppport.h"
|
||||
|
||||
#include <archive.h>
|
||||
#include <archive_entry.h>
|
||||
|
||||
#include "const-c.inc"
|
||||
|
||||
MODULE = LibArchive PACKAGE = LibArchive
|
||||
|
||||
INCLUDE: const-xs.inc
|
||||
|
||||
int
|
||||
archive_api_feature()
|
||||
|
||||
int
|
||||
archive_api_version()
|
||||
|
||||
void
|
||||
archive_clear_error(arg0)
|
||||
struct archive * arg0
|
||||
|
||||
int
|
||||
archive_compression(arg0)
|
||||
struct archive * arg0
|
||||
|
||||
const char *
|
||||
archive_compression_name(arg0)
|
||||
struct archive * arg0
|
||||
|
||||
int
|
||||
archive_errno(arg0)
|
||||
struct archive * arg0
|
||||
|
||||
const char *
|
||||
archive_error_string(arg0)
|
||||
struct archive * arg0
|
||||
|
||||
int
|
||||
archive_format(arg0)
|
||||
struct archive * arg0
|
||||
|
||||
int
|
||||
archive_read_close(arg0)
|
||||
struct archive * arg0
|
||||
|
||||
ssize_t
|
||||
archive_read_data(arg0, buffer, nbytes)
|
||||
PREINIT:
|
||||
SV *sv_buffer = SvROK(ST(1)) ? SvRV(ST(1)) : ST(1);
|
||||
INPUT:
|
||||
struct archive * arg0
|
||||
size_t nbytes
|
||||
char * buffer = sv_grow( sv_buffer, nbytes+1 );
|
||||
CLEANUP:
|
||||
if (RETVAL >= 0) {
|
||||
SvCUR_set(sv_buffer, RETVAL);
|
||||
SvPOK_only(sv_buffer);
|
||||
*SvEND(sv_buffer) = '\0';
|
||||
SvTAINTED_on(sv_buffer);
|
||||
}
|
||||
|
||||
int
|
||||
archive_read_data_skip(arg0)
|
||||
struct archive * arg0
|
||||
|
||||
int
|
||||
archive_read_extract(arg0, arg1, flags)
|
||||
struct archive * arg0
|
||||
struct archive_entry * arg1
|
||||
int flags
|
||||
|
||||
int
|
||||
archive_read_finish(arg0)
|
||||
struct archive * arg0
|
||||
|
||||
struct archive *
|
||||
archive_read_new()
|
||||
|
||||
int
|
||||
archive_read_next_header(arg0, entry)
|
||||
struct archive * arg0
|
||||
struct archive_entry *entry = NO_INIT
|
||||
CODE:
|
||||
RETVAL = archive_read_next_header (arg0, &entry);
|
||||
OUTPUT:
|
||||
entry
|
||||
RETVAL
|
||||
|
||||
|
||||
int
|
||||
archive_read_open_FILE(arg0, _file)
|
||||
struct archive * arg0
|
||||
FILE * _file
|
||||
|
||||
int
|
||||
archive_read_open_fd(arg0, _fd, _block_size)
|
||||
struct archive * arg0
|
||||
int _fd
|
||||
size_t _block_size
|
||||
|
||||
int
|
||||
archive_read_open_file(arg0, _filename, _block_size)
|
||||
struct archive * arg0
|
||||
const char * _filename
|
||||
size_t _block_size
|
||||
|
||||
int
|
||||
archive_read_open_filename(arg0, _filename, _block_size)
|
||||
struct archive * arg0
|
||||
const char * _filename
|
||||
size_t _block_size
|
||||
|
||||
int
|
||||
archive_read_support_compression_all(arg0)
|
||||
struct archive * arg0
|
||||
|
||||
int
|
||||
archive_read_support_compression_bzip2(arg0)
|
||||
struct archive * arg0
|
||||
|
||||
int
|
||||
archive_read_support_compression_compress(arg0)
|
||||
struct archive * arg0
|
||||
|
||||
int
|
||||
archive_read_support_compression_gzip(arg0)
|
||||
struct archive * arg0
|
||||
|
||||
int
|
||||
archive_read_support_compression_none(arg0)
|
||||
struct archive * arg0
|
||||
|
||||
int
|
||||
archive_read_support_compression_program(arg0, command)
|
||||
struct archive * arg0
|
||||
const char * command
|
||||
|
||||
int
|
||||
archive_read_support_format_all(arg0)
|
||||
struct archive * arg0
|
||||
|
||||
int
|
||||
archive_read_support_format_ar(arg0)
|
||||
struct archive * arg0
|
||||
|
||||
int
|
||||
archive_read_support_format_cpio(arg0)
|
||||
struct archive * arg0
|
||||
|
||||
int
|
||||
archive_read_support_format_empty(arg0)
|
||||
struct archive * arg0
|
||||
|
||||
int
|
||||
archive_read_support_format_gnutar(arg0)
|
||||
struct archive * arg0
|
||||
|
||||
int
|
||||
archive_read_support_format_iso9660(arg0)
|
||||
struct archive * arg0
|
||||
|
||||
int
|
||||
archive_read_support_format_tar(arg0)
|
||||
struct archive * arg0
|
||||
|
||||
int
|
||||
archive_read_support_format_zip(arg0)
|
||||
struct archive * arg0
|
||||
|
||||
|
||||
const char *
|
||||
archive_version()
|
||||
|
||||
int
|
||||
archive_version_stamp()
|
||||
|
||||
time_t
|
||||
archive_entry_atime(arg0)
|
||||
struct archive_entry * arg0
|
||||
|
||||
long
|
||||
archive_entry_atime_nsec(arg0)
|
||||
struct archive_entry * arg0
|
||||
|
||||
time_t
|
||||
archive_entry_ctime(arg0)
|
||||
struct archive_entry * arg0
|
||||
|
||||
long
|
||||
archive_entry_ctime_nsec(arg0)
|
||||
struct archive_entry * arg0
|
||||
|
||||
mode_t
|
||||
archive_entry_mode(arg0)
|
||||
struct archive_entry * arg0
|
||||
|
||||
const char *
|
||||
archive_entry_gname(arg0)
|
||||
struct archive_entry * arg0
|
||||
|
||||
const char *
|
||||
archive_entry_hardlink(arg0)
|
||||
struct archive_entry * arg0
|
||||
|
||||
time_t
|
||||
archive_entry_mtime(arg0)
|
||||
struct archive_entry * arg0
|
||||
|
||||
long
|
||||
archive_entry_mtime_nsec(arg0)
|
||||
struct archive_entry * arg0
|
||||
|
||||
unsigned int
|
||||
archive_entry_nlink(arg0)
|
||||
struct archive_entry * arg0
|
||||
|
||||
const char *
|
||||
archive_entry_pathname(arg0)
|
||||
struct archive_entry * arg0
|
||||
|
||||
long
|
||||
archive_entry_size(arg0)
|
||||
struct archive_entry * arg0
|
||||
CODE:
|
||||
int64_t lsize;
|
||||
long res;
|
||||
lsize = archive_entry_size (arg0);
|
||||
if (lsize > LONG_MAX || lsize < LONG_MIN) {
|
||||
Perl_croak(aTHX_ "archive entry too large");
|
||||
}
|
||||
RETVAL = res = lsize;
|
||||
OUTPUT:
|
||||
RETVAL
|
||||
|
||||
const char *
|
||||
archive_entry_symlink(arg0)
|
||||
struct archive_entry * arg0
|
||||
|
||||
const char *
|
||||
archive_entry_uname(arg0)
|
||||
struct archive_entry * arg0
|
||||
|
||||
|
9
LibArchive/MANIFEST
Normal file
9
LibArchive/MANIFEST
Normal file
@ -0,0 +1,9 @@
|
||||
Changes
|
||||
LibArchive.xs
|
||||
Makefile.PL
|
||||
MANIFEST
|
||||
ppport.h
|
||||
README
|
||||
typemap
|
||||
t/LibArchive.t
|
||||
lib/LibArchive.pm
|
55
LibArchive/Makefile.PL
Normal file
55
LibArchive/Makefile.PL
Normal file
@ -0,0 +1,55 @@
|
||||
use 5.008008;
|
||||
use ExtUtils::MakeMaker;
|
||||
use ExtUtils::Constant;
|
||||
|
||||
# See lib/ExtUtils/MakeMaker.pm for details of how to influence
|
||||
# the contents of the Makefile that is written.
|
||||
WriteMakefile(
|
||||
NAME => 'LibArchive',
|
||||
PREFIX => '/usr',
|
||||
VERSION_FROM => 'lib/LibArchive.pm', # finds $VERSION
|
||||
PREREQ_PM => {}, # e.g., Module::Name => 1.1
|
||||
($] >= 5.005 ? ## Add these new keywords supported since 5.005
|
||||
(ABSTRACT_FROM => 'lib/LibArchive.pm', # retrieve abstract from module
|
||||
AUTHOR => 'Proxmox Support Team <support@proxmox.com>') : ()),
|
||||
LIBS => ['-larchive'], # e.g., '-lm'
|
||||
DEFINE => '', # e.g., '-DHAVE_SOMETHING'
|
||||
INC => '-I.', # e.g., '-I. -I/usr/include/other'
|
||||
# Un-comment this if you add C files to link with later:
|
||||
# OBJECT => '$(O_FILES)', # link all the C files too
|
||||
);
|
||||
|
||||
|
||||
my @names = (qw(ARCHIVE_API_FEATURE ARCHIVE_API_VERSION
|
||||
ARCHIVE_BYTES_PER_RECORD ARCHIVE_COMPRESSION_BZIP2
|
||||
ARCHIVE_COMPRESSION_COMPRESS ARCHIVE_COMPRESSION_GZIP
|
||||
ARCHIVE_COMPRESSION_NONE ARCHIVE_COMPRESSION_PROGRAM
|
||||
ARCHIVE_DEFAULT_BYTES_PER_BLOCK ARCHIVE_EOF
|
||||
ARCHIVE_EXTRACT_ACL ARCHIVE_EXTRACT_FFLAGS
|
||||
ARCHIVE_EXTRACT_NO_AUTODIR ARCHIVE_EXTRACT_NO_OVERWRITE
|
||||
ARCHIVE_EXTRACT_NO_OVERWRITE_NEWER ARCHIVE_EXTRACT_OWNER
|
||||
ARCHIVE_EXTRACT_PERM ARCHIVE_EXTRACT_SECURE_NODOTDOT
|
||||
ARCHIVE_EXTRACT_SECURE_SYMLINKS ARCHIVE_EXTRACT_TIME
|
||||
ARCHIVE_EXTRACT_UNLINK ARCHIVE_EXTRACT_XATTR ARCHIVE_FAILED
|
||||
ARCHIVE_FATAL ARCHIVE_FORMAT_AR ARCHIVE_FORMAT_AR_BSD
|
||||
ARCHIVE_FORMAT_AR_GNU ARCHIVE_FORMAT_BASE_MASK
|
||||
ARCHIVE_FORMAT_CPIO ARCHIVE_FORMAT_CPIO_BIN_BE
|
||||
ARCHIVE_FORMAT_CPIO_BIN_LE ARCHIVE_FORMAT_CPIO_POSIX
|
||||
ARCHIVE_FORMAT_CPIO_SVR4_CRC ARCHIVE_FORMAT_CPIO_SVR4_NOCRC
|
||||
ARCHIVE_FORMAT_EMPTY ARCHIVE_FORMAT_ISO9660
|
||||
ARCHIVE_FORMAT_ISO9660_ROCKRIDGE ARCHIVE_FORMAT_SHAR
|
||||
ARCHIVE_FORMAT_SHAR_BASE ARCHIVE_FORMAT_SHAR_DUMP
|
||||
ARCHIVE_FORMAT_TAR ARCHIVE_FORMAT_TAR_GNUTAR
|
||||
ARCHIVE_FORMAT_TAR_PAX_INTERCHANGE
|
||||
ARCHIVE_FORMAT_TAR_PAX_RESTRICTED ARCHIVE_FORMAT_TAR_USTAR
|
||||
ARCHIVE_FORMAT_ZIP ARCHIVE_OK ARCHIVE_RETRY
|
||||
ARCHIVE_VERSION_STAMP ARCHIVE_WARN));
|
||||
|
||||
ExtUtils::Constant::WriteConstants(
|
||||
NAME => 'LibArchive',
|
||||
NAMES => \@names,
|
||||
DEFAULT_TYPE => 'IV',
|
||||
C_FILE => 'const-c.inc',
|
||||
XS_FILE => 'const-xs.inc',
|
||||
);
|
||||
|
54
LibArchive/README
Normal file
54
LibArchive/README
Normal file
@ -0,0 +1,54 @@
|
||||
LibArchive
|
||||
==========
|
||||
|
||||
LibArchive provides perl binding for libarchive (read interface only)
|
||||
|
||||
INSTALLATION
|
||||
|
||||
To install this module type the following:
|
||||
|
||||
perl Makefile.PL
|
||||
make
|
||||
make test
|
||||
make install
|
||||
|
||||
DEPENDENCIES
|
||||
|
||||
This module requires these other modules and libraries:
|
||||
|
||||
libarchive version 2.2.4
|
||||
|
||||
COPYRIGHT AND LICENCE
|
||||
|
||||
Copyright (C) 2007 by Dietmar Maurer <dietmar@proxmox.com>
|
||||
|
||||
This library (perl bindings) is free software; you can redistribute it
|
||||
and/or modify it under the same terms as Perl itself, either Perl
|
||||
version 5.8.8 or, at your option, any later version of Perl 5 you may
|
||||
have available.
|
||||
|
||||
The librachive code has the following Copyright
|
||||
|
||||
Copyright (c) 2003-2006 Tim Kientzle
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions
|
||||
are met:
|
||||
1. Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer
|
||||
in this position and unchanged.
|
||||
2. Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR
|
||||
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||||
IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
||||
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
358
LibArchive/lib/LibArchive.pm
Normal file
358
LibArchive/lib/LibArchive.pm
Normal file
@ -0,0 +1,358 @@
|
||||
package LibArchive;
|
||||
|
||||
use 5.008008;
|
||||
use strict;
|
||||
use warnings;
|
||||
use Carp;
|
||||
|
||||
require Exporter;
|
||||
use AutoLoader;
|
||||
|
||||
our @ISA = qw(Exporter);
|
||||
|
||||
# Items to export into callers namespace by default. Note: do not export
|
||||
# names by default without a very good reason. Use EXPORT_OK instead.
|
||||
# Do not simply export all your public functions/methods/constants.
|
||||
|
||||
# This allows declaration use LibArchive ':all';
|
||||
# If you do not need this, moving things directly into @EXPORT or @EXPORT_OK
|
||||
# will save memory.
|
||||
our %EXPORT_TAGS = ( 'all' => [ qw(
|
||||
AE_IFBLK
|
||||
AE_IFCHR
|
||||
AE_IFDIR
|
||||
AE_IFIFO
|
||||
AE_IFLNK
|
||||
AE_IFMT
|
||||
AE_IFREG
|
||||
ARCHIVE_API_FEATURE
|
||||
ARCHIVE_API_VERSION
|
||||
ARCHIVE_BYTES_PER_RECORD
|
||||
ARCHIVE_COMPRESSION_BZIP2
|
||||
ARCHIVE_COMPRESSION_COMPRESS
|
||||
ARCHIVE_COMPRESSION_GZIP
|
||||
ARCHIVE_COMPRESSION_NONE
|
||||
ARCHIVE_COMPRESSION_PROGRAM
|
||||
ARCHIVE_DEFAULT_BYTES_PER_BLOCK
|
||||
ARCHIVE_EOF
|
||||
ARCHIVE_EXTRACT_ACL
|
||||
ARCHIVE_EXTRACT_FFLAGS
|
||||
ARCHIVE_EXTRACT_NO_AUTODIR
|
||||
ARCHIVE_EXTRACT_NO_OVERWRITE
|
||||
ARCHIVE_EXTRACT_NO_OVERWRITE_NEWER
|
||||
ARCHIVE_EXTRACT_OWNER
|
||||
ARCHIVE_EXTRACT_PERM
|
||||
ARCHIVE_EXTRACT_SECURE_NODOTDOT
|
||||
ARCHIVE_EXTRACT_SECURE_SYMLINKS
|
||||
ARCHIVE_EXTRACT_TIME
|
||||
ARCHIVE_EXTRACT_UNLINK
|
||||
ARCHIVE_EXTRACT_XATTR
|
||||
ARCHIVE_FAILED
|
||||
ARCHIVE_FATAL
|
||||
ARCHIVE_FORMAT_AR
|
||||
ARCHIVE_FORMAT_AR_BSD
|
||||
ARCHIVE_FORMAT_AR_GNU
|
||||
ARCHIVE_FORMAT_BASE_MASK
|
||||
ARCHIVE_FORMAT_CPIO
|
||||
ARCHIVE_FORMAT_CPIO_BIN_BE
|
||||
ARCHIVE_FORMAT_CPIO_BIN_LE
|
||||
ARCHIVE_FORMAT_CPIO_POSIX
|
||||
ARCHIVE_FORMAT_CPIO_SVR4_CRC
|
||||
ARCHIVE_FORMAT_CPIO_SVR4_NOCRC
|
||||
ARCHIVE_FORMAT_EMPTY
|
||||
ARCHIVE_FORMAT_ISO9660
|
||||
ARCHIVE_FORMAT_ISO9660_ROCKRIDGE
|
||||
ARCHIVE_FORMAT_SHAR
|
||||
ARCHIVE_FORMAT_SHAR_BASE
|
||||
ARCHIVE_FORMAT_SHAR_DUMP
|
||||
ARCHIVE_FORMAT_TAR
|
||||
ARCHIVE_FORMAT_TAR_GNUTAR
|
||||
ARCHIVE_FORMAT_TAR_PAX_INTERCHANGE
|
||||
ARCHIVE_FORMAT_TAR_PAX_RESTRICTED
|
||||
ARCHIVE_FORMAT_TAR_USTAR
|
||||
ARCHIVE_FORMAT_ZIP
|
||||
ARCHIVE_OK
|
||||
ARCHIVE_RETRY
|
||||
ARCHIVE_VERSION_STAMP
|
||||
ARCHIVE_WARN
|
||||
) ] );
|
||||
|
||||
our @EXPORT_OK = ( @{ $EXPORT_TAGS{'all'} } );
|
||||
|
||||
our @EXPORT = qw(
|
||||
AE_IFBLK
|
||||
AE_IFCHR
|
||||
AE_IFDIR
|
||||
AE_IFIFO
|
||||
AE_IFLNK
|
||||
AE_IFMT
|
||||
AE_IFREG
|
||||
ARCHIVE_API_FEATURE
|
||||
ARCHIVE_API_VERSION
|
||||
ARCHIVE_BYTES_PER_RECORD
|
||||
ARCHIVE_COMPRESSION_BZIP2
|
||||
ARCHIVE_COMPRESSION_COMPRESS
|
||||
ARCHIVE_COMPRESSION_GZIP
|
||||
ARCHIVE_COMPRESSION_NONE
|
||||
ARCHIVE_COMPRESSION_PROGRAM
|
||||
ARCHIVE_DEFAULT_BYTES_PER_BLOCK
|
||||
ARCHIVE_EOF
|
||||
ARCHIVE_EXTRACT_ACL
|
||||
ARCHIVE_EXTRACT_FFLAGS
|
||||
ARCHIVE_EXTRACT_NO_AUTODIR
|
||||
ARCHIVE_EXTRACT_NO_OVERWRITE
|
||||
ARCHIVE_EXTRACT_NO_OVERWRITE_NEWER
|
||||
ARCHIVE_EXTRACT_OWNER
|
||||
ARCHIVE_EXTRACT_PERM
|
||||
ARCHIVE_EXTRACT_SECURE_NODOTDOT
|
||||
ARCHIVE_EXTRACT_SECURE_SYMLINKS
|
||||
ARCHIVE_EXTRACT_TIME
|
||||
ARCHIVE_EXTRACT_UNLINK
|
||||
ARCHIVE_EXTRACT_XATTR
|
||||
ARCHIVE_FAILED
|
||||
ARCHIVE_FATAL
|
||||
ARCHIVE_FORMAT_AR
|
||||
ARCHIVE_FORMAT_AR_BSD
|
||||
ARCHIVE_FORMAT_AR_GNU
|
||||
ARCHIVE_FORMAT_BASE_MASK
|
||||
ARCHIVE_FORMAT_CPIO
|
||||
ARCHIVE_FORMAT_CPIO_BIN_BE
|
||||
ARCHIVE_FORMAT_CPIO_BIN_LE
|
||||
ARCHIVE_FORMAT_CPIO_POSIX
|
||||
ARCHIVE_FORMAT_CPIO_SVR4_CRC
|
||||
ARCHIVE_FORMAT_CPIO_SVR4_NOCRC
|
||||
ARCHIVE_FORMAT_EMPTY
|
||||
ARCHIVE_FORMAT_ISO9660
|
||||
ARCHIVE_FORMAT_ISO9660_ROCKRIDGE
|
||||
ARCHIVE_FORMAT_SHAR
|
||||
ARCHIVE_FORMAT_SHAR_BASE
|
||||
ARCHIVE_FORMAT_SHAR_DUMP
|
||||
ARCHIVE_FORMAT_TAR
|
||||
ARCHIVE_FORMAT_TAR_GNUTAR
|
||||
ARCHIVE_FORMAT_TAR_PAX_INTERCHANGE
|
||||
ARCHIVE_FORMAT_TAR_PAX_RESTRICTED
|
||||
ARCHIVE_FORMAT_TAR_USTAR
|
||||
ARCHIVE_FORMAT_ZIP
|
||||
ARCHIVE_OK
|
||||
ARCHIVE_RETRY
|
||||
ARCHIVE_VERSION_STAMP
|
||||
ARCHIVE_WARN
|
||||
);
|
||||
|
||||
our $VERSION = '2.2.4';
|
||||
|
||||
sub AUTOLOAD {
|
||||
# This AUTOLOAD is used to 'autoload' constants from the constant()
|
||||
# XS function.
|
||||
|
||||
my $constname;
|
||||
our $AUTOLOAD;
|
||||
($constname = $AUTOLOAD) =~ s/.*:://;
|
||||
croak "&LibArchive::constant not defined" if $constname eq 'constant';
|
||||
my ($error, $val) = constant($constname);
|
||||
if ($error) { croak $error; }
|
||||
{
|
||||
no strict 'refs';
|
||||
*$AUTOLOAD = sub { $val };
|
||||
}
|
||||
goto &$AUTOLOAD;
|
||||
}
|
||||
|
||||
require XSLoader;
|
||||
XSLoader::load('LibArchive', $VERSION);
|
||||
|
||||
# Preloaded methods go here.
|
||||
|
||||
# Autoload methods go after =cut, and are processed by the autosplit program.
|
||||
|
||||
1;
|
||||
__END__
|
||||
# Below is stub documentation for your module. You'd better edit it!
|
||||
|
||||
=head1 NAME
|
||||
|
||||
LibArchive - Perl extension to access libarchive functions
|
||||
|
||||
=head1 SYNOPSIS
|
||||
|
||||
use LibArchive;
|
||||
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
We currently support only a limited interface for reading archives.
|
||||
|
||||
=head2 EXPORT
|
||||
|
||||
None by default.
|
||||
|
||||
=head2 Exportable constants
|
||||
|
||||
AE_IFBLK
|
||||
AE_IFCHR
|
||||
AE_IFDIR
|
||||
AE_IFIFO
|
||||
AE_IFLNK
|
||||
AE_IFMT
|
||||
AE_IFREG
|
||||
ARCHIVE_API_FEATURE
|
||||
ARCHIVE_API_VERSION
|
||||
ARCHIVE_BYTES_PER_RECORD
|
||||
ARCHIVE_COMPRESSION_BZIP2
|
||||
ARCHIVE_COMPRESSION_COMPRESS
|
||||
ARCHIVE_COMPRESSION_GZIP
|
||||
ARCHIVE_COMPRESSION_NONE
|
||||
ARCHIVE_COMPRESSION_PROGRAM
|
||||
ARCHIVE_DEFAULT_BYTES_PER_BLOCK
|
||||
ARCHIVE_EOF
|
||||
ARCHIVE_EXTRACT_ACL
|
||||
ARCHIVE_EXTRACT_FFLAGS
|
||||
ARCHIVE_EXTRACT_NO_AUTODIR
|
||||
ARCHIVE_EXTRACT_NO_OVERWRITE
|
||||
ARCHIVE_EXTRACT_NO_OVERWRITE_NEWER
|
||||
ARCHIVE_EXTRACT_OWNER
|
||||
ARCHIVE_EXTRACT_PERM
|
||||
ARCHIVE_EXTRACT_SECURE_NODOTDOT
|
||||
ARCHIVE_EXTRACT_SECURE_SYMLINKS
|
||||
ARCHIVE_EXTRACT_TIME
|
||||
ARCHIVE_EXTRACT_UNLINK
|
||||
ARCHIVE_EXTRACT_XATTR
|
||||
ARCHIVE_FAILED
|
||||
ARCHIVE_FATAL
|
||||
ARCHIVE_FORMAT_AR
|
||||
ARCHIVE_FORMAT_AR_BSD
|
||||
ARCHIVE_FORMAT_AR_GNU
|
||||
ARCHIVE_FORMAT_BASE_MASK
|
||||
ARCHIVE_FORMAT_CPIO
|
||||
ARCHIVE_FORMAT_CPIO_BIN_BE
|
||||
ARCHIVE_FORMAT_CPIO_BIN_LE
|
||||
ARCHIVE_FORMAT_CPIO_POSIX
|
||||
ARCHIVE_FORMAT_CPIO_SVR4_CRC
|
||||
ARCHIVE_FORMAT_CPIO_SVR4_NOCRC
|
||||
ARCHIVE_FORMAT_EMPTY
|
||||
ARCHIVE_FORMAT_ISO9660
|
||||
ARCHIVE_FORMAT_ISO9660_ROCKRIDGE
|
||||
ARCHIVE_FORMAT_SHAR
|
||||
ARCHIVE_FORMAT_SHAR_BASE
|
||||
ARCHIVE_FORMAT_SHAR_DUMP
|
||||
ARCHIVE_FORMAT_TAR
|
||||
ARCHIVE_FORMAT_TAR_GNUTAR
|
||||
ARCHIVE_FORMAT_TAR_PAX_INTERCHANGE
|
||||
ARCHIVE_FORMAT_TAR_PAX_RESTRICTED
|
||||
ARCHIVE_FORMAT_TAR_USTAR
|
||||
ARCHIVE_FORMAT_ZIP
|
||||
ARCHIVE_OK
|
||||
ARCHIVE_RETRY
|
||||
ARCHIVE_VERSION_STAMP
|
||||
ARCHIVE_WARN
|
||||
|
||||
=head2 Exportable functions
|
||||
|
||||
int archive_api_feature(void)
|
||||
int archive_api_version(void)
|
||||
|
||||
void archive_clear_error(struct archive *)
|
||||
int archive_compression(struct archive *)
|
||||
const char *archive_compression_name(struct archive *)
|
||||
void archive_copy_error(struct archive *dest, struct archive *src)
|
||||
int archive_errno(struct archive *)
|
||||
const char *archive_error_string(struct archive *)
|
||||
int archive_format(struct archive *)
|
||||
int archive_read_close(struct archive *)
|
||||
ssize_t archive_read_data(struct archive *, void *, size_t)
|
||||
int archive_read_data_skip(struct archive *)
|
||||
int archive_read_finish(struct archive *)
|
||||
struct archive *archive_read_new(void)
|
||||
int archive_read_next_header(struct archive *,
|
||||
struct archive_entry **)
|
||||
int archive_read_open(struct archive *, void *_client_data,
|
||||
archive_open_callback *, archive_read_callback *,
|
||||
archive_close_callback *)
|
||||
int archive_read_open_FILE(struct archive *, FILE *_file)
|
||||
int archive_read_open_fd(struct archive *, int _fd,
|
||||
size_t _block_size)
|
||||
int archive_read_open_file(struct archive *,
|
||||
const char *_filename, size_t _block_size)
|
||||
int archive_read_open_filename(struct archive *,
|
||||
const char *_filename, size_t _block_size)
|
||||
int archive_read_support_compression_all(struct archive *)
|
||||
int archive_read_support_compression_bzip2(struct archive *)
|
||||
int archive_read_support_compression_compress(struct archive *)
|
||||
int archive_read_support_compression_gzip(struct archive *)
|
||||
int archive_read_support_compression_none(struct archive *)
|
||||
int archive_read_support_compression_program(struct archive *,
|
||||
const char *command)
|
||||
int archive_read_support_format_all(struct archive *)
|
||||
int archive_read_support_format_ar(struct archive *)
|
||||
int archive_read_support_format_cpio(struct archive *)
|
||||
int archive_read_support_format_empty(struct archive *)
|
||||
int archive_read_support_format_gnutar(struct archive *)
|
||||
int archive_read_support_format_iso9660(struct archive *)
|
||||
int archive_read_support_format_tar(struct archive *)
|
||||
int archive_read_support_format_zip(struct archive *)
|
||||
const char * archive_version(void)
|
||||
int archive_version_stamp(void)
|
||||
|
||||
time_t archive_entry_atime(struct archive_entry *)
|
||||
long archive_entry_atime_nsec(struct archive_entry *)
|
||||
time_t archive_entry_ctime(struct archive_entry *)
|
||||
long archive_entry_ctime_nsec(struct archive_entry *)
|
||||
mode_t archive_entry_mode(struct archive_entry *)
|
||||
const char * archive_entry_gname(struct archive_entry *)
|
||||
const char * archive_entry_hardlink(struct archive_entry *)
|
||||
time_t archive_entry_mtime(struct archive_entry *)
|
||||
long archive_entry_mtime_nsec(struct archive_entry *)
|
||||
unsigned int archive_entry_nlink(struct archive_entry *)
|
||||
const char * archive_entry_pathname(struct archive_entry *)
|
||||
long archive_entry_size(struct archive_entry *)
|
||||
const char * archive_entry_symlink(struct archive_entry *)
|
||||
const char * archive_entry_uname(struct archive_entry *)
|
||||
|
||||
|
||||
=head1 SEE ALSO
|
||||
|
||||
man libarchive
|
||||
|
||||
=head1 AUTHOR
|
||||
|
||||
perl bindings: Proxmox Support Team, E<lt>support@proxmox.comE<gt>
|
||||
|
||||
libarchive: Tim Kientzle
|
||||
|
||||
=head1 COPYRIGHT AND LICENSE
|
||||
|
||||
Copyright (C) 2007 by Dietmar Maurer
|
||||
|
||||
This library (perl bindings) is free software; you can redistribute it
|
||||
and/or modify it under the same terms as Perl itself, either Perl
|
||||
version 5.8.8 or, at your option, any later version of Perl 5 you may
|
||||
have available.
|
||||
|
||||
The librachive code has the following Copyright
|
||||
|
||||
Copyright (c) 2003-2006 Tim Kientzle
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions
|
||||
are met:
|
||||
1. Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer
|
||||
in this position and unchanged.
|
||||
2. Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR
|
||||
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||||
IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
||||
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
|
||||
=cut
|
4954
LibArchive/ppport.h
Normal file
4954
LibArchive/ppport.h
Normal file
File diff suppressed because it is too large
Load Diff
49
LibArchive/t/LibArchive.t
Normal file
49
LibArchive/t/LibArchive.t
Normal file
@ -0,0 +1,49 @@
|
||||
# Before `make install' is performed this script should be runnable with
|
||||
# `make test'. After `make install' it should work as `perl LibArchive.t'
|
||||
|
||||
#########################
|
||||
|
||||
# change 'tests => 2' to 'tests => last_test_to_print';
|
||||
|
||||
use Test::More tests => 2;
|
||||
BEGIN { use_ok('LibArchive') };
|
||||
|
||||
|
||||
my $fail = 0;
|
||||
foreach my $constname (qw(
|
||||
ARCHIVE_API_FEATURE ARCHIVE_API_VERSION ARCHIVE_BYTES_PER_RECORD
|
||||
ARCHIVE_COMPRESSION_BZIP2 ARCHIVE_COMPRESSION_COMPRESS
|
||||
ARCHIVE_COMPRESSION_GZIP ARCHIVE_COMPRESSION_NONE
|
||||
ARCHIVE_COMPRESSION_PROGRAM ARCHIVE_DEFAULT_BYTES_PER_BLOCK ARCHIVE_EOF
|
||||
ARCHIVE_EXTRACT_ACL ARCHIVE_EXTRACT_FFLAGS ARCHIVE_EXTRACT_NO_AUTODIR
|
||||
ARCHIVE_EXTRACT_NO_OVERWRITE ARCHIVE_EXTRACT_NO_OVERWRITE_NEWER
|
||||
ARCHIVE_EXTRACT_OWNER ARCHIVE_EXTRACT_PERM
|
||||
ARCHIVE_EXTRACT_SECURE_NODOTDOT ARCHIVE_EXTRACT_SECURE_SYMLINKS
|
||||
ARCHIVE_EXTRACT_TIME ARCHIVE_EXTRACT_UNLINK ARCHIVE_EXTRACT_XATTR
|
||||
ARCHIVE_FAILED ARCHIVE_FATAL ARCHIVE_FORMAT_AR ARCHIVE_FORMAT_AR_BSD
|
||||
ARCHIVE_FORMAT_AR_GNU ARCHIVE_FORMAT_BASE_MASK ARCHIVE_FORMAT_CPIO
|
||||
ARCHIVE_FORMAT_CPIO_BIN_BE ARCHIVE_FORMAT_CPIO_BIN_LE
|
||||
ARCHIVE_FORMAT_CPIO_POSIX ARCHIVE_FORMAT_CPIO_SVR4_CRC
|
||||
ARCHIVE_FORMAT_CPIO_SVR4_NOCRC ARCHIVE_FORMAT_EMPTY
|
||||
ARCHIVE_FORMAT_ISO9660 ARCHIVE_FORMAT_ISO9660_ROCKRIDGE
|
||||
ARCHIVE_FORMAT_SHAR ARCHIVE_FORMAT_SHAR_BASE ARCHIVE_FORMAT_SHAR_DUMP
|
||||
ARCHIVE_FORMAT_TAR ARCHIVE_FORMAT_TAR_GNUTAR
|
||||
ARCHIVE_FORMAT_TAR_PAX_INTERCHANGE ARCHIVE_FORMAT_TAR_PAX_RESTRICTED
|
||||
ARCHIVE_FORMAT_TAR_USTAR ARCHIVE_FORMAT_ZIP ARCHIVE_OK ARCHIVE_RETRY
|
||||
ARCHIVE_VERSION_STAMP ARCHIVE_WARN)) {
|
||||
next if (eval "my \$a = $constname; 1");
|
||||
if ($@ =~ /^Your vendor has not defined LibArchive macro $constname/) {
|
||||
print "# pass: $@";
|
||||
} else {
|
||||
print "# fail: $@";
|
||||
$fail = 1;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
ok( $fail == 0 , 'Constants' );
|
||||
#########################
|
||||
|
||||
# Insert your test code below, the Test::More module is use()ed here so read
|
||||
# its man page ( perldoc Test::More ) for help writing this test script.
|
||||
|
328
LibArchive/typemap
Normal file
328
LibArchive/typemap
Normal file
@ -0,0 +1,328 @@
|
||||
archive_close_callback * T_PTROBJ
|
||||
archive_open_callback * T_PTROBJ
|
||||
archive_read_callback * T_PTROBJ
|
||||
archive_skip_callback * T_PTROBJ
|
||||
archive_write_callback * T_PTROBJ
|
||||
const void * T_PTROBJ
|
||||
const void ** T_PTROBJ
|
||||
off_t T_NV
|
||||
off_t * T_PTROBJ
|
||||
size_t * T_OPAQUEPTR
|
||||
struct archive * T_PTROBJ
|
||||
struct archive_entry * T_PTROBJ
|
||||
mode_t T_NV
|
||||
|
||||
# basic C types
|
||||
int T_IV
|
||||
unsigned T_UV
|
||||
unsigned int T_UV
|
||||
long T_IV
|
||||
unsigned long T_UV
|
||||
short T_IV
|
||||
unsigned short T_UV
|
||||
char T_CHAR
|
||||
unsigned char T_U_CHAR
|
||||
char * T_PV
|
||||
unsigned char * T_PV
|
||||
const char * T_PV
|
||||
caddr_t T_PV
|
||||
wchar_t * T_PV
|
||||
wchar_t T_IV
|
||||
# bool_t is defined in <rpc/rpc.h>
|
||||
bool_t T_IV
|
||||
size_t T_UV
|
||||
ssize_t T_IV
|
||||
time_t T_NV
|
||||
unsigned long * T_OPAQUEPTR
|
||||
char ** T_PACKEDARRAY
|
||||
void * T_PTR
|
||||
Time_t * T_PV
|
||||
SV * T_SV
|
||||
SVREF T_SVREF
|
||||
AV * T_AVREF
|
||||
HV * T_HVREF
|
||||
CV * T_CVREF
|
||||
|
||||
IV T_IV
|
||||
UV T_UV
|
||||
NV T_NV
|
||||
I32 T_IV
|
||||
I16 T_IV
|
||||
I8 T_IV
|
||||
STRLEN T_UV
|
||||
U32 T_U_LONG
|
||||
U16 T_U_SHORT
|
||||
U8 T_UV
|
||||
Result T_U_CHAR
|
||||
Boolean T_BOOL
|
||||
float T_FLOAT
|
||||
double T_DOUBLE
|
||||
SysRet T_SYSRET
|
||||
SysRetLong T_SYSRET
|
||||
FILE * T_STDIO
|
||||
PerlIO * T_INOUT
|
||||
FileHandle T_PTROBJ
|
||||
InputStream T_IN
|
||||
InOutStream T_INOUT
|
||||
OutputStream T_OUT
|
||||
bool T_BOOL
|
||||
|
||||
#############################################################################
|
||||
INPUT
|
||||
T_SV
|
||||
$var = $arg
|
||||
T_SVREF
|
||||
if (SvROK($arg))
|
||||
$var = (SV*)SvRV($arg);
|
||||
else
|
||||
Perl_croak(aTHX_ \"$var is not a reference\")
|
||||
T_AVREF
|
||||
if (SvROK($arg) && SvTYPE(SvRV($arg))==SVt_PVAV)
|
||||
$var = (AV*)SvRV($arg);
|
||||
else
|
||||
Perl_croak(aTHX_ \"$var is not an array reference\")
|
||||
T_HVREF
|
||||
if (SvROK($arg) && SvTYPE(SvRV($arg))==SVt_PVHV)
|
||||
$var = (HV*)SvRV($arg);
|
||||
else
|
||||
Perl_croak(aTHX_ \"$var is not a hash reference\")
|
||||
T_CVREF
|
||||
if (SvROK($arg) && SvTYPE(SvRV($arg))==SVt_PVCV)
|
||||
$var = (CV*)SvRV($arg);
|
||||
else
|
||||
Perl_croak(aTHX_ \"$var is not a code reference\")
|
||||
T_SYSRET
|
||||
$var NOT IMPLEMENTED
|
||||
T_UV
|
||||
$var = ($type)SvUV($arg)
|
||||
T_IV
|
||||
$var = ($type)SvIV($arg)
|
||||
T_INT
|
||||
$var = (int)SvIV($arg)
|
||||
T_ENUM
|
||||
$var = ($type)SvIV($arg)
|
||||
T_BOOL
|
||||
$var = (bool)SvTRUE($arg)
|
||||
T_U_INT
|
||||
$var = (unsigned int)SvUV($arg)
|
||||
T_SHORT
|
||||
$var = (short)SvIV($arg)
|
||||
T_U_SHORT
|
||||
$var = (unsigned short)SvUV($arg)
|
||||
T_LONG
|
||||
$var = (long)SvIV($arg)
|
||||
T_U_LONG
|
||||
$var = (unsigned long)SvUV($arg)
|
||||
T_CHAR
|
||||
$var = (char)*SvPV_nolen($arg)
|
||||
T_U_CHAR
|
||||
$var = (unsigned char)SvUV($arg)
|
||||
T_FLOAT
|
||||
$var = (float)SvNV($arg)
|
||||
T_NV
|
||||
$var = ($type)SvNV($arg)
|
||||
T_DOUBLE
|
||||
$var = (double)SvNV($arg)
|
||||
T_PV
|
||||
$var = ($type)SvPV_nolen($arg)
|
||||
T_PTR
|
||||
$var = INT2PTR($type,SvIV($arg))
|
||||
T_PTRREF
|
||||
if (SvROK($arg)) {
|
||||
IV tmp = SvIV((SV*)SvRV($arg));
|
||||
$var = INT2PTR($type,tmp);
|
||||
}
|
||||
else
|
||||
Perl_croak(aTHX_ \"$var is not a reference\")
|
||||
T_REF_IV_REF
|
||||
if (sv_isa($arg, \"${ntype}\")) {
|
||||
IV tmp = SvIV((SV*)SvRV($arg));
|
||||
$var = *INT2PTR($type *, tmp);
|
||||
}
|
||||
else
|
||||
Perl_croak(aTHX_ \"$var is not of type ${ntype}\")
|
||||
T_REF_IV_PTR
|
||||
if (sv_isa($arg, \"${ntype}\")) {
|
||||
IV tmp = SvIV((SV*)SvRV($arg));
|
||||
$var = INT2PTR($type, tmp);
|
||||
}
|
||||
else
|
||||
Perl_croak(aTHX_ \"$var is not of type ${ntype}\")
|
||||
T_PTROBJ
|
||||
if (sv_derived_from($arg, \"${ntype}\")) {
|
||||
IV tmp = SvIV((SV*)SvRV($arg));
|
||||
$var = INT2PTR($type,tmp);
|
||||
}
|
||||
else
|
||||
Perl_croak(aTHX_ \"$var is not of type ${ntype}\")
|
||||
T_PTRDESC
|
||||
if (sv_isa($arg, \"${ntype}\")) {
|
||||
IV tmp = SvIV((SV*)SvRV($arg));
|
||||
${type}_desc = (\U${type}_DESC\E*) tmp;
|
||||
$var = ${type}_desc->ptr;
|
||||
}
|
||||
else
|
||||
Perl_croak(aTHX_ \"$var is not of type ${ntype}\")
|
||||
T_REFREF
|
||||
if (SvROK($arg)) {
|
||||
IV tmp = SvIV((SV*)SvRV($arg));
|
||||
$var = *INT2PTR($type,tmp);
|
||||
}
|
||||
else
|
||||
Perl_croak(aTHX_ \"$var is not a reference\")
|
||||
T_REFOBJ
|
||||
if (sv_isa($arg, \"${ntype}\")) {
|
||||
IV tmp = SvIV((SV*)SvRV($arg));
|
||||
$var = *INT2PTR($type,tmp);
|
||||
}
|
||||
else
|
||||
Perl_croak(aTHX_ \"$var is not of type ${ntype}\")
|
||||
T_OPAQUE
|
||||
$var = *($type *)SvPV_nolen($arg)
|
||||
T_OPAQUEPTR
|
||||
$var = ($type)SvPV_nolen($arg)
|
||||
T_PACKED
|
||||
$var = XS_unpack_$ntype($arg)
|
||||
T_PACKEDARRAY
|
||||
$var = XS_unpack_$ntype($arg)
|
||||
T_CALLBACK
|
||||
$var = make_perl_cb_$type($arg)
|
||||
T_ARRAY
|
||||
U32 ix_$var = $argoff;
|
||||
$var = $ntype(items -= $argoff);
|
||||
while (items--) {
|
||||
DO_ARRAY_ELEM;
|
||||
ix_$var++;
|
||||
}
|
||||
/* this is the number of elements in the array */
|
||||
ix_$var -= $argoff
|
||||
T_STDIO
|
||||
$var = PerlIO_findFILE(IoIFP(sv_2io($arg)))
|
||||
T_IN
|
||||
$var = IoIFP(sv_2io($arg))
|
||||
T_INOUT
|
||||
$var = IoIFP(sv_2io($arg))
|
||||
T_OUT
|
||||
$var = IoOFP(sv_2io($arg))
|
||||
#############################################################################
|
||||
OUTPUT
|
||||
T_SV
|
||||
$arg = $var;
|
||||
T_SVREF
|
||||
$arg = newRV((SV*)$var);
|
||||
T_AVREF
|
||||
$arg = newRV((SV*)$var);
|
||||
T_HVREF
|
||||
$arg = newRV((SV*)$var);
|
||||
T_CVREF
|
||||
$arg = newRV((SV*)$var);
|
||||
T_IV
|
||||
sv_setiv($arg, (IV)$var);
|
||||
T_UV
|
||||
sv_setuv($arg, (UV)$var);
|
||||
T_INT
|
||||
sv_setiv($arg, (IV)$var);
|
||||
T_SYSRET
|
||||
if ($var != -1) {
|
||||
if ($var == 0)
|
||||
sv_setpvn($arg, "0 but true", 10);
|
||||
else
|
||||
sv_setiv($arg, (IV)$var);
|
||||
}
|
||||
T_ENUM
|
||||
sv_setiv($arg, (IV)$var);
|
||||
T_BOOL
|
||||
$arg = boolSV($var);
|
||||
T_U_INT
|
||||
sv_setuv($arg, (UV)$var);
|
||||
T_SHORT
|
||||
sv_setiv($arg, (IV)$var);
|
||||
T_U_SHORT
|
||||
sv_setuv($arg, (UV)$var);
|
||||
T_LONG
|
||||
sv_setiv($arg, (IV)$var);
|
||||
T_U_LONG
|
||||
sv_setuv($arg, (UV)$var);
|
||||
T_CHAR
|
||||
sv_setpvn($arg, (char *)&$var, 1);
|
||||
T_U_CHAR
|
||||
sv_setuv($arg, (UV)$var);
|
||||
T_FLOAT
|
||||
sv_setnv($arg, (double)$var);
|
||||
T_NV
|
||||
sv_setnv($arg, (NV)$var);
|
||||
T_DOUBLE
|
||||
sv_setnv($arg, (double)$var);
|
||||
T_PV
|
||||
sv_setpv((SV*)$arg, $var);
|
||||
T_PTR
|
||||
sv_setiv($arg, PTR2IV($var));
|
||||
T_PTRREF
|
||||
sv_setref_pv($arg, Nullch, (void*)$var);
|
||||
T_REF_IV_REF
|
||||
sv_setref_pv($arg, \"${ntype}\", (void*)new $ntype($var));
|
||||
T_REF_IV_PTR
|
||||
sv_setref_pv($arg, \"${ntype}\", (void*)$var);
|
||||
T_PTROBJ
|
||||
sv_setref_pv($arg, \"${ntype}\", (void*)$var);
|
||||
T_PTRDESC
|
||||
sv_setref_pv($arg, \"${ntype}\", (void*)new\U${type}_DESC\E($var));
|
||||
T_REFREF
|
||||
NOT_IMPLEMENTED
|
||||
T_REFOBJ
|
||||
NOT IMPLEMENTED
|
||||
T_OPAQUE
|
||||
sv_setpvn($arg, (char *)&$var, sizeof($var));
|
||||
T_OPAQUEPTR
|
||||
sv_setpvn($arg, (char *)$var, sizeof(*$var));
|
||||
T_PACKED
|
||||
XS_pack_$ntype($arg, $var);
|
||||
T_PACKEDARRAY
|
||||
XS_pack_$ntype($arg, $var, count_$ntype);
|
||||
T_DATAUNIT
|
||||
sv_setpvn($arg, $var.chp(), $var.size());
|
||||
T_CALLBACK
|
||||
sv_setpvn($arg, $var.context.value().chp(),
|
||||
$var.context.value().size());
|
||||
T_ARRAY
|
||||
{
|
||||
U32 ix_$var;
|
||||
EXTEND(SP,size_$var);
|
||||
for (ix_$var = 0; ix_$var < size_$var; ix_$var++) {
|
||||
ST(ix_$var) = sv_newmortal();
|
||||
DO_ARRAY_ELEM
|
||||
}
|
||||
}
|
||||
T_STDIO
|
||||
{
|
||||
GV *gv = newGVgen("$Package");
|
||||
PerlIO *fp = PerlIO_importFILE($var,0);
|
||||
if ( fp && do_open(gv, "+<&", 3, FALSE, 0, 0, fp) )
|
||||
sv_setsv($arg, sv_bless(newRV((SV*)gv), gv_stashpv("$Package",1)));
|
||||
else
|
||||
$arg = &PL_sv_undef;
|
||||
}
|
||||
T_IN
|
||||
{
|
||||
GV *gv = newGVgen("$Package");
|
||||
if ( do_open(gv, "<&", 2, FALSE, 0, 0, $var) )
|
||||
sv_setsv($arg, sv_bless(newRV((SV*)gv), gv_stashpv("$Package",1)));
|
||||
else
|
||||
$arg = &PL_sv_undef;
|
||||
}
|
||||
T_INOUT
|
||||
{
|
||||
GV *gv = newGVgen("$Package");
|
||||
if ( do_open(gv, "+<&", 3, FALSE, 0, 0, $var) )
|
||||
sv_setsv($arg, sv_bless(newRV((SV*)gv), gv_stashpv("$Package",1)));
|
||||
else
|
||||
$arg = &PL_sv_undef;
|
||||
}
|
||||
T_OUT
|
||||
{
|
||||
GV *gv = newGVgen("$Package");
|
||||
if ( do_open(gv, "+>&", 3, FALSE, 0, 0, $var) )
|
||||
sv_setsv($arg, sv_bless(newRV((SV*)gv), gv_stashpv("$Package",1)));
|
||||
else
|
||||
$arg = &PL_sv_undef;
|
||||
}
|
38
Makefile
Normal file
38
Makefile
Normal file
@ -0,0 +1,38 @@
|
||||
RELEASE=3.0
|
||||
|
||||
# h2xs -Afn LibArchive
|
||||
# h2xs -an LibArchive /usr/include/archive.h /usr/include/archive_entry.h
|
||||
# perl Makefile.PL PREFIX=/usr
|
||||
|
||||
#OPKGNAME = libarchive-2.2.4
|
||||
#DEB = libarchive1_2.2.4-1_i386.deb
|
||||
#DEVDEB = libarchive-dev_2.2.4-1_i386.deb
|
||||
|
||||
PPSRC = LibArchive
|
||||
PDEB = libarchive-perl_2.8.4-1_amd64.deb
|
||||
|
||||
all: ${PDEB}
|
||||
|
||||
${PDEB}: ${PPSRC}/LibArchive.xs
|
||||
-rm -rf build
|
||||
rsync -a --exclude .svn ${PPSRC}/ build/
|
||||
cp -a debian build
|
||||
cd build; dpkg-buildpackage -b -us -uc -rfakeroot
|
||||
lintian ${PDEB}
|
||||
|
||||
.phony: upload
|
||||
upload: ${PDEB}
|
||||
umount /proxmox/${RELEASE}; mount /proxmox/${RELEASE} -o rw
|
||||
mkdir -p /proxmox/${RELEASE}/extra
|
||||
rm -rf /proxmox/${RELEASE}/extra/libarchive1_*.deb
|
||||
rm -rf /proxmox/${RELEASE}/extra/libarchive-dev_*.deb
|
||||
rm -rf /proxmox/${RELEASE}/extra/libarchive-perl_*.deb
|
||||
cp ${PDEB} /proxmox/${RELEASE}/extra
|
||||
cd /proxmox/${RELEASE}/extra; dpkg-scanpackages . /dev/null > Packages; gzip -9c Packages > Packages.gz
|
||||
umount /proxmox/${RELEASE}; mount /proxmox/${RELEASE} -o ro
|
||||
|
||||
CLEANFILES = *~ build *.deb libarchive_* ${OPKGNAME} libarchive-perl_*
|
||||
|
||||
.phony: clean
|
||||
clean:
|
||||
rm -rf ${CLEANFILES}
|
12
debian/changelog
vendored
Normal file
12
debian/changelog
vendored
Normal file
@ -0,0 +1,12 @@
|
||||
libarchive-perl (2.8.4-1) unstable; urgency=low
|
||||
|
||||
* update for debian squeeze amd64
|
||||
|
||||
-- Proxmox Support Team <support@proxmox.com> Thu, 31 May 2012 11:02:51 +0200
|
||||
|
||||
libarchive-perl (2.2.4-1) stable; urgency=low
|
||||
|
||||
* Initial Release.
|
||||
|
||||
-- Proxmox Support Team <support@proxmox.com> Wed, 11 Jul 2007 12:52:19 +0200
|
||||
|
1
debian/compat
vendored
Normal file
1
debian/compat
vendored
Normal file
@ -0,0 +1 @@
|
||||
5
|
13
debian/control
vendored
Normal file
13
debian/control
vendored
Normal file
@ -0,0 +1,13 @@
|
||||
Source: libarchive-perl
|
||||
Section: perl
|
||||
Priority: optional
|
||||
Build-Depends: debhelper (>= 5.0.0), perl (>= 5.8.8-7), libarchive-dev
|
||||
Description: Perl extension to access libarchive functions
|
||||
Maintainer: Proxmox Support Team <support@proxmox.com>
|
||||
Standards-Version: 3.7.2
|
||||
|
||||
Package: libarchive-perl
|
||||
Architecture: any
|
||||
Depends: ${perl:Depends}, ${shlibs:Depends}, ${misc:Depends}, libarchive1
|
||||
Description: Perl extension to access libarchive functions
|
||||
This module provides access to various archive formats using libarchive.
|
35
debian/copyright
vendored
Normal file
35
debian/copyright
vendored
Normal file
@ -0,0 +1,35 @@
|
||||
LICENSE AND WARRANTY
|
||||
|
||||
This library (perl bindings) is free software; you can redistribute it
|
||||
and/or modify it under the same terms as Perl itself, either Perl
|
||||
version 5.8.8 or, at your option, any later version of Perl 5 you may
|
||||
have available.
|
||||
|
||||
A copy of the license can be found at /usr/share/common-licenses/Artistic
|
||||
|
||||
The libachive code has the following Copyright
|
||||
|
||||
Copyright (c) 2003-2006 Tim Kientzle
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions
|
||||
are met:
|
||||
1. Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer
|
||||
in this position and unchanged.
|
||||
2. Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR
|
||||
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||||
IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
||||
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
92
debian/rules
vendored
Executable file
92
debian/rules
vendored
Executable file
@ -0,0 +1,92 @@
|
||||
#!/usr/bin/make -f
|
||||
# This debian/rules file is provided as a template for normal perl
|
||||
# packages. It was created by Marc Brockschmidt <marc@dch-faq.de> for
|
||||
# the Debian Perl Group (http://pkg-perl.alioth.debian.org/) but may
|
||||
# be used freely wherever it is useful.
|
||||
|
||||
# Uncomment this to turn on verbose mode.
|
||||
#export DH_VERBOSE=1
|
||||
|
||||
# If set to a true value then MakeMaker's prompt function will
|
||||
# always return the default without waiting for user input.
|
||||
export PERL_MM_USE_DEFAULT=1
|
||||
|
||||
PACKAGE=$(shell dh_listpackages)
|
||||
|
||||
ifndef PERL
|
||||
PERL = /usr/bin/perl
|
||||
endif
|
||||
|
||||
TMP =$(CURDIR)/debian/$(PACKAGE)
|
||||
|
||||
# Allow disabling build optimation by setting noopt in
|
||||
# $DEB_BUILD_OPTIONS
|
||||
CFLAGS = -Wall -g
|
||||
ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
|
||||
CFLAGS += -O0
|
||||
else
|
||||
CFLAGS += -O2
|
||||
endif
|
||||
|
||||
build: build-stamp
|
||||
build-stamp:
|
||||
dh_testdir
|
||||
|
||||
# Add commands to compile the package here
|
||||
$(PERL) Makefile.PL INSTALLDIRS=vendor
|
||||
$(MAKE) OPTIMIZE="$(CFLAGS)" LD_RUN_PATH=""
|
||||
|
||||
touch build-stamp
|
||||
|
||||
clean:
|
||||
dh_testdir
|
||||
dh_testroot
|
||||
|
||||
# Add commands to clean up after the build process here
|
||||
[ ! -f Makefile ] || $(MAKE) realclean
|
||||
|
||||
dh_clean build-stamp install-stamp
|
||||
|
||||
install: build install-stamp
|
||||
install-stamp:
|
||||
dh_testdir
|
||||
dh_testroot
|
||||
dh_clean -k
|
||||
|
||||
# Add commands to install the package into debian/$PACKAGE_NAME here
|
||||
$(MAKE) test
|
||||
$(MAKE) install DESTDIR=$(TMP) PREFIX=/usr
|
||||
|
||||
touch install-stamp
|
||||
|
||||
# Build architecture-independent files here.
|
||||
binary-indep: build install
|
||||
# We have nothing to do by default.
|
||||
|
||||
# Build architecture-dependent files here.
|
||||
binary-arch: build install
|
||||
dh_testdir
|
||||
dh_testroot
|
||||
dh_installdocs README
|
||||
dh_installexamples
|
||||
# dh_installmenu
|
||||
# dh_installcron
|
||||
# dh_installman
|
||||
dh_installchangelogs Changes
|
||||
dh_link
|
||||
dh_strip
|
||||
dh_compress
|
||||
dh_fixperms
|
||||
dh_makeshlibs
|
||||
dh_installdeb
|
||||
dh_perl
|
||||
dh_shlibdeps
|
||||
dh_gencontrol
|
||||
dh_md5sums
|
||||
dh_builddeb
|
||||
|
||||
source diff:
|
||||
@echo >&2 'source and diff are obsolete - use dpkg-source -b'; false
|
||||
|
||||
binary: binary-indep binary-arch
|
||||
.PHONY: build clean binary-indep binary-arch binary
|
Loading…
Reference in New Issue
Block a user