diff options
| author | Ilia Alshanetsky <iliaa@php.net> | 2002-12-27 22:47:06 +0000 | 
|---|---|---|
| committer | Ilia Alshanetsky <iliaa@php.net> | 2002-12-27 22:47:06 +0000 | 
| commit | 648dd88b42ffeda9922611a7ce7e83416382c381 (patch) | |
| tree | a38b8deae950a28cb84e3ed44797dc45c10708ec | |
| parent | 572394db74cef01dbc7ab0a6bb3dada25b730f0a (diff) | |
| download | php-git-648dd88b42ffeda9922611a7ce7e83416382c381.tar.gz | |
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.
| -rw-r--r-- | sapi/apache/php_apache.c | 33 | ||||
| -rw-r--r-- | sapi/apache2filter/php_functions.c | 18 | ||||
| -rw-r--r-- | 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("<h2>" name "</h2>\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  | 
