cvs: ZendEngine2(PHP_5_2) / zend_builtin_functions.c /tests 017.phpt

From: Date: Tue, 31 Jul 2007 22:47:25 +0000
Subject: cvs: ZendEngine2(PHP_5_2) / zend_builtin_functions.c /tests 017.phpt
Groups: php.doc php.zend-engine.cvs 
Request: Send a blank email to phpdoc+get-969377197@lists.php.net to get a copy of this message
johannes Tue Jul 31 22:47:25 2007 UTC Modified files: (Branch: PHP_5_2) /ZendEngine2 zend_builtin_functions.c /ZendEngine2/tests 017.phpt Log: - MFH: Add additional param to get_loaded_extensions() for returning Zend extensions (Fixes #41278) [DOC] http://cvs.php.net/viewvc.cgi/ZendEngine2/zend_builtin_functions.c?r1=1.277.2.12.2.19&r2=1.277.2.12.2.20&diff_format=u Index: ZendEngine2/zend_builtin_functions.c diff -u ZendEngine2/zend_builtin_functions.c:1.277.2.12.2.19 ZendEngine2/zend_builtin_functions.c:1.277.2.12.2.20 --- ZendEngine2/zend_builtin_functions.c:1.277.2.12.2.19 Tue Jul 24 11:39:55 2007 +++ ZendEngine2/zend_builtin_functions.c Tue Jul 31 22:47:25 2007 @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: zend_builtin_functions.c,v 1.277.2.12.2.19 2007/07/24 11:39:55 dmitry Exp $ */ +/* $Id: zend_builtin_functions.c,v 1.277.2.12.2.20 2007/07/31 22:47:25 johannes Exp $ */ #include "zend.h" #include "zend_API.h" @@ -25,6 +25,7 @@ #include "zend_constants.h" #include "zend_ini.h" #include "zend_exceptions.h" +#include "zend_extensions.h" #undef ZEND_TEST_EXCEPTIONS @@ -1548,6 +1549,13 @@ return 0; } +static int add_zendext_info(zend_extension *ext, void *arg TSRMLS_DC) +{ + zval *name_array = (zval *)arg; + add_next_index_string(name_array, ext->name, 1); + return 0; +} + static int add_constant_info(zend_constant *constant, void *arg TSRMLS_DC) { zval *name_array = (zval *)arg; @@ -1562,16 +1570,34 @@ } -/* {{{ proto array get_loaded_extensions(void) +/* {{{ proto array get_loaded_extensions([mixed categorize]) U Return an array containing names of loaded extensions */ ZEND_FUNCTION(get_loaded_extensions) { - if (ZEND_NUM_ARGS() != 0) { + int argc = ZEND_NUM_ARGS(); + + if (argc != 0 && argc != 1) { ZEND_WRONG_PARAM_COUNT(); } array_init(return_value); - zend_hash_apply_with_argument(&module_registry, (apply_func_arg_t) add_extension_info, return_value TSRMLS_CC); + + if (argc) { + zval *modules; + zval *extensions; + + MAKE_STD_ZVAL(modules); + array_init(modules); + zend_hash_apply_with_argument(&module_registry, (apply_func_arg_t) add_extension_info, modules TSRMLS_CC); + add_assoc_zval_ex(return_value, "PHP Modules", sizeof("PHP Modules"), modules); + + MAKE_STD_ZVAL(extensions); + array_init(extensions); + zend_llist_apply_with_argument(&zend_extensions, (llist_apply_with_arg_func_t) add_zendext_info, extensions TSRMLS_CC); + add_assoc_zval_ex(return_value, "Zend Extensions", sizeof("Zend Extensions"), extensions); + } else { + zend_hash_apply_with_argument(&module_registry, (apply_func_arg_t) add_extension_info, return_value TSRMLS_CC); + } } /* }}} */ http://cvs.php.net/viewvc.cgi/ZendEngine2/tests/017.phpt?r1=1.1.2.2&r2=1.1.2.3&diff_format=u Index: ZendEngine2/tests/017.phpt diff -u ZendEngine2/tests/017.phpt:1.1.2.2 ZendEngine2/tests/017.phpt:1.1.2.3 --- ZendEngine2/tests/017.phpt:1.1.2.2 Tue Nov 21 11:11:39 2006 +++ ZendEngine2/tests/017.phpt Tue Jul 31 22:47:25 2007 @@ -10,9 +10,9 @@ fclose($fp); var_dump(get_resource_type($fp)); -var_dump(get_loaded_extensions(true)); var_dump(gettype(get_loaded_extensions())); var_dump(count(get_loaded_extensions())); +var_dump(count(get_loaded_extensions(true))); define("USER_CONSTANT", "test"); @@ -50,11 +50,9 @@ bool(false) string(6) "stream" string(7) "Unknown" - -Warning: Wrong parameter count for get_loaded_extensions() in %s on line %d -NULL string(5) "array" int(%d) +int(2) Warning: Wrong parameter count for get_defined_constants() in %s on line %d NULL

« previous php.doc (#969377197) next »