X-Git-Url: http://git.maemo.org/git/?p=dh-make-perl;a=blobdiff_plain;f=dev%2Fi386%2Flibarchive-zip-perl%2Flibarchive-zip-perl-1.18%2Fexamples%2Fzipcheck.pl;fp=dev%2Fi386%2Flibarchive-zip-perl%2Flibarchive-zip-perl-1.18%2Fexamples%2Fzipcheck.pl;h=d3c8fc0bf49528b9cc4679f55eef9c27b8251e1f;hp=0000000000000000000000000000000000000000;hb=8977e561d8a9eae6959218b0306c9df2056a38a9;hpb=df794b845212301ea0d267c919232538bfef356a diff --git a/dev/i386/libarchive-zip-perl/libarchive-zip-perl-1.18/examples/zipcheck.pl b/dev/i386/libarchive-zip-perl/libarchive-zip-perl-1.18/examples/zipcheck.pl new file mode 100644 index 0000000..d3c8fc0 --- /dev/null +++ b/dev/i386/libarchive-zip-perl/libarchive-zip-perl-1.18/examples/zipcheck.pl @@ -0,0 +1,39 @@ +#!/bin/perl -w +# usage: valid zipname.zip +# exits with non-zero status if invalid zip +# status = 1: invalid arguments +# status = 2: generic error somewhere +# status = 3: format error +# status = 4: IO error +use strict; +use Archive::Zip qw(:ERROR_CODES); +use IO::Handle; +use File::Spec; + +# instead of stack dump: +Archive::Zip::setErrorHandler( sub { warn shift() } ); + +my $nullFileName = File::Spec->devnull(); +my $zip = Archive::Zip->new(); +my $zipName = shift(@ARGV) || exit 1; +eval +{ + my $status = $zip->read( $zipName ); + exit $status if $status != AZ_OK; +}; +if ($@) { warn 'error reading zip:', $@, "\n"; exit 2 } + +eval +{ + foreach my $member ($zip->members) + { + my $fh = IO::File->new(); + $fh->open(">$nullFileName") || die "can't open $nullFileName\: $!\n"; + my $status = $member->extractToFileHandle($fh); + if ($status != AZ_OK) + { + warn "Extracting ", $member->fileName(), " from $zipName failed\n"; + exit $status; + } + } +}