Browse Source

- MFH:

- #14962, makes extractTo 2nd argument really optional
 - replace ZEND_ENGINE_2_1 by PHP_ZIP_USE_OO
PECL
Pierre Joye 18 years ago
parent
commit
b9853c4ff0
  1. 14
      ext/zip/php_zip.c
  2. 8
      ext/zip/php_zip.h
  3. 34
      ext/zip/tests/bug14962.phpt

14
ext/zip/php_zip.c

@ -135,7 +135,7 @@ static char * php_zip_make_relative_path(char *path, int path_len) /* {{{ */
}
/* }}} */
#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 @@ static const zend_function_entry zip_functions[] = {
/* }}} */
/* {{{ 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 @@ typedef struct _zip_prop_handler {
#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;
@ -1417,7 +1417,7 @@ static PHP_NAMED_FUNCTION(zif_zip_entry_compressionmethod)
}
/* }}} */
#ifdef ZEND_ENGINE_2_1
#ifdef PHP_ZIP_USE_OO
/* {{{ proto mixed ZipArchive::open(string source [, int flags])
Create new zip using source uri for output, return TRUE on success or the error code */
static ZIPARCHIVE_METHOD(open)
@ -2377,7 +2377,7 @@ static ZIPARCHIVE_METHOD(extractTo)
}
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_STRING:
if (!php_zip_extract_file(intern, pathto, Z_STRVAL_P(zval_files), Z_STRLEN_P(zval_files) TSRMLS_CC)) {
@ -2585,7 +2585,7 @@ static const zend_function_entry zip_class_functions[] = {
/* {{{ 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));
@ -2668,7 +2668,7 @@ static PHP_MINIT_FUNCTION(zip)
*/
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

8
ext/zip/php_zip.h

@ -32,10 +32,8 @@ extern zend_module_entry zip_module_entry;
#define PHP_ZIP_VERSION_STRING "1.8.11"
#ifndef ZEND_ENGINE_2_1
# if (PHP_MAJOR_VERSION == 5 && PHP_MINOR_VERSION > 0) || PHP_MAJOR_VERSION == 6
# define ZEND_ENGINE_2_1
# endif
#if ((PHP_MAJOR_VERSION >= 5 && PHP_MINOR_VERSION >= 2) || PHP_MAJOR_VERSION >= 6)
# define PHP_ZIP_USE_OO 1
#endif
#ifndef Z_SET_REFCOUNT_P
@ -68,7 +66,7 @@ typedef struct _ze_zip_read_rsrc {
struct zip_stat sb;
} zip_read_rsrc;
#ifdef ZEND_ENGINE_2_1
#ifdef PHP_ZIP_USE_OO
#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)

34
ext/zip/tests/bug14962.phpt

@ -0,0 +1,34 @@
--TEST--
Bug #14962 (::extractTo second argument is not really optional)
--SKIPIF--
<?php
/* $Id$ */
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
Loading…
Cancel
Save