summaryrefslogtreecommitdiff
path: root/ext/zip
diff options
context:
space:
mode:
Diffstat (limited to 'ext/zip')
-rw-r--r--ext/zip/CREDITS2
-rw-r--r--ext/zip/TODO5
-rw-r--r--ext/zip/config.m468
-rw-r--r--ext/zip/config.w3237
-rw-r--r--ext/zip/examples/comment.php6
-rw-r--r--ext/zip/examples/create.php20
-rw-r--r--ext/zip/examples/dir.php17
-rw-r--r--ext/zip/examples/extract.php24
-rw-r--r--ext/zip/examples/extractAll.php24
-rw-r--r--ext/zip/examples/fopen.php31
-rw-r--r--ext/zip/examples/get_set_comments.php38
-rw-r--r--ext/zip/examples/im.php11
-rw-r--r--ext/zip/examples/odt.php20
-rw-r--r--ext/zip/examples/oldapi.php17
-rw-r--r--ext/zip/examples/test.odtbin6162 -> 0 bytes
-rw-r--r--ext/zip/examples/test.zipbin541 -> 0 bytes
-rw-r--r--ext/zip/examples/test1.zipbin681 -> 0 bytes
-rw-r--r--ext/zip/examples/test_im.zipbin1086 -> 0 bytes
-rw-r--r--ext/zip/examples/test_with_comment.zipbin560 -> 0 bytes
-rw-r--r--ext/zip/examples/too.php2
-rw-r--r--ext/zip/lib/mkstemp.c136
-rw-r--r--ext/zip/lib/unistd.h3
-rw-r--r--ext/zip/lib/zip.h206
-rw-r--r--ext/zip/lib/zip_add.c51
-rw-r--r--ext/zip/lib/zip_close.c554
-rw-r--r--ext/zip/lib/zip_delete.c61
-rw-r--r--ext/zip/lib/zip_dirent.c532
-rw-r--r--ext/zip/lib/zip_entry_free.c55
-rw-r--r--ext/zip/lib/zip_entry_new.c81
-rw-r--r--ext/zip/lib/zip_err_str.c72
-rw-r--r--ext/zip/lib/zip_error.c95
-rw-r--r--ext/zip/lib/zip_error_get.c47
-rw-r--r--ext/zip/lib/zip_error_get_sys_type.c50
-rw-r--r--ext/zip/lib/zip_error_strerror.c93
-rw-r--r--ext/zip/lib/zip_error_to_str.c73
-rw-r--r--ext/zip/lib/zip_fclose.c74
-rw-r--r--ext/zip/lib/zip_file_error_get.c47
-rw-r--r--ext/zip/lib/zip_file_get_offset.c80
-rw-r--r--ext/zip/lib/zip_file_strerror.c47
-rw-r--r--ext/zip/lib/zip_fopen.c52
-rw-r--r--ext/zip/lib/zip_fopen_index.c219
-rw-r--r--ext/zip/lib/zip_fread.c125
-rw-r--r--ext/zip/lib/zip_free.c83
-rw-r--r--ext/zip/lib/zip_get_archive_comment.c58
-rw-r--r--ext/zip/lib/zip_get_file_comment.c61
-rw-r--r--ext/zip/lib/zip_get_name.c74
-rw-r--r--ext/zip/lib/zip_get_num_files.c50
-rw-r--r--ext/zip/lib/zip_memdup.c58
-rw-r--r--ext/zip/lib/zip_name_locate.c91
-rw-r--r--ext/zip/lib/zip_new.c71
-rw-r--r--ext/zip/lib/zip_open.c465
-rw-r--r--ext/zip/lib/zip_rename.c52
-rw-r--r--ext/zip/lib/zip_replace.c82
-rw-r--r--ext/zip/lib/zip_set_archive_comment.c68
-rw-r--r--ext/zip/lib/zip_set_file_comment.c69
-rw-r--r--ext/zip/lib/zip_set_name.c77
-rw-r--r--ext/zip/lib/zip_source_buffer.c162
-rw-r--r--ext/zip/lib/zip_source_file.c71
-rw-r--r--ext/zip/lib/zip_source_filep.c180
-rw-r--r--ext/zip/lib/zip_source_free.c54
-rw-r--r--ext/zip/lib/zip_source_function.c62
-rw-r--r--ext/zip/lib/zip_source_zip.c189
-rw-r--r--ext/zip/lib/zip_stat.c52
-rw-r--r--ext/zip/lib/zip_stat_index.c93
-rw-r--r--ext/zip/lib/zip_strerror.c47
-rw-r--r--ext/zip/lib/zip_unchange.c84
-rw-r--r--ext/zip/lib/zip_unchange_all.c56
-rw-r--r--ext/zip/lib/zip_unchange_archive.c52
-rw-r--r--ext/zip/lib/zip_unchange_data.c53
-rw-r--r--ext/zip/lib/zip_win32.h29
-rw-r--r--ext/zip/lib/zipint.h225
-rw-r--r--ext/zip/php_zip.c2002
-rw-r--r--ext/zip/php_zip.h101
-rw-r--r--ext/zip/tests/001.phpt12
-rw-r--r--ext/zip/tests/binarynull.zipbin656 -> 0 bytes
-rw-r--r--ext/zip/tests/bug38943.phpt50
-rw-r--r--ext/zip/tests/bug38944.phpt40
-rw-r--r--ext/zip/tests/bug7214.phpt23
-rw-r--r--ext/zip/tests/bug7658.odtbin8873 -> 0 bytes
-rw-r--r--ext/zip/tests/bug7658.phpt60
-rw-r--r--ext/zip/tests/bug7658.xml2
-rw-r--r--ext/zip/tests/bug8009.phpt27
-rw-r--r--ext/zip/tests/bug8009.zipbin112 -> 0 bytes
-rw-r--r--ext/zip/tests/bug8700.phpt30
-rw-r--r--ext/zip/tests/oo_addfile.phpt37
-rw-r--r--ext/zip/tests/oo_close.phpt25
-rw-r--r--ext/zip/tests/oo_delete.phpt76
-rw-r--r--ext/zip/tests/oo_ext_zip.phpt27
-rw-r--r--ext/zip/tests/oo_namelocate.phpt46
-rw-r--r--ext/zip/tests/oo_open.phpt46
-rw-r--r--ext/zip/tests/oo_rename.phpt58
-rw-r--r--ext/zip/tests/test.zipbin526 -> 0 bytes
-rw-r--r--ext/zip/tests/test_procedural.zipbin541 -> 0 bytes
-rw-r--r--ext/zip/tests/utils.inc8
-rw-r--r--ext/zip/tests/zip_close.phpt17
-rw-r--r--ext/zip/tests/zip_entry_compressedsize.phpt23
-rw-r--r--ext/zip/tests/zip_entry_compressionmethod.phpt24
-rw-r--r--ext/zip/tests/zip_entry_filesize.phpt23
-rw-r--r--ext/zip/tests/zip_entry_name.phpt23
-rw-r--r--ext/zip/tests/zip_entry_open.phpt17
-rw-r--r--ext/zip/tests/zip_entry_read.phpt18
-rw-r--r--ext/zip/tests/zip_open.phpt16
-rw-r--r--ext/zip/tests/zip_read.phpt21
-rw-r--r--ext/zip/zip_stream.c235
104 files changed, 0 insertions, 8930 deletions
diff --git a/ext/zip/CREDITS b/ext/zip/CREDITS
deleted file mode 100644
index 6c7e42d417..0000000000
--- a/ext/zip/CREDITS
+++ /dev/null
@@ -1,2 +0,0 @@
-Zip
-Pierre-Alain Joye
diff --git a/ext/zip/TODO b/ext/zip/TODO
deleted file mode 100644
index cb540ce7af..0000000000
--- a/ext/zip/TODO
+++ /dev/null
@@ -1,5 +0,0 @@
-- fix _zip_replace (add two entries with the same name segfaults)
-- add pattern support to extract or add files
-- stream to add or modify entries
-- crypt support for zip (read and write)
-- Iterators
diff --git a/ext/zip/config.m4 b/ext/zip/config.m4
deleted file mode 100644
index 5208cff295..0000000000
--- a/ext/zip/config.m4
+++ /dev/null
@@ -1,68 +0,0 @@
-dnl
-dnl $Id$
-dnl
-
-PHP_ARG_ENABLE(zip, for zip archive read/writesupport,
-[ --enable-zip Include Zip read/write support.])
-
-if test -z "$PHP_ZLIB_DIR"; then
-PHP_ARG_WITH(zlib-dir, for the location of libz,
-[ --with-zlib-dir[=DIR] zip: Set the path to libz install prefix.], no, no)
-fi
-
-if test "$PHP_ZIP" != "no"; then
-
- if test "$PHP_ZLIB_DIR" != "no" && test "$PHP_ZLIB_DIR" != "yes"; then
- if test -f "$PHP_ZLIB_DIR/include/zlib/zlib.h"; then
- PHP_ZLIB_DIR="$PHP_ZLIB_DIR"
- PHP_ZLIB_INCDIR="$PHP_ZLIB_DIR/include/zlib"
- elif test -f "$PHP_ZLIB_DIR/include/zlib.h"; then
- PHP_ZLIB_DIR="$PHP_ZLIB_DIR"
- PHP_ZLIB_INCDIR="$PHP_ZLIB_DIR/include"
- else
- AC_MSG_ERROR([Can't find zlib headers under "$PHP_ZLIB_DIR"])
- fi
- else
- for i in /usr/local /usr; do
- if test -f "$i/include/zlib/zlib.h"; then
- PHP_ZLIB_DIR="$i"
- PHP_ZLIB_INCDIR="$i/include/zlib"
- elif test -f "$i/include/zlib.h"; then
- PHP_ZLIB_DIR="$i"
- PHP_ZLIB_INCDIR="$i/include"
- fi
- done
- fi
-
- dnl # zlib
- AC_MSG_CHECKING([for the location of zlib])
- if test "$PHP_ZLIB_DIR" = "no"; then
- AC_MSG_ERROR([zip support requires ZLIB. Use --with-zlib-dir=<DIR> to specify prefix where ZLIB include and library are located])
- else
- AC_MSG_RESULT([$PHP_ZLIB_DIR])
- PHP_ADD_LIBRARY_WITH_PATH(z, $PHP_ZLIB_DIR/lib, ZIP_SHARED_LIBADD)
- PHP_ADD_INCLUDE($PHP_ZLIB_INCDIR)
- fi
-
- PHP_ZIP_SOURCES="$PHP_ZIP_SOURCES lib/zip_add.c lib/zip_error.c lib/zip_fclose.c \
- lib/zip_fread.c lib/zip_open.c lib/zip_source_filep.c \
- lib/zip_strerror.c lib/zip_close.c lib/zip_error_get.c \
- lib/zip_file_error_get.c lib/zip_free.c lib/zip_rename.c \
- lib/zip_source_free.c lib/zip_unchange_all.c lib/zip_delete.c \
- lib/zip_error_get_sys_type.c lib/zip_file_get_offset.c \
- lib/zip_get_name.c lib/zip_replace.c lib/zip_source_function.c \
- lib/zip_unchange.c lib/zip_dirent.c lib/zip_error_strerror.c \
- lib/zip_file_strerror.c lib/zip_get_num_files.c \
- lib/zip_set_name.c lib/zip_source_zip.c lib/zip_unchange_data.c \
- lib/zip_entry_free.c lib/zip_error_to_str.c lib/zip_fopen.c \
- lib/zip_name_locate.c lib/zip_source_buffer.c lib/zip_stat.c \
- lib/zip_entry_new.c lib/zip_err_str.c lib/zip_fopen_index.c \
- lib/zip_new.c lib/zip_source_file.c lib/zip_stat_index.c lib/zip_get_archive_comment.c \
- lib/zip_get_file_comment.c lib/zip_set_archive_comment.c lib/zip_set_file_comment.c \
- lib/zip_unchange_archive.c lib/zip_memdup.c"
-
- AC_DEFINE(HAVE_ZIP,1,[ ])
- PHP_NEW_EXTENSION(zip, php_zip.c zip_stream.c $PHP_ZIP_SOURCES, $ext_shared)
- PHP_ADD_BUILD_DIR($ext_builddir/lib, 1)
- PHP_SUBST(ZIP_SHARED_LIBADD)
-fi
diff --git a/ext/zip/config.w32 b/ext/zip/config.w32
deleted file mode 100644
index 1a99217b59..0000000000
--- a/ext/zip/config.w32
+++ /dev/null
@@ -1,37 +0,0 @@
-// $Id$
-// vim:ft=javascript
-
-ARG_ENABLE("zip", "ZIP support", "no");
-
-if (PHP_ZIP != "no") {
-
- if (CHECK_HEADER_ADD_INCLUDE("zlib.h", "CFLAGS_ZIP", "..\\zlib;" + php_usual_include_suspects + ";" + PHP_ZIP)) {
- if (PHP_ZLIB_SHARED) {
- CHECK_LIB("zlib.lib", "zip", PHP_ZIP);
- }
- EXTENSION('zip', 'php_zip.c zip_stream.c');
- ADD_SOURCES(configure_module_dirname + "/lib", "zip_add.c zip_error.c zip_fclose.c \
- zip_fread.c zip_open.c zip_source_filep.c \
- zip_strerror.c zip_close.c zip_error_get.c \
- zip_file_error_get.c zip_free.c zip_rename.c \
- zip_source_free.c zip_unchange_all.c zip_delete.c \
- zip_error_get_sys_type.c zip_file_get_offset.c \
- zip_get_name.c zip_replace.c zip_source_function.c \
- zip_unchange.c zip_dirent.c zip_error_strerror.c \
- zip_file_strerror.c zip_get_num_files.c \
- zip_set_name.c zip_source_zip.c zip_unchange_data.c \
- zip_entry_free.c zip_error_to_str.c zip_fopen.c \
- zip_name_locate.c zip_source_buffer.c zip_stat.c \
- zip_entry_new.c zip_err_str.c zip_fopen_index.c \
- zip_new.c zip_source_file.c zip_stat_index.c \
- zip_get_archive_comment.c zip_get_file_comment.c \
- zip_set_archive_comment.c zip_set_file_comment.c \
- zip_unchange_archive.c zip_memdup.c", "zip");
-
- AC_DEFINE('HAVE_ZLIB', 1);
- AC_DEFINE('HAVE_ZIP', 1);
- } else {
- WARNING("zip not enabled; libraries and headers not found");
- }
-}
-
diff --git a/ext/zip/examples/comment.php b/ext/zip/examples/comment.php
deleted file mode 100644
index 90b37d3795..0000000000
--- a/ext/zip/examples/comment.php
+++ /dev/null
@@ -1,6 +0,0 @@
-<?php
-$z = new ZipArchive;
-$z->open('test_with_comment.zip');
-// Add "Foo Comment" as comment for the foo entry
-$z->setCommentName('foo', 'Too Comment ' . time());
-$z->close();
diff --git a/ext/zip/examples/create.php b/ext/zip/examples/create.php
deleted file mode 100644
index cffacee93b..0000000000
--- a/ext/zip/examples/create.php
+++ /dev/null
@@ -1,20 +0,0 @@
-<?php
-error_reporting(E_ALL);
-$thisdir = dirname(__FILE__);
-unlink("./test112.zip");
-$zip = new ZipArchive();
-$filename = "./test112.zip";
-
-if (!$zip->open($filename, ZIPARCHIVE::CREATE)) {
- exit("cannot open <$filename>\n");
-} else {
- echo "file <$filename> OK\n";
-}
-
-$zip->addFromString("testfilephp.txt" . time(), "#1 This is a test string added as testfilephp.txt.\n");
-$zip->addFromString("testfilephp2.txt" . time(), "#2 This is a test string added as testfilephp2.txt.\n");
-$zip->addFile($thisdir . "/too.php","/testfromfile.php");
-echo "numfiles: " . $zip->numFiles . "\n";
-echo "status:" . $zip->status . "\n";
-$zip->close();
-unset($zip);
diff --git a/ext/zip/examples/dir.php b/ext/zip/examples/dir.php
deleted file mode 100644
index 00e4b40585..0000000000
--- a/ext/zip/examples/dir.php
+++ /dev/null
@@ -1,17 +0,0 @@
-<?php
-$za = new ZipArchive();
-
-$za->open('test_with_comment.zip');
-print_r($za);
-var_dump($za);
-echo "numFiles: " . $za->numFiles . "\n";
-echo "status: " . $za->status . "\n";
-echo "statusSys: " . $za->statusSys . "\n";
-echo "filename: " . $za->filename . "\n";
-echo "comment: " . $za->comment . "\n";
-
-for ($i=0; $i<$za->numFiles;$i++) {
- echo "index: $i\n";
- print_r($za->statIndex($i));
-}
-echo "numFile:" . $za->numFiles . "\n";
diff --git a/ext/zip/examples/extract.php b/ext/zip/examples/extract.php
deleted file mode 100644
index 696502ba12..0000000000
--- a/ext/zip/examples/extract.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-$zip = new ZipArchive();
-
-echo $zip->filename . "\n";
-$zip->open("test.zip");
-/*
-$zip->addFile("./modules/");
-$zip->addFile("./testempty");
-*/
-echo $zip->status . "\n";
-echo $zip->statusSys . "\n";
-
-echo $zip->numFiles . "\n";
-echo $zip->filename . "\n";
-var_dump($zip);
-$files = array('test', 'testdir/test2');
-if (!$zip->extractTo("./testext/path/to", $files)) {
- echo "error!\n";
- echo $zip->status . "\n";
- echo $zip->statusSys . "\n";
-
-}
-
-$zip->close();
diff --git a/ext/zip/examples/extractAll.php b/ext/zip/examples/extractAll.php
deleted file mode 100644
index d318a453df..0000000000
--- a/ext/zip/examples/extractAll.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-$zip = new ZipArchive();
-
-echo $zip->filename . "\n";
-$zip->open("test.zip");
-/*
-$zip->addFile("./modules/");
-$zip->addFile("./testempty");
-*/
-echo $zip->status . "\n";
-echo $zip->statusSys . "\n";
-
-echo $zip->numFiles . "\n";
-echo $zip->filename . "\n";
-var_dump($zip);
-$files = array('test', 'testdir/test2');
-if (!$zip->extractTo("./testext/path/to")) {
- echo "error!\n";
- echo $zip->status . "\n";
- echo $zip->statusSys . "\n";
-
-}
-
-$zip->close();
diff --git a/ext/zip/examples/fopen.php b/ext/zip/examples/fopen.php
deleted file mode 100644
index 5af37b1ab3..0000000000
--- a/ext/zip/examples/fopen.php
+++ /dev/null
@@ -1,31 +0,0 @@
-<?php
-
-$fp = fopen('zip://' . dirname(__FILE__) . '/test.zip#test', 'r');
-if (!$fp) {
- exit("cannot open\n");
-}
-while (!feof($fp)) {
- $contents .= fread($fp, 2);
- echo "$contents\n";
-}
-
-fclose($fp);
-echo "done.\n";
-
-
-$content = '';
-$z = new ZipArchive();
-$z->open(dirname(__FILE__) . '/test.zip');
-$fp = $z->getStream('test');
-
-var_dump($fp);
-if(!$fp) exit("\n");
-while (!feof($fp)) {
- $contents .= fread($fp, 2);
-}
-
-fclose($fp);
-file_put_contents('t',$contents);
-echo "done.\n";
-
-
diff --git a/ext/zip/examples/get_set_comments.php b/ext/zip/examples/get_set_comments.php
deleted file mode 100644
index 5bd302e6da..0000000000
--- a/ext/zip/examples/get_set_comments.php
+++ /dev/null
@@ -1,38 +0,0 @@
-<?php
-error_reporting(E_ALL|E_STRICT);
-
-copy('test_with_comment.zip', 't.zip');
-$z = new ZipArchive;
-$z->open('t.zip');
-
-print_r($z);
-
-for ($i=0; $i<$z->numFiles; $i++) {
- echo "index: $i\n";
- print_r($z->getCommentIndex($i));
- echo "\n\n";
-}
-echo "foobar/ " . $z->getCommentName('foobar/') . "\n";
-
-echo "Archive comment: " . $z->getArchiveComment() . "\n";
-
-
-$z->setCommentIndex(1, 'new comment idx 1');
-$z->setCommentName('foobar/', 'new comment foobar/');
-
-$z->setArchiveComment( 'new archive comment');
-
-for ($i=0; $i<$z->numFiles; $i++) {
- echo "index: $i\n";
- print_r($z->getCommentIndex($i));
- echo "\n\n";
-}
-
-echo $z->getCommentName('foobar/') . "\n";
-
-// Get the original comment
-echo $z->getCommentName('foobar/', ZIPARCHIVE::FL_UNCHANGED) . "\n";
-
-echo "Archive comment: " . $z->getArchiveComment() . "\n";
-echo "Archive comment (original): " . $z->getArchiveComment(ZIPARCHIVE::FL_UNCHANGED) . "\n";
-
diff --git a/ext/zip/examples/im.php b/ext/zip/examples/im.php
deleted file mode 100644
index 3721434054..0000000000
--- a/ext/zip/examples/im.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-/* $Id$ */
-$im = imagecreatefromgif('zip://' . dirname(__FILE__) . '/test_im.zip#pear_item.gif');
-imagepng($im, 'a.png');
-
-$z = new ZipArchive();
-$z->open(dirname(__FILE__) . '/test_im.zip');
-$im_string = $z->getFromName("pear_item.gif");
-$im = imagecreatefromstring($im_string);
-imagepng($im, 'b.png');
-
diff --git a/ext/zip/examples/odt.php b/ext/zip/examples/odt.php
deleted file mode 100644
index c829f12343..0000000000
--- a/ext/zip/examples/odt.php
+++ /dev/null
@@ -1,20 +0,0 @@
-<?php
-/* $Id$ */
-$reader = new XMLReader();
-
-$reader->open('zip://' . dirname(__FILE__) . '/test.odt#meta.xml');
-$odt_meta = array();
-while ($reader->read()) {
- if ($reader->nodeType == XMLREADER::ELEMENT) {
- $elm = $reader->name;
- } else {
- if ($reader->nodeType == XMLREADER::END_ELEMENT && $reader->name == 'office:meta') {
- break;
- }
- if (!trim($reader->value)) {
- continue;
- }
- $odt_meta[$elm] = $reader->value;
- }
-}
-print_r($odt_meta);
diff --git a/ext/zip/examples/oldapi.php b/ext/zip/examples/oldapi.php
deleted file mode 100644
index 2f17f43ebd..0000000000
--- a/ext/zip/examples/oldapi.php
+++ /dev/null
@@ -1,17 +0,0 @@
-<?php
-
-$zip = zip_open('examples/test1.zip');
-var_dump($zip);
-
-if ($zip) {
- $i = 0;
- while ($zip_entry = zip_read($zip)) {
- var_dump($zip_entry);
- $txt = zip_entry_read($zip_entry, 10);
- echo $i . ": " . $txt . "size: " . zip_entry_filesize($zip_entry) .
- "comp_method: " . zip_entry_compressionmethod($zip_entry) .
- "\n";
- $i++;
- }
- var_dump($zip_entry);
-}
diff --git a/ext/zip/examples/test.odt b/ext/zip/examples/test.odt
deleted file mode 100644
index 6a816ad749..0000000000
--- a/ext/zip/examples/test.odt
+++ /dev/null
Binary files differ
diff --git a/ext/zip/examples/test.zip b/ext/zip/examples/test.zip
deleted file mode 100644
index 6b98694803..0000000000
--- a/ext/zip/examples/test.zip
+++ /dev/null
Binary files differ
diff --git a/ext/zip/examples/test1.zip b/ext/zip/examples/test1.zip
deleted file mode 100644
index a4deb13c6b..0000000000
--- a/ext/zip/examples/test1.zip
+++ /dev/null
Binary files differ
diff --git a/ext/zip/examples/test_im.zip b/ext/zip/examples/test_im.zip
deleted file mode 100644
index 6385ee9252..0000000000
--- a/ext/zip/examples/test_im.zip
+++ /dev/null
Binary files differ
diff --git a/ext/zip/examples/test_with_comment.zip b/ext/zip/examples/test_with_comment.zip
deleted file mode 100644
index cc65375fb5..0000000000
--- a/ext/zip/examples/test_with_comment.zip
+++ /dev/null
Binary files differ
diff --git a/ext/zip/examples/too.php b/ext/zip/examples/too.php
deleted file mode 100644
index 6d2100811e..0000000000
--- a/ext/zip/examples/too.php
+++ /dev/null
@@ -1,2 +0,0 @@
-<?php
-echo "too";
diff --git a/ext/zip/lib/mkstemp.c b/ext/zip/lib/mkstemp.c
deleted file mode 100644
index 3ac587eafe..0000000000
--- a/ext/zip/lib/mkstemp.c
+++ /dev/null
@@ -1,136 +0,0 @@
-/* $NiH: mkstemp.c,v 1.3 2006/04/23 14:51:45 wiz Exp $ */
-
-/* Adapted from NetBSB libc by Dieter Baron */
-
-/* NetBSD: gettemp.c,v 1.13 2003/12/05 00:57:36 uebayasi Exp */
-
-/*
- * Copyright (c) 1987, 1993
- * The Regents of the University of California. 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.
- * 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.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``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 REGENTS OR CONTRIBUTORS 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.
- */
-
-#include <sys/types.h>
-#include <sys/stat.h>
-
-#include <assert.h>
-#include <ctype.h>
-#include <errno.h>
-#include <fcntl.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-
-
-int
-_zip_mkstemp(char *path)
-{
- int fd;
- char *start, *trv;
- struct stat sbuf;
- pid_t pid;
-
- /* To guarantee multiple calls generate unique names even if
- the file is not created. 676 different possibilities with 7
- or more X's, 26 with 6 or less. */
- static char xtra[2] = "aa";
- int xcnt = 0;
-
- pid = getpid();
-
- /* Move to end of path and count trailing X's. */
- for (trv = path; *trv; ++trv)
- if (*trv == 'X')
- xcnt++;
- else
- xcnt = 0;
-
- /* Use at least one from xtra. Use 2 if more than 6 X's. */
- if (*(trv - 1) == 'X')
- *--trv = xtra[0];
- if (xcnt > 6 && *(trv - 1) == 'X')
- *--trv = xtra[1];
-
- /* Set remaining X's to pid digits with 0's to the left. */
- while (*--trv == 'X') {
- *trv = (pid % 10) + '0';
- pid /= 10;
- }
-
- /* update xtra for next call. */
- if (xtra[0] != 'z')
- xtra[0]++;
- else {
- xtra[0] = 'a';
- if (xtra[1] != 'z')
- xtra[1]++;
- else
- xtra[1] = 'a';
- }
-
- /*
- * check the target directory; if you have six X's and it
- * doesn't exist this runs for a *very* long time.
- */
- for (start = trv + 1;; --trv) {
- if (trv <= path)
- break;
- if (*trv == '/') {
- *trv = '\0';
- if (stat(path, &sbuf))
- return (0);
- if (!S_ISDIR(sbuf.st_mode)) {
- errno = ENOTDIR;
- return (0);
- }
- *trv = '/';
- break;
- }
- }
-
- for (;;) {
- if ((fd = open(path, O_CREAT | O_EXCL | O_RDWR, 0600)) >= 0)
- return (1);
- if (errno != EEXIST)
- return (0);
-
- /* tricky little algorithm for backward compatibility */
- for (trv = start;;) {
- if (!*trv)
- return (0);
- if (*trv == 'z')
- *trv++ = 'a';
- else {
- if (isdigit((unsigned char)*trv))
- *trv = 'a';
- else
- ++*trv;
- break;
- }
- }
- }
- /*NOTREACHED*/
-}
diff --git a/ext/zip/lib/unistd.h b/ext/zip/lib/unistd.h
deleted file mode 100644
index 2ef435c012..0000000000
--- a/ext/zip/lib/unistd.h
+++ /dev/null
@@ -1,3 +0,0 @@
-#ifndef _MSC_VER
-#include <unistd.h>
-#endif
diff --git a/ext/zip/lib/zip.h b/ext/zip/lib/zip.h
deleted file mode 100644
index 8cf690cad3..0000000000
--- a/ext/zip/lib/zip.h
+++ /dev/null
@@ -1,206 +0,0 @@
-#ifndef _HAD_ZIP_H
-#define _HAD_ZIP_H
-
-/*
- $NiH: zip.h,v 1.57 2006/04/24 14:04:19 dillo Exp $
-
- zip.h -- exported declarations.
- Copyright (C) 1999-2006 Dieter Baron and Thomas Klausner
-
- This file is part of libzip, a library to manipulate ZIP archives.
- The authors can be contacted at <nih@giga.or.at>
-
- 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.
- 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.
- 3. The names of the authors may not be used to endorse or promote
- products derived from this software without specific prior
- written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``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 AUTHORS 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.
-*/
-
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <sys/types.h>
-#include <stdio.h>
-#include <time.h>
-
-#include "zip_win32.h"
-
-/* flags for zip_open */
-
-#define ZIP_CREATE 1
-#define ZIP_EXCL 2
-#define ZIP_CHECKCONS 4
-#define ZIP_OVERWRITE 8
-
-
-/* flags for zip_name_locate, zip_fopen, zip_stat, ... */
-
-#define ZIP_FL_NOCASE 1 /* ignore case on name lookup */
-#define ZIP_FL_NODIR 2 /* ignore directory component */
-#define ZIP_FL_COMPRESSED 4 /* read compressed data */
-#define ZIP_FL_UNCHANGED 8 /* use original data, ignoring changes */
-
-/* libzip error codes */
-
-#define ZIP_ER_OK 0 /* N No error */
-#define ZIP_ER_MULTIDISK 1 /* N Multi-disk zip archives not supported */
-#define ZIP_ER_RENAME 2 /* S Renaming temporary file failed */
-#define ZIP_ER_CLOSE 3 /* S Closing zip archive failed */
-#define ZIP_ER_SEEK 4 /* S Seek error */
-#define ZIP_ER_READ 5 /* S Read error */
-#define ZIP_ER_WRITE 6 /* S Write error */
-#define ZIP_ER_CRC 7 /* N CRC error */
-#define ZIP_ER_ZIPCLOSED 8 /* N Containing zip archive was closed */
-#define ZIP_ER_NOENT 9 /* N No such file */
-#define ZIP_ER_EXISTS 10 /* N File already exists */
-#define ZIP_ER_OPEN 11 /* S Can't open file */
-#define ZIP_ER_TMPOPEN 12 /* S Failure to create temporary file */
-#define ZIP_ER_ZLIB 13 /* Z Zlib error */
-#define ZIP_ER_MEMORY 14 /* N Malloc failure */
-#define ZIP_ER_CHANGED 15 /* N Entry has been changed */
-#define ZIP_ER_COMPNOTSUPP 16 /* N Compression method not supported */
-#define ZIP_ER_EOF 17 /* N Premature EOF */
-#define ZIP_ER_INVAL 18 /* N Invalid argument */
-#define ZIP_ER_NOZIP 19 /* N Not a zip archive */
-#define ZIP_ER_INTERNAL 20 /* N Internal error */
-#define ZIP_ER_INCONS 21 /* N Zip archive inconsistent */
-#define ZIP_ER_REMOVE 22 /* S Can't remove file */
-#define ZIP_ER_DELETED 23 /* N Entry has been deleted */
-
-
-/* type of system error value */
-
-#define ZIP_ET_NONE 0 /* sys_err unused */
-#define ZIP_ET_SYS 1 /* sys_err is errno */
-#define ZIP_ET_ZLIB 2 /* sys_err is zlib error code */
-
-/* compression methods */
-
-#define ZIP_CM_DEFAULT -1 /* better of deflate or store */
-#define ZIP_CM_STORE 0 /* stored (uncompressed) */
-#define ZIP_CM_SHRINK 1 /* shrunk */
-#define ZIP_CM_REDUCE_1 2 /* reduced with factor 1 */
-#define ZIP_CM_REDUCE_2 3 /* reduced with factor 2 */
-#define ZIP_CM_REDUCE_3 4 /* reduced with factor 3 */
-#define ZIP_CM_REDUCE_4 5 /* reduced with factor 4 */
-#define ZIP_CM_IMPLODE 6 /* imploded */
-/* 7 - Reserved for Tokenizing compression algorithm */
-#define ZIP_CM_DEFLATE 8 /* deflated */
-#define ZIP_CM_DEFLATE64 9 /* deflate64 */
-#define ZIP_CM_PKWARE_IMPLODE 10 /* PKWARE imploding */
-/* 11 - Reserved by PKWARE */
-#define ZIP_CM_BZIP2 12 /* compressed using BZIP2 algorithm */
-
-/* encryption methods */
-
-#define ZIP_EM_NONE 0 /* not encrypted */
-#define ZIP_EM_TRAD_PKWARE 1 /* traditional PKWARE encryption */
-#if 0 /* Strong Encryption Header not parsed yet */
-#define ZIP_EM_DES 0x6601 /* strong encryption: DES */
-#define ZIP_EM_RC2_OLD 0x6602 /* strong encryption: RC2, version < 5.2 */
-#define ZIP_EM_3DES_168 0x6603
-#define ZIP_EM_3DES_112 0x6609
-#define ZIP_EM_AES_128 0x660e
-#define ZIP_EM_AES_192 0x660f
-#define ZIP_EM_AES_256 0x6610
-#define ZIP_EM_RC2 0x6702 /* strong encryption: RC2, version >= 5.2 */
-#define ZIP_EM_RC4 0x6801
-#endif
-#define ZIP_EM_UNKNOWN 0xffff /* unknown algorithm */
-
-
-
-enum zip_source_cmd {
- ZIP_SOURCE_OPEN, /* prepare for reading */
- ZIP_SOURCE_READ, /* read data */
- ZIP_SOURCE_CLOSE, /* reading is done */
- ZIP_SOURCE_STAT, /* get meta information */
- ZIP_SOURCE_ERROR, /* get error information */
- ZIP_SOURCE_FREE /* cleanup and free resources */
-};
-
-typedef ssize_t (*zip_source_callback)(void *state, void *data,
- size_t len, enum zip_source_cmd cmd);
-
-struct zip_stat {
- const char *name; /* name of the file */
- int index; /* index within archive */
- unsigned int crc; /* crc of file data */
- time_t mtime; /* modification time */
- off_t size; /* size of file (uncompressed) */
- off_t comp_size; /* size of file (compressed) */
- unsigned short comp_method; /* compression method used */
- unsigned short encryption_method; /* encryption method used */
-};
-
-struct zip;
-struct zip_file;
-struct zip_source;
-
-
-
-int zip_add(struct zip *, const char *, struct zip_source *);
-int zip_close(struct zip *);
-int zip_delete(struct zip *, int);
-void zip_error_get(struct zip *, int *, int *);
-int zip_error_get_sys_type(int);
-int zip_error_to_str(char *, size_t, int, int);
-int zip_fclose(struct zip_file *);
-void zip_file_error_get(struct zip_file *, int *, int *);
-const char *zip_file_strerror(struct zip_file *);
-struct zip_file *zip_fopen(struct zip *, const char *, int);
-struct zip_file *zip_fopen_index(struct zip *, int, int);
-ssize_t zip_fread(struct zip_file *, void *, size_t);
-const char *zip_get_archive_comment(struct zip *, int *, int);
-const char *zip_get_file_comment(struct zip *, int, int *, int);
-const char *zip_get_name(struct zip *, int, int);
-int zip_get_num_files(struct zip *);
-int zip_name_locate(struct zip *, const char *, int);
-struct zip *zip_open(const char *, int, int *);
-int zip_rename(struct zip *, int, const char *);
-int zip_replace(struct zip *, int, struct zip_source *);
-int zip_set_archive_comment(struct zip *, const char *, int);
-int zip_set_file_comment(struct zip *, int, const char *, int);
-struct zip_source *zip_source_buffer(struct zip *, const void *, off_t, int);
-struct zip_source *zip_source_file(struct zip *, const char *, off_t, off_t);
-struct zip_source *zip_source_filep(struct zip *, FILE *, off_t, off_t);
-void zip_source_free(struct zip_source *);
-struct zip_source *zip_source_function(struct zip *,
- zip_source_callback, void *);
-struct zip_source *zip_source_zip(struct zip *, struct zip *, int, int,
- off_t, off_t);
-int zip_stat(struct zip *, const char *, int, struct zip_stat *);
-int zip_stat_index(struct zip *, int, int, struct zip_stat *);
-const char *zip_strerror(struct zip *);
-int zip_unchange(struct zip *, int);
-int zip_unchange_all(struct zip *);
-int zip_unchange_archive(struct zip *);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _HAD_ZIP_H */
diff --git a/ext/zip/lib/zip_add.c b/ext/zip/lib/zip_add.c
deleted file mode 100644
index 535d6e4689..0000000000
--- a/ext/zip/lib/zip_add.c
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- $NiH: zip_add.c,v 1.14 2004/11/18 15:04:04 wiz Exp $
-
- zip_add.c -- add file via callback function
- Copyright (C) 1999, 2003, 2004 Dieter Baron and Thomas Klausner
-
- This file is part of libzip, a library to manipulate ZIP archives.
- The authors can be contacted at <nih@giga.or.at>
-
- 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.
- 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.
- 3. The names of the authors may not be used to endorse or promote
- products derived from this software without specific prior
- written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``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 AUTHORS 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.
-*/
-
-
-
-#include "zip.h"
-#include "zipint.h"
-
-
-
-int
-zip_add(struct zip *za, const char *name, struct zip_source *source)
-{
- if (name == NULL || source == NULL) {
- _zip_error_set(&za->error, ZIP_ER_INVAL, 0);
- return -1;
- }
- return _zip_replace(za, -1, name, source);
-}
diff --git a/ext/zip/lib/zip_close.c b/ext/zip/lib/zip_close.c
deleted file mode 100644
index 3cb324d9c4..0000000000
--- a/ext/zip/lib/zip_close.c
+++ /dev/null
@@ -1,554 +0,0 @@
-/*
- $NiH: zip_close.c,v 1.60 2006/05/09 17:21:47 wiz Exp $
-
- zip_close.c -- close zip archive and update changes
- Copyright (C) 1999, 2004, 2005 Dieter Baron and Thomas Klausner
-
- This file is part of libzip, a library to manipulate ZIP archives.
- The authors can be contacted at <nih@giga.or.at>
-
- 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.
- 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.
- 3. The names of the authors may not be used to endorse or promote
- products derived from this software without specific prior
- written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``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 AUTHORS 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.
-*/
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <errno.h>
-#ifndef _MSC_VER
-#include <unistd.h>
-#endif
-#include <sys/types.h>
-#include <sys/stat.h>
-
-#include "zip.h"
-#include "zipint.h"
-
-static int add_data(struct zip *, int, struct zip_dirent *, FILE *);
-static int add_data_comp(zip_source_callback, void *, struct zip_stat *,
- FILE *, struct zip_error *);
-static int add_data_uncomp(zip_source_callback, void *, struct zip_stat *,
- FILE *, struct zip_error *);
-static void ch_set_error(struct zip_error *, zip_source_callback, void *);
-static int copy_data(FILE *, off_t, FILE *, struct zip_error *);
-static int _zip_cdir_set_comment(struct zip_cdir *, struct zip *);
-static int _zip_changed(struct zip *, int *);
-static char *_zip_create_temp_output(struct zip *, FILE **);
-
-int
-zip_close(struct zip *za)
-{
- int survivors;
- int i, j, error;
- char *temp;
- FILE *out;
- mode_t mask;
- struct zip_cdir *cd;
- struct zip_dirent de;
- int rename_error = 0;
-
- if (!_zip_changed(za, &survivors)) {
- _zip_free(za);
- return 0;
- }
-
- /* don't create zip files with no entries */
- if (survivors == 0) {
- if (za->zn) {
- if (remove(za->zn) != 0) {
- _zip_error_set(&za->error, ZIP_ER_REMOVE, errno);
- return -1;
- }
- }
- _zip_free(za);
- return 0;
- }
-
- if ((cd=_zip_cdir_new(survivors, &za->error)) == NULL)
- return -1;
-
- for (i=0; i<survivors; i++)
- _zip_dirent_init(&cd->entry[i]);
-
- if (_zip_cdir_set_comment(cd, za) == -1) {
- _zip_cdir_free(cd);
- return -1;
- }
-
- if ((temp=_zip_create_temp_output(za, &out)) == NULL) {
- _zip_cdir_free(cd);
- return -1;
- }
-
- error = 0;
- for (i=j=0; i<za->nentry; i++) {
- if (za->entry[i].state == ZIP_ST_DELETED)
- continue;
-
- /* create new local directory entry */
- if (ZIP_ENTRY_DATA_CHANGED(za->entry+i)) {
- _zip_dirent_init(&de);
- /* use it as central directory entry */
- memcpy(cd->entry+j, &de, sizeof(cd->entry[j]));
-
- /* set/update file name */
- if (za->entry[i].ch_filename == NULL) {
- if (za->entry[i].state == ZIP_ST_REPLACED) {
- de.filename = strdup(za->cdir->entry[i].filename);
- de.filename_len = strlen(de.filename);
- cd->entry[j].filename = za->cdir->entry[i].filename;
- cd->entry[j].filename_len = de.filename_len;
- }
- else {
- de.filename = strdup("-");
- de.filename_len = 1;
- cd->entry[j].filename = "-";
- cd->entry[j].filename_len = de.filename_len;
- }
- }
- }
- else {
- /* copy existing directory entries */
- if (fseek(za->zp, za->cdir->entry[i].offset, SEEK_SET) != 0) {
- _zip_error_set(&za->error, ZIP_ER_SEEK, errno);
- error = 1;
- break;
- }
- if (_zip_dirent_read(&de, za->zp, NULL, 0, 1, &za->error) != 0) {
- error = 1;
- break;
- }
-
- if (de.bitflags & ZIP_GPBF_USE_DATA_DESCRIPTOR) {
- de.crc = (za->cdir->entry+i)->crc;
- de.comp_size = (za->cdir->entry+i)->comp_size;
- de.uncomp_size = (za->cdir->entry+i)->uncomp_size;
- }
- memcpy(cd->entry+j, za->cdir->entry+i, sizeof(cd->entry[j]));
- }
-
- if (za->entry[i].ch_filename) {
- free(de.filename);
- if ((de.filename=strdup(za->entry[i].ch_filename)) == NULL) {
- error = 1;
- break;
- }
- de.filename_len = strlen(de.filename);
- cd->entry[j].filename = za->entry[i].ch_filename;
- cd->entry[j].filename_len = de.filename_len;
- }
-
- if (za->entry[i].ch_comment_len != -1) {
- /* as the rest of cd entries, its malloc/free is done by za */
- cd->entry[j].comment = za->entry[i].ch_comment;
- cd->entry[j].comment_len = za->entry[i].ch_comment_len;
- }
-
- cd->entry[j].offset = ftell(out);
-
- if (ZIP_ENTRY_DATA_CHANGED(za->entry+i)) {
- if (add_data(za, i, &de, out) < 0) {
- error = 1;
- break;
- }
-
- cd->entry[j].last_mod = de.last_mod;
- cd->entry[j].comp_method = de.comp_method;
- cd->entry[j].comp_size = de.comp_size;
- cd->entry[j].uncomp_size = de.uncomp_size;
- cd->entry[j].crc = de.crc;
- }
- else {
- if (_zip_dirent_write(&de, out, 1, &za->error) < 0) {
- error = 1;
- break;
- }
- /* we just read the local dirent, file is at correct position */
- if (copy_data(za->zp, de.comp_size, out, &za->error) < 0) {
- error = 1;
- break;
- }
- }
-
- j++;
-
- _zip_dirent_finalize(&de);
- }
-
- if (!error) {
- if (_zip_cdir_write(cd, out, &za->error) < 0)
- error = 1;
- }
-
- /* pointers in cd entries are owned by za */
- cd->nentry = 0;
- _zip_cdir_free(cd);
-
- if (error) {
- _zip_dirent_finalize(&de);
- fclose(out);
- remove(temp);
- free(temp);
- return -1;
- }
-
- if (fclose(out) != 0) {
- _zip_error_set(&za->error, ZIP_ER_CLOSE, errno);
- remove(temp);
- free(temp);
- return -1;
- }
-
- if (za->zp) {
- fclose(za->zp);
- za->zp = NULL;
- }
-
-#ifdef PHP_WIN32
- if (!MoveFileEx(temp, za->zn, MOVEFILE_REPLACE_EXISTING)) {
- rename_error = -1;
- }
-#else
- if (rename(temp, za->zn) != 0) {
- rename_error = -1;
- }
-#endif
-
- if (rename_error < 0) {
- _zip_error_set(&za->error, ZIP_ER_RENAME, errno);
- remove(temp);
- free(temp);
- return -1;
- }
-
- mask = umask(0);
- umask(mask);
- chmod(za->zn, 0666&~mask);
-
- _zip_free(za);
-
- return 0;
-}
-
-
-
-static int
-add_data(struct zip *za, int idx, struct zip_dirent *de, FILE *ft)
-{
- off_t offstart, offend;
- zip_source_callback cb;
- void *ud;
- struct zip_stat st;
-
- cb = za->entry[idx].source->f;
- ud = za->entry[idx].source->ud;
-
- if (cb(ud, &st, sizeof(st), ZIP_SOURCE_STAT) < (ssize_t)sizeof(st)) {
- ch_set_error(&za->error, cb, ud);
- return -1;
- }
-
- if (cb(ud, NULL, 0, ZIP_SOURCE_OPEN) < 0) {
- ch_set_error(&za->error, cb, ud);
- return -1;
- }
-
- offstart = ftell(ft);
-
- if (_zip_dirent_write(de, ft, 1, &za->error) < 0)
- return -1;
-
- if (st.comp_method != ZIP_CM_STORE) {
- if (add_data_comp(cb, ud, &st, ft, &za->error) < 0)
- return -1;
- }
- else {
- if (add_data_uncomp(cb, ud, &st, ft, &za->error) < 0)
- return -1;
- }
-
- if (cb(ud, NULL, 0, ZIP_SOURCE_CLOSE) < 0) {
- ch_set_error(&za->error, cb, ud);
- return -1;
- }
-
- offend = ftell(ft);
-
- if (fseek(ft, offstart, SEEK_SET) < 0) {
- _zip_error_set(&za->error, ZIP_ER_SEEK, errno);
- return -1;
- }
-
- de->comp_method = st.comp_method;
- de->last_mod = st.mtime;
- de->crc = st.crc;
- de->uncomp_size = st.size;
- de->comp_size = st.comp_size;
-
- if (_zip_dirent_write(de, ft, 1, &za->error) < 0)
- return -1;
-
- if (fseek(ft, offend, SEEK_SET) < 0) {
- _zip_error_set(&za->error, ZIP_ER_SEEK, errno);
- return -1;
- }
-
- return 0;
-}
-
-
-
-static int
-add_data_comp(zip_source_callback cb, void *ud, struct zip_stat *st,FILE *ft,
- struct zip_error *error)
-{
- char buf[BUFSIZE];
- ssize_t n;
-
- st->comp_size = 0;
- while ((n=cb(ud, buf, sizeof(buf), ZIP_SOURCE_READ)) > 0) {
- if (fwrite(buf, 1, n, ft) != (size_t)n) {
- _zip_error_set(error, ZIP_ER_WRITE, errno);
- return -1;
- }
-
- st->comp_size += n;
- }
- if (n < 0) {
- ch_set_error(error, cb, ud);
- return -1;
- }
-
- return 0;
-}
-
-
-
-static int
-add_data_uncomp(zip_source_callback cb, void *ud, struct zip_stat *st,
- FILE *ft, struct zip_error *error)
-{
- char b1[BUFSIZE], b2[BUFSIZE];
- int end, flush, ret;
- ssize_t n;
- size_t n2;
- z_stream zstr;
-
- st->comp_method = ZIP_CM_DEFLATE;
- st->comp_size = st->size = 0;
- st->crc = crc32(0, NULL, 0);
-
- zstr.zalloc = Z_NULL;
- zstr.zfree = Z_NULL;
- zstr.opaque = NULL;
- zstr.avail_in = 0;
- zstr.avail_out = 0;
-
- /* -15: undocumented feature of zlib to _not_ write a zlib header */
- deflateInit2(&zstr, Z_BEST_COMPRESSION, Z_DEFLATED, -15, 9,
- Z_DEFAULT_STRATEGY);
-
- zstr.next_out = (Bytef *)b2;
- zstr.avail_out = sizeof(b2);
- zstr.avail_in = 0;
-
- flush = 0;
- end = 0;
- while (!end) {
- if (zstr.avail_in == 0 && !flush) {
- if ((n=cb(ud, b1, sizeof(b1), ZIP_SOURCE_READ)) < 0) {
- ch_set_error(error, cb, ud);
- deflateEnd(&zstr);
- return -1;
- }
- if (n > 0) {
- zstr.avail_in = n;
- zstr.next_in = (Bytef *)b1;
- st->size += n;
- st->crc = crc32(st->crc, (Bytef *)b1, n);
- }
- else
- flush = Z_FINISH;
- }
-
- ret = deflate(&zstr, flush);
- if (ret != Z_OK && ret != Z_STREAM_END) {
- _zip_error_set(error, ZIP_ER_ZLIB, ret);
- return -1;
- }
-
- if (zstr.avail_out != sizeof(b2)) {
- n2 = sizeof(b2) - zstr.avail_out;
-
- if (fwrite(b2, 1, n2, ft) != n2) {
- _zip_error_set(error, ZIP_ER_WRITE, errno);
- return -1;
- }
-
- zstr.next_out = (Bytef *)b2;
- zstr.avail_out = sizeof(b2);
- st->comp_size += n2;
- }
-
- if (ret == Z_STREAM_END) {
- deflateEnd(&zstr);
- end = 1;
- }
- }
-
- return 0;
-}
-
-
-
-static void
-ch_set_error(struct zip_error *error, zip_source_callback cb, void *ud)
-{
- int e[2];
-
- if ((cb(ud, e, sizeof(e), ZIP_SOURCE_ERROR)) < (ssize_t)sizeof(e)) {
- error->zip_err = ZIP_ER_INTERNAL;
- error->sys_err = 0;
- }
- else {
- error->zip_err = e[0];
- error->sys_err = e[1];
- }
-}
-
-
-
-static int
-copy_data(FILE *fs, off_t len, FILE *ft, struct zip_error *error)
-{
- char buf[BUFSIZE];
- int n, nn;
-
- if (len == 0)
- return 0;
-
- while (len > 0) {
- nn = len > sizeof(buf) ? sizeof(buf) : len;
- if ((n=fread(buf, 1, nn, fs)) < 0) {
- _zip_error_set(error, ZIP_ER_READ, errno);
- return -1;
- }
- else if (n == 0) {
- _zip_error_set(error, ZIP_ER_EOF, 0);
- return -1;
- }
-
- if (fwrite(buf, 1, n, ft) != (size_t)n) {
- _zip_error_set(error, ZIP_ER_WRITE, errno);
- return -1;
- }
-
- len -= n;
- }
-
- return 0;
-}
-
-
-
-static int
-_zip_cdir_set_comment(struct zip_cdir *dest, struct zip *src)
-{
- if (src->ch_comment_len != -1) {
- dest->comment = _zip_memdup(src->ch_comment,
- src->ch_comment_len, &src->error);
- if (dest->comment == NULL)
- return -1;
- dest->comment_len = src->ch_comment_len;
- } else {
- if (src->cdir && src->cdir->comment) {
- dest->comment = _zip_memdup(src->cdir->comment,
- src->cdir->comment_len, &src->error);
- if (dest->comment == NULL)
- return -1;
- dest->comment_len = src->cdir->comment_len;
- }
- }
-
- return 0;
-}
-
-
-
-static int
-_zip_changed(struct zip *za, int *survivorsp)
-{
- int changed, i, survivors;
-
- changed = survivors = 0;
-
- if (za->ch_comment_len != -1)
- changed = 1;
-
- for (i=0; i<za->nentry; i++) {
- if ((za->entry[i].state != ZIP_ST_UNCHANGED)
- || (za->entry[i].ch_comment_len != -1))
- changed = 1;
- if (za->entry[i].state != ZIP_ST_DELETED)
- survivors++;
- }
-
- *survivorsp = survivors;
-
- return changed;
-}
-
-
-
-static char *
-_zip_create_temp_output(struct zip *za, FILE **outp)
-{
- char *temp;
- int tfd;
- FILE *tfp;
-
- if ((temp=(char *)malloc(strlen(za->zn)+8)) == NULL) {
- _zip_error_set(&za->error, ZIP_ER_MEMORY, 0);
- return NULL;
- }
-
- sprintf(temp, "%s.XXXXXX", za->zn);
-
- if ((tfd=mkstemp(temp)) == -1) {
- _zip_error_set(&za->error, ZIP_ER_TMPOPEN, errno);
- free(temp);
- return NULL;
- }
-
- if ((tfp=fdopen(tfd, "r+b")) == NULL) {
- _zip_error_set(&za->error, ZIP_ER_TMPOPEN, errno);
- close(tfd);
- remove(temp);
- free(temp);
- return NULL;
- }
-
- *outp = tfp;
- return temp;
-}
diff --git a/ext/zip/lib/zip_delete.c b/ext/zip/lib/zip_delete.c
deleted file mode 100644
index 7244e612f7..0000000000
--- a/ext/zip/lib/zip_delete.c
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- $NiH: zip_delete.c,v 1.17 2005/06/09 19:57:09 dillo Exp $
-
- zip_delete.c -- delete file from zip archive
- Copyright (C) 1999, 2004, 2005 Dieter Baron and Thomas Klausner
-
- This file is part of libzip, a library to manipulate ZIP archives.
- The authors can be contacted at <nih@giga.or.at>
-
- 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.
- 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.
- 3. The names of the authors may not be used to endorse or promote
- products derived from this software without specific prior
- written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``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 AUTHORS 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.
-*/
-
-
-
-#include "zip.h"
-#include "zipint.h"
-
-
-
-int
-zip_delete(struct zip *za, int idx)
-{
- if (idx < 0 || idx >= za->nentry) {
- _zip_error_set(&za->error, ZIP_ER_INVAL, 0);
- return -1;
- }
-
- /* allow duplicate file names, because the file will
- * be removed directly afterwards */
- if (_zip_unchange(za, idx, 1) != 0)
- return -1;
-
- za->entry[idx].state = ZIP_ST_DELETED;
-
- return 0;
-}
-
-
diff --git a/ext/zip/lib/zip_dirent.c b/ext/zip/lib/zip_dirent.c
deleted file mode 100644
index f0c988bc70..0000000000
--- a/ext/zip/lib/zip_dirent.c
+++ /dev/null
@@ -1,532 +0,0 @@
-/*
- $NiH: zip_dirent.c,v 1.9 2006/04/23 14:51:45 wiz Exp $
-
- zip_dirent.c -- read directory entry (local or central), clean dirent
- Copyright (C) 1999, 2003, 2004, 2005 Dieter Baron and Thomas Klausner
-
- This file is part of libzip, a library to manipulate ZIP archives.
- The authors can be contacted at <nih@giga.or.at>
-
- 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.
- 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.
- 3. The names of the authors may not be used to endorse or promote
- products derived from this software without specific prior
- written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``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 AUTHORS 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.
-*/
-
-
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <errno.h>
-#ifndef _MSC_VER
-#include <unistd.h>
-#endif
-#include <sys/types.h>
-#include <sys/stat.h>
-
-#include "zip.h"
-#include "zipint.h"
-
-static time_t _zip_d2u_time(int, int);
-static char *_zip_readfpstr(FILE *, unsigned int, int, struct zip_error *);
-static char *_zip_readstr(unsigned char **, int, int, struct zip_error *);
-static void _zip_u2d_time(time_t, unsigned short *, unsigned short *);
-static void _zip_write2(unsigned short, FILE *);
-static void _zip_write4(unsigned int, FILE *);
-
-
-
-void
-_zip_cdir_free(struct zip_cdir *cd)
-{
- int i;
-
- if (!cd)
- return;
-
- for (i=0; i<cd->nentry; i++)
- _zip_dirent_finalize(cd->entry+i);
- free(cd->comment);
- free(cd->entry);
- free(cd);
-}
-
-
-
-struct zip_cdir *
-_zip_cdir_new(int nentry, struct zip_error *error)
-{
- struct zip_cdir *cd;
-
- if ((cd=(struct zip_cdir *)malloc(sizeof(*cd))) == NULL) {
- _zip_error_set(error, ZIP_ER_MEMORY, 0);
- return NULL;
- }
-
- if ((cd->entry=(struct zip_dirent *)malloc(sizeof(*(cd->entry))*nentry))
- == NULL) {
- _zip_error_set(error, ZIP_ER_MEMORY, 0);
- free(cd);
- return NULL;
- }
-
- /* entries must be initialized by caller */
-
- cd->nentry = nentry;
- cd->size = cd->offset = 0;
- cd->comment = NULL;
- cd->comment_len = 0;
-
- return cd;
-}
-
-
-
-int
-_zip_cdir_write(struct zip_cdir *cd, FILE *fp, struct zip_error *error)
-{
- int i;
-
- cd->offset = ftell(fp);
-
- for (i=0; i<cd->nentry; i++) {
- if (_zip_dirent_write(cd->entry+i, fp, 0, error) != 0)
- return -1;
- }
-
- cd->size = ftell(fp) - cd->offset;
-
- /* clearerr(fp); */
- fwrite(EOCD_MAGIC, 1, 4, fp);
- _zip_write4(0, fp);
- _zip_write2((unsigned short)cd->nentry, fp);
- _zip_write2((unsigned short)cd->nentry, fp);
- _zip_write4(cd->size, fp);
- _zip_write4(cd->offset, fp);
- _zip_write2(cd->comment_len, fp);
- fwrite(cd->comment, 1, cd->comment_len, fp);
-
- if (ferror(fp)) {
- _zip_error_set(error, ZIP_ER_WRITE, errno);
- return -1;
- }
-
- return 0;
-}
-
-
-
-void
-_zip_dirent_finalize(struct zip_dirent *zde)
-{
- free(zde->filename);
- zde->filename = NULL;
- free(zde->extrafield);
- zde->extrafield = NULL;
- free(zde->comment);
- zde->comment = NULL;
-}
-
-
-
-void
-_zip_dirent_init(struct zip_dirent *de)
-{
- de->version_madeby = 0;
- de->version_needed = 20; /* 2.0 */
- de->bitflags = 0;
- de->comp_method = 0;
- de->last_mod = 0;
- de->crc = 0;
- de->comp_size = 0;
- de->uncomp_size = 0;
- de->filename = NULL;
- de->filename_len = 0;
- de->extrafield = NULL;
- de->extrafield_len = 0;
- de->comment = NULL;
- de->comment_len = 0;
- de->disk_number = 0;
- de->int_attrib = 0;
- de->ext_attrib = 0;
- de->offset = 0;
-}
-
-
-
-/* _zip_dirent_read(zde, fp, bufp, left, localp, error):
- Fills the zip directory entry zde.
-
- If bufp is non-NULL, data is taken from there and bufp is advanced
- by the amount of data used; no more than left bytes are used.
- Otherwise data is read from fp as needed.
-
- If localp != 0, it reads a local header instead of a central
- directory entry.
-
- Returns 0 if successful. On error, error is filled in and -1 is
- returned.
-*/
-
-int
-_zip_dirent_read(struct zip_dirent *zde, FILE *fp,
- unsigned char **bufp, unsigned int left, int localp,
- struct zip_error *error)
-{
- unsigned char buf[CDENTRYSIZE];
- unsigned char *cur;
- unsigned short dostime, dosdate;
- unsigned int size;
-
- if (localp)
- size = LENTRYSIZE;
- else
- size = CDENTRYSIZE;
-
- if (bufp) {
- /* use data from buffer */
- cur = *bufp;
- if (left < size) {
- _zip_error_set(error, ZIP_ER_NOZIP, 0);
- return -1;
- }
- }
- else {
- /* read entry from disk */
- if ((fread(buf, 1, size, fp)<size)) {
- _zip_error_set(error, ZIP_ER_READ, errno);
- return -1;
- }
- left = size;
- cur = buf;
- }
-
- if (memcmp(cur, (localp ? LOCAL_MAGIC : CENTRAL_MAGIC), 4) != 0) {
- _zip_error_set(error, ZIP_ER_NOZIP, 0);
- return -1;
- }
- cur += 4;
-
-
- /* convert buffercontents to zip_dirent */
-
- if (!localp)
- zde->version_madeby = _zip_read2(&cur);
- else
- zde->version_madeby = 0;
- zde->version_needed = _zip_read2(&cur);
- zde->bitflags = _zip_read2(&cur);
- zde->comp_method = _zip_read2(&cur);
-
- /* convert to time_t */
- dostime = _zip_read2(&cur);
- dosdate = _zip_read2(&cur);
- zde->last_mod = _zip_d2u_time(dostime, dosdate);
-
- zde->crc = _zip_read4(&cur);
- zde->comp_size = _zip_read4(&cur);
- zde->uncomp_size = _zip_read4(&cur);
-
- zde->filename_len = _zip_read2(&cur);
- zde->extrafield_len = _zip_read2(&cur);
-
- if (localp) {
- zde->comment_len = 0;
- zde->disk_number = 0;
- zde->int_attrib = 0;
- zde->ext_attrib = 0;
- zde->offset = 0;
- } else {
- zde->comment_len = _zip_read2(&cur);
- zde->disk_number = _zip_read2(&cur);
- zde->int_attrib = _zip_read2(&cur);
- zde->ext_attrib = _zip_read4(&cur);
- zde->offset = _zip_read4(&cur);
- }
-
- zde->filename = NULL;
- zde->extrafield = NULL;
- zde->comment = NULL;
-
- if (bufp) {
- if (left < CDENTRYSIZE + (zde->filename_len+zde->extrafield_len
- +zde->comment_len)) {
- _zip_error_set(error, ZIP_ER_NOZIP, 0);
- return -1;
- }
-
- if (zde->filename_len) {
- zde->filename = _zip_readstr(&cur, zde->filename_len, 1, error);
- if (!zde->filename)
- return -1;
- }
-
- if (zde->extrafield_len) {
- zde->extrafield = _zip_readstr(&cur, zde->extrafield_len, 0,
- error);
- if (!zde->extrafield)
- return -1;
- }
-
- if (zde->comment_len) {
- zde->comment = _zip_readstr(&cur, zde->comment_len, 0, error);
- if (!zde->comment)
- return -1;
- }
- }
- else {
- if (zde->filename_len) {
- zde->filename = _zip_readfpstr(fp, zde->filename_len, 1, error);
- if (!zde->filename)
- return -1;
- }
-
- if (zde->extrafield_len) {
- zde->extrafield = _zip_readfpstr(fp, zde->extrafield_len, 0,
- error);
- if (!zde->extrafield)
- return -1;
- }
-
- if (zde->comment_len) {
- zde->comment = _zip_readfpstr(fp, zde->comment_len, 0, error);
- if (!zde->comment)
- return -1;
- }
- }
-
- if (bufp)
- *bufp = cur;
-
- return 0;
-}
-
-
-
-/* _zip_dirent_write(zde, fp, localp, error):
- Writes zip directory entry zde to file fp.
-
- If localp != 0, it writes a local header instead of a central
- directory entry.
-
- Returns 0 if successful. On error, error is filled in and -1 is
- returned.
-*/
-
-int
-_zip_dirent_write(struct zip_dirent *zde, FILE *fp, int localp,
- struct zip_error *error)
-{
- unsigned short dostime, dosdate;
-
- fwrite(localp ? LOCAL_MAGIC : CENTRAL_MAGIC, 1, 4, fp);
-
- if (!localp)
- _zip_write2(zde->version_madeby, fp);
- _zip_write2(zde->version_needed, fp);
- _zip_write2(zde->bitflags, fp);
- _zip_write2(zde->comp_method, fp);
-
- _zip_u2d_time(zde->last_mod, &dostime, &dosdate);
- _zip_write2(dostime, fp);
- _zip_write2(dosdate, fp);
-
- _zip_write4(zde->crc, fp);
- _zip_write4(zde->comp_size, fp);
- _zip_write4(zde->uncomp_size, fp);
-
- _zip_write2(zde->filename_len, fp);
- _zip_write2(zde->extrafield_len, fp);
-
- if (!localp) {
- _zip_write2(zde->comment_len, fp);
- _zip_write2(zde->disk_number, fp);
- _zip_write2(zde->int_attrib, fp);
- _zip_write4(zde->ext_attrib, fp);
- _zip_write4(zde->offset, fp);
- }
-
- if (zde->filename_len)
- fwrite(zde->filename, 1, zde->filename_len, fp);
-
- if (zde->extrafield_len)
- fwrite(zde->extrafield, 1, zde->extrafield_len, fp);
-
- if (!localp) {
- if (zde->comment_len)
- fwrite(zde->comment, 1, zde->comment_len, fp);
- }
-
- if (ferror(fp)) {
- _zip_error_set(error, ZIP_ER_WRITE, errno);
- return -1;
- }
-
- return 0;
-}
-
-
-
-static time_t
-_zip_d2u_time(int dtime, int ddate)
-{
- struct tm *tm;
- time_t now;
-
- now = time(NULL);
- tm = localtime(&now);
-
- tm->tm_year = ((ddate>>9)&127) + 1980 - 1900;
- tm->tm_mon = ((ddate>>5)&15) - 1;
- tm->tm_mday = ddate&31;
-
- tm->tm_hour = (dtime>>11)&31;
- tm->tm_min = (dtime>>5)&63;
- tm->tm_sec = (dtime<<1)&62;
-
- return mktime(tm);
-}
-
-
-
-unsigned short
-_zip_read2(unsigned char **a)
-{
- unsigned short ret;
-
- ret = (*a)[0]+((*a)[1]<<8);
- *a += 2;
-
- return ret;
-}
-
-
-
-unsigned int
-_zip_read4(unsigned char **a)
-{
- unsigned int ret;
-
- ret = ((((((*a)[3]<<8)+(*a)[2])<<8)+(*a)[1])<<8)+(*a)[0];
- *a += 4;
-
- return ret;
-}
-
-
-
-static char *
-_zip_readfpstr(FILE *fp, unsigned int len, int nulp, struct zip_error *error)
-{
- char *r, *o;
-
- r = (char *)malloc(nulp ? len+1 : len);
- if (!r) {
- _zip_error_set(error, ZIP_ER_MEMORY, 0);
- return NULL;
- }
-
- if (fread(r, 1, len, fp)<len) {
- free(r);
- _zip_error_set(error, ZIP_ER_READ, errno);
- return NULL;
- }
-
- if (nulp) {
- /* replace any in-string NUL characters with spaces */
- r[len] = 0;
- for (o=r; o<r+len; o++)
- if (*o == '\0')
- *o = ' ';
- }
-
- return r;
-}
-
-
-
-static char *
-_zip_readstr(unsigned char **buf, int len, int nulp, struct zip_error *error)
-{
- char *r, *o;
-
- r = (char *)malloc(nulp ? len+1 : len);
- if (!r) {
- _zip_error_set(error, ZIP_ER_MEMORY, 0);
- return NULL;
- }
-
- memcpy(r, *buf, len);
- *buf += len;
-
- if (nulp) {
- /* replace any in-string NUL characters with spaces */
- r[len] = 0;
- for (o=r; o<r+len; o++)
- if (*o == '\0')
- *o = ' ';
- }
-
- return r;
-}
-
-
-
-static void
-_zip_write2(unsigned short i, FILE *fp)
-{
- putc(i&0xff, fp);
- putc((i>>8)&0xff, fp);
-
- return;
-}
-
-
-
-static void
-_zip_write4(unsigned int i, FILE *fp)
-{
- putc(i&0xff, fp);
- putc((i>>8)&0xff, fp);
- putc((i>>16)&0xff, fp);
- putc((i>>24)&0xff, fp);
-
- return;
-}
-
-
-
-static void
-_zip_u2d_time(time_t time, unsigned short *dtime, unsigned short *ddate)
-{
- struct tm *tm;
-
- tm = localtime(&time);
- *ddate = ((tm->tm_year+1900-1980)<<9) + ((tm->tm_mon+1)<<5)
- + tm->tm_mday;
- *dtime = ((tm->tm_hour)<<11) + ((tm->tm_min)<<5)
- + ((tm->tm_sec)>>1);
-
- return;
-}
diff --git a/ext/zip/lib/zip_entry_free.c b/ext/zip/lib/zip_entry_free.c
deleted file mode 100644
index 48443cefd5..0000000000
--- a/ext/zip/lib/zip_entry_free.c
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- $NiH: zip_entry_free.c,v 1.2 2006/04/09 19:05:47 wiz Exp $
-
- zip_entry_free.c -- free struct zip_entry
- Copyright (C) 1999, 2003, 2004, 2006 Dieter Baron and Thomas Klausner
-
- This file is part of libzip, a library to manipulate ZIP archives.
- The authors can be contacted at <nih@giga.or.at>
-
- 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.
- 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.
- 3. The names of the authors may not be used to endorse or promote
- products derived from this software without specific prior
- written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``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 AUTHORS 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.
-*/
-
-
-
-#include <stdlib.h>
-
-#include "zip.h"
-#include "zipint.h"
-
-
-
-void
-_zip_entry_free(struct zip_entry *ze)
-{
- free(ze->ch_filename);
- ze->ch_filename = NULL;
- free(ze->ch_comment);
- ze->ch_comment = NULL;
- ze->ch_comment_len = -1;
-
- _zip_unchange_data(ze);
-}
diff --git a/ext/zip/lib/zip_entry_new.c b/ext/zip/lib/zip_entry_new.c
deleted file mode 100644
index 390b72ad70..0000000000
--- a/ext/zip/lib/zip_entry_new.c
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- $NiH: zip_entry_new.c,v 1.2 2006/04/09 19:05:47 wiz Exp $
-
- zip_entry_new.c -- create and init struct zip_entry
- Copyright (C) 1999, 2003, 2004, 2006 Dieter Baron and Thomas Klausner
-
- This file is part of libzip, a library to manipulate ZIP archives.
- The authors can be contacted at <nih@giga.or.at>
-
- 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.
- 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.
- 3. The names of the authors may not be used to endorse or promote
- products derived from this software without specific prior
- written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``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 AUTHORS 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.
-*/
-
-
-
-#include <stdlib.h>
-
-#include "zip.h"
-#include "zipint.h"
-
-
-
-struct zip_entry *
-_zip_entry_new(struct zip *za)
-{
- struct zip_entry *ze;
- if (!za) {
- ze = (struct zip_entry *)malloc(sizeof(struct zip_entry));
- if (!ze) {
- _zip_error_set(&za->error, ZIP_ER_MEMORY, 0);
- return NULL;
- }
- }
- else {
- if (za->nentry >= za->nentry_alloc-1) {
- za->nentry_alloc += 16;
- za->entry = (struct zip_entry *)realloc(za->entry,
- sizeof(struct zip_entry)
- * za->nentry_alloc);
- if (!za->entry) {
- _zip_error_set(&za->error, ZIP_ER_MEMORY, 0);
- return NULL;
- }
- }
- ze = za->entry+za->nentry;
- }
-
- ze->state = ZIP_ST_UNCHANGED;
-
- ze->ch_filename = NULL;
- ze->ch_comment = NULL;
- ze->ch_comment_len = -1;
- ze->source = NULL;
-
- if (za)
- za->nentry++;
-
- return ze;
-}
diff --git a/ext/zip/lib/zip_err_str.c b/ext/zip/lib/zip_err_str.c
deleted file mode 100644
index c74538d64a..0000000000
--- a/ext/zip/lib/zip_err_str.c
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- This file was generated automatically by ./make_zip_err_str.sh
- from ./zip.h; make changes there.
-
- NiH: make_zip_err_str.sh,v 1.8 2004/11/17 21:55:09 wiz Exp
- NiH: zip.h,v 1.57 2006/04/24 14:04:19 dillo Exp
- */
-
-#include "zip.h"
-#include "zipint.h"
-
-
-
-const char * const _zip_err_str[] = {
- "No error",
- "Multi-disk zip archives not supported",
- "Renaming temporary file failed",
- "Closing zip archive failed",
- "Seek error",
- "Read error",
- "Write error",
- "CRC error",
- "Containing zip archive was closed",
- "No such file",
- "File already exists",
- "Can't open file",
- "Failure to create temporary file",
- "Zlib error",
- "Malloc failure",
- "Entry has been changed",
- "Compression method not supported",
- "Premature EOF",
- "Invalid argument",
- "Not a zip archive",
- "Internal error",
- "Zip archive inconsistent",
- "Can't remove file",
- "Entry has been deleted",
-};
-
-const int _zip_nerr_str = sizeof(_zip_err_str)/sizeof(_zip_err_str[0]);
-
-#define N ZIP_ET_NONE
-#define S ZIP_ET_SYS
-#define Z ZIP_ET_ZLIB
-
-const int _zip_err_type[] = {
- N,
- N,
- S,
- S,
- S,
- S,
- S,
- N,
- N,
- N,
- N,
- S,
- S,
- Z,
- N,
- N,
- N,
- N,
- N,
- N,
- N,
- N,
- S,
- N,
-};
diff --git a/ext/zip/lib/zip_error.c b/ext/zip/lib/zip_error.c
deleted file mode 100644
index 33a8f3374a..0000000000
--- a/ext/zip/lib/zip_error.c
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- $NiH: zip_error.c,v 1.7 2005/06/09 19:57:09 dillo Exp $
-
- zip_error.c -- struct zip_error helper functions
- Copyright (C) 1999, 2003, 2004, 2005 Dieter Baron and Thomas Klausner
-
- This file is part of libzip, a library to manipulate ZIP archives.
- The authors can be contacted at <nih@giga.or.at>
-
- 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.
- 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.
- 3. The names of the authors may not be used to endorse or promote
- products derived from this software without specific prior
- written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``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 AUTHORS 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.
-*/
-
-
-
-#include <stdlib.h>
-
-#include "zip.h"
-#include "zipint.h"
-
-
-
-void
-_zip_error_copy(struct zip_error *dst, struct zip_error *src)
-{
- dst->zip_err = src->zip_err;
- dst->sys_err = src->sys_err;
-}
-
-
-
-void
-_zip_error_fini(struct zip_error *err)
-{
- free(err->str);
- err->str = NULL;
-}
-
-
-
-void
-_zip_error_get(struct zip_error *err, int *zep, int *sep)
-{
- if (zep)
- *zep = err->zip_err;
- if (sep) {
- if (zip_error_get_sys_type(err->zip_err) != ZIP_ET_NONE)
- *sep = err->sys_err;
- else
- *sep = 0;
- }
-}
-
-
-
-void
-_zip_error_init(struct zip_error *err)
-{
- err->zip_err = 0;
- err->sys_err = 0;
- err->str = NULL;
-}
-
-
-
-void
-_zip_error_set(struct zip_error *err, int ze, int se)
-{
- if (err) {
- err->zip_err = ze;
- err->sys_err = se;
- }
-}
diff --git a/ext/zip/lib/zip_error_get.c b/ext/zip/lib/zip_error_get.c
deleted file mode 100644
index 712575a864..0000000000
--- a/ext/zip/lib/zip_error_get.c
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- $NiH: zip_error_get.c,v 1.1 2004/11/18 15:06:20 wiz Exp $
-
- zip_error_get.c -- get zip error
- Copyright (C) 1999, 2003 Dieter Baron and Thomas Klausner
-
- This file is part of libzip, a library to manipulate ZIP archives.
- The authors can be contacted at <nih@giga.or.at>
-
- 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.
- 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.
- 3. The names of the authors may not be used to endorse or promote
- products derived from this software without specific prior
- written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``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 AUTHORS 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.
-*/
-
-
-
-#include "zip.h"
-#include "zipint.h"
-
-
-
-void
-zip_error_get(struct zip *za, int *zep, int *sep)
-{
- _zip_error_get(&za->error, zep, sep);
-}
diff --git a/ext/zip/lib/zip_error_get_sys_type.c b/ext/zip/lib/zip_error_get_sys_type.c
deleted file mode 100644
index 613ec94328..0000000000
--- a/ext/zip/lib/zip_error_get_sys_type.c
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- $NiH: zip_error_get_sys_type.c,v 1.1 2004/12/22 15:49:18 wiz Exp $
-
- zip_error_get_sys_type.c -- return type of system error code
- Copyright (C) 1999, 2003 Dieter Baron and Thomas Klausner
-
- This file is part of libzip, a library to manipulate ZIP archives.
- The authors can be contacted at <nih@giga.or.at>
-
- 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.
- 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.
- 3. The names of the authors may not be used to endorse or promote
- products derived from this software without specific prior
- written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``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 AUTHORS 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.
-*/
-
-
-
-#include "zip.h"
-#include "zipint.h"
-
-
-
-int
-zip_error_get_sys_type(int ze)
-{
- if (ze < 0 || ze >= _zip_nerr_str)
- return 0;
-
- return _zip_err_type[ze];
-}
diff --git a/ext/zip/lib/zip_error_strerror.c b/ext/zip/lib/zip_error_strerror.c
deleted file mode 100644
index f14f7190e6..0000000000
--- a/ext/zip/lib/zip_error_strerror.c
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- $NiH: zip_error_strerror.c,v 1.4 2006/02/21 09:41:00 dillo Exp $
-
- zip_error_sterror.c -- get string representation of struct zip_error
- Copyright (C) 1999, 2003 Dieter Baron and Thomas Klausner
-
- This file is part of libzip, a library to manipulate ZIP archives.
- The authors can be contacted at <nih@giga.or.at>
-
- 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.
- 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.
- 3. The names of the authors may not be used to endorse or promote
- products derived from this software without specific prior
- written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``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 AUTHORS 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.
-*/
-
-
-
-#include <errno.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "zip.h"
-#include "zipint.h"
-
-
-
-const char *
-_zip_error_strerror(struct zip_error *err)
-{
- const char *zs, *ss;
- char buf[128], *s;
-
- _zip_error_fini(err);
-
- if (err->zip_err < 0 || err->zip_err >= _zip_nerr_str) {
- sprintf(buf, "Unknown error %d", err->zip_err);
- zs = NULL;
- ss = buf;
- }
- else {
- zs = _zip_err_str[err->zip_err];
-
- switch (_zip_err_type[err->zip_err]) {
- case ZIP_ET_SYS:
- ss = strerror(err->sys_err);
- break;
-
- case ZIP_ET_ZLIB:
- ss = zError(err->sys_err);
- break;
-
- default:
- ss = NULL;
- }
- }
-
- if (ss == NULL)
- return zs;
- else {
- if ((s=(char *)malloc(strlen(ss)
- + (zs ? strlen(zs)+2 : 0) + 1)) == NULL)
- return _zip_err_str[ZIP_ER_MEMORY];
-
- sprintf(s, "%s%s%s",
- (zs ? zs : ""),
- (zs ? ": " : ""),
- ss);
- err->str = s;
-
- return ss;
- }
-}
diff --git a/ext/zip/lib/zip_error_to_str.c b/ext/zip/lib/zip_error_to_str.c
deleted file mode 100644
index e566192255..0000000000
--- a/ext/zip/lib/zip_error_to_str.c
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- $NiH: zip_error_to_str.c,v 1.1 2004/11/18 15:06:20 wiz Exp $
-
- zip_error_to_str.c -- get string representation of zip error code
- Copyright (C) 1999, 2003, 2004 Dieter Baron and Thomas Klausner
-
- This file is part of libzip, a library to manipulate ZIP archives.
- The authors can be contacted at <nih@giga.or.at>
-
- 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.
- 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.
- 3. The names of the authors may not be used to endorse or promote
- products derived from this software without specific prior
- written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``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 AUTHORS 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.
-*/
-
-
-
-#include <errno.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "zip.h"
-#include "zipint.h"
-
-
-
-int
-zip_error_to_str(char *buf, size_t len, int ze, int se)
-{
- const char *zs, *ss;
-
- if (ze < 0 || ze >= _zip_nerr_str)
- return snprintf(buf, len, "Unknown error %d", ze);
-
- zs = _zip_err_str[ze];
-
- switch (_zip_err_type[ze]) {
- case ZIP_ET_SYS:
- ss = strerror(se);
- break;
-
- case ZIP_ET_ZLIB:
- ss = zError(se);
- break;
-
- default:
- ss = NULL;
- }
-
- return snprintf(buf, len, "%s%s%s",
- zs, (ss ? ": " : ""), (ss ? ss : ""));
-}
diff --git a/ext/zip/lib/zip_fclose.c b/ext/zip/lib/zip_fclose.c
deleted file mode 100644
index cf4f35c71c..0000000000
--- a/ext/zip/lib/zip_fclose.c
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- $NiH: zip_fclose.c,v 1.14 2005/06/09 19:57:09 dillo Exp $
-
- zip_fclose.c -- close file in zip archive
- Copyright (C) 1999, 2004, 2005 Dieter Baron and Thomas Klausner
-
- This file is part of libzip, a library to manipulate ZIP archives.
- The authors can be contacted at <nih@giga.or.at>
-
- 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.
- 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.
- 3. The names of the authors may not be used to endorse or promote
- products derived from this software without specific prior
- written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``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 AUTHORS 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.
-*/
-
-
-
-#include <stdlib.h>
-
-#include "zip.h"
-#include "zipint.h"
-
-
-
-int
-zip_fclose(struct zip_file *zf)
-{
- int i, ret;
-
- if (zf->zstr)
- inflateEnd(zf->zstr);
- free(zf->buffer);
- free(zf->zstr);
-
- for (i=0; i<zf->za->nfile; i++) {
- if (zf->za->file[i] == zf) {
- zf->za->file[i] = zf->za->file[zf->za->nfile-1];
- zf->za->nfile--;
- break;
- }
- }
-
- ret = 0;
- if (zf->error.zip_err)
- ret = zf->error.zip_err;
- else if ((zf->flags & ZIP_ZF_CRC) && (zf->flags & ZIP_ZF_EOF)) {
- /* if EOF, compare CRC */
- if (zf->crc_orig != zf->crc)
- ret = ZIP_ER_CRC;
- }
-
- free(zf);
- return ret;
-}
diff --git a/ext/zip/lib/zip_file_error_get.c b/ext/zip/lib/zip_file_error_get.c
deleted file mode 100644
index 2ab3a73a4c..0000000000
--- a/ext/zip/lib/zip_file_error_get.c
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- $NiH: zip_file_error_get.c,v 1.1 2004/11/18 15:06:21 wiz Exp $
-
- zip_file_error_get.c -- get zip file error
- Copyright (C) 1999, 2003 Dieter Baron and Thomas Klausner
-
- This file is part of libzip, a library to manipulate ZIP archives.
- The authors can be contacted at <nih@giga.or.at>
-
- 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.
- 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.
- 3. The names of the authors may not be used to endorse or promote
- products derived from this software without specific prior
- written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``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 AUTHORS 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.
-*/
-
-
-
-#include "zip.h"
-#include "zipint.h"
-
-
-
-void
-zip_file_error_get(struct zip_file *zf, int *zep, int *sep)
-{
- _zip_error_get(&zf->error, zep, sep);
-}
diff --git a/ext/zip/lib/zip_file_get_offset.c b/ext/zip/lib/zip_file_get_offset.c
deleted file mode 100644
index 8bcc64934d..0000000000
--- a/ext/zip/lib/zip_file_get_offset.c
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- $NiH: zip_file_get_offset.c,v 1.4 2006/04/23 14:51:45 wiz Exp $
-
- zip_file_get_offset.c -- get offset of file data in archive.
- Copyright (C) 1999, 2003, 2004 Dieter Baron and Thomas Klausner
-
- This file is part of libzip, a library to manipulate ZIP archives.
- The authors can be contacted at <nih@giga.or.at>
-
- 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.
- 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.
- 3. The names of the authors may not be used to endorse or promote
- products derived from this software without specific prior
- written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``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 AUTHORS 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.
-*/
-
-
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <errno.h>
-#ifndef _MSC_VER
-#include <unistd.h>
-#endif
-#include <sys/types.h>
-#include <sys/stat.h>
-
-#include "zip.h"
-#include "zipint.h"
-
-
-
-/* _zip_file_get_offset(za, ze):
- Returns the offset of the file data for entry ze.
-
- On error, fills in za->error and returns 0.
-*/
-
-unsigned int
-_zip_file_get_offset(struct zip *za, int idx)
-{
- struct zip_dirent de;
- unsigned int offset;
-
- offset = za->cdir->entry[idx].offset;
-
- if (fseek(za->zp, offset, SEEK_SET) != 0) {
- _zip_error_set(&za->error, ZIP_ER_SEEK, errno);
- return 0;
- }
-
- if (_zip_dirent_read(&de, za->zp, NULL, 0, 1, &za->error) != 0)
- return 0;
-
- offset += LENTRYSIZE + de.filename_len + de.extrafield_len;
-
- _zip_dirent_finalize(&de);
-
- return offset;
-}
diff --git a/ext/zip/lib/zip_file_strerror.c b/ext/zip/lib/zip_file_strerror.c
deleted file mode 100644
index aaff189996..0000000000
--- a/ext/zip/lib/zip_file_strerror.c
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- $NiH: zip_file_strerror.c,v 1.1 2003/10/05 16:05:22 dillo Exp $
-
- zip_file_sterror.c -- get string representation of zip file error
- Copyright (C) 1999, 2003 Dieter Baron and Thomas Klausner
-
- This file is part of libzip, a library to manipulate ZIP archives.
- The authors can be contacted at <nih@giga.or.at>
-
- 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.
- 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.
- 3. The names of the authors may not be used to endorse or promote
- products derived from this software without specific prior
- written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``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 AUTHORS 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.
-*/
-
-
-
-#include "zip.h"
-#include "zipint.h"
-
-
-
-const char *
-zip_file_strerror(struct zip_file *zf)
-{
- return _zip_error_strerror(&zf->error);
-}
diff --git a/ext/zip/lib/zip_fopen.c b/ext/zip/lib/zip_fopen.c
deleted file mode 100644
index 850a8d835a..0000000000
--- a/ext/zip/lib/zip_fopen.c
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- $NiH: zip_fopen.c,v 1.12 2005/06/09 19:57:09 dillo Exp $
-
- zip_fopen.c -- open file in zip archive for reading
- Copyright (C) 1999, 2003, 2004, 2005 Dieter Baron and Thomas Klausner
-
- This file is part of libzip, a library to manipulate ZIP archives.
- The authors can be contacted at <nih@giga.or.at>
-
- 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.
- 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.
- 3. The names of the authors may not be used to endorse or promote
- products derived from this software without specific prior
- written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``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 AUTHORS 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.
-*/
-
-
-
-#include "zip.h"
-#include "zipint.h"
-
-
-
-struct zip_file *
-zip_fopen(struct zip *za, const char *fname, int flags)
-{
- int idx;
-
- if ((idx=zip_name_locate(za, fname, flags)) < 0)
- return NULL;
-
- return zip_fopen_index(za, idx, flags);
-}
diff --git a/ext/zip/lib/zip_fopen_index.c b/ext/zip/lib/zip_fopen_index.c
deleted file mode 100644
index 5da9230b2e..0000000000
--- a/ext/zip/lib/zip_fopen_index.c
+++ /dev/null
@@ -1,219 +0,0 @@
-/*
- $NiH: zip_fopen_index.c,v 1.24 2005/05/20 21:54:53 wiz Exp $
-
- zip_fopen_index.c -- open file in zip archive for reading by index
- Copyright (C) 1999, 2004, 2005 Dieter Baron and Thomas Klausner
-
- This file is part of libzip, a library to manipulate ZIP archives.
- The authors can be contacted at <nih@giga.or.at>
-
- 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.
- 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.
- 3. The names of the authors may not be used to endorse or promote
- products derived from this software without specific prior
- written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``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 AUTHORS 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.
-*/
-
-
-
-#include <errno.h>
-#include <stdio.h>
-#include <stdlib.h>
-
-#include "zip.h"
-#include "zipint.h"
-
-static struct zip_file *_zip_file_new(struct zip *za);
-
-
-
-struct zip_file *
-zip_fopen_index(struct zip *za, int fileno, int flags)
-{
- int len, ret;
- int zfflags;
- struct zip_file *zf;
-
- if ((fileno < 0) || (fileno >= za->nentry)) {
- _zip_error_set(&za->error, ZIP_ER_INVAL, 0);
- return NULL;
- }
-
- if ((flags & ZIP_FL_UNCHANGED) == 0
- && ZIP_ENTRY_DATA_CHANGED(za->entry+fileno)) {
- _zip_error_set(&za->error, ZIP_ER_CHANGED, 0);
- return NULL;
- }
-
- if (fileno >= za->cdir->nentry) {
- _zip_error_set(&za->error, ZIP_ER_INVAL, 0);
- return NULL;
- }
-
- zfflags = 0;
- switch (za->cdir->entry[fileno].comp_method) {
- case ZIP_CM_STORE:
- zfflags |= ZIP_ZF_CRC;
- break;
-
- case ZIP_CM_DEFLATE:
- if ((flags & ZIP_FL_COMPRESSED) == 0)
- zfflags |= ZIP_ZF_CRC | ZIP_ZF_DECOMP;
- break;
- default:
- if ((flags & ZIP_FL_COMPRESSED) == 0) {
- _zip_error_set(&za->error, ZIP_ER_COMPNOTSUPP, 0);
- return NULL;
- }
- break;
- }
-
- zf = _zip_file_new(za);
-
- zf->flags = zfflags;
- /* zf->name = za->cdir->entry[fileno].filename; */
- zf->method = za->cdir->entry[fileno].comp_method;
- zf->bytes_left = za->cdir->entry[fileno].uncomp_size;
- zf->cbytes_left = za->cdir->entry[fileno].comp_size;
- zf->crc_orig = za->cdir->entry[fileno].crc;
-
- if ((zf->fpos=_zip_file_get_offset(za, fileno)) == 0) {
- zip_fclose(zf);
- return NULL;
- }
-
- if ((zf->flags & ZIP_ZF_DECOMP) == 0)
- zf->bytes_left = zf->cbytes_left;
- else {
- if ((zf->buffer=(char *)malloc(BUFSIZE)) == NULL) {
- _zip_error_set(&za->error, ZIP_ER_MEMORY, 0);
- zip_fclose(zf);
- return NULL;
- }
-
- len = _zip_file_fillbuf(zf->buffer, BUFSIZE, zf);
- if (len <= 0) {
- _zip_error_copy(&za->error, &zf->error);
- zip_fclose(zf);
- return NULL;
- }
-
- if ((zf->zstr = (z_stream *)malloc(sizeof(z_stream))) == NULL) {
- _zip_error_set(&za->error, ZIP_ER_MEMORY, 0);
- zip_fclose(zf);
- return NULL;
- }
- zf->zstr->zalloc = Z_NULL;
- zf->zstr->zfree = Z_NULL;
- zf->zstr->opaque = NULL;
- zf->zstr->next_in = (Bytef *)zf->buffer;
- zf->zstr->avail_in = len;
-
- /* negative value to tell zlib that there is no header */
- if ((ret=inflateInit2(zf->zstr, -MAX_WBITS)) != Z_OK) {
- _zip_error_set(&za->error, ZIP_ER_ZLIB, ret);
- zip_fclose(zf);
- return NULL;
- }
- }
-
- return zf;
-}
-
-
-
-int
-_zip_file_fillbuf(void *buf, size_t buflen, struct zip_file *zf)
-{
- int i, j;
-
- if (zf->error.zip_err != ZIP_ER_OK)
- return -1;
-
- if ((zf->flags & ZIP_ZF_EOF) || zf->cbytes_left <= 0 || buflen <= 0)
- return 0;
-
- if (fseek(zf->za->zp, zf->fpos, SEEK_SET) < 0) {
- _zip_error_set(&zf->error, ZIP_ER_SEEK, errno);
- return -1;
- }
- if (buflen < zf->cbytes_left)
- i = buflen;
- else
- i = zf->cbytes_left;
-
- j = fread(buf, 1, i, zf->za->zp);
- if (j == 0) {
- _zip_error_set(&zf->error, ZIP_ER_EOF, 0);
- j = -1;
- }
- else if (j < 0)
- _zip_error_set(&zf->error, ZIP_ER_READ, errno);
- else {
- zf->fpos += j;
- zf->cbytes_left -= j;
- }
-
- return j;
-}
-
-
-
-static struct zip_file *
-_zip_file_new(struct zip *za)
-{
- struct zip_file *zf, **file;
- int n;
-
- if ((zf=(struct zip_file *)malloc(sizeof(struct zip_file))) == NULL) {
- _zip_error_set(&za->error, ZIP_ER_MEMORY, 0);
- return NULL;
- }
-
- if (za->nfile >= za->nfile_alloc-1) {
- n = za->nfile_alloc + 10;
- file = (struct zip_file **)realloc(za->file,
- n*sizeof(struct zip_file *));
- if (file == NULL) {
- _zip_error_set(&za->error, ZIP_ER_MEMORY, 0);
- free(zf);
- return NULL;
- }
- za->nfile_alloc = n;
- za->file = file;
- }
-
- za->file[za->nfile++] = zf;
-
- zf->za = za;
- _zip_error_init(&zf->error);
- zf->flags = 0;
- zf->crc = crc32(0L, Z_NULL, 0);
- zf->crc_orig = 0;
- zf->method = -1;
- zf->bytes_left = zf->cbytes_left = 0;
- zf->fpos = 0;
- zf->buffer = NULL;
- zf->zstr = NULL;
-
- return zf;
-}
diff --git a/ext/zip/lib/zip_fread.c b/ext/zip/lib/zip_fread.c
deleted file mode 100644
index aeb64c90fa..0000000000
--- a/ext/zip/lib/zip_fread.c
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
- $NiH: zip_fread.c,v 1.21 2006/04/23 14:49:50 wiz Exp $
-
- zip_fread.c -- read from file
- Copyright (C) 1999, 2004, 2005 Dieter Baron and Thomas Klausner
-
- This file is part of libzip, a library to manipulate ZIP archives.
- The authors can be contacted at <nih@giga.or.at>
-
- 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.
- 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.
- 3. The names of the authors may not be used to endorse or promote
- products derived from this software without specific prior
- written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``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 AUTHORS 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.
-*/
-
-
-
-#include "zip.h"
-#include "zipint.h"
-
-
-
-ssize_t
-zip_fread(struct zip_file *zf, void *outbuf, size_t toread)
-{
- int ret;
- size_t out_before, len;
- int i;
-
- if (!zf)
- return -1;
-
- if (zf->error.zip_err != 0)
- return -1;
-
- if ((zf->flags & ZIP_ZF_EOF) || (toread == 0))
- return 0;
-
- if (zf->bytes_left == 0) {
- zf->flags |= ZIP_ZF_EOF;
- if (zf->flags & ZIP_ZF_CRC) {
- if (zf->crc != zf->crc_orig) {
- _zip_error_set(&zf->error, ZIP_ER_CRC, 0);
- return -1;
- }
- }
- return 0;
- }
-
- if ((zf->flags & ZIP_ZF_DECOMP) == 0) {
- ret = _zip_file_fillbuf(outbuf, toread, zf);
- if (ret > 0) {
- if (zf->flags & ZIP_ZF_CRC)
- zf->crc = crc32(zf->crc, (Bytef *)outbuf, ret);
- zf->bytes_left -= ret;
- }
- return ret;
- }
-
- zf->zstr->next_out = (Bytef *)outbuf;
- zf->zstr->avail_out = toread;
- out_before = zf->zstr->total_out;
-
- /* endless loop until something has been accomplished */
- for (;;) {
- ret = inflate(zf->zstr, Z_SYNC_FLUSH);
-
- switch (ret) {
- case Z_OK:
- case Z_STREAM_END:
- /* all ok */
- /* Z_STREAM_END probably won't happen, since we didn't
- have a header */
- len = zf->zstr->total_out - out_before;
- if (len >= zf->bytes_left || len >= toread) {
- if (zf->flags & ZIP_ZF_CRC)
- zf->crc = crc32(zf->crc, (Bytef *)outbuf, len);
- zf->bytes_left -= len;
- return len;
- }
- break;
-
- case Z_BUF_ERROR:
- if (zf->zstr->avail_in == 0) {
- i = _zip_file_fillbuf(zf->buffer, BUFSIZE, zf);
- if (i == 0) {
- _zip_error_set(&zf->error, ZIP_ER_INCONS, 0);
- return -1;
- }
- else if (i < 0)
- return -1;
- zf->zstr->next_in = (Bytef *)zf->buffer;
- zf->zstr->avail_in = i;
- continue;
- }
- /* fallthrough */
- case Z_NEED_DICT:
- case Z_DATA_ERROR:
- case Z_STREAM_ERROR:
- case Z_MEM_ERROR:
- _zip_error_set(&zf->error, ZIP_ER_ZLIB, ret);
- return -1;
- }
- }
-}
diff --git a/ext/zip/lib/zip_free.c b/ext/zip/lib/zip_free.c
deleted file mode 100644
index cbead2a6b7..0000000000
--- a/ext/zip/lib/zip_free.c
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- $NiH: zip_free.c,v 1.17 2005/06/09 19:57:10 dillo Exp $
-
- zip_free.c -- free struct zip
- Copyright (C) 1999, 2004, 2005 Dieter Baron and Thomas Klausner
-
- This file is part of libzip, a library to manipulate ZIP archives.
- The authors can be contacted at <nih@giga.or.at>
-
- 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.
- 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.
- 3. The names of the authors may not be used to endorse or promote
- products derived from this software without specific prior
- written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``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 AUTHORS 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.
-*/
-
-
-
-#include <stdlib.h>
-#include "zip.h"
-#include "zipint.h"
-
-
-
-/* _zip_free:
- frees the space allocated to a zipfile struct, and closes the
- corresponding file. */
-
-void
-_zip_free(struct zip *za)
-{
- int i;
-
- if (za == NULL)
- return;
-
- if (za->zn)
- free(za->zn);
-
- if (za->zp)
- fclose(za->zp);
-
- _zip_cdir_free(za->cdir);
-
- if (za->entry) {
- for (i=0; i<za->nentry; i++) {
- _zip_entry_free(za->entry+i);
- }
- free(za->entry);
- }
-
- for (i=0; i<za->nfile; i++) {
- if (za->file[i]->error.zip_err == ZIP_ER_OK) {
- _zip_error_set(&za->file[i]->error, ZIP_ER_ZIPCLOSED, 0);
- za->file[i]->za = NULL;
- }
- }
-
- free(za->file);
-
- free(za);
-
- return;
-}
diff --git a/ext/zip/lib/zip_get_archive_comment.c b/ext/zip/lib/zip_get_archive_comment.c
deleted file mode 100644
index 40feb4eba1..0000000000
--- a/ext/zip/lib/zip_get_archive_comment.c
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- $NiH: zip_get_archive_comment.c,v 1.4 2006/04/23 16:11:33 wiz Exp $
-
- zip_get_archive_comment.c -- get archive comment
- Copyright (C) 2006 Dieter Baron and Thomas Klausner
-
- This file is part of libzip, a library to manipulate ZIP archives.
- The authors can be contacted at <nih@giga.or.at>
-
- 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.
- 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.
- 3. The names of the authors may not be used to endorse or promote
- products derived from this software without specific prior
- written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``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 AUTHORS 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.
-*/
-
-
-
-#include "zip.h"
-#include "zipint.h"
-
-
-
-const char *
-zip_get_archive_comment(struct zip *za, int *lenp, int flags)
-{
- if ((flags & ZIP_FL_UNCHANGED)
- || (za->ch_comment_len == -1)) {
- if (za->cdir) {
- if (lenp != NULL)
- *lenp = za->cdir->comment_len;
- return za->cdir->comment;
- }
- }
-
- if (lenp != NULL)
- *lenp = za->ch_comment_len;
- return za->ch_comment;
-}
diff --git a/ext/zip/lib/zip_get_file_comment.c b/ext/zip/lib/zip_get_file_comment.c
deleted file mode 100644
index 79a5c236bc..0000000000
--- a/ext/zip/lib/zip_get_file_comment.c
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- $NiH: zip_get_file_comment.c,v 1.2 2006/04/23 13:06:28 wiz Exp $
-
- zip_get_file_comment.c -- get file comment
- Copyright (C) 2006 Dieter Baron and Thomas Klausner
-
- This file is part of libzip, a library to manipulate ZIP archives.
- The authors can be contacted at <nih@giga.or.at>
-
- 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.
- 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.
- 3. The names of the authors may not be used to endorse or promote
- products derived from this software without specific prior
- written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``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 AUTHORS 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.
-*/
-
-
-
-#include "zip.h"
-#include "zipint.h"
-
-
-
-const char *
-zip_get_file_comment(struct zip *za, int idx, int *lenp, int flags)
-{
- if (idx < 0 || idx >= za->nentry) {
- _zip_error_set(&za->error, ZIP_ER_INVAL, 0);
- return NULL;
- }
-
- if ((flags & ZIP_FL_UNCHANGED)
- || (za->entry[idx].ch_comment_len == -1)) {
- if (lenp != NULL)
- *lenp = za->cdir->entry[idx].comment_len;
- return za->cdir->entry[idx].comment;
- }
-
- if (lenp != NULL)
- *lenp = za->entry[idx].ch_comment_len;
- return za->entry[idx].ch_comment;
-}
diff --git a/ext/zip/lib/zip_get_name.c b/ext/zip/lib/zip_get_name.c
deleted file mode 100644
index c45dd0333f..0000000000
--- a/ext/zip/lib/zip_get_name.c
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- $NiH: zip_get_name.c,v 1.13 2005/01/20 21:00:54 dillo Exp $
-
- zip_get_name.c -- get filename for a file in zip file
- Copyright (C) 1999, 2003, 2004, 2005 Dieter Baron and Thomas Klausner
-
- This file is part of libzip, a library to manipulate ZIP archives.
- The authors can be contacted at <nih@giga.or.at>
-
- 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.
- 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.
- 3. The names of the authors may not be used to endorse or promote
- products derived from this software without specific prior
- written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``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 AUTHORS 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.
-*/
-
-
-
-#include "zip.h"
-#include "zipint.h"
-
-
-
-const char *
-zip_get_name(struct zip *za, int idx, int flags)
-{
- return _zip_get_name(za, idx, flags, &za->error);
-}
-
-
-
-const char *
-_zip_get_name(struct zip *za, int idx, int flags, struct zip_error *error)
-{
- if (idx < 0 || idx >= za->nentry) {
- _zip_error_set(error, ZIP_ER_INVAL, 0);
- return NULL;
- }
-
- if ((flags & ZIP_FL_UNCHANGED) == 0) {
- if (za->entry[idx].state == ZIP_ST_DELETED) {
- _zip_error_set(error, ZIP_ER_DELETED, 0);
- return NULL;
- }
- if (za->entry[idx].ch_filename)
- return za->entry[idx].ch_filename;
- }
-
- if (za->cdir == NULL || idx >= za->cdir->nentry) {
- _zip_error_set(error, ZIP_ER_INVAL, 0);
- return NULL;
- }
-
- return za->cdir->entry[idx].filename;
-}
diff --git a/ext/zip/lib/zip_get_num_files.c b/ext/zip/lib/zip_get_num_files.c
deleted file mode 100644
index 0cc81edb06..0000000000
--- a/ext/zip/lib/zip_get_num_files.c
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- $NiH: zip_get_num_files.c,v 1.2 2003/12/27 22:53:15 wiz Exp $
-
- zip_get_num_files.c -- get number of files in archive
- Copyright (C) 1999, 2003 Dieter Baron and Thomas Klausner
-
- This file is part of libzip, a library to manipulate ZIP archives.
- The authors can be contacted at <nih@giga.or.at>
-
- 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.
- 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.
- 3. The names of the authors may not be used to endorse or promote
- products derived from this software without specific prior
- written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``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 AUTHORS 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.
-*/
-
-
-
-#include "zip.h"
-#include "zipint.h"
-
-
-
-int
-zip_get_num_files(struct zip *za)
-{
- if (za == NULL)
- return -1;
-
- return za->nentry;
-}
diff --git a/ext/zip/lib/zip_memdup.c b/ext/zip/lib/zip_memdup.c
deleted file mode 100644
index c4ecf4a69f..0000000000
--- a/ext/zip/lib/zip_memdup.c
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- $NiH: zip_memdup.c,v 1.2 2006/04/24 10:34:39 dillo Exp $
-
- zip_memdup.c -- internal zip function, "strdup" with len
- Copyright (C) 1999, 2003, 2004, 2005, 2006 Dieter Baron and Thomas Klausner
-
- This file is part of libzip, a library to manipulate ZIP archives.
- The authors can be contacted at <nih@giga.or.at>
-
- 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.
- 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.
- 3. The names of the authors may not be used to endorse or promote
- products derived from this software without specific prior
- written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``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 AUTHORS 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.
-*/
-
-#include <stdlib.h>
-#include <string.h>
-
-#include "zip.h"
-#include "zipint.h"
-
-
-
-void *
-_zip_memdup(const void *mem, size_t len, struct zip_error *error)
-{
- void *ret;
-
- ret = malloc(len);
- if (!ret) {
- _zip_error_set(error, ZIP_ER_MEMORY, 0);
- return NULL;
- }
-
- memcpy(ret, mem, len);
-
- return ret;
-}
diff --git a/ext/zip/lib/zip_name_locate.c b/ext/zip/lib/zip_name_locate.c
deleted file mode 100644
index a2fce2d034..0000000000
--- a/ext/zip/lib/zip_name_locate.c
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- $NiH: zip_name_locate.c,v 1.19 2005/06/09 19:57:10 dillo Exp $
-
- zip_name_locate.c -- get index by name
- Copyright (C) 1999, 2003, 2004, 2005 Dieter Baron and Thomas Klausner
-
- This file is part of libzip, a library to manipulate ZIP archives.
- The authors can be contacted at <nih@giga.or.at>
-
- 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.
- 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.
- 3. The names of the authors may not be used to endorse or promote
- products derived from this software without specific prior
- written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``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 AUTHORS 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.
-*/
-
-
-
-#include <string.h>
-
-#include "zip.h"
-#include "zipint.h"
-
-
-
-int
-zip_name_locate(struct zip *za, const char *fname, int flags)
-{
- return _zip_name_locate(za, fname, flags, &za->error);
-}
-
-
-
-int
-_zip_name_locate(struct zip *za, const char *fname, int flags,
- struct zip_error *error)
-{
- int (*cmp)(const char *, const char *);
- const char *fn, *p;
- int i, n;
-
- if (fname == NULL) {
- _zip_error_set(error, ZIP_ER_INVAL, 0);
- return -1;
- }
-
- cmp = (flags & ZIP_FL_NOCASE) ? strcasecmp : strcmp;
-
- n = (flags & ZIP_FL_UNCHANGED) ? za->cdir->nentry : za->nentry;
- for (i=0; i<n; i++) {
- if (flags & ZIP_FL_UNCHANGED)
- fn = za->cdir->entry[i].filename;
- else
- fn = _zip_get_name(za, i, flags, error);
-
- /* newly added (partially filled) entry */
- if (fn == NULL)
- continue;
-
- if (flags & ZIP_FL_NODIR) {
- p = strrchr(fn, '/');
- if (p)
- fn = p+1;
- }
-
- if (cmp(fname, fn) == 0)
- return i;
- }
-
- _zip_error_set(error, ZIP_ER_NOENT, 0);
- return -1;
-}
diff --git a/ext/zip/lib/zip_new.c b/ext/zip/lib/zip_new.c
deleted file mode 100644
index 660183a15c..0000000000
--- a/ext/zip/lib/zip_new.c
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- $NiH: zip_new.c,v 1.12 2006/04/23 00:40:47 wiz Exp $
-
- zip_new.c -- create and init struct zip
- Copyright (C) 1999, 2004, 2005 Dieter Baron and Thomas Klausner
-
- This file is part of libzip, a library to manipulate ZIP archives.
- The authors can be contacted at <nih@giga.or.at>
-
- 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.
- 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.
- 3. The names of the authors may not be used to endorse or promote
- products derived from this software without specific prior
- written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``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 AUTHORS 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.
-*/
-
-
-
-#include <stdlib.h>
-#include "zip.h"
-#include "zipint.h"
-
-
-
-/* _zip_new:
- creates a new zipfile struct, and sets the contents to zero; returns
- the new struct. */
-
-struct zip *
-_zip_new(struct zip_error *error)
-{
- struct zip *za;
-
- za = (struct zip *)malloc(sizeof(struct zip));
- if (!za) {
- _zip_error_set(error, ZIP_ER_MEMORY, 0);
- return NULL;
- }
-
- za->zn = NULL;
- za->zp = NULL;
- _zip_error_init(&za->error);
- za->cdir = NULL;
- za->ch_comment = NULL;
- za->ch_comment_len = -1;
- za->nentry = za->nentry_alloc = 0;
- za->entry = NULL;
- za->nfile = za->nfile_alloc = 0;
- za->file = NULL;
-
- return za;
-}
diff --git a/ext/zip/lib/zip_open.c b/ext/zip/lib/zip_open.c
deleted file mode 100644
index 0a14abda58..0000000000
--- a/ext/zip/lib/zip_open.c
+++ /dev/null
@@ -1,465 +0,0 @@
-/*
- $NiH: zip_open.c,v 1.38 2006/05/04 00:01:26 dillo Exp $
-
- zip_open.c -- open zip archive
- Copyright (C) 1999-2006 Dieter Baron and Thomas Klausner
-
- This file is part of libzip, a library to manipulate ZIP archives.
- The authors can be contacted at <nih@giga.or.at>
-
- 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.
- 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.
- 3. The names of the authors may not be used to endorse or promote
- products derived from this software without specific prior
- written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``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 AUTHORS 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.
-*/
-
-
-
-#include <sys/stat.h>
-#include <errno.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#ifndef _MSC_VER
-#include <unistd.h>
-#endif
-#include <sys/types.h>
-#include "zip.h"
-#include "zipint.h"
-
-static void set_error(int *, struct zip_error *, int);
-static int _zip_checkcons(FILE *, struct zip_cdir *, struct zip_error *);
-static int _zip_headercomp(struct zip_dirent *, int,
- struct zip_dirent *, int);
-static unsigned char *_zip_memmem(const unsigned char *, int,
- const unsigned char *, int);
-static struct zip_cdir *_zip_readcdir(FILE *, unsigned char *, unsigned char *,
- int, int, struct zip_error *);
-
-
-
-struct zip *
-zip_open(const char *fn, int flags, int *zep)
-{
- FILE *fp;
- unsigned char *buf, *match;
- int a, i, buflen, best;
- struct zip *za;
- struct zip_cdir *cdir, *cdirnew;
- long len;
- struct stat st;
- struct zip_error error, err2;
-
- if (fn == NULL) {
- set_error(zep, NULL, ZIP_ER_INVAL);
- return NULL;
- }
-
- if (flags & ZIP_OVERWRITE || stat(fn, &st) != 0) {
- if ((flags & ZIP_CREATE) || (flags & ZIP_OVERWRITE)) {
- if ((za=_zip_new(&error)) == NULL) {
- set_error(zep, &error, 0);
- return NULL;
- }
-
- za->zn = strdup(fn);
- if (!za->zn) {
- _zip_free(za);
- set_error(zep, NULL, ZIP_ER_MEMORY);
- return NULL;
- }
- return za;
- }
- else {
- set_error(zep, NULL, ZIP_ER_OPEN);
- return NULL;
- }
- }
- else if ((flags & ZIP_EXCL)) {
- set_error(zep, NULL, ZIP_ER_EXISTS);
- return NULL;
- }
-
-
- /* ZIP_CREATE gets ignored if file exists and not ZIP_EXCL,
- just like open() */
- if ((fp=fopen(fn, "rb")) == NULL) {
- set_error(zep, NULL, ZIP_ER_OPEN);
- return NULL;
- }
-
- clearerr(fp);
- fseek(fp, 0, SEEK_END);
- len = ftell(fp);
- i = fseek(fp, -(len < CDBUFSIZE ? len : CDBUFSIZE), SEEK_END);
- if (i == -1 && errno != EFBIG) {
- /* seek before start of file on my machine */
- set_error(zep, NULL, ZIP_ER_SEEK);
- fclose(fp);
- return NULL;
- }
-
- /* 64k is too much for stack */
- if ((buf=(unsigned char *)malloc(CDBUFSIZE)) == NULL) {
- set_error(zep, NULL, ZIP_ER_MEMORY);
- fclose(fp);
- return NULL;
- }
-
- clearerr(fp);
- buflen = fread(buf, 1, CDBUFSIZE, fp);
-
- if (ferror(fp)) {
- set_error(zep, NULL, ZIP_ER_READ);
- free(buf);
- fclose(fp);
- return NULL;
- }
-
- best = -2;
- cdir = NULL;
- match = buf;
- while ((match=_zip_memmem(match, buflen-(match-buf)-18,
- (const unsigned char *)EOCD_MAGIC, 4))!=NULL) {
- /* found match -- check, if good */
- /* to avoid finding the same match all over again */
- match++;
- if ((cdirnew=_zip_readcdir(fp, buf, match-1, buflen, flags,
- &err2)) == NULL) {
- if (best == -2) {
- set_error(zep, &err2, 0);
- best = -1;
- }
- continue;
- }
-
- if (cdir) {
- if (best <= 0)
- best = _zip_checkcons(fp, cdir, &err2);
- a = _zip_checkcons(fp, cdirnew, &err2);
- if (best < a) {
- _zip_cdir_free(cdir);
- cdir = cdirnew;
- best = a;
- }
- else
- _zip_cdir_free(cdirnew);
- }
- else {
- cdir = cdirnew;
- if (flags & ZIP_CHECKCONS)
- best = _zip_checkcons(fp, cdir, &err2);
- else
- best = 0;
- }
- cdirnew = NULL;
- }
-
- free(buf);
-
- if (best < 0) {
- /* no consistent eocd found */
- if (best == -2) {
- /* no eocd found at all */
- set_error(zep, NULL, ZIP_ER_NOZIP);
- }
- _zip_cdir_free(cdir);
- fclose(fp);
- return NULL;
- }
-
- if ((za=_zip_new(&error)) == NULL) {
- set_error(zep, &error, 0);
- _zip_cdir_free(cdir);
- fclose(fp);
- return NULL;
- }
-
- za->zp = fp;
- za->cdir = cdir;
-
- if ((za->zn=strdup(fn)) == NULL) {
- set_error(zep, NULL, ZIP_ER_MEMORY);
- _zip_free(za);
- return NULL;
- }
-
- if ((za->entry=(struct zip_entry *)malloc(sizeof(*(za->entry))
- * cdir->nentry)) == NULL) {
- set_error(zep, NULL, ZIP_ER_MEMORY);
- _zip_free(za);
- return NULL;
- }
- for (i=0; i<cdir->nentry; i++)
- _zip_entry_new(za);
-
- return za;
-}
-
-
-
-static void
-set_error(int *zep, struct zip_error *err, int ze)
-{
- int se;
-
- if (err) {
- _zip_error_get(err, &ze, &se);
- if (zip_error_get_sys_type(ze) == ZIP_ET_SYS)
- errno = se;
- }
-
- if (zep)
- *zep = ze;
-}
-
-
-
-/* _zip_readcdir:
- tries to find a valid end-of-central-directory at the beginning of
- buf, and then the corresponding central directory entries.
- Returns a struct zip_cdir which contains the central directory
- entries, or NULL if unsuccessful. */
-
-static struct zip_cdir *
-_zip_readcdir(FILE *fp, unsigned char *buf, unsigned char *eocd, int buflen,
- int flags, struct zip_error *error)
-{
- struct zip_cdir *cd;
- unsigned char *cdp, **bufp;
- int i, comlen, nentry;
-
- comlen = buf + buflen - eocd - EOCDLEN;
- if (comlen < 0) {
- /* not enough bytes left for comment */
- _zip_error_set(error, ZIP_ER_NOZIP, 0);
- return NULL;
- }
-
- /* check for end-of-central-dir magic */
- if (memcmp(eocd, EOCD_MAGIC, 4) != 0) {
- _zip_error_set(error, ZIP_ER_NOZIP, 0);
- return NULL;
- }
-
- if (memcmp(eocd+4, "\0\0\0\0", 4) != 0) {
- _zip_error_set(error, ZIP_ER_MULTIDISK, 0);
- return NULL;
- }
-
- cdp = eocd + 8;
- /* number of cdir-entries on this disk */
- i = _zip_read2(&cdp);
- /* number of cdir-entries */
- nentry = _zip_read2(&cdp);
-
- if ((cd=_zip_cdir_new(nentry, error)) == NULL)
- return NULL;
-
- cd->size = _zip_read4(&cdp);
- cd->offset = _zip_read4(&cdp);
- cd->comment = NULL;
- cd->comment_len = _zip_read2(&cdp);
-
- if ((comlen < cd->comment_len) || (cd->nentry != i)) {
- _zip_error_set(error, ZIP_ER_NOZIP, 0);
- free(cd);
- return NULL;
- }
- if ((flags & ZIP_CHECKCONS) && comlen != cd->comment_len) {
- _zip_error_set(error, ZIP_ER_INCONS, 0);
- free(cd);
- return NULL;
- }
-
- if (cd->comment_len)
- if ((cd->comment=(char *)_zip_memdup(eocd+EOCDLEN,
- cd->comment_len, error))
- == NULL) {
- free(cd);
- return NULL;
- }
-
- cdp = eocd;
- if (cd->size < (unsigned int)(eocd-buf)) {
- /* if buffer already read in, use it */
- cdp = eocd - cd->size;
- bufp = &cdp;
- }
- else {
- /* go to start of cdir and read it entry by entry */
- bufp = NULL;
- clearerr(fp);
- fseek(fp, -(cd->size+cd->comment_len+EOCDLEN), SEEK_END);
- if (ferror(fp) || ((unsigned int)ftell(fp) != cd->offset)) {
- /* seek error or offset of cdir wrong */
- if (ferror(fp))
- _zip_error_set(error, ZIP_ER_SEEK, errno);
- else
- _zip_error_set(error, ZIP_ER_NOZIP, 0);
- free(cd);
- return NULL;
- }
- }
-
- for (i=0; i<cd->nentry; i++) {
- if ((_zip_dirent_read(cd->entry+i, fp, bufp, eocd-cdp, 0,
- error)) < 0) {
- cd->nentry = i;
- _zip_cdir_free(cd);
- return NULL;
- }
- }
-
- return cd;
-}
-
-
-
-/* _zip_checkcons:
- Checks the consistency of the central directory by comparing central
- directory entries with local headers and checking for plausible
- file and header offsets. Returns -1 if not plausible, else the
- difference between the lowest and the highest fileposition reached */
-
-static int
-_zip_checkcons(FILE *fp, struct zip_cdir *cd, struct zip_error *error)
-{
- int i;
- unsigned int min, max, j;
- struct zip_dirent temp;
-
- if (cd->nentry) {
- max = cd->entry[0].offset;
- min = cd->entry[0].offset;
- }
- else
- min = max = 0;
-
- for (i=0; i<cd->nentry; i++) {
- if (cd->entry[i].offset < min)
- min = cd->entry[i].offset;
- if (min > cd->offset) {
- _zip_error_set(error, ZIP_ER_NOZIP, 0);
- return -1;
- }
-
- j = cd->entry[i].offset + cd->entry[i].comp_size
- + cd->entry[i].filename_len + LENTRYSIZE;
- if (j > max)
- max = j;
- if (max > cd->offset) {
- _zip_error_set(error, ZIP_ER_NOZIP, 0);
- return -1;
- }
-
- if (fseek(fp, cd->entry[i].offset, SEEK_SET) != 0) {
- _zip_error_set(error, ZIP_ER_SEEK, 0);
- return -1;
- }
-
- if (_zip_dirent_read(&temp, fp, NULL, 0, 1, error) == -1)
- return -1;
-
- if (_zip_headercomp(cd->entry+i, 0, &temp, 1) != 0) {
- _zip_error_set(error, ZIP_ER_NOZIP, 0);
- _zip_dirent_finalize(&temp);
- return -1;
- }
- _zip_dirent_finalize(&temp);
- }
-
- return max - min;
-}
-
-
-
-/* _zip_headercomp:
- compares two headers h1 and h2; if they are local headers, set
- local1p or local2p respectively to 1, else 0. Return 0 if they
- are identical, -1 if not. */
-
-static int
-_zip_headercomp(struct zip_dirent *h1, int local1p, struct zip_dirent *h2,
- int local2p)
-{
- if ((h1->version_needed != h2->version_needed)
-#if 0
- /* some zip-files have different values in local
- and global headers for the bitflags */
- || (h1->bitflags != h2->bitflags)
-#endif
- || (h1->comp_method != h2->comp_method)
- || (h1->last_mod != h2->last_mod)
- || (h1->crc != h2->crc)
- || (h1->comp_size != h2->comp_size)
- || (h1->uncomp_size != h2->uncomp_size)
- || (h1->filename_len != h2->filename_len)
- || !h1->filename || !h2->filename
- || strcmp(h1->filename, h2->filename))
- return -1;
-
- if ((local1p == local2p)
- && ((h1->extrafield_len != h2->extrafield_len)
- || (h1->extrafield_len && h2->extrafield
- && memcmp(h1->extrafield, h2->extrafield,
- h1->extrafield_len))))
- return -1;
-
- /* if either is local, nothing more to check */
- if (local1p || local2p)
- return 0;
-
- if ((h1->version_madeby != h2->version_madeby)
- || (h1->disk_number != h2->disk_number)
- || (h1->int_attrib != h2->int_attrib)
- || (h1->ext_attrib != h2->ext_attrib)
- || (h1->offset != h2->offset)
- || (h1->comment_len != h2->comment_len)
- || (h1->comment_len && h2->comment
- && memcmp(h1->comment, h2->comment, h1->comment_len)))
- return -1;
-
- return 0;
-}
-
-
-
-static unsigned char *
-_zip_memmem(const unsigned char *big, int biglen, const unsigned char *little,
- int littlelen)
-{
- const unsigned char *p;
-
- if ((biglen < littlelen) || (littlelen == 0))
- return NULL;
- p = big-1;
- while ((p=(const unsigned char *)
- memchr(p+1, little[0], (size_t)(big-(p+1)+biglen-littlelen+1)))
- != NULL) {
- if (memcmp(p+1, little+1, littlelen-1)==0)
- return (unsigned char *)p;
- }
-
- return NULL;
-}
diff --git a/ext/zip/lib/zip_rename.c b/ext/zip/lib/zip_rename.c
deleted file mode 100644
index f35291893f..0000000000
--- a/ext/zip/lib/zip_rename.c
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- $NiH: zip_rename.c,v 1.15 2004/11/30 22:19:38 wiz Exp $
-
- zip_rename.c -- rename file in zip archive
- Copyright (C) 1999, 2003, 2004 Dieter Baron and Thomas Klausner
-
- This file is part of libzip, a library to manipulate ZIP archives.
- The authors can be contacted at <nih@giga.or.at>
-
- 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.
- 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.
- 3. The names of the authors may not be used to endorse or promote
- products derived from this software without specific prior
- written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``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 AUTHORS 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.
-*/
-
-
-
-#include "zip.h"
-#include "zipint.h"
-
-
-
-int
-zip_rename(struct zip *za, int idx, const char *name)
-{
- if (idx >= za->nentry || idx < 0) {
- _zip_error_set(&za->error, ZIP_ER_INVAL, 0);
- return -1;
- }
-
- return _zip_set_name(za, idx, name);
-}
diff --git a/ext/zip/lib/zip_replace.c b/ext/zip/lib/zip_replace.c
deleted file mode 100644
index ae78e62b80..0000000000
--- a/ext/zip/lib/zip_replace.c
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- $NiH: zip_replace.c,v 1.20 2006/04/09 14:52:02 wiz Exp $
-
- zip_replace.c -- replace file via callback function
- Copyright (C) 1999, 2003, 2004, 2006 Dieter Baron and Thomas Klausner
-
- This file is part of libzip, a library to manipulate ZIP archives.
- The authors can be contacted at <nih@giga.or.at>
-
- 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.
- 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.
- 3. The names of the authors may not be used to endorse or promote
- products derived from this software without specific prior
- written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``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 AUTHORS 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.
-*/
-
-
-
-#include "zip.h"
-#include "zipint.h"
-
-
-
-int
-zip_replace(struct zip *za, int idx, struct zip_source *source)
-{
- if (idx < 0 || idx >= za->nentry || source == NULL) {
- _zip_error_set(&za->error, ZIP_ER_INVAL, 0);
- return -1;
- }
-
- if (_zip_replace(za, idx, NULL, source) == -1)
- return -1;
-
- return 0;
-}
-
-
-
-
-int
-_zip_replace(struct zip *za, int idx, const char *name,
- struct zip_source *source)
-{
- if (idx == -1) {
- if (_zip_entry_new(za) == NULL)
- return -1;
- idx = za->nentry - 1;
- }
-
-
- _zip_unchange_data(za->entry+idx);
-
- if (name && _zip_set_name(za, idx, name) != 0)
- return -1;
-
-
- za->entry[idx].state = ((za->cdir == NULL || idx >= za->cdir->nentry)
- ? ZIP_ST_ADDED : ZIP_ST_REPLACED);
- za->entry[idx].source = source;
-
- return idx;
-}
diff --git a/ext/zip/lib/zip_set_archive_comment.c b/ext/zip/lib/zip_set_archive_comment.c
deleted file mode 100644
index 51a8416da4..0000000000
--- a/ext/zip/lib/zip_set_archive_comment.c
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- $NiH: zip_set_archive_comment.c,v 1.3 2006/04/24 10:34:39 dillo Exp $
-
- zip_set_archive_comment.c -- set archive comment
- Copyright (C) 2006 Dieter Baron and Thomas Klausner
-
- This file is part of libzip, a library to manipulate ZIP archives.
- The authors can be contacted at <nih@giga.or.at>
-
- 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.
- 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.
- 3. The names of the authors may not be used to endorse or promote
- products derived from this software without specific prior
- written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``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 AUTHORS 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.
-*/
-
-
-
-#include <stdlib.h>
-
-#include "zip.h"
-#include "zipint.h"
-
-
-
-int
-zip_set_archive_comment(struct zip *za, const char *comment, int len)
-{
- char *tmpcom;
-
- if (len < 0 || len > MAXCOMLEN
- || (len > 0 && comment == NULL)) {
- _zip_error_set(&za->error, ZIP_ER_INVAL, 0);
- return -1;
- }
-
- if (len > 0) {
- if ((tmpcom=(char *)_zip_memdup(comment, len, &za->error)) == NULL)
- return -1;
- }
- else
- tmpcom = NULL;
-
- free(za->ch_comment);
- za->ch_comment = tmpcom;
- za->ch_comment_len = len;
-
- return 0;
-}
diff --git a/ext/zip/lib/zip_set_file_comment.c b/ext/zip/lib/zip_set_file_comment.c
deleted file mode 100644
index cbf71db5c2..0000000000
--- a/ext/zip/lib/zip_set_file_comment.c
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- $NiH: zip_set_file_comment.c,v 1.4 2006/04/24 10:34:39 dillo Exp $
-
- zip_set_file_comment.c -- set comment for file in archive
- Copyright (C) 2006 Dieter Baron and Thomas Klausner
-
- This file is part of libzip, a library to manipulate ZIP archives.
- The authors can be contacted at <nih@giga.or.at>
-
- 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.
- 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.
- 3. The names of the authors may not be used to endorse or promote
- products derived from this software without specific prior
- written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``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 AUTHORS 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.
-*/
-
-
-
-#include <stdlib.h>
-
-#include "zip.h"
-#include "zipint.h"
-
-
-
-int
-zip_set_file_comment(struct zip *za, int idx, const char *comment, int len)
-{
- char *tmpcom;
-
- if (idx < 0 || idx >= za->nentry
- || len < 0 || len > MAXCOMLEN
- || (len > 0 && comment == NULL)) {
- _zip_error_set(&za->error, ZIP_ER_INVAL, 0);
- return -1;
- }
-
- if (len > 0) {
- if ((tmpcom=(char *)_zip_memdup(comment, len, &za->error)) == NULL)
- return -1;
- }
- else
- tmpcom = NULL;
-
- free(za->entry[idx].ch_comment);
- za->entry[idx].ch_comment = tmpcom;
- za->entry[idx].ch_comment_len = len;
-
- return 0;
-}
diff --git a/ext/zip/lib/zip_set_name.c b/ext/zip/lib/zip_set_name.c
deleted file mode 100644
index 46dca56466..0000000000
--- a/ext/zip/lib/zip_set_name.c
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- $NiH: zip_set_name.c,v 1.16 2004/11/30 23:02:47 wiz Exp $
-
- zip_set_name.c -- rename helper function
- Copyright (C) 1999, 2003, 2004 Dieter Baron and Thomas Klausner
-
- This file is part of libzip, a library to manipulate ZIP archives.
- The authors can be contacted at <nih@giga.or.at>
-
- 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.
- 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.
- 3. The names of the authors may not be used to endorse or promote
- products derived from this software without specific prior
- written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``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 AUTHORS 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.
-*/
-
-
-
-#include <stdlib.h>
-#include <string.h>
-#include "zip.h"
-#include "zipint.h"
-
-
-
-int
-_zip_set_name(struct zip *za, int idx, const char *name)
-{
- char *s;
- int i;
-
- if (idx < 0 || idx >= za->nentry || name == NULL) {
- _zip_error_set(&za->error, ZIP_ER_INVAL, 0);
- return -1;
- }
-
- if ((i=_zip_name_locate(za, name, 0, NULL)) != -1 && i != idx) {
- _zip_error_set(&za->error, ZIP_ER_EXISTS, 0);
- return -1;
- }
-
- /* no effective name change */
- if (i == idx)
- return 0;
-
- if ((s=strdup(name)) == NULL) {
- _zip_error_set(&za->error, ZIP_ER_MEMORY, 0);
- return -1;
- }
-
- if (za->entry[idx].state == ZIP_ST_UNCHANGED)
- za->entry[idx].state = ZIP_ST_RENAMED;
-
- free(za->entry[idx].ch_filename);
- za->entry[idx].ch_filename = s;
-
- return 0;
-}
diff --git a/ext/zip/lib/zip_source_buffer.c b/ext/zip/lib/zip_source_buffer.c
deleted file mode 100644
index ada9ae85fb..0000000000
--- a/ext/zip/lib/zip_source_buffer.c
+++ /dev/null
@@ -1,162 +0,0 @@
-/*
- $NiH: zip_source_buffer.c,v 1.8 2006/04/23 14:50:49 wiz Exp $
-
- zip_source_buffer.c -- create zip data source from buffer
- Copyright (C) 1999, 2003, 2004, 2005 Dieter Baron and Thomas Klausner
-
- This file is part of libzip, a library to manipulate ZIP archives.
- The authors can be contacted at <nih@giga.or.at>
-
- 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.
- 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.
- 3. The names of the authors may not be used to endorse or promote
- products derived from this software without specific prior
- written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``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 AUTHORS 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.
-*/
-
-
-
-#include <stdlib.h>
-#include <string.h>
-
-#include "zip.h"
-#include "zipint.h"
-
-struct read_data {
- const char *buf, *data, *end;
- time_t mtime;
- int freep;
-};
-
-static ssize_t read_data(void *state, void *data, size_t len,
- enum zip_source_cmd cmd);
-
-
-
-struct zip_source *
-zip_source_buffer(struct zip *za, const void *data, off_t len, int freep)
-{
- struct read_data *f;
- struct zip_source *zs;
-
- if (za == NULL)
- return NULL;
-
- if (len < 0 || (data == NULL && len > 0)) {
- _zip_error_set(&za->error, ZIP_ER_INVAL, 0);
- return NULL;
- }
-
- if ((f=(struct read_data *)malloc(sizeof(*f))) == NULL) {
- _zip_error_set(&za->error, ZIP_ER_MEMORY, 0);
- return NULL;
- }
-
- f->data = (const char *)data;
- f->end = ((const char *)data)+len;
- f->freep = freep;
- f->mtime = time(NULL);
-
- if ((zs=zip_source_function(za, read_data, f)) == NULL) {
- free(f);
- return NULL;
- }
-
- return zs;
-}
-
-static ssize_t
-read_data(void *state, void *data, size_t len, enum zip_source_cmd cmd)
-{
- struct read_data *z;
- char *buf;
- size_t n;
-
- z = (struct read_data *)state;
- buf = (char *)data;
-
- switch (cmd) {
- case ZIP_SOURCE_OPEN:
- z->buf = z->data;
- return 0;
-
- case ZIP_SOURCE_READ:
- n = z->end - z->buf;
- if (n > len)
- n = len;
- if (n < 0)
- n = 0;
-
- if (n) {
- memcpy(buf, z->buf, n);
- z->buf += n;
- }
-
- return n;
-
- case ZIP_SOURCE_CLOSE:
- return 0;
-
- case ZIP_SOURCE_STAT:
- {
- struct zip_stat *st;
-
- if (len < sizeof(*st))
- return -1;
-
- st = (struct zip_stat *)data;
-
- st->mtime = z->mtime;
- st->crc = 0;
- st->size = z->end - z->data;
- st->comp_size = -1;
- st->comp_method = ZIP_CM_STORE;
-
- return sizeof(*st);
- }
-
- case ZIP_SOURCE_ERROR:
- {
- int *e;
-
- if (len < sizeof(int)*2)
- return -1;
-
- e = (int *)data;
- e[0] = e[1] = 0;
- }
- return sizeof(int)*2;
-
- case ZIP_SOURCE_FREE:
- if (z->freep) {
- free((void *)z->data);
- z->data = NULL;
- }
- free(z);
- return 0;
-
- default:
- ;
- }
-
- return -1;
-}
diff --git a/ext/zip/lib/zip_source_file.c b/ext/zip/lib/zip_source_file.c
deleted file mode 100644
index f06b32fec6..0000000000
--- a/ext/zip/lib/zip_source_file.c
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- $NiH: zip_source_file.c,v 1.2 2004/11/18 16:28:13 wiz Exp $
-
- zip_source_file.c -- create data source from file
- Copyright (C) 1999, 2003, 2004 Dieter Baron and Thomas Klausner
-
- This file is part of libzip, a library to manipulate ZIP archives.
- The authors can be contacted at <nih@giga.or.at>
-
- 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.
- 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.
- 3. The names of the authors may not be used to endorse or promote
- products derived from this software without specific prior
- written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``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 AUTHORS 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.
-*/
-
-
-
-#include <errno.h>
-#include <stdio.h>
-
-#include "zip.h"
-#include "zipint.h"
-
-
-
-struct zip_source *
-zip_source_file(struct zip *za, const char *fname, off_t start, off_t len)
-{
- struct zip_source *zs;
- FILE *fp;
-
- if (za == NULL)
- return NULL;
-
- if (fname == NULL || start < 0 || len < -1) {
- _zip_error_set(&za->error, ZIP_ER_INVAL, 0);
- return NULL;
- }
-
- if ((fp=fopen(fname, "rb")) == NULL) {
- _zip_error_set(&za->error, ZIP_ER_OPEN, errno);
- return NULL;
- }
-
- if ((zs=zip_source_filep(za, fp, start, len)) == NULL) {
- fclose(fp);
- return NULL;
- }
-
- return zs;
-}
diff --git a/ext/zip/lib/zip_source_filep.c b/ext/zip/lib/zip_source_filep.c
deleted file mode 100644
index 9c7383cf29..0000000000
--- a/ext/zip/lib/zip_source_filep.c
+++ /dev/null
@@ -1,180 +0,0 @@
-/*
- $NiH: zip_source_filep.c,v 1.6 2005/06/09 19:57:10 dillo Exp $
-
- zip_source_filep.c -- create data source from FILE *
- Copyright (C) 1999, 2003, 2004, 2005 Dieter Baron and Thomas Klausner
-
- This file is part of libzip, a library to manipulate ZIP archives.
- The authors can be contacted at <nih@giga.or.at>
-
- 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.
- 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.
- 3. The names of the authors may not be used to endorse or promote
- products derived from this software without specific prior
- written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``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 AUTHORS 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.
-*/
-
-
-
-#include <sys/stat.h>
-#include <errno.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "zip.h"
-#include "zipint.h"
-
-struct read_file {
- FILE *f; /* file to copy from */
- off_t off; /* start offset of */
- off_t len; /* lengt of data to copy */
- off_t remain; /* bytes remaining to be copied */
- int e[2]; /* error codes */
-};
-
-static ssize_t read_file(void *state, void *data, size_t len,
- enum zip_source_cmd cmd);
-
-
-
-struct zip_source *
-zip_source_filep(struct zip *za, FILE *file, off_t start, off_t len)
-{
- struct read_file *f;
- struct zip_source *zs;
-
- if (za == NULL)
- return NULL;
-
- if (file == NULL || start < 0 || len < -1) {
- _zip_error_set(&za->error, ZIP_ER_INVAL, 0);
- return NULL;
- }
-
- if ((f=(struct read_file *)malloc(sizeof(struct read_file))) == NULL) {
- _zip_error_set(&za->error, ZIP_ER_MEMORY, 0);
- return NULL;
- }
-
- f->f = file;
- f->off = start;
- f->len = (len ? len : -1);
-
- if ((zs=zip_source_function(za, read_file, f)) == NULL) {
- free(f);
- return NULL;
- }
-
- return zs;
-}
-
-
-
-static ssize_t
-read_file(void *state, void *data, size_t len, enum zip_source_cmd cmd)
-{
- struct read_file *z;
- char *buf;
- int i, n;
-
- z = (struct read_file *)state;
- buf = (char *)data;
-
- switch (cmd) {
- case ZIP_SOURCE_OPEN:
- if (fseeko(z->f, z->off, SEEK_SET) < 0) {
- z->e[0] = ZIP_ER_SEEK;
- z->e[1] = errno;
- return -1;
- }
- z->remain = z->len;
- return 0;
-
- case ZIP_SOURCE_READ:
- if (z->remain != -1)
- n = len > z->remain ? z->remain : len;
- else
- n = len;
-
- if ((i=fread(buf, 1, n, z->f)) < 0) {
- z->e[0] = ZIP_ER_READ;
- z->e[1] = errno;
- return -1;
- }
-
- if (z->remain != -1)
- z->remain -= i;
-
- return i;
-
- case ZIP_SOURCE_CLOSE:
- return 0;
-
- case ZIP_SOURCE_STAT:
- {
- struct zip_stat *st;
- struct stat fst;
-
- if (len < sizeof(*st))
- return -1;
-
- st = (struct zip_stat *)data;
-
- if (fstat(fileno(z->f), &fst) != 0) {
- z->e[0] = ZIP_ER_READ; /* best match */
- z->e[1] = errno;
- return -1;
- }
-
- st->mtime = fst.st_mtime;
- st->crc = 0;
- if (z->len != -1)
- st->size = z->len;
- else if ((fst.st_mode&S_IFMT) == S_IFREG)
- st->size = fst.st_size;
- else
- st->size = -1;
- st->comp_size = -1;
- st->comp_method = ZIP_CM_STORE;
-
- return sizeof(*st);
- }
-
- case ZIP_SOURCE_ERROR:
- if (len < sizeof(int)*2)
- return -1;
-
- memcpy(data, z->e, sizeof(int)*2);
- return sizeof(int)*2;
-
- case ZIP_SOURCE_FREE:
- fclose(z->f);
- free(z);
- return 0;
-
- default:
- ;
- }
-
- return -1;
-}
diff --git a/ext/zip/lib/zip_source_free.c b/ext/zip/lib/zip_source_free.c
deleted file mode 100644
index 33e36eaf43..0000000000
--- a/ext/zip/lib/zip_source_free.c
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- $NiH: zip_source_free.c,v 1.2 2004/12/22 16:32:00 dillo Exp $
-
- zip_source_free.c -- free zip data source
- Copyright (C) 1999, 2003, 2004 Dieter Baron and Thomas Klausner
-
- This file is part of libzip, a library to manipulate ZIP archives.
- The authors can be contacted at <nih@giga.or.at>
-
- 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.
- 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.
- 3. The names of the authors may not be used to endorse or promote
- products derived from this software without specific prior
- written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``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 AUTHORS 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.
-*/
-
-
-
-#include <stdlib.h>
-
-#include "zip.h"
-#include "zipint.h"
-
-
-
-void
-zip_source_free(struct zip_source *source)
-{
- if (source == NULL)
- return;
-
- (void)source->f(source->ud, NULL, 0, ZIP_SOURCE_FREE);
-
- free(source);
-}
diff --git a/ext/zip/lib/zip_source_function.c b/ext/zip/lib/zip_source_function.c
deleted file mode 100644
index 4f01a43c51..0000000000
--- a/ext/zip/lib/zip_source_function.c
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- $NiH: zip_source_function.c,v 1.4 2006/02/21 09:41:00 dillo Exp $
-
- zip_source_function.c -- create zip data source from callback function
- Copyright (C) 1999, 2003, 2004 Dieter Baron and Thomas Klausner
-
- This file is part of libzip, a library to manipulate ZIP archives.
- The authors can be contacted at <nih@giga.or.at>
-
- 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.
- 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.
- 3. The names of the authors may not be used to endorse or promote
- products derived from this software without specific prior
- written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``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 AUTHORS 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.
-*/
-
-
-
-#include <stdlib.h>
-
-#include "zip.h"
-#include "zipint.h"
-
-
-
-struct zip_source *
-zip_source_function(struct zip *za, zip_source_callback zcb, void *ud)
-{
- struct zip_source *zs;
-
- if (za == NULL)
- return NULL;
-
- if ((zs=(struct zip_source *)malloc(sizeof(*zs))) == NULL) {
- _zip_error_set(&za->error, ZIP_ER_MEMORY, 0);
- return NULL;
- }
-
- zs->f = zcb;
- zs->ud = ud;
-
- return zs;
-}
diff --git a/ext/zip/lib/zip_source_zip.c b/ext/zip/lib/zip_source_zip.c
deleted file mode 100644
index a31fd2787e..0000000000
--- a/ext/zip/lib/zip_source_zip.c
+++ /dev/null
@@ -1,189 +0,0 @@
-/*
- $NiH: zip_source_zip.c,v 1.7 2006/02/21 09:41:00 dillo Exp $
-
- zip_source_zip.c -- create data source from zip file
- Copyright (C) 1999, 2003, 2004, 2005 Dieter Baron and Thomas Klausner
-
- This file is part of libzip, a library to manipulate ZIP archives.
- The authors can be contacted at <nih@giga.or.at>
-
- 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.
- 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.
- 3. The names of the authors may not be used to endorse or promote
- products derived from this software without specific prior
- written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``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 AUTHORS 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.
-*/
-
-
-
-#include <stdlib.h>
-#include <string.h>
-
-#include "zip.h"
-#include "zipint.h"
-
-struct read_zip {
- struct zip_file *zf;
- struct zip_stat st;
- off_t off, len;
-};
-
-static ssize_t read_zip(void *st, void *data, size_t len,
- enum zip_source_cmd cmd);
-
-
-
-struct zip_source *
-zip_source_zip(struct zip *za, struct zip *srcza, int srcidx, int flags,
- off_t start, off_t len)
-{
- struct zip_error error;
- struct zip_source *zs;
- struct read_zip *p;
-
- if (za == NULL)
- return NULL;
-
- if (srcza == NULL || start < 0 || len < -1 || srcidx < 0 || srcidx >= srcza->nentry) {
- _zip_error_set(&za->error, ZIP_ER_INVAL, 0);
- return NULL;
- }
-
- if ((flags & ZIP_FL_UNCHANGED) == 0
- && ZIP_ENTRY_DATA_CHANGED(srcza->entry+srcidx)) {
- _zip_error_set(&za->error, ZIP_ER_CHANGED, 0);
- return NULL;
- }
-
- if (len == 0)
- len = -1;
-
- if (start == 0 && len == -1)
- flags |= ZIP_FL_COMPRESSED;
- else
- flags &= ~ZIP_FL_COMPRESSED;
-
- if ((p=(struct read_zip *)malloc(sizeof(*p))) == NULL) {
- _zip_error_set(&za->error, ZIP_ER_MEMORY, 0);
- return NULL;
- }
-
- _zip_error_copy(&error, &srcza->error);
-
- if (zip_stat_index(srcza, srcidx, flags, &p->st) < 0
- || (p->zf=zip_fopen_index(srcza, srcidx, flags)) == NULL) {
- free(p);
- _zip_error_copy(&za->error, &srcza->error);
- _zip_error_copy(&srcza->error, &error);
-
- return NULL;
- }
- p->off = start;
- p->len = len;
-
- if ((flags & ZIP_FL_COMPRESSED) == 0) {
- p->st.size = p->st.comp_size = len;
- p->st.comp_method = ZIP_CM_STORE;
- p->st.crc = 0;
- }
-
- if ((zs=zip_source_function(za, read_zip, p)) == NULL) {
- free(p);
- return NULL;
- }
-
- return zs;
-}
-
-
-
-static ssize_t
-read_zip(void *state, void *data, size_t len, enum zip_source_cmd cmd)
-{
- struct read_zip *z;
- char b[8192], *buf;
- int i, n;
-
- z = (struct read_zip *)state;
- buf = (char *)data;
-
- switch (cmd) {
- case ZIP_SOURCE_OPEN:
- for (n=0; n<z->off; n+= i) {
- i = (z->off-n > sizeof(b) ? sizeof(b) : z->off-n);
- if ((i=zip_fread(z->zf, b, i)) < 0) {
- zip_fclose(z->zf);
- z->zf = NULL;
- return -1;
- }
- }
- return 0;
-
- case ZIP_SOURCE_READ:
- if (z->len != -1)
- n = len > z->len ? z->len : len;
- else
- n = len;
-
-
- if ((i=zip_fread(z->zf, buf, n)) < 0)
- return -1;
-
- if (z->len != -1)
- z->len -= i;
-
- return i;
-
- case ZIP_SOURCE_CLOSE:
- return 0;
-
- case ZIP_SOURCE_STAT:
- if (len < sizeof(z->st))
- return -1;
- len = sizeof(z->st);
-
- memcpy(data, &z->st, len);
- return len;
-
- case ZIP_SOURCE_ERROR:
- {
- int *e;
-
- if (len < sizeof(int)*2)
- return -1;
-
- e = (int *)data;
- zip_file_error_get(z->zf, e, e+1);
- }
- return sizeof(int)*2;
-
- case ZIP_SOURCE_FREE:
- zip_fclose(z->zf);
- free(z);
- return 0;
-
- default:
- ;
- }
-
- return -1;
-}
diff --git a/ext/zip/lib/zip_stat.c b/ext/zip/lib/zip_stat.c
deleted file mode 100644
index bea153d157..0000000000
--- a/ext/zip/lib/zip_stat.c
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- $NiH: zip_stat.c,v 1.3 2004/04/16 09:40:30 dillo Exp $
-
- zip_stat.c -- get information about file by name
- Copyright (C) 1999, 2003, 2004 Dieter Baron and Thomas Klausner
-
- This file is part of libzip, a library to manipulate ZIP archives.
- The authors can be contacted at <nih@giga.or.at>
-
- 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.
- 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.
- 3. The names of the authors may not be used to endorse or promote
- products derived from this software without specific prior
- written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``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 AUTHORS 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.
-*/
-
-
-
-#include "zip.h"
-#include "zipint.h"
-
-
-
-int
-zip_stat(struct zip *za, const char *fname, int flags, struct zip_stat *st)
-{
- int idx;
-
- if ((idx=zip_name_locate(za, fname, flags)) < 0)
- return -1;
-
- return zip_stat_index(za, idx, flags, st);
-}
diff --git a/ext/zip/lib/zip_stat_index.c b/ext/zip/lib/zip_stat_index.c
deleted file mode 100644
index 837d639077..0000000000
--- a/ext/zip/lib/zip_stat_index.c
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- $NiH: zip_stat_index.c,v 1.10 2006/04/24 14:04:19 dillo Exp $
-
- zip_stat_index.c -- get information about file by index
- Copyright (C) 1999, 2003, 2004 Dieter Baron and Thomas Klausner
-
- This file is part of libzip, a library to manipulate ZIP archives.
- The authors can be contacted at <nih@giga.or.at>
-
- 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.
- 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.
- 3. The names of the authors may not be used to endorse or promote
- products derived from this software without specific prior
- written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``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 AUTHORS 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.
-*/
-
-
-
-#include "zip.h"
-#include "zipint.h"
-
-
-
-int
-zip_stat_index(struct zip *za, int index, int flags, struct zip_stat *st)
-{
- const char *name;
-
- if (index < 0 || index >= za->nentry) {
- _zip_error_set(&za->error, ZIP_ER_INVAL, 0);
- return -1;
- }
-
- if ((name=zip_get_name(za, index, flags)) == NULL)
- return -1;
-
-
- if ((flags & ZIP_FL_UNCHANGED) == 0
- && ZIP_ENTRY_DATA_CHANGED(za->entry+index)) {
- if (za->entry[index].source->f(za->entry[index].source->ud,
- st, sizeof(*st), ZIP_SOURCE_STAT) < 0) {
- _zip_error_set(&za->error, ZIP_ER_CHANGED, 0);
- return -1;
- }
- }
- else {
- if (za->cdir == NULL || index >= za->cdir->nentry) {
- _zip_error_set(&za->error, ZIP_ER_INVAL, 0);
- return -1;
- }
-
- st->index = index;
- st->crc = za->cdir->entry[index].crc;
- st->size = za->cdir->entry[index].uncomp_size;
- st->mtime = za->cdir->entry[index].last_mod;
- st->comp_size = za->cdir->entry[index].comp_size;
- st->comp_method = za->cdir->entry[index].comp_method;
- if (za->cdir->entry[index].bitflags & ZIP_GPBF_ENCRYPTED) {
- if (za->cdir->entry[index].bitflags & ZIP_GPBF_STRONG_ENCRYPTION) {
- /* XXX */
- st->encryption_method = ZIP_EM_UNKNOWN;
- }
- else
- st->encryption_method = ZIP_EM_TRAD_PKWARE;
- }
- else
- st->encryption_method = ZIP_EM_NONE;
- /* st->bitflags = za->cdir->entry[index].bitflags; */
- }
-
- st->name = name;
-
- return 0;
-}
diff --git a/ext/zip/lib/zip_strerror.c b/ext/zip/lib/zip_strerror.c
deleted file mode 100644
index 83e2985068..0000000000
--- a/ext/zip/lib/zip_strerror.c
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- $NiH: zip_strerror.c,v 1.1 2003/10/05 16:05:22 dillo Exp $
-
- zip_sterror.c -- get string representation of zip error
- Copyright (C) 1999, 2003 Dieter Baron and Thomas Klausner
-
- This file is part of libzip, a library to manipulate ZIP archives.
- The authors can be contacted at <nih@giga.or.at>
-
- 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.
- 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.
- 3. The names of the authors may not be used to endorse or promote
- products derived from this software without specific prior
- written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``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 AUTHORS 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.
-*/
-
-
-
-#include "zip.h"
-#include "zipint.h"
-
-
-
-const char *
-zip_strerror(struct zip *za)
-{
- return _zip_error_strerror(&za->error);
-}
diff --git a/ext/zip/lib/zip_unchange.c b/ext/zip/lib/zip_unchange.c
deleted file mode 100644
index 34e7f2d367..0000000000
--- a/ext/zip/lib/zip_unchange.c
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- $NiH: zip_unchange.c,v 1.19 2006/04/23 13:21:18 wiz Exp $
-
- zip_unchange.c -- undo changes to file in zip archive
- Copyright (C) 1999, 2004, 2006 Dieter Baron and Thomas Klausner
-
- This file is part of libzip, a library to manipulate ZIP archives.
- The authors can be contacted at <nih@giga.or.at>
-
- 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.
- 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.
- 3. The names of the authors may not be used to endorse or promote
- products derived from this software without specific prior
- written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``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 AUTHORS 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.
-*/
-
-
-
-#include <stdlib.h>
-#include "zip.h"
-#include "zipint.h"
-
-
-
-int
-zip_unchange(struct zip *za, int idx)
-{
- return _zip_unchange(za, idx, 0);
-}
-
-
-
-int
-_zip_unchange(struct zip *za, int idx, int allow_duplicates)
-{
- int i;
-
- if (idx < 0 || idx >= za->nentry) {
- _zip_error_set(&za->error, ZIP_ER_INVAL, 0);
- return -1;
- }
-
- if (za->entry[idx].ch_filename) {
- if (!allow_duplicates) {
- i = _zip_name_locate(za,
- _zip_get_name(za, idx, ZIP_FL_UNCHANGED, NULL),
- 0, NULL);
- if (i != -1 && i != idx) {
- _zip_error_set(&za->error, ZIP_ER_EXISTS, 0);
- return -1;
- }
- }
-
- free(za->entry[idx].ch_filename);
- za->entry[idx].ch_filename = NULL;
- }
-
- free(za->entry[idx].ch_comment);
- za->entry[idx].ch_comment = NULL;
- za->entry[idx].ch_comment_len = -1;
-
- _zip_unchange_data(za->entry+idx);
-
- return 0;
-}
diff --git a/ext/zip/lib/zip_unchange_all.c b/ext/zip/lib/zip_unchange_all.c
deleted file mode 100644
index f1e27da045..0000000000
--- a/ext/zip/lib/zip_unchange_all.c
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- $NiH: zip_unchange_all.c,v 1.10 2006/04/23 13:14:46 wiz Exp $
-
- zip_unchange.c -- undo changes to all files in zip archive
- Copyright (C) 1999, 2006 Dieter Baron and Thomas Klausner
-
- This file is part of libzip, a library to manipulate ZIP archives.
- The authors can be contacted at <nih@giga.or.at>
-
- 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.
- 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.
- 3. The names of the authors may not be used to endorse or promote
- products derived from this software without specific prior
- written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``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 AUTHORS 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.
-*/
-
-
-
-#include <stdlib.h>
-#include "zip.h"
-#include "zipint.h"
-
-
-
-int
-zip_unchange_all(struct zip *za)
-{
- int ret, i;
-
- ret = 0;
- for (i=0; i<za->nentry; i++)
- ret |= _zip_unchange(za, i, 1);
-
- ret |= zip_unchange_archive(za);
-
- return ret;
-}
diff --git a/ext/zip/lib/zip_unchange_archive.c b/ext/zip/lib/zip_unchange_archive.c
deleted file mode 100644
index 7418aaf6ac..0000000000
--- a/ext/zip/lib/zip_unchange_archive.c
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- $NiH: zip_unchange_archive.c,v 1.1 2006/04/23 13:14:46 wiz Exp $
-
- zip_unchange_archive.c -- undo global changes to ZIP archive
- Copyright (C) 2006 Dieter Baron and Thomas Klausner
-
- This file is part of libzip, a library to manipulate ZIP archives.
- The authors can be contacted at <nih@giga.or.at>
-
- 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.
- 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.
- 3. The names of the authors may not be used to endorse or promote
- products derived from this software without specific prior
- written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``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 AUTHORS 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.
-*/
-
-
-
-#include <stdlib.h>
-#include "zip.h"
-#include "zipint.h"
-
-
-
-int
-zip_unchange_archive(struct zip *za)
-{
- free(za->ch_comment);
- za->ch_comment = NULL;
- za->ch_comment_len = -1;
-
- return 0;
-}
diff --git a/ext/zip/lib/zip_unchange_data.c b/ext/zip/lib/zip_unchange_data.c
deleted file mode 100644
index 2526769261..0000000000
--- a/ext/zip/lib/zip_unchange_data.c
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- $NiH: zip_unchange_data.c,v 1.15 2004/12/22 16:32:00 dillo Exp $
-
- zip_unchange_data.c -- undo helper function
- Copyright (C) 1999, 2004 Dieter Baron and Thomas Klausner
-
- This file is part of libzip, a library to manipulate ZIP archives.
- The authors can be contacted at <nih@giga.or.at>
-
- 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.
- 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.
- 3. The names of the authors may not be used to endorse or promote
- products derived from this software without specific prior
- written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``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 AUTHORS 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.
-*/
-
-
-
-#include <stdlib.h>
-
-#include "zipint.h"
-
-void
-_zip_unchange_data(struct zip_entry *ze)
-{
- if (ze->source) {
- (void)ze->source->f(ze->source->ud, NULL, 0, ZIP_SOURCE_FREE);
- free(ze->source);
- ze->source = NULL;
- }
-
- ze->state = ze->ch_filename ? ZIP_ST_RENAMED : ZIP_ST_UNCHANGED;
-}
-
diff --git a/ext/zip/lib/zip_win32.h b/ext/zip/lib/zip_win32.h
deleted file mode 100644
index a33347ba0c..0000000000
--- a/ext/zip/lib/zip_win32.h
+++ /dev/null
@@ -1,29 +0,0 @@
-
-#ifdef _MSC_VER
-
-#define _POSIX_
-#include <windows.h>
-#include <io.h>
-#include <fcntl.h>
-
-#ifndef ssize_t
-# define ssize_t SSIZE_T
-#endif
-#ifndef mode_t
-# define mode_t int
-#endif
-#ifndef strcasecmp
-# define strcasecmp stricmp
-#endif
-#ifndef snprintf
-# define snprintf _snprintf
-#endif
-#ifndef mkstemp
-# define mkstemp(t) _creat(_mktemp(t), _S_IREAD|_S_IWRITE)
-#endif
-/*
-#ifndef fseeko
-# define fseeko fseek
-#endif
-*/
-#endif
diff --git a/ext/zip/lib/zipint.h b/ext/zip/lib/zipint.h
deleted file mode 100644
index 9efaf06a33..0000000000
--- a/ext/zip/lib/zipint.h
+++ /dev/null
@@ -1,225 +0,0 @@
-#ifndef _HAD_ZIPINT_H
-#define _HAD_ZIPINT_H
-
-/*
- $NiH: zipint.h,v 1.48 2006/04/24 14:04:19 dillo Exp $
-
- zipint.h -- internal declarations.
- Copyright (C) 1999, 2003, 2004, 2005, 2006 Dieter Baron and Thomas Klausner
-
- This file is part of libzip, a library to manipulate ZIP archives.
- The authors can be contacted at <nih@giga.or.at>
-
- 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.
- 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.
- 3. The names of the authors may not be used to endorse or promote
- products derived from this software without specific prior
- written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``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 AUTHORS 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.
-*/
-
-#include <zlib.h>
-
-#include "zip.h"
-#ifndef HAVE_FSEEKO
-#define fseeko(s, o, w) (fseek((s), (long int)(o), (w)))
-#endif
-
-#define CENTRAL_MAGIC "PK\1\2"
-#define LOCAL_MAGIC "PK\3\4"
-#define EOCD_MAGIC "PK\5\6"
-#define DATADES_MAGIC "PK\7\8"
-#define CDENTRYSIZE 46u
-#define LENTRYSIZE 30
-#define MAXCOMLEN 65536
-#define EOCDLEN 22
-#define CDBUFSIZE (MAXCOMLEN+EOCDLEN)
-#define BUFSIZE 8192
-
-
-
-/* state of change of a file in zip archive */
-
-enum zip_state { ZIP_ST_UNCHANGED, ZIP_ST_DELETED, ZIP_ST_REPLACED,
- ZIP_ST_ADDED, ZIP_ST_RENAMED };
-
-/* constants for struct zip_file's member flags */
-
-#define ZIP_ZF_EOF 1 /* EOF reached */
-#define ZIP_ZF_DECOMP 2 /* decompress data */
-#define ZIP_ZF_CRC 4 /* compute and compare CRC */
-
-/* directory entry: general purpose bit flags */
-
-#define ZIP_GPBF_ENCRYPTED 0x0001 /* is encrypted */
-#define ZIP_GPBF_STRONG_ENCRYPTION 0x0040 /* uses strong encryption */
-#define ZIP_GPBF_USE_DATA_DESCRIPTOR 0x0008 /* uses crc and size from data header */
-
-/* error information */
-
-struct zip_error {
- int zip_err; /* libzip error code (ZIP_ER_*) */
- int sys_err; /* copy of errno (E*) or zlib error code */
- char *str; /* string representation or NULL */
-};
-
-/* zip archive, part of API */
-
-struct zip {
- char *zn; /* file name */
- FILE *zp; /* file */
- struct zip_error error; /* error information */
-
- struct zip_cdir *cdir; /* central directory */
- char *ch_comment; /* changed archive comment */
- int ch_comment_len; /* length of changed zip archive
- * comment, -1 if unchanged */
- int nentry; /* number of entries */
- int nentry_alloc; /* number of entries allocated */
- struct zip_entry *entry; /* entries */
- int nfile; /* number of opened files within archive */
- int nfile_alloc; /* number of files allocated */
- struct zip_file **file; /* opened files within archive */
-};
-
-/* file in zip archive, part of API */
-
-struct zip_file {
- struct zip *za; /* zip archive containing this file */
- struct zip_error error; /* error information */
- int flags; /* -1: eof, >0: error */
-
- int method; /* compression method */
- long fpos; /* position within zip file (fread/fwrite) */
- unsigned long bytes_left; /* number of bytes left to read */
- unsigned long cbytes_left; /* number of bytes of compressed data left */
-
- unsigned long crc; /* CRC so far */
- unsigned long crc_orig; /* CRC recorded in archive */
-
- char *buffer;
- z_stream *zstr;
-};
-
-/* zip archive directory entry (central or local) */
-
-struct zip_dirent {
- unsigned short version_madeby; /* (c) version of creator */
- unsigned short version_needed; /* (cl) version needed to extract */
- unsigned short bitflags; /* (cl) general purpose bit flag */
- unsigned short comp_method; /* (cl) compression method used */
- time_t last_mod; /* (cl) time of last modification */
- unsigned int crc; /* (cl) CRC-32 of uncompressed data */
- unsigned int comp_size; /* (cl) size of commpressed data */
- unsigned int uncomp_size; /* (cl) size of uncommpressed data */
- char *filename; /* (cl) file name (NUL-terminated) */
- unsigned short filename_len; /* (cl) length of filename (w/o NUL) */
- char *extrafield; /* (cl) extra field */
- unsigned short extrafield_len; /* (cl) length of extra field */
- char *comment; /* (c) file comment */
- unsigned short comment_len; /* (c) length of file comment */
- unsigned short disk_number; /* (c) disk number start */
- unsigned short int_attrib; /* (c) internal file attributes */
- unsigned int ext_attrib; /* (c) external file attributes */
- unsigned int offset; /* (c) offset of local header */
-};
-
-/* zip archive central directory */
-
-struct zip_cdir {
- struct zip_dirent *entry; /* directory entries */
- int nentry; /* number of entries */
-
- unsigned int size; /* size of central direcotry */
- unsigned int offset; /* offset of central directory in file */
- char *comment; /* zip archive comment */
- unsigned short comment_len; /* length of zip archive comment */
-};
-
-
-
-struct zip_source {
- zip_source_callback f;
- void *ud;
-};
-
-/* entry in zip archive directory */
-
-struct zip_entry {
- enum zip_state state;
- struct zip_source *source;
- char *ch_filename;
- char *ch_comment;
- int ch_comment_len;
-};
-
-
-
-extern const char * const _zip_err_str[];
-extern const int _zip_nerr_str;
-extern const int _zip_err_type[];
-
-
-
-#define ZIP_ENTRY_DATA_CHANGED(x) \
- ((x)->state == ZIP_ST_REPLACED \
- || (x)->state == ZIP_ST_ADDED)
-
-
-
-void _zip_cdir_free(struct zip_cdir *);
-struct zip_cdir *_zip_cdir_new(int, struct zip_error *);
-int _zip_cdir_write(struct zip_cdir *, FILE *, struct zip_error *);
-
-void _zip_dirent_finalize(struct zip_dirent *);
-void _zip_dirent_init(struct zip_dirent *);
-int _zip_dirent_read(struct zip_dirent *, FILE *,
- unsigned char **, unsigned int, int, struct zip_error *);
-int _zip_dirent_write(struct zip_dirent *, FILE *, int, struct zip_error *);
-
-void _zip_entry_free(struct zip_entry *);
-void _zip_entry_init(struct zip *, int);
-struct zip_entry *_zip_entry_new(struct zip *);
-
-void _zip_error_copy(struct zip_error *, struct zip_error *);
-void _zip_error_fini(struct zip_error *);
-void _zip_error_get(struct zip_error *, int *, int *);
-void _zip_error_init(struct zip_error *);
-void _zip_error_set(struct zip_error *, int, int);
-const char *_zip_error_strerror(struct zip_error *);
-
-int _zip_file_fillbuf(void *, size_t, struct zip_file *);
-unsigned int _zip_file_get_offset(struct zip *, int);
-
-void _zip_free(struct zip *);
-const char *_zip_get_name(struct zip *, int, int, struct zip_error *);
-int _zip_local_header_read(struct zip *, int);
-void *_zip_memdup(const void *, size_t, struct zip_error *);
-int _zip_name_locate(struct zip *, const char *, int, struct zip_error *);
-struct zip *_zip_new(struct zip_error *);
-unsigned short _zip_read2(unsigned char **);
-unsigned int _zip_read4(unsigned char **);
-int _zip_replace(struct zip *, int, const char *, struct zip_source *);
-int _zip_set_name(struct zip *, int, const char *);
-int _zip_unchange(struct zip *, int, int);
-void _zip_unchange_data(struct zip_entry *);
-
-#endif /* zipint.h */
diff --git a/ext/zip/php_zip.c b/ext/zip/php_zip.c
deleted file mode 100644
index 73dbad9e37..0000000000
--- a/ext/zip/php_zip.c
+++ /dev/null
@@ -1,2002 +0,0 @@
-/*
- +----------------------------------------------------------------------+
- | PHP Version 5 |
- +----------------------------------------------------------------------+
- | Copyright (c) 1997-2006 The PHP Group |
- +----------------------------------------------------------------------+
- | This source file is subject to version 3.01 of the PHP license, |
- | that is bundled with this package in the file LICENSE, and is |
- | available through the world-wide-web at the following url: |
- | http://www.php.net/license/3_01.txt. |
- | If you did not receive a copy of the PHP license and are unable to |
- | obtain it through the world-wide-web, please send a note to |
- | license@php.net so we can mail you a copy immediately. |
- +----------------------------------------------------------------------+
- | Author: Piere-Alain Joye <pierre@php.net |
- +----------------------------------------------------------------------+
-*/
-
-/* $Id$ */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "php.h"
-#include "php_ini.h"
-#include "ext/standard/info.h"
-#include "ext/standard/file.h"
-#include "ext/standard/php_string.h"
-#include "php_zip.h"
-#include "lib/zip.h"
-#include "lib/zipint.h"
-
-/* {{{ Resource le */
-static int le_zip_dir;
-#define le_zip_dir_name "Zip Directory"
-static int le_zip_entry;
-#define le_zip_entry_name "Zip Entry"
-/* }}} */
-
-/* {{{ SAFEMODE_CHECKFILE(filename) */
-#define SAFEMODE_CHECKFILE(filename) \
- (PG(safe_mode) && (!php_checkuid(filename, NULL, CHECKUID_CHECK_FILE_AND_DIR))) || php_check_open_basedir(filename TSRMLS_CC)
-/* }}} */
-
-/* {{{ PHP_ZIP_STAT_INDEX(za, index, flags, sb) */
-#define PHP_ZIP_STAT_INDEX(za, index, flags, sb) \
- if (zip_stat_index(za, index, flags, &sb) != 0) { \
- RETURN_FALSE; \
- }
-/* }}} */
-
-/* {{{ PHP_ZIP_STAT_PATH(za, path, path_len, flags, sb) */
-#define PHP_ZIP_STAT_PATH(za, path, path_len, flags, sb) \
- if (path_len < 1) { \
- php_error_docref(NULL TSRMLS_CC, E_NOTICE, "Empty string as entry name"); \
- RETURN_FALSE; \
- } \
- if (zip_stat(za, path, flags, &sb)) { \
- RETURN_FALSE; \
- }
-/* }}} */
-
-/* {{{ PHP_ZIP_SET_FILE_COMMENT(za, index, comment, comment_len) */
-#define PHP_ZIP_SET_FILE_COMMENT(za, index, comment, comment_len) \
- if (comment_len == 0) { \
- /* Passing NULL remove the existing comment */ \
- if (zip_set_file_comment(intern, index, NULL, 0) < 0) { \
- RETURN_FALSE; \
- } \
- } else if (zip_set_file_comment(intern, index, comment, comment_len) < 0) { \
- RETURN_FALSE; \
- }
-
-/* }}} */
-
-#ifdef ZEND_ENGINE_2_1
-/* {{{ php_zip_extract_file */
-/* TODO: Simplify it */
-static int php_zip_extract_file(struct zip * za, char *dest, char *file TSRMLS_DC)
-{
- php_stream_statbuf ssb;
- struct zip_file *zf;
- struct zip_stat sb;
- char b[8192];
-
- int n, len, ret, file_len;
-
- php_stream *stream;
-
- char *fullpath;
- char *file_dirname_fullpath;
- char file_dirname[MAXPATHLEN + 1];
- size_t dir_len;
-
- char *file_basename;
- size_t file_basename_len;
-
- if (zip_stat(za, file, 0, &sb)) {
- return 0;
- }
-
- file_len = strlen(file);
- memcpy(file_dirname, file, file_len);
-
- dir_len = php_dirname(file_dirname, file_len);
-
- if (dir_len > 0) {
- len = spprintf(&file_dirname_fullpath, 0, "%s/%s", dest, file_dirname);
- } else {
- len = spprintf(&file_dirname_fullpath, 0, "%s", dest);
- }
-
- php_basename(file, file_len, NULL, 0, &file_basename, &file_basename_len TSRMLS_CC);
-
- if (SAFEMODE_CHECKFILE(file_dirname_fullpath)) {
- efree(file_dirname_fullpath);
- efree(file_basename);
- return 0;
- }
-
- /* let see if the path already exists */
- if (php_stream_stat_path(file_dirname_fullpath, &ssb) < 0) {
- ret = php_stream_mkdir(file_dirname_fullpath, 0777, PHP_STREAM_MKDIR_RECURSIVE, NULL);
- if (!ret) {
- efree(file_dirname_fullpath);
- efree(file_basename);
- return 0;
- }
- }
-
- /* it is a standalone directory, job done */
- if (file[file_len - 1] == '/') {
- efree(file_dirname_fullpath);
- efree(file_basename);
- return 1;
- }
-
- len = spprintf(&fullpath, 0, "%s/%s/%s", dest, file_dirname, file_basename);
- if (!len) {
- efree(file_dirname_fullpath);
- efree(file_basename);
- return 0;
- }
-
- /* check again the full path, not sure if it
- * is required, does a file can have a different
- * safemode status as its parent folder?
- */
- if (SAFEMODE_CHECKFILE(fullpath)) {
- efree(file_dirname_fullpath);
- efree(file_basename);
- return 0;
- }
-
- zf = zip_fopen(za, file, 0);
- if (zf == NULL) {
- efree(fullpath);
- efree(file_dirname_fullpath);
- efree(file_basename);
- return 0;
- }
-
- stream = php_stream_open_wrapper(fullpath, "w+b", REPORT_ERRORS|ENFORCE_SAFE_MODE, NULL);
- n = 0;
- if (stream) {
- while ((n=zip_fread(zf, b, sizeof(b))) > 0) php_stream_write(stream, b, n);
- php_stream_close(stream);
- }
- n = zip_fclose(zf);
-
- efree(fullpath);
- efree(file_basename);
- efree(file_dirname_fullpath);
-
- if (n<0) {
- return 0;
- } else {
- return 1;
- }
-}
-/* }}} */
-
-/* {{{ REGISTER_ZIP_CLASS_CONST_LONG */
-#define REGISTER_ZIP_CLASS_CONST_LONG(const_name, value) \
- zend_declare_class_constant_long(zip_class_entry, const_name, sizeof(const_name)-1, (long)value TSRMLS_CC);
-/* }}} */
-
-/* {{{ ZIP_FROM_OBJECT */
-#define ZIP_FROM_OBJECT(intern, object) \
- { \
- ze_zip_object *obj = (ze_zip_object*) zend_object_store_get_object(object TSRMLS_CC); \
- intern = obj->za; \
- if (!intern) { \
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid or unitialized Zip object"); \
- RETURN_FALSE; \
- } \
- }
-/* }}} */
-
-/* {{{ RETURN_SB(sb) */
-#define RETURN_SB(sb) \
- { \
- array_init(return_value); \
- add_assoc_string(return_value, "name", estrdup((sb)->name), 0); \
- add_assoc_long(return_value, "index", (long) (sb)->index); \
- add_assoc_long(return_value, "crc", (long) (sb)->crc); \
- add_assoc_long(return_value, "size", (long) (sb)->size); \
- add_assoc_long(return_value, "mtime", (long) (sb)->mtime); \
- add_assoc_long(return_value, "comp_size", (long) (sb)->comp_size); \
- add_assoc_long(return_value, "comp_method", (long) (sb)->comp_method); \
- }
-/* }}} */
-
-static int php_zip_status(struct zip *za TSRMLS_DC) /* {{{ */
-{
- int zep, syp;
-
- zip_error_get(za, &zep, &syp);
- return zep;
-}
-/* }}} */
-
-static int php_zip_status_sys(struct zip *za TSRMLS_DC) /* {{{ */
-{
- int zep, syp;
-
- zip_error_get(za, &zep, &syp);
- return syp;
-}
-/* }}} */
-
-static int php_zip_get_num_files(struct zip *za TSRMLS_DC) /* {{{ */
-{
- return zip_get_num_files(za);
-}
-/* }}} */
-
-static char * php_zipobj_get_filename(ze_zip_object *obj TSRMLS_DC) /* {{{ */
-{
- if (!obj) {
- return NULL;
- }
-
- if (obj->filename) {
- return obj->filename;
- }
- return NULL;
-}
-/* }}} */
-
-static char * php_zipobj_get_zip_comment(struct zip *za, int *len TSRMLS_DC) /* {{{ */
-{
- if (za) {
- return (char *)zip_get_archive_comment(za, len, 0);
- }
- return NULL;
-}
-/* }}} */
-
-#endif
-
-/* {{{ zend_function_entry */
-static zend_function_entry zip_functions[] = {
- PHP_FE(zip_open, NULL)
- PHP_FE(zip_close, NULL)
- PHP_FE(zip_read, NULL)
- PHP_FE(zip_entry_open, NULL)
- PHP_FE(zip_entry_close, NULL)
- PHP_FE(zip_entry_read, NULL)
- PHP_FE(zip_entry_filesize, NULL)
- PHP_FE(zip_entry_name, NULL)
- PHP_FE(zip_entry_compressedsize, NULL)
- PHP_FE(zip_entry_compressionmethod, NULL)
-
- {NULL, NULL, NULL}
-};
-/* }}} */
-
-/* {{{ ZE2 OO definitions */
-#ifdef ZEND_ENGINE_2_1
-zend_class_entry *zip_class_entry;
-static zend_object_handlers zip_object_handlers;
-
-static HashTable zip_prop_handlers;
-
-typedef int (*zip_read_int_t)(struct zip *za TSRMLS_DC);
-typedef char *(*zip_read_const_char_t)(struct zip *za, int *len TSRMLS_DC);
-typedef char *(*zip_read_const_char_from_ze_t)(ze_zip_object *obj TSRMLS_DC);
-
-typedef struct _zip_prop_handler {
- zip_read_int_t read_int_func;
- zip_read_const_char_t read_const_char_func;
- zip_read_const_char_from_ze_t read_const_char_from_obj_func;
-
- int type;
-} zip_prop_handler;
-#endif
-/* }}} */
-
-#ifdef ZEND_ENGINE_2_1
-static void php_zip_register_prop_handler(HashTable *prop_handler, char *name, zip_read_int_t read_int_func, zip_read_const_char_t read_char_func, zip_read_const_char_from_ze_t read_char_from_obj_func, int rettype TSRMLS_DC) /* {{{ */
-{
- zip_prop_handler hnd;
-
- hnd.read_const_char_func = read_char_func;
- hnd.read_int_func = read_int_func;
- hnd.read_const_char_from_obj_func = read_char_from_obj_func;
- hnd.type = rettype;
- zend_hash_add(prop_handler, name, strlen(name)+1, &hnd, sizeof(zip_prop_handler), NULL);
-}
-/* }}} */
-
-static int php_zip_property_reader(ze_zip_object *obj, zip_prop_handler *hnd, zval **retval, int newzval TSRMLS_DC) /* {{{ */
-{
- const char *retchar = NULL;
- int retint = 0;
- int len = 0;
-
- if (obj && obj->za != NULL) {
- if (hnd->read_const_char_func) {
- retchar = hnd->read_const_char_func(obj->za, &len TSRMLS_CC);
- } else {
- if (hnd->read_int_func) {
- retint = hnd->read_int_func(obj->za TSRMLS_CC);
- if (retint == -1) {
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Internal zip error returned");
- return FAILURE;
- }
- } else {
- if (hnd->read_const_char_from_obj_func) {
- retchar = hnd->read_const_char_from_obj_func(obj TSRMLS_CC);
- }
- }
- }
- }
-
- if (newzval) {
- ALLOC_ZVAL(*retval);
- }
-
- switch (hnd->type) {
- case IS_STRING:
- if (retchar) {
- ZVAL_STRINGL(*retval, (char *) retchar, len, 1);
- } else {
- ZVAL_EMPTY_STRING(*retval);
- }
- break;
- case IS_BOOL:
- ZVAL_BOOL(*retval, (long)retint);
- break;
- case IS_LONG:
- ZVAL_LONG(*retval, (long)retint);
- break;
- default:
- ZVAL_NULL(*retval);
- }
-
- return SUCCESS;
-}
-/* }}} */
-
-zval **php_zip_get_property_ptr_ptr(zval *object, zval *member TSRMLS_DC) /* {{{ */
-{
- ze_zip_object *obj;
- zval tmp_member;
- zval **retval = NULL;
-
- zip_prop_handler *hnd;
- zend_object_handlers *std_hnd;
- int ret;
-
- if (member->type != IS_STRING) {
- tmp_member = *member;
- zval_copy_ctor(&tmp_member);
- convert_to_string(&tmp_member);
- member = &tmp_member;
- }
-
- ret = FAILURE;
- obj = (ze_zip_object *)zend_objects_get_address(object TSRMLS_CC);
-
- if (obj->prop_handler != NULL) {
- ret = zend_hash_find(obj->prop_handler, Z_STRVAL_P(member), Z_STRLEN_P(member)+1, (void **) &hnd);
- }
-
-
- if (ret == FAILURE) {
- std_hnd = zend_get_std_object_handlers();
- retval = std_hnd->get_property_ptr_ptr(object, member TSRMLS_CC);
- }
-
- if (member == &tmp_member) {
- zval_dtor(member);
- }
- return retval;
-}
-/* }}} */
-
-zval* php_zip_read_property(zval *object, zval *member, int type TSRMLS_DC) /* {{{ */
-{
- ze_zip_object *obj;
- zval tmp_member;
- zval *retval;
- zip_prop_handler *hnd;
- zend_object_handlers *std_hnd;
- int ret;
-
- if (member->type != IS_STRING) {
- tmp_member = *member;
- zval_copy_ctor(&tmp_member);
- convert_to_string(&tmp_member);
- member = &tmp_member;
- }
-
- ret = FAILURE;
- obj = (ze_zip_object *)zend_objects_get_address(object TSRMLS_CC);
-
- if (obj->prop_handler != NULL) {
- ret = zend_hash_find(obj->prop_handler, Z_STRVAL_P(member), Z_STRLEN_P(member)+1, (void **) &hnd);
- }
-
- if (ret == SUCCESS) {
- ret = php_zip_property_reader(obj, hnd, &retval, 1 TSRMLS_CC);
- if (ret == SUCCESS) {
- /* ensure we're creating a temporary variable */
- retval->refcount = 0;
- } else {
- retval = EG(uninitialized_zval_ptr);
- }
- } else {
- std_hnd = zend_get_std_object_handlers();
- retval = std_hnd->read_property(object, member, type TSRMLS_CC);
- }
-
- if (member == &tmp_member) {
- zval_dtor(member);
- }
- return retval;
-}
-/* }}} */
-
-static HashTable *php_zip_get_properties(zval *object TSRMLS_DC)/* {{{ */
-{
- ze_zip_object *obj;
- zip_prop_handler *hnd;
- HashTable *props;
- zval *val;
- int ret;
- char *key;
- uint key_len;
- HashPosition pos;
- ulong num_key;
-
- obj = (ze_zip_object *)zend_objects_get_address(object TSRMLS_CC);
- props = obj->zo.properties;
-
- if (obj->prop_handler == NULL) {
- return NULL;
- }
- zend_hash_internal_pointer_reset_ex(obj->prop_handler, &pos);
-
- while (zend_hash_get_current_data_ex(obj->prop_handler, (void**)&hnd, &pos) == SUCCESS) {
- zend_hash_get_current_key_ex(obj->prop_handler, &key, &key_len, &num_key, 0, &pos);
- MAKE_STD_ZVAL(val);
- ret = php_zip_property_reader(obj, hnd, &val, 0 TSRMLS_CC);
- if (ret != SUCCESS) {
- val = EG(uninitialized_zval_ptr);
- }
- zend_hash_update(props, key, key_len, (void *)&val, sizeof(zval *), NULL);
- zend_hash_move_forward_ex(obj->prop_handler, &pos);
- }
- return obj->zo.properties;
-}
-/* }}} */
-
-static void php_zip_object_free_storage(void *object TSRMLS_DC) /* {{{ */
-{
- ze_zip_object * intern = (ze_zip_object *) object;
- int i;
-
- if (!intern) {
- return;
- }
- if (intern->za) {
- zip_close(intern->za);
- intern->za = NULL;
- }
-
- if (intern->buffers_cnt>0) {
- for (i=0; i<intern->buffers_cnt; i++) {
- efree(intern->buffers[i]);
- }
- efree(intern->buffers);
- }
-
- intern->za = NULL;
-
-#if (PHP_MAJOR_VERSION == 5 && PHP_MINOR_VERSION == 1 && PHP_RELEASE_VERSION > 2) || (PHP_MAJOR_VERSION == 5 && PHP_MINOR_VERSION > 1) || (PHP_MAJOR_VERSION > 5)
- zend_object_std_dtor(&intern->zo TSRMLS_CC);
-#else
- if (intern->zo.guards) {
- zend_hash_destroy(intern->zo.guards);
- FREE_HASHTABLE(intern->zo.guards);
- }
-
- if (intern->zo.properties) {
- zend_hash_destroy(intern->zo.properties);
- FREE_HASHTABLE(intern->zo.properties);
- }
-#endif
-
- if (intern->filename) {
- efree(intern->filename);
- }
- efree(intern);
-}
-/* }}} */
-
-PHP_ZIP_API zend_object_value php_zip_object_new(zend_class_entry *class_type TSRMLS_DC) /* {{{ */
-{
- ze_zip_object *intern;
- zval *tmp;
- zend_object_value retval;
-
- intern = emalloc(sizeof(ze_zip_object));
- memset(&intern->zo, 0, sizeof(zend_object));
-
- intern->za = NULL;
- intern->buffers = NULL;
- intern->filename = NULL;
- intern->buffers_cnt = 0;
- intern->prop_handler = &zip_prop_handlers;
-
- zend_object_std_init(&intern->zo, class_type TSRMLS_CC);
- zend_hash_copy(intern->zo.properties, &class_type->default_properties, (copy_ctor_func_t) zval_add_ref,
- (void *) &tmp, sizeof(zval *));
-
- retval.handle = zend_objects_store_put(intern,
- NULL,
- (zend_objects_free_object_storage_t) php_zip_object_free_storage,
- NULL TSRMLS_CC);
-
- retval.handlers = (zend_object_handlers *) & zip_object_handlers;
-
- return retval;
-}
-/* }}} */
-#endif
-
-/* {{{ Resource dtors */
-
-/* {{{ php_zip_free_dir */
-static void php_zip_free_dir(zend_rsrc_list_entry *rsrc TSRMLS_DC)
-{
- zip_rsrc * zip_int = (zip_rsrc *) rsrc->ptr;
-
- if (zip_int) {
- if (zip_int->za) {
- zip_close(zip_int->za);
- }
-
- efree(rsrc->ptr);
-
- rsrc->ptr = NULL;
- }
-}
-/* }}} */
-
-/* {{{ php_zip_free_entry */
-static void php_zip_free_entry(zend_rsrc_list_entry *rsrc TSRMLS_DC)
-{
- zip_read_rsrc *zr_rsrc = (zip_read_rsrc *) rsrc->ptr;
-
- efree(zr_rsrc);
- rsrc->ptr = NULL;
-}
-/* }}} */
-
-/* }}}*/
-
-/* {{{ function prototypes */
-PHP_MINIT_FUNCTION(zip);
-PHP_MSHUTDOWN_FUNCTION(zip);
-PHP_MINFO_FUNCTION(zip);
-/* }}} */
-
-/* {{{ zip_module_entry
- */
-zend_module_entry zip_module_entry = {
- STANDARD_MODULE_HEADER,
- "zip",
- zip_functions,
- PHP_MINIT(zip),
- PHP_MSHUTDOWN(zip),
- NULL,
- NULL,
- PHP_MINFO(zip),
- "1.4.0",
- STANDARD_MODULE_PROPERTIES
-};
-/* }}} */
-
-#ifdef COMPILE_DL_ZIP
-ZEND_GET_MODULE(zip)
-#endif
-
-/* {{{ proto resource zip_open(string filename)
-Create new zip using source uri for output */
-PHP_FUNCTION(zip_open)
-{
- char *filename;
- int filename_len;
- zip_rsrc *rsrc_int;
- int err = 0;
-
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &filename, &filename_len) == FAILURE) {
- return;
- }
- if (SAFEMODE_CHECKFILE(filename)) {
- RETURN_FALSE;
- }
-
- rsrc_int = (zip_rsrc *)emalloc(sizeof(zip_rsrc));
-
- rsrc_int->za = zip_open(filename, 0, &err);
- if (rsrc_int->za == NULL) {
- efree(rsrc_int);
- RETURN_LONG((long)err);
- }
-
- rsrc_int->index_current = 0;
- rsrc_int->num_files = zip_get_num_files(rsrc_int->za);
-
- ZEND_REGISTER_RESOURCE(return_value, rsrc_int, le_zip_dir);
-}
-/* }}} */
-
-/* {{{ proto void zip_close(resource zip)
- Close a Zip archive */
-PHP_FUNCTION(zip_close)
-{
- zval * zip;
- zip_rsrc *z_rsrc = NULL;
-
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &zip) == FAILURE) {
- return;
- }
- ZEND_FETCH_RESOURCE(z_rsrc, zip_rsrc *, &zip, -1, le_zip_dir_name, le_zip_dir);
-
- /* really close the zip will break BC :-D */
- zend_list_delete(Z_LVAL_P(zip));
-}
-/* }}} */
-
-/* {{{ proto resource zip_read(resource zip)
- Returns the next file in the archive */
-PHP_FUNCTION(zip_read)
-{
- zval *zip_dp;
- zip_read_rsrc *zr_rsrc;
- int ret;
- zip_rsrc *rsrc_int;
-
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &zip_dp) == FAILURE) {
- return;
- }
- ZEND_FETCH_RESOURCE(rsrc_int, zip_rsrc *, &zip_dp, -1, le_zip_dir_name, le_zip_dir);
-
- if (rsrc_int && rsrc_int->za) {
- if (rsrc_int->index_current >= rsrc_int->num_files) {
- RETURN_FALSE;
- }
-
- zr_rsrc = emalloc(sizeof(zip_read_rsrc));
-
- ret = zip_stat_index(rsrc_int->za, rsrc_int->index_current, 0, &zr_rsrc->sb);
-
- if (ret != 0) {
- efree(zr_rsrc);
- RETURN_LONG((long)ret);
- }
-
- zr_rsrc->zf = zip_fopen_index(rsrc_int->za, rsrc_int->index_current, 0);
- if (zr_rsrc->zf) {
- rsrc_int->index_current++;
- ZEND_REGISTER_RESOURCE(return_value, zr_rsrc, le_zip_entry);
- } else {
- RETURN_FALSE;
- }
-
- } else {
- RETURN_FALSE;
- }
-}
-/* }}} */
-
-/* {{{ proto bool zip_entry_open(resource zip_dp, resource zip_entry [, string mode])
- Open a Zip File, pointed by the resource entry */
-/* Dummy function to follow the old API */
-PHP_FUNCTION(zip_entry_open)
-{
- zval * zip;
- zval * zip_entry;
- char *mode;
- int mode_len;
- zip_read_rsrc * zr_rsrc;
- zip_rsrc *z_rsrc;
-
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rr|s", &zip, &zip_entry, &mode, &mode_len) == FAILURE) {
- return;
- }
-
- ZEND_FETCH_RESOURCE(zr_rsrc, zip_read_rsrc *, &zip_entry, -1, le_zip_entry_name, le_zip_entry);
- ZEND_FETCH_RESOURCE(z_rsrc, zip_rsrc *, &zip, -1, le_zip_dir_name, le_zip_dir);
-
- if (zr_rsrc->zf != NULL) {
- RETURN_TRUE;
- } else {
- RETURN_FALSE;
- }
-}
-/* }}} */
-
-/* {{{ proto void zip_entry_close(resource zip_ent)
- Close a zip entry */
-/* another dummy function to fit in the old api*/
-PHP_FUNCTION(zip_entry_close)
-{
- zval * zip_entry;
- zip_read_rsrc * zr_rsrc;
-
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &zip_entry) == FAILURE) {
- return;
- }
-
- ZEND_FETCH_RESOURCE(zr_rsrc, zip_read_rsrc *, &zip_entry, -1, le_zip_entry_name, le_zip_entry);
- /* we got a zip_entry resource, be happy */
- RETURN_TRUE;
-}
-/* }}} */
-
-/* {{{ proto mixed zip_entry_read(resource zip_entry [, int len])
- Read from an open directory entry */
-PHP_FUNCTION(zip_entry_read)
-{
- zval * zip_entry;
- long len = 0;
- zip_read_rsrc * zr_rsrc;
- char *buffer;
- int n = 0;
-
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r|l", &zip_entry, &len) == FAILURE) {
- return;
- }
-
- ZEND_FETCH_RESOURCE(zr_rsrc, zip_read_rsrc *, &zip_entry, -1, le_zip_entry_name, le_zip_entry);
-
- if (len <= 0) {
- len = 1024;
- }
-
- if (zr_rsrc->zf) {
- buffer = safe_emalloc(len, 1, 1);
- n = zip_fread(zr_rsrc->zf, buffer, len);
- if (n > 0) {
- buffer[n] = 0;
- RETURN_STRINGL(buffer, n, 0);
- } else {
- RETURN_EMPTY_STRING()
- }
- } else {
- RETURN_FALSE;
- }
-}
-/* }}} */
-
-static void php_zip_entry_get_info(INTERNAL_FUNCTION_PARAMETERS, int opt) /* {{{ */
-{
- zval * zip_entry;
- zip_read_rsrc * zr_rsrc;
-
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &zip_entry) == FAILURE) {
- return;
- }
-
- ZEND_FETCH_RESOURCE(zr_rsrc, zip_read_rsrc *, &zip_entry, -1, le_zip_entry_name, le_zip_entry);
-
- if (!zr_rsrc->zf) {
- RETURN_FALSE;
- }
-
- switch (opt) {
- case 0:
- RETURN_STRING((char *)zr_rsrc->sb.name, 1);
- break;
- case 1:
- RETURN_LONG((long) (zr_rsrc->sb.comp_size));
- break;
- case 2:
- RETURN_LONG((long) (zr_rsrc->sb.size));
- break;
- case 3:
- switch (zr_rsrc->sb.comp_method) {
- case 0:
- RETURN_STRING("stored", 1);
- break;
- case 1:
- RETURN_STRING("shrunk", 1);
- break;
- case 2:
- case 3:
- case 4:
- case 5:
- RETURN_STRING("reduced", 1);
- break;
- case 6:
- RETURN_STRING("imploded", 1);
- break;
- case 7:
- RETURN_STRING("tokenized", 1);
- break;
- case 8:
- RETURN_STRING("deflated", 1);
- break;
- case 9:
- RETURN_STRING("deflatedX", 1);
- break;
- case 10:
- RETURN_STRING("implodedX", 1);
- break;
- default:
- RETURN_FALSE;
- }
- RETURN_LONG((long) (zr_rsrc->sb.comp_method));
- break;
- }
-
-}
-/* }}} */
-
-/* {{{ proto string zip_entry_name(resource zip_entry)
- Return the name given a ZZip entry */
-PHP_FUNCTION(zip_entry_name)
-{
- php_zip_entry_get_info(INTERNAL_FUNCTION_PARAM_PASSTHRU, 0);
-}
-/* }}} */
-
-/* {{{ proto int zip_entry_compressedsize(resource zip_entry)
- Return the compressed size of a ZZip entry */
-PHP_FUNCTION(zip_entry_compressedsize)
-{
- php_zip_entry_get_info(INTERNAL_FUNCTION_PARAM_PASSTHRU, 1);
-}
-/* }}} */
-
-/* {{{ proto int zip_entry_filesize(resource zip_entry)
- Return the actual filesize of a ZZip entry */
-PHP_FUNCTION(zip_entry_filesize)
-{
- php_zip_entry_get_info(INTERNAL_FUNCTION_PARAM_PASSTHRU, 2);
-}
-/* }}} */
-
-/* {{{ proto string zip_entry_compressionmethod(resource zip_entry)
- Return a string containing the compression method used on a particular entry */
-PHP_FUNCTION(zip_entry_compressionmethod)
-{
- php_zip_entry_get_info(INTERNAL_FUNCTION_PARAM_PASSTHRU, 3);
-}
-/* }}} */
-
-#ifdef ZEND_ENGINE_2_1
-/* {{{ proto mixed open(string source [, int flags])
-Create new zip using source uri for output, return TRUE on success or the error code */
-ZIPARCHIVE_METHOD(open)
-{
- struct zip *intern;
- char *filename;
- int filename_len;
- int err = 0;
- long flags = 0;
- char resolved_path[MAXPATHLEN + 1];
-
- zval *this = getThis();
- ze_zip_object *ze_obj = NULL;
-
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|l", &filename, &filename_len, &flags) == FAILURE) {
- WRONG_PARAM_COUNT;
- return;
- }
-
- if (this) {
- /* We do not use ZIP_FROM_OBJECT, zip init function here */
- ze_obj = (ze_zip_object*) zend_object_store_get_object(this TSRMLS_CC);
- }
-
- if (filename_len == 0) {
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Empty string as source");
- RETURN_FALSE;
- }
-
- if (!expand_filepath(filename, resolved_path TSRMLS_CC)) {
- RETURN_FALSE;
- }
-
- if (ze_obj->za) {
- /* we already have an opened zip, free it */
- zip_close(ze_obj->za);
- }
- if (ze_obj->filename) {
- efree(ze_obj->filename);
- }
- intern = zip_open(resolved_path, flags, &err);
- if (!intern || err) {
- RETURN_LONG((long)err);
- }
- ze_obj->filename = estrndup(resolved_path, strlen(resolved_path));
- ze_obj->filename_len = filename_len;
- ze_obj->za = intern;
- RETURN_TRUE;
-}
-/* }}} */
-
-/* {{{ proto resource close()
-close the zip archive */
-ZIPARCHIVE_METHOD(close)
-{
- struct zip *intern;
- zval *this = getThis();
- ze_zip_object *ze_obj;
-
- if (!this) {
- RETURN_FALSE;
- }
-
- ZIP_FROM_OBJECT(intern, this);
-
- ze_obj = (ze_zip_object*) zend_object_store_get_object(this TSRMLS_CC);
-
- if (zip_close(intern)) {
- RETURN_FALSE;
- }
-
- efree(ze_obj->filename);
- ze_obj->filename = NULL;
- ze_obj->filename_len = 0;
- ze_obj->za = NULL;
-
- RETURN_TRUE;
-}
-/* }}} */
-
-/* {{{ proto bool addFile(string filepath[, string entryname[, int start [, int length]]])
-Add a file in a Zip archive using its path and the name to use. */
-ZIPARCHIVE_METHOD(addFile)
-{
- struct zip *intern;
- zval *this = getThis();
- char *filename;
- int filename_len;
- char *entry_name = NULL;
- int entry_name_len = 0;
- struct zip_source *zs;
- long offset_start = 0, offset_len = 0;
- int cur_idx;
- char resolved_path[MAXPATHLEN + 1];
-
- if (!this) {
- RETURN_FALSE;
- }
-
- ZIP_FROM_OBJECT(intern, this);
-
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|sll",
- &filename, &filename_len, &entry_name, &entry_name_len, &offset_start, &offset_len) == FAILURE) {
- WRONG_PARAM_COUNT;
- return;
- }
-
- if (filename_len == 0) {
- php_error_docref(NULL TSRMLS_CC, E_NOTICE, "Empty string as filename");
- RETURN_FALSE;
- }
-
- if (entry_name_len == 0) {
- entry_name = filename;
- entry_name_len = filename_len;
- }
-
- if (SAFEMODE_CHECKFILE(filename)) {
- RETURN_FALSE;
- }
-
- if (!expand_filepath(filename, resolved_path TSRMLS_CC)) {
- RETURN_FALSE;
- }
-
- zs = zip_source_file(intern, resolved_path, 0, 0);
- if (!zs) {
- RETURN_FALSE;
- }
-
- cur_idx = zip_name_locate(intern, (const char *)entry_name, 0);
- /* TODO: fix _zip_replace */
- if (cur_idx<0) {
- /* reset the error */
- if (intern->error.str) {
- _zip_error_fini(&intern->error);
- }
- _zip_error_init(&intern->error);
-
- } else {
- if (zip_delete(intern, cur_idx) == -1) {
- RETURN_FALSE;
- }
- }
-
- if (zip_add(intern, entry_name, zs) == -1) {
- RETURN_FALSE;
- } else {
- RETURN_TRUE;
- }
-}
-/* }}} */
-
-/* {{{ proto resource addFromString(string name, string content)
-Add a file using content and the entry name */
-ZIPARCHIVE_METHOD(addFromString)
-{
- struct zip *intern;
- zval *this = getThis();
- char *buffer, *name;
- int buffer_len, name_len;
- ze_zip_object *ze_obj;
- struct zip_source *zs;
- int pos = 0;
- int cur_idx;
-
- if (!this) {
- RETURN_FALSE;
- }
-
- ZIP_FROM_OBJECT(intern, this);
-
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss",
- &name, &name_len, &buffer, &buffer_len) == FAILURE) {
- WRONG_PARAM_COUNT;
- return;
- }
-
- ze_obj = (ze_zip_object*) zend_object_store_get_object(this TSRMLS_CC);
- if (ze_obj->buffers_cnt) {
- ze_obj->buffers = (char **)erealloc(ze_obj->buffers, sizeof(char *) * (ze_obj->buffers_cnt+1));
- pos = ze_obj->buffers_cnt++;
- } else {
- ze_obj->buffers = (char **)emalloc(sizeof(char *));
- ze_obj->buffers_cnt++;
- pos = 0;
- }
- ze_obj->buffers[pos] = (char *)emalloc(buffer_len);
- memcpy(ze_obj->buffers[pos], buffer, buffer_len);
-
- zs = zip_source_buffer(intern, ze_obj->buffers[pos], buffer_len, 0);
-
- if (zs == NULL) {
- RETURN_FALSE;
- }
-
- cur_idx = zip_name_locate(intern, (const char *)name, 0);
- /* TODO: fix _zip_replace */
- if (cur_idx<0) {
- /* reset the error */
- if (intern->error.str) {
- _zip_error_fini(&intern->error);
- }
- _zip_error_init(&intern->error);
-
- } else {
- if (zip_delete(intern, cur_idx) == -1) {
- RETURN_FALSE;
- }
- }
-
- if (zip_add(intern, name, zs) == -1) {
- RETURN_FALSE;
- } else {
- RETURN_TRUE;
- }
-}
-/* }}} */
-
-/* {{{ proto resource statName(string filename[, int flags])
-Returns the information about a the zip entry filename */
-ZIPARCHIVE_METHOD(statName)
-{
- struct zip *intern;
- zval *this = getThis();
- char *name;
- int name_len;
- long flags = 0;
- struct zip_stat sb;
-
- if (!this) {
- RETURN_FALSE;
- }
-
- ZIP_FROM_OBJECT(intern, this);
-
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|l",
- &name, &name_len, &flags) == FAILURE) {
- WRONG_PARAM_COUNT;
- return;
- }
-
- PHP_ZIP_STAT_PATH(intern, name, name_len, flags, sb);
-
- RETURN_SB(&sb);
-}
-/* }}} */
-
-/* {{{ proto resource statIndex(int index[, int flags])
-Returns the zip entry informations using its index */
-ZIPARCHIVE_METHOD(statIndex)
-{
- struct zip *intern;
- zval *this = getThis();
- long index, flags = 0;
-
- struct zip_stat sb;
-
- if (!this) {
- RETURN_FALSE;
- }
-
- ZIP_FROM_OBJECT(intern, this);
-
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l|l",
- &index, &flags) == FAILURE) {
- WRONG_PARAM_COUNT;
- return;
- }
-
- if (zip_stat_index(intern, index, flags, &sb) != 0) {
- RETURN_FALSE;
- }
- RETURN_SB(&sb);
-}
-/* }}} */
-
-/* {{{ proto resource locateName(string filename[, int flags])
-Returns the index of the entry named filename in the archive */
-ZIPARCHIVE_METHOD(locateName)
-{
- struct zip *intern;
- zval *this = getThis();
- char *name;
- int name_len;
- long flags = 0;
- long idx = -1;
-
- if (!this) {
- RETURN_FALSE;
- }
-
- ZIP_FROM_OBJECT(intern, this);
-
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|l",
- &name, &name_len, &flags) == FAILURE) {
- WRONG_PARAM_COUNT;
- return;
- }
- if (name_len<1) {
- RETURN_FALSE;
- }
-
- idx = (long)zip_name_locate(intern, (const char *)name, flags);
-
- if (idx<0) {
- /* reset the error */
- if (intern->error.str) {
- _zip_error_fini(&intern->error);
- }
- _zip_error_init(&intern->error);
- RETURN_FALSE;
- } else {
- RETURN_LONG(idx);
- }
-}
-/* }}} */
-
-/* {{{ proto resource getNameIndex(int index [, int flags])
-Returns the name of the file at position index */
-ZIPARCHIVE_METHOD(getNameIndex)
-{
- struct zip *intern;
- zval *this = getThis();
- const char *name;
- long flags = 0, index = 0;
-
- if (!this) {
- RETURN_FALSE;
- }
-
- ZIP_FROM_OBJECT(intern, this);
-
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l|l",
- &index, &flags) == FAILURE) {
- WRONG_PARAM_COUNT;
- return;
- }
-
- name = zip_get_name(intern, (int) index, flags);
-
- if (name) {
- RETVAL_STRING((char *)name, 1);
- } else {
- RETURN_FALSE;
- }
-}
-/* }}} */
-
-/* {{{ proto resource setArchiveComment(string name, string comment)
-Set or remove (NULL/'') the comment of the archive */
-ZIPARCHIVE_METHOD(setArchiveComment)
-{
- struct zip *intern;
- zval *this = getThis();
- int comment_len;
- char * comment;
-
- if (!this) {
- RETURN_FALSE;
- }
-
- ZIP_FROM_OBJECT(intern, this);
-
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &comment, &comment_len) == FAILURE) {
- WRONG_PARAM_COUNT;
- return;
- }
- if (zip_set_archive_comment(intern, (const char *)comment, (int)comment_len)) {
- RETURN_FALSE;
- } else {
- RETURN_TRUE;
- }
-}
-/* }}} */
-
-/* {{{ proto resource getArchiveComment()
-Returns the comment of an entry using its index */
-ZIPARCHIVE_METHOD(getArchiveComment)
-{
- struct zip *intern;
- zval *this = getThis();
- long flags = 0;
- const char * comment;
- int comment_len = 0;
-
- if (!this) {
- RETURN_FALSE;
- }
-
- ZIP_FROM_OBJECT(intern, this);
-
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|l", &flags) == FAILURE) {
- WRONG_PARAM_COUNT;
- return;
- }
-
- comment = zip_get_archive_comment(intern, &comment_len, (int)flags);
- RETURN_STRINGL((char *)comment, comment_len, 1);
-}
-/* }}} */
-
-/* {{{ proto resource setCommentName(string name, string comment)
-Set or remove (NULL/'') the comment of an entry using its Name */
-ZIPARCHIVE_METHOD(setCommentName)
-{
- struct zip *intern;
- zval *this = getThis();
- int comment_len, name_len;
- char * comment, *name;
- struct zip_stat sb;
-
- if (!this) {
- RETURN_FALSE;
- }
-
- ZIP_FROM_OBJECT(intern, this);
-
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss",
- &name, &name_len, &comment, &comment_len) == FAILURE) {
- WRONG_PARAM_COUNT;
- return;
- }
-
-
- PHP_ZIP_STAT_PATH(intern, name, name_len, 0, sb);
- PHP_ZIP_SET_FILE_COMMENT(intern, sb.index, comment, comment_len);
-}
-/* }}} */
-
-/* {{{ proto resource setCommentIndex(int index, string comment)
-Set or remove (NULL/'') the comment of an entry using its index */
-ZIPARCHIVE_METHOD(setCommentIndex)
-{
- struct zip *intern;
- zval *this = getThis();
- long index;
- int comment_len;
- char * comment;
- struct zip_stat sb;
-
- if (!this) {
- RETURN_FALSE;
- }
-
- ZIP_FROM_OBJECT(intern, this);
-
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ls",
- &index, &comment, &comment_len) == FAILURE) {
- WRONG_PARAM_COUNT;
- return;
- }
-
- PHP_ZIP_STAT_INDEX(intern, index, 0, sb);
- PHP_ZIP_SET_FILE_COMMENT(intern, index, comment, comment_len);
-}
-/* }}} */
-
-/* {{{ proto resource getCommentName(string name)
-Returns the comment of an entry using its name */
-ZIPARCHIVE_METHOD(getCommentName)
-{
- struct zip *intern;
- zval *this = getThis();
- int name_len;
- long flags = 0;
- int comment_len = 0;
- const char * comment;
- char *name;
- struct zip_stat sb;
-
- if (!this) {
- RETURN_FALSE;
- }
-
- ZIP_FROM_OBJECT(intern, this);
-
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|l",
- &name, &name_len, &flags) == FAILURE) {
- WRONG_PARAM_COUNT;
- return;
- }
-
- PHP_ZIP_STAT_PATH(intern, name, name_len, 0, sb);
- comment = zip_get_file_comment(intern, sb.index, &comment_len, (int)flags);
- RETURN_STRINGL((char *)comment, comment_len, 1);
-}
-/* }}} */
-
-/* {{{ proto resource getCommentIndex(int index)
-Returns the comment of an entry using its index */
-ZIPARCHIVE_METHOD(getCommentIndex)
-{
- struct zip *intern;
- zval *this = getThis();
- long index, flags = 0;
- const char * comment;
- int comment_len = 0;
- struct zip_stat sb;
-
- if (!this) {
- RETURN_FALSE;
- }
-
- ZIP_FROM_OBJECT(intern, this);
-
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l|l",
- &index, &flags) == FAILURE) {
- WRONG_PARAM_COUNT;
- return;
- }
-
- PHP_ZIP_STAT_INDEX(intern, index, 0, sb);
- comment = zip_get_file_comment(intern, index, &comment_len, (int)flags);
- RETURN_STRINGL((char *)comment, comment_len, 1);
-}
-/* }}} */
-
-/* {{{ proto resource deleteIndex(int index)
-Delete a file using its index */
-ZIPARCHIVE_METHOD(deleteIndex)
-{
- struct zip *intern;
- zval *this = getThis();
- long index;
-
- if (!this) {
- RETURN_FALSE;
- }
-
- ZIP_FROM_OBJECT(intern, this);
-
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &index) == FAILURE) {
- WRONG_PARAM_COUNT;
- return;
- }
-
- if (index < 0) {
- RETURN_FALSE;
- }
-
- if (zip_delete(intern, index) < 0) {
- RETURN_FALSE;
- }
-
- RETURN_TRUE;
-}
-/* }}} */
-
-/* {{{ proto resource deleteName(string name)
-Delete a file using its index */
-ZIPARCHIVE_METHOD(deleteName)
-{
- struct zip *intern;
- zval *this = getThis();
- int name_len;
- char *name;
- struct zip_stat sb;
-
- if (!this) {
- RETURN_FALSE;
- }
-
- ZIP_FROM_OBJECT(intern, this);
-
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &name, &name_len) == FAILURE) {
- WRONG_PARAM_COUNT;
- return;
- }
- if (name_len < 1) {
- RETURN_FALSE;
- }
-
- PHP_ZIP_STAT_PATH(intern, name, name_len, 0, sb);
- if (zip_delete(intern, sb.index)) {
- RETURN_FALSE;
- }
- RETURN_TRUE;
-}
-/* }}} */
-
-/* {{{ proto resource renameIndex(int index, string new_name)
-Rename an entry selected by its index to new_name */
-ZIPARCHIVE_METHOD(renameIndex)
-{
- struct zip *intern;
- zval *this = getThis();
-
- char *new_name;
- int new_name_len;
- long index;
-
- if (!this) {
- RETURN_FALSE;
- }
-
- ZIP_FROM_OBJECT(intern, this);
-
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ls", &index, &new_name, &new_name_len) == FAILURE) {
- WRONG_PARAM_COUNT;
- return;
- }
-
- if (index < 0) {
- RETURN_FALSE;
- }
-
- if (new_name_len < 1) {
- php_error_docref(NULL TSRMLS_CC, E_NOTICE, "Empty string as new entry name");
- RETURN_FALSE;
- }
- if (zip_rename(intern, index, (const char *)new_name) != 0) {
- RETURN_FALSE;
- }
- RETURN_TRUE;
-}
-/* }}} */
-
-/* {{{ proto resource renameName(string name, string new_name)
-Rename an entry selected by its name to new_name */
-ZIPARCHIVE_METHOD(renameName)
-{
- struct zip *intern;
- zval *this = getThis();
- struct zip_stat sb;
- char *name, *new_name;
- int name_len, new_name_len;
-
- if (!this) {
- RETURN_FALSE;
- }
-
- ZIP_FROM_OBJECT(intern, this);
-
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss", &name, &name_len, &new_name, &new_name_len) == FAILURE) {
- WRONG_PARAM_COUNT;
- return;
- }
-
- if (new_name_len < 1) {
- php_error_docref(NULL TSRMLS_CC, E_NOTICE, "Empty string as new entry name");
- RETURN_FALSE;
- }
-
- PHP_ZIP_STAT_PATH(intern, name, name_len, 0, sb);
-
- if (zip_rename(intern, sb.index, (const char *)new_name)) {
- RETURN_FALSE;
- }
- RETURN_TRUE;
-}
-/* }}} */
-
-/* {{{ proto resource unchangeIndex(int index)
-Changes to the file at position index are reverted */
-ZIPARCHIVE_METHOD(unchangeIndex)
-{
- struct zip *intern;
- zval *this = getThis();
- long index;
-
- if (!this) {
- RETURN_FALSE;
- }
-
- ZIP_FROM_OBJECT(intern, this);
-
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &index) == FAILURE) {
- WRONG_PARAM_COUNT;
- return;
- }
-
- if (index < 0) {
- RETURN_FALSE;
- }
-
- if (zip_unchange(intern, index) != 0) {
- RETURN_FALSE;
- } else {
- RETURN_TRUE;
- }
-}
-/* }}} */
-
-/* {{{ proto resource unchangeName(string name)
-Changes to the file named 'name' are reverted */
-ZIPARCHIVE_METHOD(unchangeName)
-{
- struct zip *intern;
- zval *this = getThis();
- struct zip_stat sb;
- char *name;
- int name_len;
-
- if (!this) {
- RETURN_FALSE;
- }
-
- ZIP_FROM_OBJECT(intern, this);
-
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &name, &name_len) == FAILURE) {
- WRONG_PARAM_COUNT;
- return;
- }
-
- if (name_len < 1) {
- RETURN_FALSE;
- }
-
- PHP_ZIP_STAT_PATH(intern, name, name_len, 0, sb);
-
- if (zip_unchange(intern, sb.index) != 0) {
- RETURN_FALSE;
- } else {
- RETURN_TRUE;
- }
-}
-/* }}} */
-
-/* {{{ proto resource unchangeAll()
-All changes to files and global information in archive are reverted */
-ZIPARCHIVE_METHOD(unchangeAll)
-{
- struct zip *intern;
- zval *this = getThis();
-
- if (!this) {
- RETURN_FALSE;
- }
-
- ZIP_FROM_OBJECT(intern, this);
-
- if (zip_unchange_all(intern) != 0) {
- RETURN_FALSE;
- } else {
- RETURN_TRUE;
- }
-}
-/* }}} */
-
-/* {{{ proto resource unchangeAll()
-Revert all global changes to the archive archive. For now, this only reverts archive comment changes. */
-ZIPARCHIVE_METHOD(unchangeArchive)
-{
- struct zip *intern;
- zval *this = getThis();
-
- if (!this) {
- RETURN_FALSE;
- }
-
- ZIP_FROM_OBJECT(intern, this);
-
- if (zip_unchange_archive(intern) != 0) {
- RETURN_FALSE;
- } else {
- RETURN_TRUE;
- }
-}
-/* }}} */
-
-/* {{{ array resource extractTo(string pathto[, mixed files])
-Extract one or more file from a zip archive */
-/* TODO:
- * - allow index or array of indeces
- * - replace path
- * - patterns
- */
-ZIPARCHIVE_METHOD(extractTo)
-{
- struct zip *intern;
-
- zval *this = getThis();
- zval *zval_files = NULL;
- zval **zval_file = NULL;
- php_stream_statbuf ssb;
- char *pathto;
- char *file;
- int pathto_len;
- int ret, i;
-
- int nelems;
-
- if (!this) {
- RETURN_FALSE;
- }
-
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|z", &pathto, &pathto_len, &zval_files) == FAILURE) {
- WRONG_PARAM_COUNT;
- return;
- }
-
- if (pathto_len<1) {
- RETURN_FALSE;
- }
-
- if (php_stream_stat_path(pathto, &ssb) < 0) {
- ret = php_stream_mkdir(pathto, 0777, PHP_STREAM_MKDIR_RECURSIVE, NULL);
- if (!ret) {
- efree(pathto);
- RETURN_FALSE;
- }
- }
-
- ZIP_FROM_OBJECT(intern, this);
- if (zval_files) {
- switch (Z_TYPE_P(zval_files)) {
- case IS_STRING:
- file = Z_STRVAL_P(zval_files);
- if (!php_zip_extract_file(intern, pathto, file TSRMLS_CC)) {
- RETURN_FALSE;
- }
- break;
- case IS_ARRAY:
- nelems = zend_hash_num_elements(Z_ARRVAL_P(zval_files));
- if (nelems == 0 ) {
- RETURN_FALSE;
- }
- for (i = 0; i < nelems; i++) {
- if (zend_hash_index_find(Z_ARRVAL_P(zval_files), i, (void **) &zval_file) == SUCCESS) {
- switch (Z_TYPE_PP(zval_file)) {
- case IS_LONG:
- break;
- case IS_STRING:
- file = Z_STRVAL_PP(zval_file);
- if (!php_zip_extract_file(intern, pathto, file TSRMLS_CC)) {
- RETURN_FALSE;
- }
- break;
- }
- }
- }
- break;
- case IS_LONG:
- default:
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid argument, expect string or array of strings");
- break;
- }
- } else {
- /* Extract all files */
- int filecount = zip_get_num_files(intern);
-
- if (filecount == -1) {
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Illegal archive");
- RETURN_FALSE;
- }
-
- for (i = 0; i < filecount; i++) {
- file = (char*)zip_get_name(intern, i, ZIP_FL_UNCHANGED);
- if (!php_zip_extract_file(intern, pathto, file TSRMLS_CC)) {
- RETURN_FALSE;
- }
- }
- }
-
- RETURN_TRUE;
-}
-/* }}} */
-
-static void php_zip_get_from(INTERNAL_FUNCTION_PARAMETERS, int type) /* {{{ */
-{
- struct zip *intern;
- zval *this = getThis();
-
- struct zip_stat sb;
- struct zip_file *zf;
-
- char *filename;
- int filename_len;
- long index = -1;
- long flags = 0;
- long len = 0;
-
- char *buffer;
- int n = 0;
-
- if (!this) {
- RETURN_FALSE;
- }
-
- ZIP_FROM_OBJECT(intern, this);
-
- if (type == 1) {
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|ll", &filename, &filename_len, &len, &flags) == FAILURE) {
- WRONG_PARAM_COUNT;
- return;
- }
- PHP_ZIP_STAT_PATH(intern, filename, filename_len, flags, sb);
- } else {
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l|ll", &index, &len, &flags) == FAILURE) {
- WRONG_PARAM_COUNT;
- return;
- }
- PHP_ZIP_STAT_INDEX(intern, index, 0, sb);
- }
-
- if (sb.size < 1) {
- RETURN_EMPTY_STRING();
- }
-
- if (len < 1) {
- len = sb.size;
- }
- if (index >= 0) {
- zf = zip_fopen_index(intern, index, flags);
- } else {
- zf = zip_fopen(intern, filename, flags);
- }
-
- if (zf == NULL) {
- RETURN_FALSE;
- }
-
- buffer = safe_emalloc(len + 1, 1, 1);
- n = zip_fread(zf, buffer, len);
- if (n < 1) {
- RETURN_EMPTY_STRING();
- }
-
- zip_fclose(zf);
- buffer[n] = 0;
- RETURN_STRINGL(buffer, n, 0);
-}
-/* }}} */
-
-/* {{{ proto resource getFromName(string entryname[, int len [, int flags]])
-get the contents of an entry using its name */
-ZIPARCHIVE_METHOD(getFromName)
-{
- php_zip_get_from(INTERNAL_FUNCTION_PARAM_PASSTHRU, 1);
-}
-/* }}} */
-
-/* {{{ proto resource getFromIndex(string entryname[, int len [, int flags]])
-get the contents of an entry using its index */
-ZIPARCHIVE_METHOD(getFromIndex)
-{
- php_zip_get_from(INTERNAL_FUNCTION_PARAM_PASSTHRU, 0);
-}
-/* }}} */
-
-/* {{{ proto resource getStream(string entryname)
-get a stream for an entry using its name */
-ZIPARCHIVE_METHOD(getStream)
-{
- struct zip *intern;
- zval *this = getThis();
- struct zip_stat sb;
- char *filename;
- int filename_len;
- char *mode = "rb";
- php_stream *stream;
- ze_zip_object *obj;
-
- if (!this) {
- RETURN_FALSE;
- }
-
- ZIP_FROM_OBJECT(intern, this);
-
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &filename, &filename_len) == FAILURE) {
- WRONG_PARAM_COUNT;
- return;
- }
-
- if (zip_stat(intern, filename, 0, &sb)) {
- RETURN_FALSE;
- }
-
- obj = (ze_zip_object*) zend_object_store_get_object(this TSRMLS_CC);
-
- stream = php_stream_zip_open(obj->filename, filename, mode STREAMS_CC TSRMLS_CC);
- if (stream) {
- php_stream_to_zval(stream, return_value);
- }
-}
-/* }}} */
-
-/* {{{ ze_zip_object_class_functions */
-static zend_function_entry zip_class_functions[] = {
- ZIPARCHIVE_ME(open, NULL, ZEND_ACC_PUBLIC)
- ZIPARCHIVE_ME(close, NULL, ZEND_ACC_PUBLIC)
- ZIPARCHIVE_ME(addFromString, NULL, ZEND_ACC_PUBLIC)
- ZIPARCHIVE_ME(addFile, NULL, ZEND_ACC_PUBLIC)
- ZIPARCHIVE_ME(renameIndex, NULL, ZEND_ACC_PUBLIC)
- ZIPARCHIVE_ME(renameName, NULL, ZEND_ACC_PUBLIC)
- ZIPARCHIVE_ME(setArchiveComment, NULL, ZEND_ACC_PUBLIC)
- ZIPARCHIVE_ME(getArchiveComment, NULL, ZEND_ACC_PUBLIC)
- ZIPARCHIVE_ME(setCommentIndex, NULL, ZEND_ACC_PUBLIC)
- ZIPARCHIVE_ME(setCommentName, NULL, ZEND_ACC_PUBLIC)
- ZIPARCHIVE_ME(getCommentIndex, NULL, ZEND_ACC_PUBLIC)
- ZIPARCHIVE_ME(getCommentName, NULL, ZEND_ACC_PUBLIC)
- ZIPARCHIVE_ME(deleteIndex, NULL, ZEND_ACC_PUBLIC)
- ZIPARCHIVE_ME(deleteName, NULL, ZEND_ACC_PUBLIC)
- ZIPARCHIVE_ME(statName, NULL, ZEND_ACC_PUBLIC)
- ZIPARCHIVE_ME(statIndex, NULL, ZEND_ACC_PUBLIC)
- ZIPARCHIVE_ME(locateName, NULL, ZEND_ACC_PUBLIC)
- ZIPARCHIVE_ME(getNameIndex, NULL, ZEND_ACC_PUBLIC)
- ZIPARCHIVE_ME(unchangeArchive, NULL, ZEND_ACC_PUBLIC)
- ZIPARCHIVE_ME(unchangeAll, NULL, ZEND_ACC_PUBLIC)
- ZIPARCHIVE_ME(unchangeIndex, NULL, ZEND_ACC_PUBLIC)
- ZIPARCHIVE_ME(unchangeName, NULL, ZEND_ACC_PUBLIC)
- ZIPARCHIVE_ME(extractTo, NULL, ZEND_ACC_PUBLIC)
- ZIPARCHIVE_ME(getFromName, NULL, ZEND_ACC_PUBLIC)
- ZIPARCHIVE_ME(getFromIndex, NULL, ZEND_ACC_PUBLIC)
- ZIPARCHIVE_ME(getStream, NULL, ZEND_ACC_PUBLIC)
- {NULL, NULL, NULL}
-};
-/* }}} */
-#endif
-
-/* {{{ PHP_MINIT_FUNCTION */
-PHP_MINIT_FUNCTION(zip)
-{
-#ifdef ZEND_ENGINE_2_1
- zend_class_entry ce;
-
- memcpy(&zip_object_handlers, zend_get_std_object_handlers(), sizeof(zend_object_handlers));
- zip_object_handlers.clone_obj = NULL;
- zip_object_handlers.get_property_ptr_ptr = php_zip_get_property_ptr_ptr;
-
- zip_object_handlers.get_properties = php_zip_get_properties;
- zip_object_handlers.read_property = php_zip_read_property;
-
- INIT_CLASS_ENTRY(ce, "ZipArchive", zip_class_functions);
- ce.create_object = php_zip_object_new;
- zip_class_entry = zend_register_internal_class(&ce TSRMLS_CC);
-
- zend_hash_init(&zip_prop_handlers, 0, NULL, NULL, 1);
- php_zip_register_prop_handler(&zip_prop_handlers, "status", php_zip_status, NULL, NULL, IS_LONG TSRMLS_CC);
- php_zip_register_prop_handler(&zip_prop_handlers, "statusSys", php_zip_status_sys, NULL, NULL, IS_LONG TSRMLS_CC);
- php_zip_register_prop_handler(&zip_prop_handlers, "numFiles", php_zip_get_num_files, NULL, NULL, IS_LONG TSRMLS_CC);
- php_zip_register_prop_handler(&zip_prop_handlers, "filename", NULL, NULL, php_zipobj_get_filename, IS_STRING TSRMLS_CC);
- php_zip_register_prop_handler(&zip_prop_handlers, "comment", NULL, php_zipobj_get_zip_comment, NULL, IS_STRING TSRMLS_CC);
-
- REGISTER_ZIP_CLASS_CONST_LONG("CREATE", ZIP_CREATE);
- REGISTER_ZIP_CLASS_CONST_LONG("EXCL", ZIP_EXCL);
- REGISTER_ZIP_CLASS_CONST_LONG("CHECKCONS", ZIP_CHECKCONS);
- REGISTER_ZIP_CLASS_CONST_LONG("OVERWRITE", ZIP_OVERWRITE);
-
- REGISTER_ZIP_CLASS_CONST_LONG("FL_NOCASE", ZIP_FL_NOCASE);
- REGISTER_ZIP_CLASS_CONST_LONG("FL_NODIR", ZIP_FL_NODIR);
- REGISTER_ZIP_CLASS_CONST_LONG("FL_COMPRESSED", ZIP_FL_COMPRESSED);
- REGISTER_ZIP_CLASS_CONST_LONG("FL_UNCHANGED", ZIP_FL_UNCHANGED);
- REGISTER_ZIP_CLASS_CONST_LONG("CM_DEFAULT", ZIP_CM_DEFAULT);
- REGISTER_ZIP_CLASS_CONST_LONG("CM_STORE", ZIP_CM_STORE);
- REGISTER_ZIP_CLASS_CONST_LONG("CM_SHRINK", ZIP_CM_SHRINK);
- REGISTER_ZIP_CLASS_CONST_LONG("CM_REDUCE_1", ZIP_CM_REDUCE_1);
- REGISTER_ZIP_CLASS_CONST_LONG("CM_REDUCE_2", ZIP_CM_REDUCE_2);
- REGISTER_ZIP_CLASS_CONST_LONG("CM_REDUCE_3", ZIP_CM_REDUCE_3);
- REGISTER_ZIP_CLASS_CONST_LONG("CM_REDUCE_4", ZIP_CM_REDUCE_4);
- REGISTER_ZIP_CLASS_CONST_LONG("CM_IMPLODE", ZIP_CM_IMPLODE);
- REGISTER_ZIP_CLASS_CONST_LONG("CM_DEFLATE", ZIP_CM_DEFLATE);
- REGISTER_ZIP_CLASS_CONST_LONG("CM_DEFLATE64", ZIP_CM_DEFLATE64);
- REGISTER_ZIP_CLASS_CONST_LONG("CM_PKWARE_IMPLODE", ZIP_CM_PKWARE_IMPLODE);
-
- /* Error code */
- REGISTER_ZIP_CLASS_CONST_LONG("ER_OK", ZIP_ER_OK); /* N No error */
- REGISTER_ZIP_CLASS_CONST_LONG("ER_MULTIDISK", ZIP_ER_MULTIDISK); /* N Multi-disk zip archives not supported */
- REGISTER_ZIP_CLASS_CONST_LONG("ER_RENAME", ZIP_ER_RENAME); /* S Renaming temporary file failed */
- REGISTER_ZIP_CLASS_CONST_LONG("ER_CLOSE", ZIP_ER_CLOSE); /* S Closing zip archive failed */
- REGISTER_ZIP_CLASS_CONST_LONG("ER_SEEK", ZIP_ER_SEEK); /* S Seek error */
- REGISTER_ZIP_CLASS_CONST_LONG("ER_READ", ZIP_ER_READ); /* S Read error */
- REGISTER_ZIP_CLASS_CONST_LONG("ER_WRITE", ZIP_ER_WRITE); /* S Write error */
- REGISTER_ZIP_CLASS_CONST_LONG("ER_CRC", ZIP_ER_CRC); /* N CRC error */
- REGISTER_ZIP_CLASS_CONST_LONG("ER_ZIPCLOSED", ZIP_ER_ZIPCLOSED); /* N Containing zip archive was closed */
- REGISTER_ZIP_CLASS_CONST_LONG("ER_NOENT", ZIP_ER_NOENT); /* N No such file */
- REGISTER_ZIP_CLASS_CONST_LONG("ER_EXISTS", ZIP_ER_EXISTS); /* N File already exists */
- REGISTER_ZIP_CLASS_CONST_LONG("ER_OPEN", ZIP_ER_OPEN); /* S Can't open file */
- REGISTER_ZIP_CLASS_CONST_LONG("ER_TMPOPEN", ZIP_ER_TMPOPEN); /* S Failure to create temporary file */
- REGISTER_ZIP_CLASS_CONST_LONG("ER_ZLIB", ZIP_ER_ZLIB); /* Z Zlib error */
- REGISTER_ZIP_CLASS_CONST_LONG("ER_MEMORY", ZIP_ER_MEMORY); /* N Malloc failure */
- REGISTER_ZIP_CLASS_CONST_LONG("ER_CHANGED", ZIP_ER_CHANGED); /* N Entry has been changed */
- REGISTER_ZIP_CLASS_CONST_LONG("ER_COMPNOTSUPP", ZIP_ER_COMPNOTSUPP);/* N Compression method not supported */
- REGISTER_ZIP_CLASS_CONST_LONG("ER_EOF", ZIP_ER_EOF); /* N Premature EOF */
- REGISTER_ZIP_CLASS_CONST_LONG("ER_INVAL", ZIP_ER_INVAL); /* N Invalid argument */
- REGISTER_ZIP_CLASS_CONST_LONG("ER_NOZIP", ZIP_ER_NOZIP); /* N Not a zip archive */
- REGISTER_ZIP_CLASS_CONST_LONG("ER_INTERNAL", ZIP_ER_INTERNAL); /* N Internal error */
- REGISTER_ZIP_CLASS_CONST_LONG("ER_INCONS", ZIP_ER_INCONS); /* N Zip archive inconsistent */
- REGISTER_ZIP_CLASS_CONST_LONG("ER_REMOVE", ZIP_ER_REMOVE); /* S Can't remove file */
- REGISTER_ZIP_CLASS_CONST_LONG("ER_DELETED", ZIP_ER_DELETED); /* N Entry has been deleted */
-
- php_register_url_stream_wrapper("zip", &php_stream_zip_wrapper TSRMLS_CC);
-#endif
-
- le_zip_dir = zend_register_list_destructors_ex(php_zip_free_dir, NULL, le_zip_dir_name, module_number);
- le_zip_entry = zend_register_list_destructors_ex(php_zip_free_entry, NULL, le_zip_entry_name, module_number);
-
- return SUCCESS;
-}
-/* }}} */
-
-/* {{{ PHP_MSHUTDOWN_FUNCTION
- */
-PHP_MSHUTDOWN_FUNCTION(zip)
-{
-#ifdef ZEND_ENGINE_2_1
- zend_hash_destroy(&zip_prop_handlers);
- php_unregister_url_stream_wrapper("zip" TSRMLS_CC);
-#endif
- return SUCCESS;
-}
-/* }}} */
-
-/* {{{ PHP_MINFO_FUNCTION
- */
-PHP_MINFO_FUNCTION(zip)
-{
- php_info_print_table_start();
-
- php_info_print_table_row(2, "Zip", "enabled");
- php_info_print_table_row(2, "Extension Version","$Id$");
- php_info_print_table_row(2, "Zip version", "2.0.0");
- php_info_print_table_row(2, "Libzip version", "0.7.1");
-
- php_info_print_table_end();
-}
-/* }}} */
-
-/*
- * Local variables:
- * tab-width: 4
- * c-basic-offset: 4
- * End:
- * vim600: noet sw=4 ts=4 fdm=marker
- * vim<600: noet sw=4 ts=4
- */
diff --git a/ext/zip/php_zip.h b/ext/zip/php_zip.h
deleted file mode 100644
index 2b194f7583..0000000000
--- a/ext/zip/php_zip.h
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- +----------------------------------------------------------------------+
- | PHP Version 5 |
- +----------------------------------------------------------------------+
- | Copyright (c) 1997-2006 The PHP Group |
- +----------------------------------------------------------------------+
- | This source file is subject to version 3.01 of the PHP license, |
- | that is bundled with this package in the file LICENSE, and is |
- | available through the world-wide-web at the following url: |
- | http://www.php.net/license/3_01.txt. |
- | If you did not receive a copy of the PHP license and are unable to |
- | obtain it through the world-wide-web, please send a note to |
- | license@php.net so we can mail you a copy immediately. |
- +----------------------------------------------------------------------+
- | Author: Pierre-Alain Joye <pajoye@php.net> |
- +----------------------------------------------------------------------+
-*/
-
-/* $Id$ */
-
-#ifndef PHP_ZIP_H
-#define PHP_ZIP_H
-
-extern zend_module_entry zip_module_entry;
-#define phpext_zip_ptr &zip_module_entry
-
-#ifdef PHP_WIN32
-#define PHP_ZIP_API __declspec(dllexport)
-#else
-#define PHP_ZIP_API
-#endif
-
-#ifdef ZTS
-#include "TSRM.h"
-#endif
-
-#include "lib/zip.h"
-
-#ifndef ZEND_ENGINE_2_1
-# if (PHP_MAJOR_VERSION == 5 && PHP_MINOR_VERSION > 0)
-# define ZEND_ENGINE_2_1
-# endif
-#endif
-
-typedef struct _ze_zip_rsrc {
- struct zip *za;
- int index_current;
- int num_files;
-} zip_rsrc;
-
-typedef zip_rsrc * zip_rsrc_ptr;
-
-typedef struct _ze_zip_read_rsrc {
- struct zip_file *zf;
- struct zip_stat sb;
-} zip_read_rsrc;
-
-#ifdef ZEND_ENGINE_2_1
-#define ZIPARCHIVE_ME(name, arg_info, flags) ZEND_FENTRY(name, c_ziparchive_ ##name, arg_info, flags)
-#define ZIPARCHIVE_METHOD(name) ZEND_NAMED_FUNCTION(c_ziparchive_##name)
-
-/* Extends zend object */
-typedef struct _ze_zip_object {
- zend_object zo;
- struct zip *za;
- int buffers_cnt;
- char **buffers;
- HashTable *prop_handler;
- char *filename;
- int filename_len;
-} ze_zip_object;
-
-zend_class_entry *zip_class_entry_ce;
-
-php_stream *php_stream_zip_opener(php_stream_wrapper *wrapper, char *path, char *mode, int options, char **opened_path, php_stream_context *context STREAMS_DC TSRMLS_DC);
-php_stream *php_stream_zip_open(char *filename, char *path, char *mode STREAMS_DC TSRMLS_DC);
-
-extern php_stream_wrapper php_stream_zip_wrapper;
-#endif
-
-PHP_FUNCTION(zip_open);
-PHP_FUNCTION(zip_read);
-PHP_FUNCTION(zip_close);
-PHP_FUNCTION(zip_entry_read);
-PHP_FUNCTION(zip_entry_filesize);
-PHP_FUNCTION(zip_entry_name);
-PHP_FUNCTION(zip_entry_compressedsize);
-PHP_FUNCTION(zip_entry_compressionmethod);
-PHP_FUNCTION(zip_entry_open);
-PHP_FUNCTION(zip_entry_close);
-
-#endif /* PHP_ZIP_H */
-
-/*
- * Local variables:
- * tab-width: 4
- * c-basic-offset: 4
- * End:
- * vim600: noet sw=4 ts=4 fdm=marker
- * vim<600: noet sw=4 ts=4
- */
diff --git a/ext/zip/tests/001.phpt b/ext/zip/tests/001.phpt
deleted file mode 100644
index 37dccc055e..0000000000
--- a/ext/zip/tests/001.phpt
+++ /dev/null
@@ -1,12 +0,0 @@
---TEST--
-Check for zip presence
---SKIPIF--
-<?php if (!extension_loaded("zip")) print "skip"; ?>
---POST--
---GET--
---FILE--
-<?php
-echo "zip extension is available";
-?>
---EXPECT--
-zip extension is available
diff --git a/ext/zip/tests/binarynull.zip b/ext/zip/tests/binarynull.zip
deleted file mode 100644
index 9da004efed..0000000000
--- a/ext/zip/tests/binarynull.zip
+++ /dev/null
Binary files differ
diff --git a/ext/zip/tests/bug38943.phpt b/ext/zip/tests/bug38943.phpt
deleted file mode 100644
index d7236e314b..0000000000
--- a/ext/zip/tests/bug38943.phpt
+++ /dev/null
@@ -1,50 +0,0 @@
---TEST--
-#38943, properties in extended class cannot be set
---SKIPIF--
-<?php
-/* $Id$ */
-if(!extension_loaded('zip')) die('skip');
-?>
---FILE--
-<?php
-class myZip extends ZipArchive {
- private $test = 0;
- public $testp = 1;
- private $testarray = array();
-
- public function __construct() {
- $this->testarray[] = 1;
- var_dump($this->testarray);
- }
-}
-
-$z = new myZip;
-$z->testp = "foobar";
-var_dump($z);
-?>
---EXPECTF--
-array(1) {
- [0]=>
- int(1)
-}
-object(myZip)#1 (%d) {
- ["test:private"]=>
- int(0)
- ["testp"]=>
- string(6) "foobar"
- ["testarray:private"]=>
- array(1) {
- [0]=>
- int(1)
- }
- ["status"]=>
- int(0)
- ["statusSys"]=>
- int(0)
- ["numFiles"]=>
- int(0)
- ["filename"]=>
- string(0) ""
- ["comment"]=>
- string(0) ""
-}
diff --git a/ext/zip/tests/bug38944.phpt b/ext/zip/tests/bug38944.phpt
deleted file mode 100644
index ee12fad2b3..0000000000
--- a/ext/zip/tests/bug38944.phpt
+++ /dev/null
@@ -1,40 +0,0 @@
---TEST--
-Bug #38944 (newly created ZipArchive segfaults when accessing comment property)
---SKIPIF--
-<?php if (!extension_loaded("zip")) print "skip"; ?>
---FILE--
-<?php
-
-$arc_name = dirname(__FILE__)."/bug38944.zip";
-$foo = new ZipArchive;
-$foo->open($arc_name, ZIPARCHIVE::CREATE);;
-
-var_dump($foo->status);
-var_dump($foo->statusSys);
-var_dump($foo->numFiles);
-var_dump($foo->filename);
-var_dump($foo->comment);
-
-var_dump($foo);
-
-echo "Done\n";
-?>
---EXPECTF--
-int(0)
-int(0)
-int(0)
-string(0) ""
-string(0) ""
-object(ZipArchive)#%d (5) {
- ["status"]=>
- int(0)
- ["statusSys"]=>
- int(0)
- ["numFiles"]=>
- int(0)
- ["filename"]=>
- string(0) ""
- ["comment"]=>
- string(0) ""
-}
-Done
diff --git a/ext/zip/tests/bug7214.phpt b/ext/zip/tests/bug7214.phpt
deleted file mode 100644
index 7d7de5720a..0000000000
--- a/ext/zip/tests/bug7214.phpt
+++ /dev/null
@@ -1,23 +0,0 @@
---TEST--
-bug #7214, zip_entry_read() binary safe
---SKIPIF--
-<?php
-/* $Id$ */
-if(!extension_loaded('zip')) die('skip');
- ?>
---FILE--
-<?php
-$zip = zip_open(dirname(__FILE__)."/binarynull.zip");
-if (!is_resource($zip)) die("Failure");
-$entries = 0;
-$entry = zip_read($zip);
-$contents = zip_entry_read($entry, zip_entry_filesize($entry));
-if (strlen($contents) == zip_entry_filesize($entry)) {
- echo "Ok";
-} else {
- echo "failed";
-}
-
-?>
---EXPECT--
-Ok \ No newline at end of file
diff --git a/ext/zip/tests/bug7658.odt b/ext/zip/tests/bug7658.odt
deleted file mode 100644
index 527e09fefc..0000000000
--- a/ext/zip/tests/bug7658.odt
+++ /dev/null
Binary files differ
diff --git a/ext/zip/tests/bug7658.phpt b/ext/zip/tests/bug7658.phpt
deleted file mode 100644
index 3372b0d121..0000000000
--- a/ext/zip/tests/bug7658.phpt
+++ /dev/null
@@ -1,60 +0,0 @@
---TEST--
-bug #7658, modify archive with general bit flag 3 set
---SKIPIF--
-<?php
-/* $Id$ */
-if(!extension_loaded('zip')) die('skip');
-?>
---FILE--
-<?php
-$dirname = dirname(__FILE__) . '/';
-include $dirname . 'utils.inc';
-$file = $dirname . '__tmp_bug7658.odt';
-$zip = new ZipArchive();
-copy($dirname . 'bug7658.odt', $file);
-if(!$zip->open($file)) {
- echo 'failed';
-}
-
-dump_entries_name($zip);
-
-$zip->deleteName('content.xml');
-$zip->addFile($dirname . "bug7658.xml","content.xml");
-$zip->close();
-echo "\n";
-$zip->open($file);
-dump_entries_name($zip);
-@unlink($file);
-?>
---EXPECT--
-0 mimetype
-1 Configurations2/statusbar/
-2 Configurations2/accelerator/current.xml
-3 Configurations2/floater/
-4 Configurations2/popupmenu/
-5 Configurations2/progressbar/
-6 Configurations2/menubar/
-7 Configurations2/toolbar/
-8 Configurations2/images/Bitmaps/
-9 content.xml
-10 styles.xml
-11 meta.xml
-12 Thumbnails/thumbnail.png
-13 settings.xml
-14 META-INF/manifest.xml
-
-0 mimetype
-1 Configurations2/statusbar/
-2 Configurations2/accelerator/current.xml
-3 Configurations2/floater/
-4 Configurations2/popupmenu/
-5 Configurations2/progressbar/
-6 Configurations2/menubar/
-7 Configurations2/toolbar/
-8 Configurations2/images/Bitmaps/
-9 styles.xml
-10 meta.xml
-11 Thumbnails/thumbnail.png
-12 settings.xml
-13 META-INF/manifest.xml
-14 content.xml
diff --git a/ext/zip/tests/bug7658.xml b/ext/zip/tests/bug7658.xml
deleted file mode 100644
index 98076f1984..0000000000
--- a/ext/zip/tests/bug7658.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<office:document-content xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:dom="http://www.w3.org/2001/xml-events" xmlns:xforms="http://www.w3.org/2002/xforms" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" office:version="1.0"><office:scripts/><office:font-face-decls><style:font-face style:name="Tahoma1" svg:font-family="Tahoma"/><style:font-face style:name="Arial Unicode MS" svg:font-family="&apos;Arial Unicode MS&apos;" style:font-pitch="variable"/><style:font-face style:name="Estrangelo Edessa" svg:font-family="&apos;Estrangelo Edessa&apos;" style:font-pitch="variable"/><style:font-face style:name="MS Mincho" svg:font-family="&apos;MS Mincho&apos;" style:font-pitch="variable"/><style:font-face style:name="Miriam CLM" svg:font-family="&apos;Miriam CLM&apos;" style:font-pitch="variable"/><style:font-face style:name="Tahoma" svg:font-family="Tahoma" style:font-pitch="variable"/><style:font-face style:name="Times New Roman" svg:font-family="&apos;Times New Roman&apos;" style:font-family-generic="roman" style:font-pitch="variable"/><style:font-face style:name="Arial" svg:font-family="Arial" style:font-family-generic="swiss" style:font-pitch="variable"/></office:font-face-decls><office:automatic-styles><style:style style:name="Tabella1" style:family="table"><style:table-properties style:width="6.6924in" table:align="margins"/></style:style><style:style style:name="Tabella1.A" style:family="table-column"><style:table-column-properties style:column-width="4.8556in" style:rel-column-width="47546*"/></style:style><style:style style:name="Tabella1.B" style:family="table-column"><style:table-column-properties style:column-width="1.8368in" style:rel-column-width="17989*"/></style:style><style:style style:name="Tabella1.A1" style:family="table-cell"><style:table-cell-properties fo:padding="0.0382in" fo:border-left="0.0007in solid #000000" fo:border-right="none" fo:border-top="0.0007in solid #000000" fo:border-bottom="0.0007in solid #000000"/></style:style><style:style style:name="Tabella1.B1" style:family="table-cell"><style:table-cell-properties fo:padding="0.0382in" fo:border="0.0007in solid #000000"/></style:style><style:style style:name="Tabella1.A2" style:family="table-cell"><style:table-cell-properties fo:padding="0.0382in" fo:border-left="0.0007in solid #000000" fo:border-right="none" fo:border-top="none" fo:border-bottom="0.0007in solid #000000"/></style:style><style:style style:name="Tabella1.B2" style:family="table-cell"><style:table-cell-properties fo:padding="0.0382in" fo:border-left="0.0007in solid #000000" fo:border-right="0.0007in solid #000000" fo:border-top="none" fo:border-bottom="0.0007in solid #000000"/></style:style><style:style style:name="Tabella2" style:family="table"><style:table-properties style:width="6.6924in" table:align="margins"/></style:style><style:style style:name="Tabella2.A" style:family="table-column"><style:table-column-properties style:column-width="2.584in" style:rel-column-width="25303*"/></style:style><style:style style:name="Tabella2.C" style:family="table-column"><style:table-column-properties style:column-width="1.5243in" style:rel-column-width="14929*"/></style:style><style:style style:name="Tabella2.A1" style:family="table-cell"><style:table-cell-properties fo:padding="0.0382in" fo:border-left="0.0007in solid #000000" fo:border-right="none" fo:border-top="0.0007in solid #000000" fo:border-bottom="0.0007in solid #000000"/></style:style><style:style style:name="Tabella2.C1" style:family="table-cell"><style:table-cell-properties fo:padding="0.0382in" fo:border="0.0007in solid #000000"/></style:style><style:style style:name="Tabella2.A2" style:family="table-cell"><style:table-cell-properties fo:padding="0.0382in" fo:border-left="0.0007in solid #000000" fo:border-right="none" fo:border-top="none" fo:border-bottom="0.0007in solid #000000"/></style:style><style:style style:name="Tabella2.C2" style:family="table-cell"><style:table-cell-properties fo:padding="0.0382in" fo:border-left="0.0007in solid #000000" fo:border-right="0.0007in solid #000000" fo:border-top="none" fo:border-bottom="0.0007in solid #000000"/></style:style><style:style style:name="P1" style:family="paragraph" style:parent-style-name="Table_20_Heading"><style:text-properties style:font-name="Estrangelo Edessa" fo:font-style="italic" fo:font-weight="bold" style:font-style-asian="italic" style:font-weight-asian="bold" style:font-style-complex="italic" style:font-weight-complex="bold"/></style:style><style:style style:name="P2" style:family="paragraph" style:parent-style-name="Table_20_Heading"><style:paragraph-properties fo:padding="0.0193in" fo:border="0.0008in solid #000000" style:shadow="none"/><style:text-properties style:font-name="Estrangelo Edessa" fo:font-style="italic" fo:font-weight="bold" style:font-style-asian="italic" style:font-weight-asian="bold" style:font-style-complex="italic" style:font-weight-complex="bold"/></style:style><style:style style:name="P3" style:family="paragraph" style:parent-style-name="Table_20_Contents"><style:text-properties fo:color="#ff0000" style:font-name="Miriam CLM" fo:font-style="italic" fo:font-weight="bold" style:font-style-asian="italic" style:font-weight-asian="bold" style:font-style-complex="italic" style:font-weight-complex="bold"/></style:style></office:automatic-styles><office:body><office:text><office:forms form:automatic-focus="false" form:apply-design-mode="false"/><text:sequence-decls><text:sequence-decl text:display-outline-level="0" text:name="Illustration"/><text:sequence-decl text:display-outline-level="0" text:name="Table"/><text:sequence-decl text:display-outline-level="0" text:name="Text"/><text:sequence-decl text:display-outline-level="0" text:name="Drawing"/></text:sequence-decls><text:p text:style-name="Standard"/><text:p text:style-name="Standard"/><text:p text:style-name="Standard">Other text Silvio Berlusconi, le ricordo che ha in prestito i seguenti libri</text:p><text:p text:style-name="Standard"/><table:table table:name="Tabella1" table:style-name="Tabella1"><table:table-column table:style-name="Tabella1.A"/><table:table-column table:style-name="Tabella1.B"/><table:table-header-rows><table:table-row><table:table-cell table:style-name="Tabella1.A1" office:value-type="string"><text:p text:style-name="P1">Titolo</text:p></table:table-cell><table:table-cell table:style-name="Tabella1.B1" office:value-type="string"><text:p text:style-name="P1">Inventario</text:p></table:table-cell></table:table-row></table:table-header-rows><table:table-row><table:table-cell table:style-name="Tabella1.A2" office:value-type="string"><text:p text:style-name="Table_20_Contents">Codice Da Vinci</text:p></table:table-cell><table:table-cell table:style-name="Tabella1.B2" office:value-type="string"><text:p text:style-name="Table_20_Contents">112345678</text:p></table:table-cell></table:table-row><table:table-row><table:table-cell table:style-name="Tabella1.A2" office:value-type="string"><text:p text:style-name="Table_20_Contents">Lo Zen e il tiro con l&apos;arco</text:p></table:table-cell><table:table-cell table:style-name="Tabella1.B2" office:value-type="string"><text:p text:style-name="Table_20_Contents">1020304</text:p></table:table-cell></table:table-row><table:table-row><table:table-cell table:style-name="Tabella1.A2" office:value-type="string"><text:p text:style-name="Table_20_Contents">Lo Zen e l&apos;arte della manutenzione della motocicletta</text:p></table:table-cell><table:table-cell table:style-name="Tabella1.B2" office:value-type="string"><text:p text:style-name="Table_20_Contents">1020305</text:p></table:table-cell></table:table-row><table:table-row><table:table-cell table:style-name="Tabella1.A2" office:value-type="string"><text:p text:style-name="Table_20_Contents">101 Storie Zen</text:p></table:table-cell><table:table-cell table:style-name="Tabella1.B2" office:value-type="string"><text:p text:style-name="Table_20_Contents">1020306</text:p></table:table-cell></table:table-row><table:table-row><table:table-cell table:style-name="Tabella1.A2" office:value-type="string"><text:p text:style-name="Table_20_Contents">Antani di Blinda come fosse di Cappotto</text:p></table:table-cell><table:table-cell table:style-name="Tabella1.B2" office:value-type="string"><text:p text:style-name="Table_20_Contents">4112345</text:p></table:table-cell></table:table-row></table:table><text:p text:style-name="Standard"/><text:p text:style-name="Standard">peraltro, sottolineiamo la perentorietà della restituzione anche dei vieppiù interessanti testi:</text:p><text:p text:style-name="Standard"/><table:table table:name="Tabella2" table:style-name="Tabella2"><table:table-column table:style-name="Tabella2.A" table:number-columns-repeated="2"/><table:table-column table:style-name="Tabella2.C"/><table:table-header-rows><table:table-row><table:table-cell table:style-name="Tabella2.A1" office:value-type="string"><text:p text:style-name="P2">Titolo</text:p></table:table-cell><table:table-cell table:style-name="Tabella2.A1" office:value-type="string"><text:p text:style-name="P2">Autore</text:p></table:table-cell><table:table-cell table:style-name="Tabella2.C1" office:value-type="string"><text:p text:style-name="P2">Inventario</text:p></table:table-cell></table:table-row></table:table-header-rows><table:table-row><table:table-cell table:style-name="Tabella2.A2" office:value-type="string"><text:p text:style-name="Table_20_Contents">Angeli e Demoni</text:p></table:table-cell><table:table-cell table:style-name="Tabella2.A2" office:value-type="string"><text:p text:style-name="P3">Dan Brown</text:p></table:table-cell><table:table-cell table:style-name="Tabella2.C2" office:value-type="string"><text:p text:style-name="Table_20_Contents">12131415</text:p></table:table-cell></table:table-row><table:table-row><table:table-cell table:style-name="Tabella2.A2" office:value-type="string"><text:p text:style-name="Table_20_Contents">La versione di Barney</text:p></table:table-cell><table:table-cell table:style-name="Tabella2.A2" office:value-type="string"><text:p text:style-name="P3">Mordecai Richler</text:p></table:table-cell><table:table-cell table:style-name="Tabella2.C2" office:value-type="string"><text:p text:style-name="Table_20_Contents">2010322</text:p></table:table-cell></table:table-row><table:table-row><table:table-cell table:style-name="Tabella2.A2" office:value-type="string"><text:p text:style-name="Table_20_Contents">Manuale PHP</text:p></table:table-cell><table:table-cell table:style-name="Tabella2.A2" office:value-type="string"><text:p text:style-name="P3">Varii</text:p></table:table-cell><table:table-cell table:style-name="Tabella2.C2" office:value-type="string"><text:p text:style-name="Table_20_Contents">32413543</text:p></table:table-cell></table:table-row><table:table-row><table:table-cell table:style-name="Tabella2.A2" office:value-type="string"><text:p text:style-name="Table_20_Contents">La prematurata supercazzola negli anni a venire</text:p></table:table-cell><table:table-cell table:style-name="Tabella2.A2" office:value-type="string"><text:p text:style-name="P3">Ugo Tognazzi</text:p></table:table-cell><table:table-cell table:style-name="Tabella2.C2" office:value-type="string"><text:p text:style-name="Table_20_Contents">31213243</text:p></table:table-cell></table:table-row><table:table-row><table:table-cell table:style-name="Tabella2.A2" office:value-type="string"><text:p text:style-name="Table_20_Contents">La sbiriguda in vicesindaco</text:p></table:table-cell><table:table-cell table:style-name="Tabella2.A2" office:value-type="string"><text:p text:style-name="P3">Ugo Tognazzi</text:p></table:table-cell><table:table-cell table:style-name="Tabella2.C2" office:value-type="string"><text:p text:style-name="Table_20_Contents">1324354654</text:p></table:table-cell></table:table-row></table:table><text:p text:style-name="Standard"/><text:p text:style-name="Standard"/><text:p text:style-name="Standard">Gentili saluti, la sua biblioteca</text:p></office:text></office:body></office:document-content>
diff --git a/ext/zip/tests/bug8009.phpt b/ext/zip/tests/bug8009.phpt
deleted file mode 100644
index 90ab765bfa..0000000000
--- a/ext/zip/tests/bug8009.phpt
+++ /dev/null
@@ -1,27 +0,0 @@
---TEST--
-bug #8009, cannot add again same entry to an archive
---SKIPIF--
-<?php
-/* $Id$ */
-if(!extension_loaded('zip')) die('skip');
-?>
---FILE--
-<?php
-$thisdir = dirname(__FILE__);
-$src = $thisdir . "/bug8009.zip";
-$filename = $thisdir . "/tmp8009.zip";
-copy($src, $filename);
-
-$zip = new ZipArchive();
-
-if (!$zip->open($filename)) {
- exit("cannot open $filename\n");
-}
-$zip->addFromString("2.txt", "=)");
-$zip->close();
-unlink($filename);
-echo "status: " . $zip->status . "\n";
-echo "\n";
-
---EXPECT--
-status: 0
diff --git a/ext/zip/tests/bug8009.zip b/ext/zip/tests/bug8009.zip
deleted file mode 100644
index 45bedcbe88..0000000000
--- a/ext/zip/tests/bug8009.zip
+++ /dev/null
Binary files differ
diff --git a/ext/zip/tests/bug8700.phpt b/ext/zip/tests/bug8700.phpt
deleted file mode 100644
index 5e7df4560b..0000000000
--- a/ext/zip/tests/bug8700.phpt
+++ /dev/null
@@ -1,30 +0,0 @@
---TEST--
-bug #8700, getFromIndex(0) fails
---SKIPIF--
-<?php
-/* $Id$ */
-if(!extension_loaded('zip')) die('skip');
-?>
---FILE--
-<?php
-$thisdir = dirname(__FILE__);
-$filename = $thisdir . "/bug8009.zip";
-
-$zip = new ZipArchive();
-
-if ($zip->open($filename) === FALSE) {
- exit("cannot open $filename\n");
-}
-$contents_from_idx = $zip->getFromIndex(0);
-$contents_from_name = $zip->getFromName('1.txt');
-if ($contents_from_idx != $contents_from_name) {
- echo "failed:";
- var_dump($content_from_idx, $content_from_name);
-}
-
-$zip->close();
-echo "status: " . $zip->status . "\n";
-echo "\n";
-
---EXPECT--
-status: 0
diff --git a/ext/zip/tests/oo_addfile.phpt b/ext/zip/tests/oo_addfile.phpt
deleted file mode 100644
index ab79780999..0000000000
--- a/ext/zip/tests/oo_addfile.phpt
+++ /dev/null
@@ -1,37 +0,0 @@
---TEST--
-ziparchive::addFile() function
---SKIPIF--
-<?php
-/* $Id$ */
-if(!extension_loaded('zip')) die('skip');
-?>
---FILE--
-<?php
-
-$dirname = dirname(__FILE__) . '/';
-include $dirname . 'utils.inc';
-$file = $dirname . '__tmp_oo_addfile.zip';
-
-copy($dirname . 'test.zip', $file);
-
-$zip = new ZipArchive;
-if (!$zip->open($file)) {
- exit('failed');
-}
-if (!$zip->addFile($dirname . 'utils.inc', 'test.php')) {
- echo "failed\n";
-}
-if ($zip->status == ZIPARCHIVE::ER_OK) {
- dump_entries_name($zip);
- $zip->close();
-} else {
- echo "failed\n";
-}
-@unlink($file);
-?>
---EXPECTF--
-0 bar
-1 foobar/
-2 foobar/baz
-3 entry1.txt
-4 test.php
diff --git a/ext/zip/tests/oo_close.phpt b/ext/zip/tests/oo_close.phpt
deleted file mode 100644
index ea67dcddfc..0000000000
--- a/ext/zip/tests/oo_close.phpt
+++ /dev/null
@@ -1,25 +0,0 @@
---TEST--
-zip::close() function
---SKIPIF--
-<?php
-/* $Id$ */
-if(!extension_loaded('zip')) die('skip');
-?>
---FILE--
-<?php
-
-$dirname = dirname(__FILE__) . '/';
-$zip = new ZipArchive;
-if (!$zip->open($dirname . 'test.zip')) {
- exit('failed');
-}
-
-if ($zip->status == ZIPARCHIVE::ER_OK) {
- $zip->close();
- echo "ok\n";
-} else {
- echo "failed\n";
-}
-?>
---EXPECTF--
-ok
diff --git a/ext/zip/tests/oo_delete.phpt b/ext/zip/tests/oo_delete.phpt
deleted file mode 100644
index 176cda44dc..0000000000
--- a/ext/zip/tests/oo_delete.phpt
+++ /dev/null
@@ -1,76 +0,0 @@
---TEST--
-Delete entries
---SKIPIF--
-<?php
-/* $Id$ */
-if(!extension_loaded('zip')) die('skip');
-?>
---FILE--
-<?php
-$dirname = dirname(__FILE__) . '/';
-$file = $dirname . '__tmp_oo_delete.zip';
-if (file_exists($file)) {
- unlink($file);
-}
-
-$zip = new ZipArchive;
-if (!$zip->open($file, ZIPARCHIVE::CREATE)) {
- exit('failed');
-}
-$zip->addFromString('entry1.txt', 'entry #1');
-$zip->addFromString('entry2.txt', 'entry #2');
-$zip->addFromString('dir/entry2.txt', 'entry #2');
-
-if ($zip->status == ZIPARCHIVE::ER_OK) {
- $zip->close();
- echo "ok\n";
-} else {
- var_dump($zip);
- echo "failed\n";
-}
-
-if (!$zip->open($file, ZIPARCHIVE::CREATE)) {
- exit('failed');
-}
-
-if ($zip->deleteIndex(0)) {
- echo "ok\n";
-}
-
-if ($zip->deleteName('entry2.txt')) {
- echo "ok\n";
-} else {
- echo "failed 3\n";
-}
-
-if ($zip->deleteName('dir/entry2.txt')) {
- echo "ok\n";
-} else {
- echo "failed 3\n";
-}
-
-if (!$zip->deleteIndex(123)) {
- echo "ok\n";
-} else {
- print_r($zip);
- echo "failed\n";
-}
-
-
-$sb = $zip->statIndex(0);
-var_dump($sb);
-$sb = $zip->statIndex(1);
-var_dump($sb);
-$sb = $zip->statIndex(2);
-var_dump($sb);
-@unlink($file);
-?>
---EXPECTF--
-ok
-ok
-ok
-ok
-ok
-bool(false)
-bool(false)
-bool(false)
diff --git a/ext/zip/tests/oo_ext_zip.phpt b/ext/zip/tests/oo_ext_zip.phpt
deleted file mode 100644
index 739a671e0b..0000000000
--- a/ext/zip/tests/oo_ext_zip.phpt
+++ /dev/null
@@ -1,27 +0,0 @@
---TEST--
-Extending Zip class and array property
---SKIPIF--
-<?php
-/* $Id$ */
-if(!extension_loaded('zip')) die('skip');
-?>
---FILE--
-<?php
-class myZip extends ZipArchive {
- private $test = 0;
- public $testp = 1;
- private $testarray = array();
-
- public function __construct() {
- $this->testarray[] = 1;
- var_dump($this->testarray);
- }
-}
-
-$z = new myZip;
-?>
---EXPECTF--
-array(1) {
- [0]=>
- int(1)
-}
diff --git a/ext/zip/tests/oo_namelocate.phpt b/ext/zip/tests/oo_namelocate.phpt
deleted file mode 100644
index bbe7ec55d9..0000000000
--- a/ext/zip/tests/oo_namelocate.phpt
+++ /dev/null
@@ -1,46 +0,0 @@
---TEST--
-Locate entries by name
---SKIPIF--
-<?php
-/* $Id$ */
-if(!extension_loaded('zip')) die('skip');
-?>
---FILE--
-<?php
-$dirname = dirname(__FILE__) . '/';
-include $dirname . 'utils.inc';
-$file = $dirname . '__tmp_oo_rename.zip';
-
-@unlink($file);
-
-$zip = new ZipArchive;
-if (!$zip->open($file, ZIPARCHIVE::CREATE)) {
- exit('failed');
-}
-
-$zip->addFromString('entry1.txt', 'entry #1');
-$zip->addFromString('entry2.txt', 'entry #2');
-$zip->addFromString('dir/entry2d.txt', 'entry #2');
-
-if (!$zip->status == ZIPARCHIVE::ER_OK) {
- echo "failed to write zip\n";
-}
-$zip->close();
-
-if (!$zip->open($file)) {
- exit('failed');
-}
-
-
-var_dump($zip->locateName('entry1.txt'));
-var_dump($zip->locateName('eNtry2.txt'));
-var_dump($zip->locateName('eNtry2.txt', ZIPARCHIVE::FL_NOCASE));
-var_dump($zip->locateName('enTRy2d.txt', ZIPARCHIVE::FL_NOCASE|ZIPARCHIVE::FL_NODIR));
-$zip->close();
-
-?>
---EXPECTF--
-int(0)
-bool(false)
-int(1)
-int(2)
diff --git a/ext/zip/tests/oo_open.phpt b/ext/zip/tests/oo_open.phpt
deleted file mode 100644
index 0760db34c4..0000000000
--- a/ext/zip/tests/oo_open.phpt
+++ /dev/null
@@ -1,46 +0,0 @@
---TEST--
-zip::open() function
---SKIPIF--
-<?php
-/* $Id$ */
-if(!extension_loaded('zip')) die('skip');
-?>
---FILE--
-<?php
-
-$dirname = dirname(__FILE__) . '/';
-$zip = new ZipArchive;
-$r = $zip->open($dirname . 'nofile');
-if ($r !== TRUE) {
- echo "ER_OPEN: ok\n";
-} else {
- echo "ER_OPEN: FAILED\n";
-}
-
-$r = $zip->open($dirname . 'nofile', ZIPARCHIVE::CREATE);
-if (!$r) {
- echo "create: failed\n";
-} else {
- echo "create: ok\n";
-}
-@unlink($dirname . 'nofile');
-
-$zip = new ZipArchive;
-$zip->open('');
-
-if (!$zip->open($dirname . 'test.zip')) {
- exit("failed 1\n");
-}
-
-if ($zip->status == ZIPARCHIVE::ER_OK) {
- echo "OK\n";
-} else {
- echo "failed\n";
-}
-?>
---EXPECTF--
-ER_OPEN: ok
-create: ok
-
-Warning: ZipArchive::open(): Empty string as source in %s on line %d
-OK
diff --git a/ext/zip/tests/oo_rename.phpt b/ext/zip/tests/oo_rename.phpt
deleted file mode 100644
index 98489ae256..0000000000
--- a/ext/zip/tests/oo_rename.phpt
+++ /dev/null
@@ -1,58 +0,0 @@
---TEST--
-Rename entries
---SKIPIF--
-<?php
-/* $Id$ */
-if(!extension_loaded('zip')) die('skip');
-?>
---FILE--
-<?php
-$dirname = dirname(__FILE__) . '/';
-include $dirname . 'utils.inc';
-$file = $dirname . '__tmp_oo_rename.zip';
-
-@unlink($file);
-
-$zip = new ZipArchive;
-if (!$zip->open($file, ZIPARCHIVE::CREATE)) {
- exit('failed');
-}
-
-$zip->addFromString('entry1.txt', 'entry #1');
-$zip->addFromString('entry2.txt', 'entry #2');
-$zip->addFromString('dir/entry2.txt', 'entry #2');
-
-if (!$zip->status == ZIPARCHIVE::ER_OK) {
- var_dump($zip);
- echo "failed\n";
-}
-
-$zip->close();
-
-if (!$zip->open($file)) {
- exit('failed');
-}
-
-dump_entries_name($zip);
-echo "\n";
-
-if (!$zip->renameIndex(0, 'ren_entry1.txt')) {
- echo "failed index 0\n";
-}
-
-if (!$zip->renameName('dir/entry2.txt', 'dir3/ren_entry2.txt')) {
- echo "failed name dir/entry2.txt\n";
-}
-dump_entries_name($zip);
-$zip->close();
-
-@unlink($file);
-?>
---EXPECTF--
-0 entry1.txt
-1 entry2.txt
-2 dir/entry2.txt
-
-0 ren_entry1.txt
-1 entry2.txt
-2 dir3/ren_entry2.txt
diff --git a/ext/zip/tests/test.zip b/ext/zip/tests/test.zip
deleted file mode 100644
index 35bd5eecdf..0000000000
--- a/ext/zip/tests/test.zip
+++ /dev/null
Binary files differ
diff --git a/ext/zip/tests/test_procedural.zip b/ext/zip/tests/test_procedural.zip
deleted file mode 100644
index 6b98694803..0000000000
--- a/ext/zip/tests/test_procedural.zip
+++ /dev/null
Binary files differ
diff --git a/ext/zip/tests/utils.inc b/ext/zip/tests/utils.inc
deleted file mode 100644
index 41a2791266..0000000000
--- a/ext/zip/tests/utils.inc
+++ /dev/null
@@ -1,8 +0,0 @@
-<?php
-/* $Id$ */
-function dump_entries_name($z) {
- for($i=0; $i<$z->numFiles; $i++) {
- $sb = $z->statIndex($i);
- echo $i . ' ' . $sb['name'] . "\n";
- }
-}
diff --git a/ext/zip/tests/zip_close.phpt b/ext/zip/tests/zip_close.phpt
deleted file mode 100644
index 7f9d09ae36..0000000000
--- a/ext/zip/tests/zip_close.phpt
+++ /dev/null
@@ -1,17 +0,0 @@
---TEST--
-zip_close() function
---SKIPIF--
-<?php
-/* $Id$ */
-if(!extension_loaded('zip')) die('skip');
-?>
---FILE--
-<?php
-$zip = zip_open(dirname(__FILE__)."/test_procedural.zip");
-if (!is_resource($zip)) die("Failure");
-zip_close($zip);
-echo "OK";
-
-?>
---EXPECT--
-OK
diff --git a/ext/zip/tests/zip_entry_compressedsize.phpt b/ext/zip/tests/zip_entry_compressedsize.phpt
deleted file mode 100644
index fefa6e5977..0000000000
--- a/ext/zip/tests/zip_entry_compressedsize.phpt
+++ /dev/null
@@ -1,23 +0,0 @@
---TEST--
-zip_entry_compressedsize() function
---SKIPIF--
-<?php
-/* $Id$ */
-if(!extension_loaded('zip')) die('skip');
-?>
---FILE--
-<?php
-$zip = zip_open(dirname(__FILE__)."/test_procedural.zip");
-if (!is_resource($zip)) die("Failure");
-$entries = 0;
-while ($entry = zip_read($zip)) {
- echo zip_entry_compressedsize($entry)."\n";
-}
-zip_close($zip);
-
-?>
---EXPECT--
-5
-4
-0
-24
diff --git a/ext/zip/tests/zip_entry_compressionmethod.phpt b/ext/zip/tests/zip_entry_compressionmethod.phpt
deleted file mode 100644
index cabdbb797f..0000000000
--- a/ext/zip/tests/zip_entry_compressionmethod.phpt
+++ /dev/null
@@ -1,24 +0,0 @@
---TEST--
-zip_entry_compressionmethod() function
---SKIPIF--
-<?php
-/* $Id$ */
-if(!extension_loaded('zip')) die('skip');
-?>
---FILE--
-<?php
-$zip = zip_open(dirname(__FILE__)."/test_procedural.zip");
-if (!is_resource($zip)) die("Failure");
-$entries = 0;
-while ($entry = zip_read($zip)) {
- echo zip_entry_compressionmethod($entry)."\n";
-}
-zip_close($zip);
-
-?>
---EXPECT--
-stored
-stored
-stored
-deflated
-
diff --git a/ext/zip/tests/zip_entry_filesize.phpt b/ext/zip/tests/zip_entry_filesize.phpt
deleted file mode 100644
index b8d8820b64..0000000000
--- a/ext/zip/tests/zip_entry_filesize.phpt
+++ /dev/null
@@ -1,23 +0,0 @@
---TEST--
-zip_entry_filesize() function
---SKIPIF--
-<?php
-/* $Id$ */
-if(!extension_loaded('zip')) die('skip');
-?>
---FILE--
-<?php
-$zip = zip_open(dirname(__FILE__)."/test_procedural.zip");
-if (!is_resource($zip)) die("Failure");
-$entries = 0;
-while ($entry = zip_read($zip)) {
- echo zip_entry_filesize($entry)."\n";
-}
-zip_close($zip);
-
-?>
---EXPECT--
-5
-4
-0
-27
diff --git a/ext/zip/tests/zip_entry_name.phpt b/ext/zip/tests/zip_entry_name.phpt
deleted file mode 100644
index 1916e25dac..0000000000
--- a/ext/zip/tests/zip_entry_name.phpt
+++ /dev/null
@@ -1,23 +0,0 @@
---TEST--
-zip_entry_name() function
---SKIPIF--
-<?php
-/* $Id$ */
-if(!extension_loaded('zip')) die('skip');
-?>
---FILE--
-<?php
-$zip = zip_open(dirname(__FILE__)."/test_procedural.zip");
-if (!is_resource($zip)) die("Failure");
-$entries = 0;
-while ($entry = zip_read($zip)) {
- echo zip_entry_name($entry)."\n";
-}
-zip_close($zip);
-
-?>
---EXPECT--
-foo
-bar
-foobar/
-foobar/baz
diff --git a/ext/zip/tests/zip_entry_open.phpt b/ext/zip/tests/zip_entry_open.phpt
deleted file mode 100644
index b79e39108f..0000000000
--- a/ext/zip/tests/zip_entry_open.phpt
+++ /dev/null
@@ -1,17 +0,0 @@
---TEST--
-zip_entry_open() function
---SKIPIF--
-<?php
-/* $Id$ */
-if(!extension_loaded('zip')) die('skip');
-?>
---FILE--
-<?php
-$zip = zip_open(dirname(__FILE__)."/test_procedural.zip");
-$entry = zip_read($zip);
-echo zip_entry_open($zip, $entry, "r") ? "OK" : "Failure";
-zip_close($zip);
-
-?>
---EXPECT--
-OK
diff --git a/ext/zip/tests/zip_entry_read.phpt b/ext/zip/tests/zip_entry_read.phpt
deleted file mode 100644
index 94dde59cbd..0000000000
--- a/ext/zip/tests/zip_entry_read.phpt
+++ /dev/null
@@ -1,18 +0,0 @@
---TEST--
-zip_entry_read() function
---SKIPIF--
-<?php
-/* $Id$ */
-if(!extension_loaded('zip')) die('skip');
-?>
---FILE--
-<?php
-$zip = zip_open(dirname(__FILE__)."/test_procedural.zip");
-$entry = zip_read($zip);
-if (!zip_entry_open($zip, $entry, "r")) die("Failure");
-echo zip_entry_read($entry);
-zip_close($zip);
-
-?>
---EXPECT--
-foo
diff --git a/ext/zip/tests/zip_open.phpt b/ext/zip/tests/zip_open.phpt
deleted file mode 100644
index 91474bc6fd..0000000000
--- a/ext/zip/tests/zip_open.phpt
+++ /dev/null
@@ -1,16 +0,0 @@
---TEST--
-zip_open() function
---SKIPIF--
-<?php
-/* $Id$ */
-if(!extension_loaded('zip')) die('skip');
-?>
---FILE--
-<?php
-$zip = zip_open(dirname(__FILE__)."/test_procedural.zip");
-
-echo is_resource($zip) ? "OK" : "Failure";
-
-?>
---EXPECT--
-OK
diff --git a/ext/zip/tests/zip_read.phpt b/ext/zip/tests/zip_read.phpt
deleted file mode 100644
index 5cadb2d1ef..0000000000
--- a/ext/zip/tests/zip_read.phpt
+++ /dev/null
@@ -1,21 +0,0 @@
---TEST--
-zip_read() function
---SKIPIF--
-<?php
-/* $Id$ */
-if(!extension_loaded('zip')) die('skip');
-?>
---FILE--
-<?php
-$zip = zip_open(dirname(__FILE__)."/test_procedural.zip");
-if (!is_resource($zip)) die("Failure");
-$entries = 0;
-while ($entry = zip_read($zip)) {
- $entries++;
-}
-zip_close($zip);
-echo "$entries entries";
-
-?>
---EXPECT--
-4 entries
diff --git a/ext/zip/zip_stream.c b/ext/zip/zip_stream.c
deleted file mode 100644
index dd5374edd8..0000000000
--- a/ext/zip/zip_stream.c
+++ /dev/null
@@ -1,235 +0,0 @@
-/* $Id$ */
-#ifdef HAVE_CONFIG_H
-# include "config.h"
-#endif
-#include "php.h"
-#if HAVE_ZIP
-#ifdef ZEND_ENGINE_2
-
-#include "lib/zip.h"
-
-#include "php_streams.h"
-#include "ext/standard/file.h"
-#include "ext/standard/php_string.h"
-#include "fopen_wrappers.h"
-
-#include "ext/standard/url.h"
-
-struct php_zip_stream_data_t {
- struct zip *za;
- struct zip_file *zf;
- size_t cursor;
- php_stream *stream;
-};
-
-#define STREAM_DATA_FROM_STREAM() \
- struct php_zip_stream_data_t *self = (struct php_zip_stream_data_t *) stream->abstract;
-
-
-/* {{{ php_zip_ops_read */
-static size_t php_zip_ops_read(php_stream *stream, char *buf, size_t count TSRMLS_DC)
-{
- int n = 0;
- STREAM_DATA_FROM_STREAM();
-
- if (self->za && self->zf) {
- n = (size_t)zip_fread(self->zf, buf, (int)count);
-
- if (n == 0) {
- stream->eof = 1;
- } else {
- self->cursor += n;
- }
- }
- return n<1 ? 0 : n;
-}
-/* }}} */
-
-/* {{{ php_zip_ops_write */
-static size_t php_zip_ops_write(php_stream *stream, const char *buf, size_t count TSRMLS_DC)
-{
- if (!stream) {
- return 0;
- }
-
- return count;
-}
-/* }}} */
-
-/* {{{ php_zip_ops_close */
-static int php_zip_ops_close(php_stream *stream, int close_handle TSRMLS_DC)
-{
- STREAM_DATA_FROM_STREAM();
- if (close_handle && self->za) {
- zip_close(self->za);
- self->za = NULL;
- }
- efree(self);
- stream->abstract = NULL;
- return EOF;
-}
-/* }}} */
-
-/* {{{ php_zip_ops_flush */
-static int php_zip_ops_flush(php_stream *stream TSRMLS_DC)
-{
- if (!stream) {
- return 0;
- }
-
- return 0;
-}
-/* }}} */
-
-php_stream_ops php_stream_zipio_ops = {
- php_zip_ops_write, php_zip_ops_read,
- php_zip_ops_close, php_zip_ops_flush,
- "zip",
- NULL, /* seek */
- NULL, /* cast */
- NULL, /* stat */
- NULL /* set_option */
-};
-
-/* {{{ php_stream_zip_open */
-php_stream *php_stream_zip_open(char *filename, char *path, char *mode STREAMS_DC TSRMLS_DC)
-{
- struct zip_file *zf = NULL;
- int err = 0;
-
- php_stream *stream = NULL;
- struct php_zip_stream_data_t *self;
- struct zip *stream_za;
-
- if (strncmp(mode,"r", strlen("r")) != 0) {
- return NULL;
- }
-
- if (filename) {
- /* duplicate to make the stream za independent (esp. for MSHUTDOWN) */
- stream_za = zip_open(filename, ZIP_CREATE, &err);
- if (!stream_za) {
- return NULL;
- }
-
- zf = zip_fopen(stream_za, path, 0);
- if (zf) {
- self = emalloc(sizeof(*self));
-
- self->za = stream_za;
- self->zf = zf;
- self->stream = NULL;
- self->cursor = 0;
- stream = php_stream_alloc(&php_stream_zipio_ops, self, NULL, mode);
- } else {
- zip_close(stream_za);
- }
- }
-
- if (!stream) {
- return NULL;
- } else {
- return stream;
- }
-
-}
-/* }}} */
-
-/* {{{ php_stream_zip_opener */
-php_stream *php_stream_zip_opener(php_stream_wrapper *wrapper,
- char *path,
- char *mode,
- int options,
- char **opened_path,
- php_stream_context *context STREAMS_DC TSRMLS_DC)
-{
- int path_len;
-
- char *file_basename;
- size_t file_basename_len;
- char file_dirname[MAXPATHLEN+1];
-
- struct zip *za;
- struct zip_file *zf = NULL;
- char *fragment;
- int fragment_len;
- int err;
-
- php_stream *stream = NULL;
- struct php_zip_stream_data_t *self;
-
- fragment = strchr(path, '#');
- if (!fragment) {
- return NULL;
- }
-
- if (strncasecmp("zip://", path, 6) == 0) {
- path += 6;
- }
-
- fragment_len = strlen(fragment);
-
- if (fragment_len < 1) {
- return NULL;
- }
- path_len = strlen(path);
-
- memcpy(file_dirname, path, path_len - fragment_len);
- file_dirname[path_len - fragment_len] = '\0';
-
- php_basename(path, path_len - fragment_len, NULL, 0, &file_basename, &file_basename_len TSRMLS_CC);
- fragment++;
- if (mode[0] != 'r') {
- return NULL;
- }
-
- za = zip_open(file_dirname, ZIP_CREATE, &err);
- if (za) {
- zf = zip_fopen(za, fragment, 0);
- if (zf) {
- self = emalloc(sizeof(*self));
-
- self->za = za;
- self->zf = zf;
- self->stream = NULL;
- self->cursor = 0;
- stream = php_stream_alloc(&php_stream_zipio_ops, self, NULL, mode);
-
- if (opened_path) {
- *opened_path = estrdup(path);
- }
- } else {
- zip_close(za);
- }
- }
-
- efree(file_basename);
-
- if (!stream) {
- return NULL;
- } else {
- return stream;
- }
-}
-/* }}} */
-
-static php_stream_wrapper_ops zip_stream_wops = {
- php_stream_zip_opener,
- NULL, /* close */
- NULL, /* fstat */
- NULL, /* stat */
- NULL, /* opendir */
- "zip wrapper",
- NULL, /* unlink */
- NULL, /* rename */
- NULL, /* mkdir */
- NULL /* rmdir */
-};
-
-php_stream_wrapper php_stream_zip_wrapper = {
- &zip_stream_wops,
- NULL,
- 0 /* is_url */
-};
-#endif /* ZEND_ENGINE_2 */
-#endif /* HAVE_ZIP */