diff options
Diffstat (limited to 'examples/updateTree.pl')
-rw-r--r-- | examples/updateTree.pl | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/examples/updateTree.pl b/examples/updateTree.pl new file mode 100644 index 0000000..5ba98c3 --- /dev/null +++ b/examples/updateTree.pl @@ -0,0 +1,33 @@ +# Shows how to update a Zip in place using a temp file. +# +# usage: +# perl [-m] examples/updateTree.pl zipfile.zip dirname +# +# -m means to mirror +# +# $Id: updateTree.pl,v 1.2 2003/11/27 17:03:51 ned Exp $ +# +use Archive::Zip qw(:ERROR_CODES); + +my $mirror = 0; +if ($ARGV[0] eq '-m') { shift; $mirror = 1; } + +my $zipName = shift || die 'must provide a zip name'; +my $dirName = shift || die 'must provide a directory name'; + +# Read the zip +my $zip = Archive::Zip->new(); + +if (-f $zipName) { + die "can't read $zipName\n" unless $zip->read($zipName) == AZ_OK; + + # Update the zip + $zip->updateTree($dirName, undef, undef, $mirror); + + # Now the zip is updated. Write it back via a temp file. + exit($zip->overwrite()); +} else # new zip +{ + $zip->addTree($dirName); + exit($zip->writeToFileNamed($zipName)); +} |