cvs: pecl /zip php_zip.c

From: 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();

« previous php.pecl.cvs (#5253) next »