From 648dd88b42ffeda9922611a7ce7e83416382c381 Mon Sep 17 00:00:00 2001 From: Ilia Alshanetsky Date: Fri, 27 Dec 2002 22:47:06 +0000 Subject: [PATCH] Added apache_get_version() & apache_get_modules() to Apache 1.X & Apache Hooks sapis. Made the module listing in Apache 2 not show the '.c' portion, to be consistent with Apache 1.X. --- sapi/apache/php_apache.c | 33 ++++++++++++++++++++++++++++++ sapi/apache2filter/php_functions.c | 18 +++++++++++++--- sapi/apache_hooks/php_apache.c | 33 ++++++++++++++++++++++++++++++ 3 files changed, 81 insertions(+), 3 deletions(-) diff --git a/sapi/apache/php_apache.c b/sapi/apache/php_apache.c index 1d64f2e53e..17d455e773 100644 --- a/sapi/apache/php_apache.c +++ b/sapi/apache/php_apache.c @@ -35,6 +35,7 @@ php_apache_info_struct php_apache_info; #define SECTION(name) PUTS("

" name "

\n") extern module *top_module; +extern module **ap_loaded_modules; PHP_FUNCTION(virtual); PHP_FUNCTION(apache_request_headers); @@ -44,6 +45,8 @@ PHP_FUNCTION(apache_note); PHP_FUNCTION(apache_lookup_uri); PHP_FUNCTION(apache_child_terminate); PHP_FUNCTION(apache_setenv); +PHP_FUNCTION(apache_get_version); +PHP_FUNCTION(apache_get_modules); PHP_MINFO_FUNCTION(apache); @@ -55,6 +58,8 @@ function_entry apache_functions[] = { PHP_FE(apache_child_terminate, NULL) PHP_FE(apache_setenv, NULL) PHP_FE(apache_response_headers, NULL) + PHP_FE(apache_get_version, NULL) + PHP_FE(apache_get_modules, NULL) PHP_FALIAS(getallheaders, apache_request_headers, NULL) {NULL, NULL, NULL} }; @@ -498,6 +503,34 @@ PHP_FUNCTION(apache_exec_uri) } #endif +/* {{{ proto string apache_get_version(void) + Fetch Apache version */ +PHP_FUNCTION(apache_get_version) +{ + RETURN_STRING(SERVER_VERSION, 1); +} +/* }}} */ + +/* {{{ proto array apache_get_modules(void) + Get a list of loaded Apache modules */ +PHP_FUNCTION(apache_get_modules) +{ + int n; + char *p; + + array_init(return_value); + + for (n = 0; ap_loaded_modules[n]; ++n) { + char *s = (char *) ap_loaded_modules[n]->name; + if ((p = strchr(s, '.'))) { + add_next_index_stringl(return_value, s, (p - s), 1); + } else { + add_next_index_string(return_value, s, 1); + } + } +} +/* }}} */ + /* * Local variables: * tab-width: 4 diff --git a/sapi/apache2filter/php_functions.c b/sapi/apache2filter/php_functions.c index 4959fb91c7..a87e38e5f0 100644 --- a/sapi/apache2filter/php_functions.c +++ b/sapi/apache2filter/php_functions.c @@ -314,11 +314,17 @@ PHP_FUNCTION(apache_get_version) PHP_FUNCTION(apache_get_modules) { int n; + char *p; array_init(return_value); for (n = 0; ap_loaded_modules[n]; ++n) { - add_next_index_string(return_value, (char *) ap_loaded_modules[n]->name, 1); + char *s = (char *) ap_loaded_modules[n]->name; + if ((p = strchr(s, '.'))) { + add_next_index_stringl(return_value, s, (p - s), 1); + } else { + add_next_index_string(return_value, s, 1); + } } } /* }}} */ @@ -328,9 +334,15 @@ PHP_MINFO_FUNCTION(apache) char *apv = php_apache_get_version(); smart_str tmp1 = {0}; int n; + char *p; for (n = 0; ap_loaded_modules[n]; ++n) { - smart_str_appends(&tmp1, ap_loaded_modules[n]->name); + char *s = (char *) ap_loaded_modules[n]->name; + if ((p = strchr(s, '.'))) { + smart_str_appendl(&tmp1, s, (p - s)); + } else { + smart_str_appends(&tmp1, s); + } smart_str_appendc(&tmp1, ' '); } @@ -338,7 +350,7 @@ PHP_MINFO_FUNCTION(apache) if (apv && *apv) { php_info_print_table_row(2, "Apache Version", apv); } - php_info_print_table_row(2, "Loaded Apache Modules", tmp1.c); + php_info_print_table_row(2, "Loaded Modules", tmp1.c); smart_str_free(&tmp1); php_info_print_table_end(); } diff --git a/sapi/apache_hooks/php_apache.c b/sapi/apache_hooks/php_apache.c index e8006e2f0d..e8cd54d53b 100644 --- a/sapi/apache_hooks/php_apache.c +++ b/sapi/apache_hooks/php_apache.c @@ -40,6 +40,7 @@ php_apache_info_struct php_apache_info; #define offsetof(s_type,field) ((size_t)&(((s_type*)0)->field)) extern module *top_module; +extern module **ap_loaded_modules; static int le_apachereq; static zend_class_entry *apacherequest_class_entry; @@ -53,6 +54,8 @@ PHP_FUNCTION(apache_note); PHP_FUNCTION(apache_lookup_uri); PHP_FUNCTION(apache_child_terminate); PHP_FUNCTION(apache_setenv); +PHP_FUNCTION(apache_get_version); +PHP_FUNCTION(apache_get_modules); PHP_MINFO_FUNCTION(apache); @@ -65,6 +68,8 @@ function_entry apache_functions[] = { PHP_FE(apache_child_terminate, NULL) PHP_FE(apache_setenv, NULL) PHP_FE(apache_response_headers, NULL) + PHP_FE(apache_get_version, NULL) + PHP_FE(apache_get_modules, NULL) PHP_FALIAS(getallheaders, apache_request_headers, NULL) {NULL, NULL, NULL} }; @@ -1907,6 +1912,34 @@ PHP_FUNCTION(apache_exec_uri) } #endif +/* {{{ proto string apache_get_version(void) + Fetch Apache version */ +PHP_FUNCTION(apache_get_version) +{ + RETURN_STRING(SERVER_VERSION, 1); +} +/* }}} */ + +/* {{{ proto array apache_get_modules(void) + Get a list of loaded Apache modules */ +PHP_FUNCTION(apache_get_modules) +{ + int n; + char *p; + + array_init(return_value); + + for (n = 0; ap_loaded_modules[n]; ++n) { + char *s = (char *) ap_loaded_modules[n]->name; + if ((p = strchr(s, '.'))) { + add_next_index_stringl(return_value, s, (p - s), 1); + } else { + add_next_index_string(return_value, s, 1); + } + } +} +/* }}} */ + /* * Local variables: * tab-width: 4 -- 2.40.0