Hooks sapis.
Made the module listing in Apache 2 not show the '.c' portion, to be
consistent with Apache 1.X.
#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);
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);
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}
};
}
#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
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);
+ }
}
}
/* }}} */
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, ' ');
}
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();
}
#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;
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);
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}
};
}
#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