cvs: pecl /zip php_zip.c
| From: | Pierre-Alain Joye | Date: | Fri, 24 Feb 2006 00:38:45 +0000 |
| Subject: | cvs: pecl /zip php_zip.c | ||
| Groups: | php.pecl.cvs | ||
| Request: | Send a blank email to pecl-cvs+get-5253@lists.php.net to get a copy of this message | ||
pajoye Fri Feb 24 00:38:45 2006 UTC
Modified files:
/pecl/zip php_zip.c
Log:
- implement extractAll in extractTo method (Martin Jansen)
http://cvs.php.net/viewcvs.cgi/pecl/zip/php_zip.c?r1=1.12&r2=1.13&diff_format=u
Index: pecl/zip/php_zip.c
diff -u pecl/zip/php_zip.c:1.12 pecl/zip/php_zip.c:1.13
--- pecl/zip/php_zip.c:1.12 Mon Jan 23 16:18:33 2006
+++ pecl/zip/php_zip.c Fri Feb 24 00:38:45 2006
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_zip.c,v 1.12 2006/01/23 16:18:33 pajoye Exp $ */
+/* $Id: php_zip.c,v 1.13 2006/02/24 00:38:45 pajoye Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -738,6 +738,7 @@
ze_zip_object *ze_obj;
zval *zval_files = NULL;
zval **zval_file = NULL;
+ php_stream_statbuf ssb;
char *pathto;
char *file;
int pathto_len;
@@ -759,8 +760,13 @@
RETURN_FALSE;
}
- /* do a stat 1st, but I'm lazy now */
- ret = php_stream_mkdir(pathto, 0777, PHP_STREAM_MKDIR_RECURSIVE, NULL);
+ 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) {
@@ -797,9 +803,22 @@
break;
}
} else {
- /* extract all files */
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Extract all files not yet implemented");
- }
+ /* 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 = zip_get_name(intern, i, ZIP_FL_UNCHANGED);
+ if (!zip_extract_file(intern, pathto, file TSRMLS_CC)) {
+ RETURN_FALSE;
+ }
+ }
+ }
+
RETURN_TRUE;
}
/* }}} */
@@ -950,7 +969,7 @@
php_info_print_table_start();
{
php_info_print_table_row(2, "Zip", "enabled");
- php_info_print_table_row(2, "$Id: php_zip.c,v 1.12 2006/01/23 16:18:33 pajoye Exp $",
"enabled");
+ php_info_print_table_row(2, "$Id: php_zip.c,v 1.13 2006/02/24 00:38:45 pajoye Exp $",
"enabled");
php_info_print_table_row(2, "Libzip version", "0.6.1");
}
php_info_print_table_end();