cvs: /php4 TODO /php4/ext/standard basic_functions.c basic_functions.h

From: Date: Thu, 16 Dec 1999 23:47:41 +0000
Subject: cvs: /php4 TODO /php4/ext/standard basic_functions.c basic_functions.h
Groups: php.version4 
Request: Send a blank email to php-version4+get-8021@lists.php.net to get a copy of this message
andrei Thu Dec 16 18:47:41 1999 EDT Modified files: /php4 TODO /php4/ext/standard basic_functions.c basic_functions.h Log: Added get_loaded_extensions(), extension_loaded(), and get_extension_funcs() functions. @ Added get_loaded_extensions(), extension_loaded(), and get_extension_funcs() functions. (Andrei) Index: php4/TODO diff -u php4/TODO:1.21 php4/TODO:1.22 --- php4/TODO:1.21 Thu Dec 16 12:48:32 1999 +++ php4/TODO Thu Dec 16 18:47:10 1999 @@ -26,10 +26,7 @@ ext/standard ------------ * strpad() (Andrei) - * comparing arrays semantically (Andrei) - * get_loaded_extensions() - extension_loaded() - get_extension_funcs() (Andrei) + * comparing arrays semantically (like Python) (Andrei) * NOT binary safe: strtok() basename() Index: php4/ext/standard/basic_functions.c diff -u php4/ext/standard/basic_functions.c:1.136 php4/ext/standard/basic_functions.c:1.137 --- php4/ext/standard/basic_functions.c:1.136 Tue Dec 14 17:15:55 1999 +++ php4/ext/standard/basic_functions.c Thu Dec 16 18:47:10 1999 @@ -309,6 +309,10 @@ PHP_FE(connection_status, NULL) PHP_FE(ignore_user_abort, NULL) + PHP_FE(get_loaded_extensions, NULL) + PHP_FE(extension_loaded, NULL) + PHP_FE(get_extension_funcs, NULL) + {NULL, NULL, NULL} }; @@ -1496,6 +1500,75 @@ RETURN_FALSE; RETURN_STRING(ent->p_name,1); +} +/* }}} */ + + +static int php_add_extension_info(zend_module_entry *module, void *arg) +{ + zval *name_array = (zval *)arg; + add_next_index_string(name_array, module->name, 1); + return 0; +} + +/* {{{ proto array get_loaded_extensions(void) + Return an array containing names of loaded extensions */ +PHP_FUNCTION(get_loaded_extensions) +{ + if (ARG_COUNT(ht) != 0) { + WRONG_PARAM_COUNT; + } + + array_init(return_value); + zend_hash_apply_with_argument(&module_registry, (int (*)(void *, void*)) php_add_extension_info, return_value); +} +/* }}} */ + + +/* {{{ proto bool extension_loaded(string extension_name) + Returns true if the named extension is loaded */ +PHP_FUNCTION(extension_loaded) +{ + zval **extension_name; + + if (ARG_COUNT(ht) != 1 || getParametersEx(1, &extension_name)) { + WRONG_PARAM_COUNT; + } + + convert_to_string_ex(extension_name); + if (zend_hash_exists(&module_registry, (*extension_name)->value.str.val, (*extension_name)->value.str.len+1)) { + RETURN_TRUE; + } else { + RETURN_FALSE; + } +} +/* }}} */ + + +/* proto array get_extension_funcs(string extension_name) + Returns an array with the names of functions belonging to the named extension */ +PHP_FUNCTION(get_extension_funcs) +{ + zval **extension_name; + zend_module_entry *module; + zend_function_entry *func; + + if (ARG_COUNT(ht) != 1 || getParametersEx(1, &extension_name)) { + WRONG_PARAM_COUNT; + } + + convert_to_string_ex(extension_name); + if (zend_hash_find(&module_registry, (*extension_name)->value.str.val, + (*extension_name)->value.str.len+1, (void**)&module) == FAILURE) { + return; + } + + array_init(return_value); + func = module->functions; + while(func->fname) { + add_next_index_string(return_value, func->fname, 1); + func++; + } } /* }}} */ Index: php4/ext/standard/basic_functions.h diff -u php4/ext/standard/basic_functions.h:1.36 php4/ext/standard/basic_functions.h:1.37 --- php4/ext/standard/basic_functions.h:1.36 Tue Dec 14 17:15:55 1999 +++ php4/ext/standard/basic_functions.h Thu Dec 16 18:47:10 1999 @@ -29,7 +29,7 @@ */ -/* $Id: basic_functions.h,v 1.36 1999/12/14 22:15:55 andrei Exp $ */ +/* $Id: basic_functions.h,v 1.37 1999/12/16 23:47:10 andrei Exp $ */ #ifndef _BASIC_FUNCTIONS_H #define _BASIC_FUNCTIONS_H @@ -102,6 +102,10 @@ PHP_FUNCTION(getservbyport); PHP_FUNCTION(getprotobyname); PHP_FUNCTION(getprotobynumber); + +PHP_FUNCTION(get_loaded_extensions); +PHP_FUNCTION(extension_loaded); +PHP_FUNCTION(get_extension_funcs); #if MSVC5 typedef unsigned int php_stat_len;

« previous php.version4 (#8021) next »