cvs: /php4 TODO /php4/ext/standard basic_functions.c basic_functions.h
| From: | Andrei Zmievski | 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;