summaryrefslogtreecommitdiff
path: root/examples/updateTree.pl
diff options
context:
space:
mode:
Diffstat (limited to 'examples/updateTree.pl')
-rw-r--r--examples/updateTree.pl33
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));
+}