From: Greg Beaver Date: Thu, 17 Jan 2008 05:52:18 +0000 (+0000) Subject: do fancy-shmancy zip dependency validation because ZEND_MOD_OPTIONAL_EX doesn't do... X-Git-Tag: RELEASE_2_0_0a1~865 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=e4c02a6b96640f3bc4deef00df717a4e09734e6a;p=php do fancy-shmancy zip dependency validation because ZEND_MOD_OPTIONAL_EX doesn't do any version validation --- diff --git a/ext/phar/phar.c b/ext/phar/phar.c index 00b9a7477e..ecc318f388 100644 --- a/ext/phar/phar.c +++ b/ext/phar/phar.c @@ -3191,12 +3191,24 @@ skip_phar: PHP_MINIT_FUNCTION(phar) /* {{{ */ { + zend_module_entry *test; + ZEND_INIT_MODULE_GLOBALS(phar, php_phar_init_globals_module, NULL); REGISTER_INI_ENTRIES(); phar_has_bz2 = zend_hash_exists(&module_registry, "bz2", sizeof("bz2")); phar_has_zlib = zend_hash_exists(&module_registry, "zlib", sizeof("zlib")); - phar_has_zip = zend_hash_exists(&module_registry, "zip", sizeof("zip")); + if (SUCCESS == zend_hash_find(&module_registry, "zip", sizeof("zip"), (void **) &test)) { + if (strlen(test->version) == sizeof("1.8.11")-1 && !strncmp(test->version, "1.8.11", sizeof("1.8.11")-1)) { + phar_has_zip = 1; + } else { + phar_has_zip = 0; + } + phar_zip_ver = test->version; + } else { + phar_has_zip = 0; + phar_zip_ver = NULL; + } phar_orig_compile_file = zend_compile_file; zend_compile_file = phar_compile_file; @@ -3280,7 +3292,14 @@ PHP_MINFO_FUNCTION(phar) /* {{{ */ if (phar_has_zip) { php_info_print_table_row(2, "ZIP-based phar archives", "enabled"); } else { - php_info_print_table_row(2, "ZIP-based phar archives", "disabled (install pecl/zip)"); + if (phar_zip_ver) { + char *tmp; + spprintf(&tmp, 0, "disabled (pecl/zip version %s installed, we need zip >= 1.8.11)", phar_zip_ver); + php_info_print_table_row(2, "ZIP-based phar archives", tmp); + efree(tmp); + } else { + php_info_print_table_row(2, "ZIP-based phar archives", "disabled (install pecl/zip)"); + } } #else php_info_print_table_row(2, "ZIP-based phar archives", "unavailable"); @@ -3313,7 +3332,7 @@ PHP_MINFO_FUNCTION(phar) /* {{{ */ */ static zend_module_dep phar_deps[] = { #if HAVE_PHAR_ZIP - ZEND_MOD_OPTIONAL_EX("zip", ">=", "1.8.11") + ZEND_MOD_OPTIONAL("zip") #endif ZEND_MOD_OPTIONAL("zlib") ZEND_MOD_OPTIONAL("bz2") diff --git a/ext/phar/phar_internal.h b/ext/phar/phar_internal.h index 7e718eaa4b..4fc713ae46 100755 --- a/ext/phar/phar_internal.h +++ b/ext/phar/phar_internal.h @@ -171,6 +171,7 @@ ZEND_EXTERN_MODULE_GLOBALS(phar) int phar_has_bz2; int phar_has_zlib; int phar_has_zip; +char *phar_zip_ver; #ifdef ZTS # include "TSRM.h"