pajoye Wed Nov 12 11:24:49 2008 UTC
Added files:
/php-src/ext/zip/tests bug14962.phpt
Modified files:
/php-src/ext/zip php_zip.c php_zip.h
/php-src/ext/zip/tests bug38943.inc bug38943_2.phpt bug38943.phpt
bug38944.phpt bug7658.phpt
Log:
- fix #14962 (makes 2nd argument really optional)
- replace ZEND_ENGINE_2_1 test with PHP_ZIP_USE_OO, version independent
- sync tests with 5.3
http://cvs.php.net/viewvc.cgi/php-src/ext/zip/php_zip.c?r1=1.65&r2=1.66&diff_format=u
Index: php-src/ext/zip/php_zip.c
diff -u php-src/ext/zip/php_zip.c:1.65 php-src/ext/zip/php_zip.c:1.66
--- php-src/ext/zip/php_zip.c:1.65 Sun Nov 2 21:10:12 2008
+++ php-src/ext/zip/php_zip.c Wed Nov 12 11:24:48 2008
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_zip.c,v 1.65 2008/11/02 21:10:12 felipe Exp $ */
+/* $Id: php_zip.c,v 1.66 2008/11/12 11:24:48 pajoye Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -135,7 +135,7 @@
}
/* }}} */
-#ifdef ZEND_ENGINE_2_1
+#ifdef PHP_ZIP_USE_OO
/* {{{ php_zip_extract_file */
static int php_zip_extract_file(struct zip * za, char *dest, char *file, int
file_len TSRMLS_DC)
{
@@ -740,7 +740,7 @@
/* }}} */
/* {{{ ZE2 OO definitions */
-#ifdef ZEND_ENGINE_2_1
+#ifdef PHP_ZIP_USE_OO
static zend_class_entry *zip_class_entry;
static zend_object_handlers zip_object_handlers;
@@ -760,7 +760,7 @@
#endif
/* }}} */
-#ifdef ZEND_ENGINE_2_1
+#ifdef PHP_ZIP_USE_OO
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;
@@ -1423,7 +1423,7 @@
}
/* }}} */
-#ifdef ZEND_ENGINE_2_1
+#ifdef PHP_ZIP_USE_OO
/* {{{ proto mixed ZipArchive::open(string source [, int flags]) U
Create new zip using source uri for output, return TRUE on success or the
error code */
static ZIPARCHIVE_METHOD(open)
@@ -2413,15 +2413,15 @@
RETURN_FALSE;
}
- if (php_stream_stat_path(pathto, &ssb) < 0) {
- ret = php_stream_mkdir(pathto, 0777, PHP_STREAM_MKDIR_RECURSIVE,
NULL);
- if (!ret) {
- RETURN_FALSE;
- }
- }
+ if (php_stream_stat_path(pathto, &ssb) < 0) {
+ ret = php_stream_mkdir(pathto, 0777,
PHP_STREAM_MKDIR_RECURSIVE, NULL);
+ if (!ret) {
+ RETURN_FALSE;
+ }
+ }
ZIP_FROM_OBJECT(intern, this);
- if (zval_files) {
+ if (zval_files && (Z_TYPE_P(zval_files) != IS_NULL)) {
switch (Z_TYPE_P(zval_files)) {
case IS_UNICODE:
if (FAILURE ==
php_stream_path_param_encode(&zval_files, &file, &file_len, REPORT_ERRORS,
FG(default_context))) {
@@ -2443,6 +2443,7 @@
RETURN_FALSE;
}
break;
+
case IS_ARRAY:
nelems =
zend_hash_num_elements(Z_ARRVAL_P(zval_files));
if (nelems == 0 ) {
@@ -2476,7 +2477,7 @@
}
}
break;
- case IS_LONG:
+
default:
php_error_docref(NULL TSRMLS_CC, E_WARNING,
"Invalid argument, expect string or array of strings");
break;
@@ -2659,7 +2660,7 @@
/* {{{ PHP_MINIT_FUNCTION */
static PHP_MINIT_FUNCTION(zip)
{
-#ifdef ZEND_ENGINE_2_1
+#ifdef PHP_ZIP_USE_OO
zend_class_entry ce;
memcpy(&zip_object_handlers, zend_get_std_object_handlers(),
sizeof(zend_object_handlers));
@@ -2742,7 +2743,7 @@
*/
static PHP_MSHUTDOWN_FUNCTION(zip)
{
-#ifdef ZEND_ENGINE_2_1
+#ifdef PHP_ZIP_USE_OO
zend_hash_destroy(&zip_prop_handlers);
php_unregister_url_stream_wrapper("zip" TSRMLS_CC);
#endif
@@ -2757,7 +2758,7 @@
php_info_print_table_start();
php_info_print_table_row(2, "Zip", "enabled");
- php_info_print_table_row(2, "Extension Version","$Id: php_zip.c,v 1.65
2008/11/02 21:10:12 felipe Exp $");
+ php_info_print_table_row(2, "Extension Version","$Id: php_zip.c,v 1.66
2008/11/12 11:24:48 pajoye Exp $");
php_info_print_table_row(2, "Zip version", PHP_ZIP_VERSION_STRING);
php_info_print_table_row(2, "Libzip version", "0.9.0");
http://cvs.php.net/viewvc.cgi/php-src/ext/zip/php_zip.h?r1=1.18&r2=1.19&diff_format=u
Index: php-src/ext/zip/php_zip.h
diff -u php-src/ext/zip/php_zip.h:1.18 php-src/ext/zip/php_zip.h:1.19
--- php-src/ext/zip/php_zip.h:1.18 Fri Aug 8 18:13:55 2008
+++ php-src/ext/zip/php_zip.h Wed Nov 12 11:24:48 2008
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_zip.h,v 1.18 2008/08/08 18:13:55 pajoye Exp $ */
+/* $Id: php_zip.h,v 1.19 2008/11/12 11:24:48 pajoye Exp $ */
#ifndef PHP_ZIP_H
#define PHP_ZIP_H
@@ -42,6 +42,10 @@
#endif
/* }}} */
+#if ((PHP_MAJOR_VERSION >= 5 && PHP_MINOR_VERSION >= 2) || PHP_MAJOR_VERSION
>= 6)
+# define PHP_ZIP_USE_OO 1
+#endif
+
typedef struct _ze_zip_rsrc {
struct zip *za;
int index_current;
http://cvs.php.net/viewvc.cgi/php-src/ext/zip/tests/bug38943.inc?r1=1.1&r2=1.2&diff_format=u
Index: php-src/ext/zip/tests/bug38943.inc
diff -u /dev/null php-src/ext/zip/tests/bug38943.inc:1.2
--- /dev/null Wed Nov 12 11:24:49 2008
+++ php-src/ext/zip/tests/bug38943.inc Wed Nov 12 11:24:48 2008
@@ -0,0 +1,16 @@
+<?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);
+
http://cvs.php.net/viewvc.cgi/php-src/ext/zip/tests/bug38943_2.phpt?r1=1.1&r2=1.2&diff_format=u
Index: php-src/ext/zip/tests/bug38943_2.phpt
diff -u /dev/null php-src/ext/zip/tests/bug38943_2.phpt:1.2
--- /dev/null Wed Nov 12 11:24:49 2008
+++ php-src/ext/zip/tests/bug38943_2.phpt Wed Nov 12 11:24:48 2008
@@ -0,0 +1,38 @@
+--TEST--
+#38943, properties in extended class cannot be set (5.3)
+--SKIPIF--
+<?php
+/* $Id: bug38943_2.phpt,v 1.2 2008/11/12 11:24:48 pajoye Exp $ */
+if(!extension_loaded('zip')) die('skip');
+if (!defined('PHP_VERSION_MAJOR')) die('skip test for5.3+ only');
+?>
+--FILE--
+<?php
+include 'bug38943.inc';
+?>
+--EXPECTF--
+array(1) {
+ [0]=>
+ int(1)
+}
+object(myZip)#1 (%d) {
+ ["test":"myZip":private]=>
+ int(0)
+ ["testp"]=>
+ string(6) "foobar"
+ ["testarray":"myZip":private]=>
+ array(1) {
+ [0]=>
+ int(1)
+ }
+ ["status"]=>
+ int(0)
+ ["statusSys"]=>
+ int(0)
+ ["numFiles"]=>
+ int(0)
+ ["filename"]=>
+ string(0) ""
+ ["comment"]=>
+ string(0) ""
+}
http://cvs.php.net/viewvc.cgi/php-src/ext/zip/tests/bug38943.phpt?r1=1.3&r2=1.4&diff_format=u
Index: php-src/ext/zip/tests/bug38943.phpt
diff -u php-src/ext/zip/tests/bug38943.phpt:1.3
php-src/ext/zip/tests/bug38943.phpt:1.4
--- php-src/ext/zip/tests/bug38943.phpt:1.3 Tue May 27 02:55:52 2008
+++ php-src/ext/zip/tests/bug38943.phpt Wed Nov 12 11:24:48 2008
@@ -2,25 +2,12 @@
#38943, properties in extended class cannot be set
--SKIPIF--
<?php
-/* $Id: bug38943.phpt,v 1.3 2008/05/27 02:55:52 felipe Exp $ */
+/* $Id: bug38943.phpt,v 1.4 2008/11/12 11:24:48 pajoye Exp $ */
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);
+include dirname(__FILE__) . '/bug38943.inc';
?>
--EXPECTF--
array(1) {
@@ -37,14 +24,14 @@
[0]=>
int(1)
}
- [u"status"]=>
+ ["status"]=>
int(0)
- [u"statusSys"]=>
+ ["statusSys"]=>
int(0)
- [u"numFiles"]=>
+ ["numFiles"]=>
int(0)
- [u"filename"]=>
+ ["filename"]=>
string(0) ""
- [u"comment"]=>
+ ["comment"]=>
string(0) ""
}
http://cvs.php.net/viewvc.cgi/php-src/ext/zip/tests/bug38944.phpt?r1=1.3&r2=1.4&diff_format=u
Index: php-src/ext/zip/tests/bug38944.phpt
diff -u php-src/ext/zip/tests/bug38944.phpt:1.3
php-src/ext/zip/tests/bug38944.phpt:1.4
--- php-src/ext/zip/tests/bug38944.phpt:1.3 Tue May 27 02:55:52 2008
+++ php-src/ext/zip/tests/bug38944.phpt Wed Nov 12 11:24:48 2008
@@ -26,15 +26,15 @@
string(0) ""
string(0) ""
object(ZipArchive)#1 (5) {
- [u"status"]=>
+ ["status"]=>
int(0)
- [u"statusSys"]=>
+ ["statusSys"]=>
int(0)
- [u"numFiles"]=>
+ ["numFiles"]=>
int(0)
- [u"filename"]=>
+ ["filename"]=>
string(0) ""
- [u"comment"]=>
+ ["comment"]=>
string(0) ""
}
Done
http://cvs.php.net/viewvc.cgi/php-src/ext/zip/tests/bug7658.phpt?r1=1.4&r2=1.5&diff_format=u
Index: php-src/ext/zip/tests/bug7658.phpt
diff -u php-src/ext/zip/tests/bug7658.phpt:1.4
php-src/ext/zip/tests/bug7658.phpt:1.5
--- php-src/ext/zip/tests/bug7658.phpt:1.4 Sat Aug 30 16:26:11 2008
+++ php-src/ext/zip/tests/bug7658.phpt Wed Nov 12 11:24:48 2008
@@ -2,11 +2,28 @@
Bug #7658 (modify archive with general bit flag 3 set)
--SKIPIF--
<?php
-/* $Id: bug7658.phpt,v 1.4 2008/08/30 16:26:11 pajoye Exp $ */
+/* $Id: bug7658.phpt,v 1.5 2008/11/12 11:24:48 pajoye Exp $ */
if(!extension_loaded('zip')) die('skip');
?>
--FILE--
<?php
+$expect = array(
+ "mimetype",
+ "Configurations2/statusbar/",
+ "Configurations2/accelerator/current.xml",
+ "Configurations2/floater/",
+ "Configurations2/popupmenu/",
+ "Configurations2/progressbar/",
+ "Configurations2/menubar/",
+ "Configurations2/toolbar/",
+ "Configurations2/images/Bitmaps/",
+ "content.xml",
+ "styles.xml",
+ "meta.xml",
+ "Thumbnails/thumbnail.png",
+ "settings.xml",
+ "META-INF/manifest.xml",
+);
$dirname = dirname(__FILE__) . '/';
include $dirname . 'utils.inc';
$file = $dirname . '__tmp_bug7658.odt';
@@ -16,46 +33,23 @@
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);
+
+for($i=0; $i < $zip->numFiles; $i++) {
+ $sb = $zip->statIndex($i);
+ $found[] = $sb['name'];
+}
+$ar = array_diff($found, $expect);
+
+var_dump($ar);
unset($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
+--EXPECTF--
+array(0) {
+}
\ No newline at end of file
http://cvs.php.net/viewvc.cgi/php-src/ext/zip/tests/bug14962.phpt?view=markup&rev=1.1
Index: php-src/ext/zip/tests/bug14962.phpt
+++ php-src/ext/zip/tests/bug14962.phpt
--TEST--
Bug #14962 (::extractTo second argument is not really optional)
--SKIPIF--
<?php
/* $Id: bug14962.phpt,v 1.1 2008/11/12 11:24:48 pajoye Exp $ */
if(!extension_loaded('zip')) die('skip');
?>
--FILE--
<?php
$dir = dirname(__FILE__);
$file = '__tmp14962.txt';
$fullpath = $dir . '/' . $file;
$za = new ZipArchive;
$za->open($dir . '/__14962.zip', ZIPARCHIVE::CREATE);
$za->addFromString($file, '1234');
$za->close();
if (!is_file($dir . "/__14962.zip")) {
die('failed to create the archive');
}
$za = new ZipArchive;
$za->open($dir . '/__14962.zip');
$za->extractTo($dir, NULL);
$za->close();
if (is_file($fullpath)) {
unlink($fullpath);
echo "Ok";
}
unlink($dir . '/' . '__14962.zip');
?>
--EXPECT--
Ok
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php