summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cgi_main.c37
-rw-r--r--ext/apache/apache.c4
-rw-r--r--ext/dav/dav.c4
-rw-r--r--ext/db/db.c2
-rw-r--r--ext/db/php3_db.h2
-rw-r--r--ext/fdf/fdf.c2
-rw-r--r--ext/fdf/php3_fdf.h2
-rw-r--r--ext/gd/gd.c2
-rw-r--r--ext/gettext/gettext.c2
-rw-r--r--ext/gettext/php3_gettext.h2
-rw-r--r--ext/hyperwave/hw.c6
-rw-r--r--ext/hyperwave/hw.h2
-rw-r--r--ext/informix/php3_ifx.h2
-rw-r--r--ext/interbase/interbase.c2
-rw-r--r--ext/interbase/php3_interbase.h2
-rw-r--r--ext/ldap/ldap.c2
-rw-r--r--ext/ldap/php3_ldap.h2
-rw-r--r--ext/msql/msql.c2
-rw-r--r--ext/msql/php3_msql.h2
-rw-r--r--ext/mysql/mysql.c2
-rw-r--r--ext/mysql/php3_mysql.h2
-rw-r--r--ext/odbc/odbc.c2
-rw-r--r--ext/odbc/php3_odbc.h2
-rw-r--r--ext/odbc/php3_velocis.h4
-rw-r--r--ext/odbc/velocis.c2
-rw-r--r--ext/oracle/oci8.c4
-rw-r--r--ext/oracle/oracle.c2
-rw-r--r--ext/oracle/oracle.h2
-rw-r--r--ext/pdf/pdf.c2
-rw-r--r--ext/pdf/php3_pdf.h2
-rw-r--r--ext/rpc/com/COM.c11
-rw-r--r--ext/snmp/php3_snmp.h2
-rw-r--r--ext/snmp/snmp.c2
-rw-r--r--ext/standard/dl.c2
-rw-r--r--ext/standard/dl.h2
-rw-r--r--ext/standard/head.c104
-rw-r--r--ext/standard/info.c259
-rw-r--r--ext/standard/info.h8
-rw-r--r--ext/standard/mail.c4
-rw-r--r--ext/standard/php3_mail.h2
-rw-r--r--ext/standard/post.c11
-rw-r--r--ext/sybase/php3_sybase-ct.h2
-rw-r--r--ext/sybase/php3_sybase.h2
-rw-r--r--ext/sybase/sybase-ct.c2
-rw-r--r--ext/sybase/sybase.c2
-rw-r--r--ext/xml/xml.c4
-rw-r--r--ext/zlib/php3_zlib.h2
-rw-r--r--ext/zlib/zlib.c2
-rw-r--r--main/SAPI.c32
-rw-r--r--main/SAPI.h13
-rw-r--r--main/main.c47
-rw-r--r--main/php_ini.c128
-rw-r--r--main/php_ini.h56
-rw-r--r--mod_php3.c61
-rw-r--r--request_info.c12
-rw-r--r--request_info.h5
56 files changed, 540 insertions, 344 deletions
diff --git a/cgi_main.c b/cgi_main.c
index fa438d6eac..e34d0e7e37 100644
--- a/cgi_main.c
+++ b/cgi_main.c
@@ -85,6 +85,29 @@ static void sapi_cgi_send_header(sapi_header_struct *sapi_header, void *server_c
}
+static char *sapi_cgi_read_post(SLS_D)
+{
+ uint read_bytes=0, tmp_read_bytes;
+ char *result = (char *) emalloc(SG(request_info).content_length+1);
+
+ while (read_bytes < SG(request_info).content_length) {
+ tmp_read_bytes = read(0, result+read_bytes, SG(request_info).content_length-read_bytes);
+ if (tmp_read_bytes<=0) {
+ break;
+ }
+ read_bytes += tmp_read_bytes;
+ }
+ result[read_bytes]=0;
+ return result;
+}
+
+
+static char *sapi_cgi_read_cookies(SLS_D)
+{
+ return getenv("HTTP_COOKIE");
+}
+
+
static sapi_module_struct sapi_module = {
"PHP Language", /* name */
@@ -98,6 +121,9 @@ static sapi_module_struct sapi_module = {
NULL, /* header handler */
NULL, /* send headers handler */
sapi_cgi_send_header, /* send header handler */
+
+ sapi_cgi_read_post, /* read POST data */
+ sapi_cgi_read_cookies /* read Cookies */
};
@@ -132,15 +158,19 @@ static void php_cgi_usage(char *argv0)
static void init_request_info(SLS_D)
{
- char *request_method = getenv("REQUEST_METHOD");
+ char *content_length = getenv("CONTENT_LENGTH");
+ SG(request_info).request_method = getenv("REQUEST_METHOD");
SG(request_info).query_string = getenv("QUERY_STRING");
SG(request_info).request_uri = getenv("PATH_INFO");
- if (request_method && !strcmp(request_method, "HEAD")) {
+ SG(request_info).path_translated = NULL; /* we have to update it later, when we have that information */
+ if (SG(request_info).request_method && !strcmp(SG(request_info).request_method, "HEAD")) {
SG(request_info).headers_only = 1;
} else {
SG(request_info).headers_only = 0;
}
+ SG(request_info).content_type = getenv("CONTENT_TYPE");
+ SG(request_info).content_length = (content_length?atoi(content_length):0);
}
@@ -229,6 +259,8 @@ any .htaccess restrictions anywhere on your site you can leave doc_root undefine
sapi_globals = ts_resource(sapi_globals_id);
#endif
+ init_request_info(SLS_C);
+ SG(server_context) = (void *) 1; /* avoid server_context==NULL checks */
CG(extended_info) = 0;
if (!cgi) { /* never execute the arguments if you are a CGI */
@@ -322,7 +354,6 @@ any .htaccess restrictions anywhere on your site you can leave doc_root undefine
php3_TreatHeaders();
- init_request_info(SLS_C);
if (!cgi) {
if (!SG(request_info).query_string) {
diff --git a/ext/apache/apache.c b/ext/apache/apache.c
index c5085f749e..d3a390eba6 100644
--- a/ext/apache/apache.c
+++ b/ext/apache/apache.c
@@ -54,7 +54,7 @@ extern module *top_module;
void php3_virtual(INTERNAL_FUNCTION_PARAMETERS);
void php3_getallheaders(INTERNAL_FUNCTION_PARAMETERS);
void php3_apachelog(INTERNAL_FUNCTION_PARAMETERS);
-void php3_info_apache(void);
+void php3_info_apache(ZEND_MODULE_INFO_FUNC_ARGS);
void php3_apache_note(INTERNAL_FUNCTION_PARAMETERS);
void php3_apache_lookup_uri(INTERNAL_FUNCTION_PARAMETERS);
@@ -154,7 +154,7 @@ void php3_apache_note(INTERNAL_FUNCTION_PARAMETERS)
}
/* }}} */
-void php3_info_apache(void) {
+void php3_info_apache(ZEND_MODULE_INFO_FUNC_ARGS) {
module *modp = NULL;
#if !defined(WIN32) && !defined(WINNT)
char name[64];
diff --git a/ext/dav/dav.c b/ext/dav/dav.c
index 967b1a6757..6f00f0b1d4 100644
--- a/ext/dav/dav.c
+++ b/ext/dav/dav.c
@@ -91,7 +91,7 @@ int php3_minit_phpdav(INIT_FUNC_ARGS);
int php3_rinit_phpdav(INIT_FUNC_ARGS);
int php3_mshutdown_phpdav(SHUTDOWN_FUNC_ARGS);
int php3_rshutdown_phpdav(SHUTDOWN_FUNC_ARGS);
-void php3_info_phpdav(void);
+void php3_info_phpdav(ZEND_MODULE_INFO_FUNC_ARGS);
/* }}} */
/* {{{ extension definition structures */
@@ -186,7 +186,7 @@ int php3_rshutdown_phpdav(SHUTDOWN_FUNC_ARGS)
/* }}} */
/* {{{ php3_info_phpdav() */
-void php3_info_phpdav()
+void php3_info_phpdav(ZEND_MODULE_INFO_FUNC_ARGS)
{
}
diff --git a/ext/db/db.c b/ext/db/db.c
index 70ba058b03..ef1502a7f2 100644
--- a/ext/db/db.c
+++ b/ext/db/db.c
@@ -251,7 +251,7 @@ static char *php3_get_info_db(void)
}
-void php3_info_db(void)
+void php3_info_db(ZEND_MODULE_INFO_FUNC_ARGS)
{
php3_printf(php3_get_info_db());
}
diff --git a/ext/db/php3_db.h b/ext/db/php3_db.h
index ded7774ffd..08039d5640 100644
--- a/ext/db/php3_db.h
+++ b/ext/db/php3_db.h
@@ -76,7 +76,7 @@ char *_php3_dbmnextkey(dbm_info *info, char *key);
/* db file functions */
extern int php3_minit_db(INIT_FUNC_ARGS);
extern int php3_rinit_db(INIT_FUNC_ARGS);
-extern void php3_info_db(void);
+extern void php3_info_db(ZEND_MODULE_INFO_FUNC_ARGS);
extern void php3_dblist(INTERNAL_FUNCTION_PARAMETERS);
extern void php3_dbmopen(INTERNAL_FUNCTION_PARAMETERS);
extern void php3_dbmclose(INTERNAL_FUNCTION_PARAMETERS);
diff --git a/ext/fdf/fdf.c b/ext/fdf/fdf.c
index e16b6bcb82..e0a0a55a00 100644
--- a/ext/fdf/fdf.c
+++ b/ext/fdf/fdf.c
@@ -109,7 +109,7 @@ int php3_minit_fdf(INIT_FUNC_ARGS)
return SUCCESS;
}
-void php3_info_fdf(void) {
+void php3_info_fdf(ZEND_MODULE_INFO_FUNC_ARGS) {
/* need to use a PHPAPI function here because it is external module in windows */
php3_printf("FdfTk Version %s", FDFGetVersion());
}
diff --git a/ext/fdf/php3_fdf.h b/ext/fdf/php3_fdf.h
index 08f7bee509..4a83c62468 100644
--- a/ext/fdf/php3_fdf.h
+++ b/ext/fdf/php3_fdf.h
@@ -44,7 +44,7 @@ extern php3_module_entry fdf_module_entry;
extern int php3_minit_fdf(INIT_FUNC_ARGS);
extern int php3_mend_fdf(void);
-extern void php3_info_fdf(void);
+extern void php3_info_fdf(ZEND_MODULE_INFO_FUNC_ARGS);
extern void php3_fdf_open(INTERNAL_FUNCTION_PARAMETERS);
extern void php3_fdf_close(INTERNAL_FUNCTION_PARAMETERS);
extern void php3_fdf_create(INTERNAL_FUNCTION_PARAMETERS);
diff --git a/ext/gd/gd.c b/ext/gd/gd.c
index eafea09750..f71b129a17 100644
--- a/ext/gd/gd.c
+++ b/ext/gd/gd.c
@@ -178,7 +178,7 @@ int php3_minit_gd(INIT_FUNC_ARGS)
return SUCCESS;
}
-void php3_info_gd(void) {
+void php3_info_gd(ZEND_MODULE_INFO_FUNC_ARGS) {
/* need to use a PHPAPI function here because it is external module in windows */
#if HAVE_LIBGD13
php3_printf("Version 1.3");
diff --git a/ext/gettext/gettext.c b/ext/gettext/gettext.c
index 69166d18df..1c9a9fefd1 100644
--- a/ext/gettext/gettext.c
+++ b/ext/gettext/gettext.c
@@ -52,7 +52,7 @@ php3_module_entry php3_gettext_module_entry = {
"gettext", php3_gettext_functions, NULL, NULL, NULL, NULL, php3_info_gettext, STANDARD_MODULE_PROPERTIES
};
-void php3_info_gettext(void)
+void php3_info_gettext(ZEND_MODULE_INFO_FUNC_ARGS)
{
php3_printf("GNU gettext support active.");
}
diff --git a/ext/gettext/php3_gettext.h b/ext/gettext/php3_gettext.h
index eb7b851b4a..b3ae0131d5 100644
--- a/ext/gettext/php3_gettext.h
+++ b/ext/gettext/php3_gettext.h
@@ -40,7 +40,7 @@
extern php3_module_entry php3_gettext_module_entry;
#define php3_gettext_module_ptr &php3_gettext_module_entry
-extern void php3_info_gettext(void);
+extern void php3_info_gettext(ZEND_MODULE_INFO_FUNC_ARGS);
extern void php3_textdomain(INTERNAL_FUNCTION_PARAMETERS);
extern void php3_gettext(INTERNAL_FUNCTION_PARAMETERS);
extern void php3_dgettext(INTERNAL_FUNCTION_PARAMETERS);
diff --git a/ext/hyperwave/hw.c b/ext/hyperwave/hw.c
index f2380dde05..dcee8874d5 100644
--- a/ext/hyperwave/hw.c
+++ b/ext/hyperwave/hw.c
@@ -1531,7 +1531,7 @@ void php3_hw_getcgi(INTERNAL_FUNCTION_PARAMETERS) {
getenv("QUERY_STRING"));
#else
sprintf(cgi_env_str, "CGI_REQUEST_METHOD=%s\nCGI_PATH_INFO=%s\nCGI_QUERY_STRING=%s",
- request_info.request_method,
+ SG(request_info).request_method,
SG(request_info).request_uri,
SG(request_info).query_string);
#endif
@@ -1783,7 +1783,7 @@ void php3_hw_pipecgi(INTERNAL_FUNCTION_PARAMETERS) {
getenv("QUERY_STRING"));
#else
sprintf(cgi_env_str, "CGI_REQUEST_METHOD=%s\nCGI_PATH_INFO=%s\nCGI_QUERY_STRING=%s",
- request_info.request_method,
+ SG(request_info).request_method,
SG(request_info).request_uri,
SG(request_info).query_string);
#endif
@@ -2959,7 +2959,7 @@ void php3_hw_getrellink(INTERNAL_FUNCTION_PARAMETERS) {
/* }}} */
-void php3_info_hw()
+void php3_info_hw(ZEND_MODULE_INFO_FUNC_ARGS)
{
php3_printf("HG-CSP Version: 7.17");
}
diff --git a/ext/hyperwave/hw.h b/ext/hyperwave/hw.h
index 21c2e6ad07..4f4fd11219 100644
--- a/ext/hyperwave/hw.h
+++ b/ext/hyperwave/hw.h
@@ -109,7 +109,7 @@ extern void php3_hw_document_content(INTERNAL_FUNCTION_PARAMETERS);
extern void php3_hw_objrec2array(INTERNAL_FUNCTION_PARAMETERS);
extern void php3_hw_array2objrec(INTERNAL_FUNCTION_PARAMETERS);
extern void php3_hw_connection_info(INTERNAL_FUNCTION_PARAMETERS);
-extern void php3_info_hw(void);
+extern void php3_info_hw(ZEND_MODULE_INFO_FUNC_ARGS);
extern void php3_hw_getsrcbydestobj(INTERNAL_FUNCTION_PARAMETERS);
extern void php3_hw_getrellink(INTERNAL_FUNCTION_PARAMETERS);
extern void php3_hw_dummy(INTERNAL_FUNCTION_PARAMETERS);
diff --git a/ext/informix/php3_ifx.h b/ext/informix/php3_ifx.h
index d06cf16600..d64bb2c403 100644
--- a/ext/informix/php3_ifx.h
+++ b/ext/informix/php3_ifx.h
@@ -56,7 +56,7 @@ extern php3_module_entry ifx_module_entry;
extern int php3_minit_ifx(INIT_FUNC_ARGS);
extern int php3_rinit_ifx(INIT_FUNC_ARGS);
extern int php3_mshutdown_ifx(SHUTDOWN_FUNC_ARGS);
-extern void php3_info_ifx(void);
+extern void php3_info_ifx(ZEND_MODULE_INFO_FUNC_ARGS);
extern void php3_ifx_connect(INTERNAL_FUNCTION_PARAMETERS);
extern void php3_ifx_pconnect(INTERNAL_FUNCTION_PARAMETERS);
extern void php3_ifx_close(INTERNAL_FUNCTION_PARAMETERS);
diff --git a/ext/interbase/interbase.c b/ext/interbase/interbase.c
index c239cb610c..1cc8aa530b 100644
--- a/ext/interbase/interbase.c
+++ b/ext/interbase/interbase.c
@@ -214,7 +214,7 @@ int php3_rfinish_ibase(void)
}
*/
-void php3_info_ibase(void)
+void php3_info_ibase(ZEND_MODULE_INFO_FUNC_ARGS)
{
/* TODO */
}
diff --git a/ext/interbase/php3_interbase.h b/ext/interbase/php3_interbase.h
index 47da79d574..ec2fe6ef80 100644
--- a/ext/interbase/php3_interbase.h
+++ b/ext/interbase/php3_interbase.h
@@ -47,7 +47,7 @@ extern php3_module_entry ibase_module_entry;
extern int php3_minit_ibase(INIT_FUNC_ARGS);
extern int php3_rinit_ibase(INIT_FUNC_ARGS);
extern int php3_mfinish_ibase(void);
-extern void php3_info_ibase(void);
+extern void php3_info_ibase(ZEND_MODULE_INFO_FUNC_ARGS);
extern void php3_ibase_connect(INTERNAL_FUNCTION_PARAMETERS);
extern void php3_ibase_pconnect(INTERNAL_FUNCTION_PARAMETERS);
extern void php3_ibase_close(INTERNAL_FUNCTION_PARAMETERS);
diff --git a/ext/ldap/ldap.c b/ext/ldap/ldap.c
index f85b0dcf7c..93c19d43ce 100644
--- a/ext/ldap/ldap.c
+++ b/ext/ldap/ldap.c
@@ -260,7 +260,7 @@ int php3_mshutdown_ldap(SHUTDOWN_FUNC_ARGS) {
return SUCCESS;
}
-void php3_info_ldap(void)
+void php3_info_ldap(ZEND_MODULE_INFO_FUNC_ARGS)
{
char maxl[16];
#if HAVE_NSLDAP
diff --git a/ext/ldap/php3_ldap.h b/ext/ldap/php3_ldap.h
index 1440df17f5..ac6781527b 100644
--- a/ext/ldap/php3_ldap.h
+++ b/ext/ldap/php3_ldap.h
@@ -50,7 +50,7 @@ extern php3_module_entry ldap_module_entry;
extern int php3_minit_ldap(INIT_FUNC_ARGS);
extern int php3_mshutdown_ldap(SHUTDOWN_FUNC_ARGS);
-extern void php3_info_ldap(void);
+extern void php3_info_ldap(ZEND_MODULE_INFO_FUNC_ARGS);
extern void php3_ldap_connect(INTERNAL_FUNCTION_PARAMETERS);
diff --git a/ext/msql/msql.c b/ext/msql/msql.c
index acf687174b..074c7d0da3 100644
--- a/ext/msql/msql.c
+++ b/ext/msql/msql.c
@@ -275,7 +275,7 @@ DLEXPORT int php3_rinit_msql(INIT_FUNC_ARGS)
return SUCCESS;
}
-DLEXPORT void php3_info_msql(void)
+DLEXPORT void php3_info_msql(ZEND_MODULE_INFO_FUNC_ARGS)
{
char maxp[16],maxl[16];
MSQL_TLS_VARS;
diff --git a/ext/msql/php3_msql.h b/ext/msql/php3_msql.h
index 6c1e8e3fbf..738f0c0856 100644
--- a/ext/msql/php3_msql.h
+++ b/ext/msql/php3_msql.h
@@ -48,7 +48,7 @@ extern php3_module_entry msql_module_entry;
extern DLEXPORT int php3_minit_msql(INIT_FUNC_ARGS);
extern DLEXPORT int php3_rinit_msql(INIT_FUNC_ARGS);
extern DLEXPORT int php3_mshutdown_msql(SHUTDOWN_FUNC_ARGS);
-extern DLEXPORT void php3_info_msql(void);
+extern DLEXPORT void php3_info_msql(ZEND_MODULE_INFO_FUNC_ARGS);
extern DLEXPORT void php3_msql_connect(INTERNAL_FUNCTION_PARAMETERS);
extern DLEXPORT void php3_msql_pconnect(INTERNAL_FUNCTION_PARAMETERS);
extern DLEXPORT void php3_msql_close(INTERNAL_FUNCTION_PARAMETERS);
diff --git a/ext/mysql/mysql.c b/ext/mysql/mysql.c
index b19215d283..afe05d3b7e 100644
--- a/ext/mysql/mysql.c
+++ b/ext/mysql/mysql.c
@@ -309,7 +309,7 @@ int php3_rinit_mysql(INIT_FUNC_ARGS)
}
-void php3_info_mysql(void)
+void php3_info_mysql(ZEND_MODULE_INFO_FUNC_ARGS)
{
char maxp[16],maxl[16];
MySLS_FETCH();
diff --git a/ext/mysql/php3_mysql.h b/ext/mysql/php3_mysql.h
index 748ad70a67..0988631d1e 100644
--- a/ext/mysql/php3_mysql.h
+++ b/ext/mysql/php3_mysql.h
@@ -49,7 +49,7 @@ extern php3_module_entry mysql_module_entry;
extern int php3_minit_mysql(INIT_FUNC_ARGS);
extern int php3_rinit_mysql(INIT_FUNC_ARGS);
extern int php3_mshutdown_mysql(SHUTDOWN_FUNC_ARGS);
-extern void php3_info_mysql(void);
+extern void php3_info_mysql(ZEND_MODULE_INFO_FUNC_ARGS);
extern void php3_mysql_connect(INTERNAL_FUNCTION_PARAMETERS);
extern void php3_mysql_pconnect(INTERNAL_FUNCTION_PARAMETERS);
extern void php3_mysql_close(INTERNAL_FUNCTION_PARAMETERS);
diff --git a/ext/odbc/odbc.c b/ext/odbc/odbc.c
index 768af90802..3af8798c55 100644
--- a/ext/odbc/odbc.c
+++ b/ext/odbc/odbc.c
@@ -287,7 +287,7 @@ int php3_mshutdown_odbc(SHUTDOWN_FUNC_ARGS)
}
-void php3_info_odbc(void)
+void php3_info_odbc(ZEND_MODULE_INFO_FUNC_ARGS)
{
ODBC_TLS_VARS;
diff --git a/ext/odbc/php3_odbc.h b/ext/odbc/php3_odbc.h
index 2e5abe9d22..295f6b4fb8 100644
--- a/ext/odbc/php3_odbc.h
+++ b/ext/odbc/php3_odbc.h
@@ -120,7 +120,7 @@ extern php3_module_entry odbc_module_entry;
extern int php3_minit_odbc(INIT_FUNC_ARGS);
extern int php3_mshutdown_odbc(SHUTDOWN_FUNC_ARGS);
extern int php3_rinit_odbc(INIT_FUNC_ARGS);
-extern void php3_info_odbc(void);
+extern void php3_info_odbc(ZEND_MODULE_INFO_FUNC_ARGS);
extern PHP_FUNCTION(odbc_setoption);
extern PHP_FUNCTION(odbc_autocommit);
extern PHP_FUNCTION(odbc_close);
diff --git a/ext/odbc/php3_velocis.h b/ext/odbc/php3_velocis.h
index 19d9f4070a..dd114ceec6 100644
--- a/ext/odbc/php3_velocis.h
+++ b/ext/odbc/php3_velocis.h
@@ -76,8 +76,8 @@ extern php3_module_entry velocis_module_entry;
/* velocis.c functions */
extern int php3_minit_velocis(INIT_FUNC_ARGS);
extern int php3_rinit_velocis(INIT_FUNC_ARGS);
-extern void php3_info_velocis(void);
-extern int php3_shutdown_velocis(void);
+extern void php3_info_velocis(ZEND_MODULE_INFO_FUNC_ARGS);
+extern int php3_shutdown_velocis(SHUTDOWN_FUNC_ARGS);
extern void php3_velocis_connect(INTERNAL_FUNCTION_PARAMETERS);
extern void php3_velocis_close(INTERNAL_FUNCTION_PARAMETERS);
extern void php3_velocis_exec(INTERNAL_FUNCTION_PARAMETERS);
diff --git a/ext/odbc/velocis.c b/ext/odbc/velocis.c
index 0c5b03eab0..9e0de4dc90 100644
--- a/ext/odbc/velocis.c
+++ b/ext/odbc/velocis.c
@@ -111,7 +111,7 @@ int php3_rinit_velocis(INIT_FUNC_ARGS)
}
-void php3_info_velocis(void)
+void php3_info_velocis(ZEND_MODULE_INFO_FUNC_ARGS)
{
php3_printf("RAIMA Velocis Support Active");
}
diff --git a/ext/oracle/oci8.c b/ext/oracle/oci8.c
index 47639809dd..39ffec33e8 100644
--- a/ext/oracle/oci8.c
+++ b/ext/oracle/oci8.c
@@ -162,7 +162,7 @@ int php3_minit_oci8(INIT_FUNC_ARGS);
int php3_rinit_oci8(INIT_FUNC_ARGS);
int php3_mshutdown_oci8(SHUTDOWN_FUNC_ARGS);
int php3_rshutdown_oci8(SHUTDOWN_FUNC_ARGS);
-void php3_info_oci8(void);
+void php3_info_oci8(ZEND_MODULE_INFO_FUNC_ARGS);
static ub4 oci8_error(OCIError *err_p, char *what, sword status);
/* static int oci8_ping(oci8_connection *conn); XXX NYI */
@@ -536,7 +536,7 @@ int php3_rshutdown_oci8(SHUTDOWN_FUNC_ARGS)
}
-void php3_info_oci8()
+void php3_info_oci8(ZEND_MODULE_INFO_FUNC_ARGS)
{
#if !(WIN32|WINNT)
php3_printf("Oracle version: %s<br>\n"
diff --git a/ext/oracle/oracle.c b/ext/oracle/oracle.c
index af6a8f84d5..51997baf22 100644
--- a/ext/oracle/oracle.c
+++ b/ext/oracle/oracle.c
@@ -1564,7 +1564,7 @@ void php3_Ora_ErrorCode(INTERNAL_FUNCTION_PARAMETERS)
}
/* }}} */
-void php3_info_oracle()
+void php3_info_oracle(ZEND_MODULE_INFO_FUNC_ARGS)
{
#if !(WIN32|WINNT)
php3_printf("Oracle version: %s<br>\n"
diff --git a/ext/oracle/oracle.h b/ext/oracle/oracle.h
index 3b5f6bea61..75faf27a0d 100644
--- a/ext/oracle/oracle.h
+++ b/ext/oracle/oracle.h
@@ -136,7 +136,7 @@ extern void php3_Ora_Rollback(INTERNAL_FUNCTION_PARAMETERS);
extern int php3_minit_oracle(INIT_FUNC_ARGS);
extern int php3_mshutdown_oracle(SHUTDOWN_FUNC_ARGS);
extern int php3_rshutdown_oracle(SHUTDOWN_FUNC_ARGS);
-extern void php3_info_oracle(void);
+extern void php3_info_oracle(ZEND_MODULE_INFO_FUNC_ARGS);
extern int php3_rinit_oracle(INIT_FUNC_ARGS);
#else
diff --git a/ext/pdf/pdf.c b/ext/pdf/pdf.c
index 2e90f5aa2e..ce34ca7b2a 100644
--- a/ext/pdf/pdf.c
+++ b/ext/pdf/pdf.c
@@ -161,7 +161,7 @@ int php3_minit_pdf(INIT_FUNC_ARGS)
return SUCCESS;
}
-void php3_info_pdf(void) {
+void php3_info_pdf(ZEND_MODULE_INFO_FUNC_ARGS) {
/* need to use a PHPAPI function here because it is external module in windows */
php3_printf("%s. AFM files in %s", PDFLIB_VERSION, PDF_DEFAULT_FONT_PATH);
}
diff --git a/ext/pdf/php3_pdf.h b/ext/pdf/php3_pdf.h
index 2f97e60243..00437519b0 100644
--- a/ext/pdf/php3_pdf.h
+++ b/ext/pdf/php3_pdf.h
@@ -40,7 +40,7 @@ extern int le_fp;
extern php3_module_entry pdf_module_entry;
#define pdf_module_ptr &pdf_module_entry
-extern void php3_info_pdf(void);
+extern void php3_info_pdf(ZEND_MODULE_INFO_FUNC_ARGS);
extern int php3_minit_pdf(INIT_FUNC_ARGS);
extern int php3_mend_pdf(void);
extern void php3_pdf_get_info(INTERNAL_FUNCTION_PARAMETERS);
diff --git a/ext/rpc/com/COM.c b/ext/rpc/com/COM.c
index 919e8ec21c..5f618264b0 100644
--- a/ext/rpc/com/COM.c
+++ b/ext/rpc/com/COM.c
@@ -74,8 +74,15 @@ function_entry COM_functions[] = {
{NULL, NULL, NULL}
};
+
+static void php_info_COM(ZEND_MODULE_INFO_FUNC_ARGS)
+{
+ DISPLAY_INI_ENTRIES();
+}
+
+
php3_module_entry COM_module_entry = {
- "Win32 COM", COM_functions, php3_minit_COM, php3_mshutdown_COM, NULL, NULL, NULL, STANDARD_MODULE_PROPERTIES
+ "Win32 COM", COM_functions, php3_minit_COM, php3_mshutdown_COM, NULL, NULL, php_info_COM, STANDARD_MODULE_PROPERTIES
};
void php_register_COM_class();
@@ -213,7 +220,7 @@ static PHP_INI_MH(OnTypelibFileChange)
PHP_INI_BEGIN()
- PHP_INI_ENTRY1("allow_dcom", "0", PHP_INI_SYSTEM, NULL, NULL)
+ PHP_INI_ENTRY1_EX("allow_dcom", "0", PHP_INI_SYSTEM, NULL, NULL, php_ini_boolean_displayer_cb)
PHP_INI_ENTRY1("typelib_file", NULL, PHP_INI_SYSTEM, OnTypelibFileChange, NULL)
PHP_INI_END()
diff --git a/ext/snmp/php3_snmp.h b/ext/snmp/php3_snmp.h
index c35962cf8f..520e9ee2fa 100644
--- a/ext/snmp/php3_snmp.h
+++ b/ext/snmp/php3_snmp.h
@@ -46,7 +46,7 @@ extern int php3i_snmp_init(INIT_FUNC_ARGS);
extern PHP_FUNCTION(snmpget);
extern PHP_FUNCTION(snmpwalk);
extern PHP_FUNCTION(snmprealwalk);
-extern void php3_info_snmp(void);
+extern void php3_info_snmp(ZEND_MODULE_INFO_FUNC_ARGS);
#else
#define snmp_module_ptr NULL
diff --git a/ext/snmp/snmp.c b/ext/snmp/snmp.c
index 05c35f3b54..5943decc83 100644
--- a/ext/snmp/snmp.c
+++ b/ext/snmp/snmp.c
@@ -104,7 +104,7 @@ int php3i_snmp_init(INIT_FUNC_ARGS) {
return SUCCESS;
}
-void php3_info_snmp(void) {
+void php3_info_snmp(ZEND_MODULE_INFO_FUNC_ARGS) {
php3_printf("ucd-snmp");
}
diff --git a/ext/standard/dl.c b/ext/standard/dl.c
index 7471634ab5..c95fa431c6 100644
--- a/ext/standard/dl.c
+++ b/ext/standard/dl.c
@@ -160,7 +160,7 @@ void php3_dl(pval *file,int type,pval *return_value)
}
-void php3_info_dl(void)
+void php3_info_dl(ZEND_MODULE_INFO_FUNC_ARGS)
{
PUTS("Dynamic Library support enabled.\n");
}
diff --git a/ext/standard/dl.h b/ext/standard/dl.h
index 900bca4294..87a684e583 100644
--- a/ext/standard/dl.h
+++ b/ext/standard/dl.h
@@ -48,7 +48,7 @@ extern void dl(INTERNAL_FUNCTION_PARAMETERS);
extern int php3_minit_dl(INIT_FUNC_ARGS);
extern int php3_mshutdown_dl(SHUTDOWN_FUNC_ARGS);
extern int php3_rshutdown_dl(SHUTDOWN_FUNC_ARGS);
-extern void php3_info_dl(void);
+extern void php3_info_dl(ZEND_MODULE_INFO_FUNC_ARGS);
#else
diff --git a/ext/standard/head.c b/ext/standard/head.c
index 636f143803..86e3a7d835 100644
--- a/ext/standard/head.c
+++ b/ext/standard/head.c
@@ -76,7 +76,7 @@ PHPAPI void php3_noheader(void)
}
-#ifdef APACHE
+#if 0
/* Adds header information */
void php4i_add_header_information(char *header_information, uint header_length)
{
@@ -229,7 +229,7 @@ void php3_Header(INTERNAL_FUNCTION_PARAMETERS)
-#ifdef APACHE
+#if 0
/*
* php3_header() flushes the header info built up using calls to
* the Header() function. If type is 1, a redirect to str is done.
@@ -438,15 +438,10 @@ CookieList *php3_PopCookieList(void)
/* php3_SetCookie(name,value,expires,path,domain,secure) */
void php3_SetCookie(INTERNAL_FUNCTION_PARAMETERS)
{
-#if !APACHE
- char *tempstr;
-#if FHTTPD
- char *tempstr1;
-#endif
- int len=0;
+ char *cookie;
+ int len=sizeof("Set-Cookie: ");
time_t t;
char *r, *dt;
-#endif
char *name = NULL, *value = NULL, *path = NULL, *domain = NULL;
time_t expires = 0;
int secure = 0;
@@ -465,100 +460,107 @@ void php3_SetCookie(INTERNAL_FUNCTION_PARAMETERS)
case 6:
convert_to_boolean(arg[5]);
secure = arg[5]->value.lval;
+ /* break missing intentionally */
case 5:
convert_to_string(arg[4]);
domain = estrndup(arg[4]->value.str.val,arg[4]->value.str.len);
+ /* break missing intentionally */
case 4:
convert_to_string(arg[3]);
path = estrndup(arg[3]->value.str.val,arg[3]->value.str.len);
+ /* break missing intentionally */
case 3:
convert_to_long(arg[2]);
expires = arg[2]->value.lval;
+ /* break missing intentionally */
case 2:
convert_to_string(arg[1]);
value = estrndup(arg[1]->value.str.val,arg[1]->value.str.len);
+ /* break missing intentionally */
case 1:
convert_to_string(arg[0]);
name = estrndup(arg[0]->value.str.val,arg[0]->value.str.len);
+ break;
}
-#if APACHE
+#if 0
php3_PushCookieList(name, value, expires, path, domain, secure);
#else
- if (name) len += strlen(name);
- if (value) len += strlen(value);
- if (path) len += strlen(path);
- if (domain) len += strlen(domain);
- tempstr = emalloc(len + 100);
+ if (name) {
+ len += strlen(name);
+ }
+ if (value) {
+ len += strlen(value);
+ }
+ if (path) {
+ len += strlen(path);
+ }
+ if (domain) {
+ len += strlen(domain);
+ }
+ cookie = emalloc(len + 100);
if (!value || (value && !*value)) {
/*
* MSIE doesn't delete a cookie when you set it to a null value
* so in order to force cookies to be deleted, even on MSIE, we
* pick an expiry date 1 year and 1 second in the past
*/
- sprintf(tempstr, "%s=deleted", name);
- strcat(tempstr, "; expires=");
+ sprintf(cookie, "Set-Cookie: %s=deleted", name);
+ strcat(cookie, "; expires=");
t = time(NULL) - 31536001;
dt = php3_std_date(t);
- strcat(tempstr, dt);
+ strcat(cookie, dt);
efree(dt);
} else {
/* FIXME: XXX: this is not binary data safe */
r = _php3_urlencode(value, strlen (value));
- sprintf(tempstr, "%s=%s", name, value ? r : "");
+ sprintf(cookie, "Set-Cookie: %s=%s", name, value ? r : "");
if (r) efree(r);
if (value) efree(value);
value=NULL;
if (name) efree(name);
name=NULL;
if (expires > 0) {
- strcat(tempstr, "; expires=");
+ strcat(cookie, "; expires=");
dt = php3_std_date(expires);
- strcat(tempstr, dt);
+ strcat(cookie, dt);
efree(dt);
}
}
if (path && strlen(path)) {
- strcat(tempstr, "; path=");
- strcat(tempstr, path);
+ strcat(cookie, "; path=");
+ strcat(cookie, path);
efree(path);
path=NULL;
}
if (domain && strlen(domain)) {
- strcat(tempstr, "; domain=");
- strcat(tempstr, domain);
+ strcat(cookie, "; domain=");
+ strcat(cookie, domain);
efree(domain);
domain=NULL;
}
if (secure) {
- strcat(tempstr, "; secure");
+ strcat(cookie, "; secure");
}
-#if USE_SAPI
- {
- char *tempstr2=emalloc(strlen(tempstr)+14);
- sprintf(tempstr2,"Set-Cookie: %s\015\012",tempstr);
- sapi_rqst->header(sapi_rqst->scid,tempstr2);
- efree(tempstr2);
+
+
+ if (sapi_add_header(cookie, strlen(cookie))==SUCCESS) {
+ RETVAL_TRUE;
+ } else {
+ RETVAL_FALSE;
}
-#elif FHTTPD
- tempstr1 = emalloc(strlen(tempstr)
- + sizeof("Set-Cookie: ") + 2);
- if(tempstr1) {
- strcpy(tempstr1, "Set-Cookie: ");
- strcpy(tempstr1 + sizeof("Set-Cookie: ") - 1, tempstr);
- strcat(tempstr1, "\r\n");
- php3_fhttpd_puts_header(tempstr1);
- efree(tempstr1);
+
+ if (domain) {
+ efree(domain);
+ }
+ if (path) {
+ efree(path);
+ }
+ if (name) {
+ efree(name);
+ }
+ if (value) {
+ efree(value);
}
-#else
- PUTS_H("Set-Cookie: ");
- PUTS_H(tempstr);
- PUTS_H("\015\012");
-#endif
- if (domain) efree(domain);
- if (path) efree(path);
- if (name) efree(name);
- if (value) efree(value);
- efree(tempstr);
#endif
}
diff --git a/ext/standard/info.c b/ext/standard/info.c
index 5f841a0760..70b3a05457 100644
--- a/ext/standard/info.c
+++ b/ext/standard/info.c
@@ -40,17 +40,6 @@
#include "zend_globals.h" /* needs ELS */
-#define PHP3_CONF_STR(directive,value1,value2) \
- PUTS("<tr><td bgcolor=\"" ENTRY_NAME_COLOR "\">"); \
- PUTS(directive); \
- PUTS("</td><td bgcolor=\"" CONTENTS_COLOR "\">&nbsp;"); \
- if (value1) PUTS(value1); \
- else PUTS("<i>none</i>"); \
- PUTS("</td><td bgcolor=\"" CONTENTS_COLOR "\">&nbsp;"); \
- if (value2) PUTS(value2); \
- else PUTS("<i>none</i>"); \
- PUTS("</td></tr>\n");
-
#define PHP3_CONF_LONG(directive,value1,value2) \
php3_printf("<tr><td bgcolor=\"" ENTRY_NAME_COLOR "\">%s</td><td bgcolor=\"" CONTENTS_COLOR "\">%ld</td><td bgcolor=\"" CONTENTS_COLOR "\">%ld</td></tr>\n",directive,value1,value2);
@@ -60,17 +49,15 @@
#define CONTENTS_COLOR "#DDDDDD"
#define HEADER_COLOR "#00DDDD"
+#define CREDIT_LINE(module, authors) php_info_print_table_row(2, module, authors)
+
+
static int _display_module_info(php3_module_entry *module)
{
- PUTS("<tr><th align=left bgcolor=\"" ENTRY_NAME_COLOR "\">");
- PUTS(module->name);
- PUTS("</th><td bgcolor=\"" CONTENTS_COLOR "\">");
if (module->info_func) {
- module->info_func();
- } else {
- PUTS("No additional information.");
+ php3_printf("<hr><h2>%s</h2>\n", module->name);
+ module->info_func(module);
}
- PUTS("</td></tr>\n");
return 0;
}
@@ -104,105 +91,59 @@ PHPAPI void _php3_info(void)
#endif
- PUTS("<img src=\"");
+ php3_printf("<center><h1>PHP Version %s</h1></center>\n", PHP_VERSION);
+
+ PUTS("<hr><a href=\"http://www.php.net/\"><img src=\"");
if (SG(request_info).request_uri) {
PUTS(SG(request_info).request_uri);
}
- PUTS("?=PHPE9568F34-D428-11d2-A769-00AA001ACF42\" border=\"0\" width=\"100\" height=\"56\" align=\"right\">\n");
- php3_printf("<center><h1>PHP Version %s</h1></center>\n", PHP_VERSION);
- PUTS("<p>by <a href=\"mailto:rasmus@lerdorf.on.ca\">Rasmus Lerdorf</a>,\n");
- PUTS("<a href=\"mailto:andi@zend.com\">Andi Gutmans</a>,\n");
- PUTS("<a href=\"mailto:zeev@zend.com\">Zeev Suraski</a>,\n");
- PUTS("<a href=\"mailto:ssb@guardian.no\">Stig Bakken</a>,\n");
- PUTS("<a href=\"mailto:shane@caraveo.com\">Shane Caraveo</a>,\n");
- PUTS("<a href=\"mailto:jimw@php.net\">Jim Winstead</a>, and countless others.</P>\n");
-
- PUTS("<P><a href=\"http://www.zend.com/\">Zend</a>:</a> ");
- PUTS("<a href=\"mailto:andi@zend.com\">Andi Gutmans</a> and \n");
- PUTS("<a href=\"mailto:zeev@zend.com\">Zeev Suraski</a></p>\n");
-
- PUTS("<hr>");
- php3_printf("<center>System: %s<br>Build Date: %s</center>\n", php3_uname, __DATE__);
- PUTS("<center>\n");
-
- SECTION("Extensions");
- PUTS("<table border=5 width=\"600\">\n");
- PUTS("<tr><th bgcolor=\"" HEADER_COLOR "\">Extensions</th><th bgcolor=\"" HEADER_COLOR "\">Additional Information</th></tr>\n");
+ PUTS("?=PHPE9568F34-D428-11d2-A769-00AA001ACF42\" border=\"0\" width=\"100\" height=\"56\" align=\"right\"></a>\n");
+ php3_printf("System: %s<br>Build Date: %s\n<br>", php3_uname, __DATE__);
+ php3_printf("php3.ini path: %s<br>\n", CONFIGURATION_FILE_PATH);
+
+ /* Zend Engine */
+ PUTS("<hr><a href=\"http://www.zend.com/\"><img src=\"");
+ if (SG(request_info).request_uri) {
+ PUTS(SG(request_info).request_uri);
+ }
+ PUTS("?=PHPE9568F35-D428-11d2-A769-00AA001ACF42\" border=\"0\" width=\"100\" height=\"89\" align=\"right\"></a>\n");
+ php3_printf("This program makes use of the Zend scripting language engine:<br><pre>%s</pre>", get_zend_version());
+
+
+ PUTS("<center>");
-#ifndef MSVC5
- PUTS("<tr><th align=left bgcolor=\"" ENTRY_NAME_COLOR "\">PHP core</th>\n");
- PUTS("<td bgcolor=\"" CONTENTS_COLOR "\"><tt>CFLAGS=" PHP_CFLAGS "<br>\n");
- PUTS("HSREGEX=" PHP_HSREGEX "</td></tr>\n");
-#endif
+ PUTS("<hr><h1>Credits</h1>\n");
- _php3_hash_apply(&module_registry,(int (*)(void *))_display_module_info);
+ PUTS("<table border=5 width=\"600\">\n");
+ PUTS("<tr><th colspan=\"2\" bgcolor=\"" HEADER_COLOR "\">PHP 4.0 Authors</th></tr>\n");
+ php_info_print_table_header(2, "Module", "Authors");
+ CREDIT_LINE("Scripting Language Engine", "Andi Gutmans, Zeev Suraski");
+ CREDIT_LINE("Extension Module API", "Andi Gutmans, Zeev Suraski");
+ CREDIT_LINE("UNIX Build and Modularization", "Stig Bakken");
+ CREDIT_LINE("Win32 Port", "Shane Caraveo, Zeev Suraski");
+ CREDIT_LINE("Server API (SAPI) Abstraction Layer", "Andi Gutmans, Shane Caraveo, Zeev Suraski");
+ CREDIT_LINE("Apache SAPI Module", "Rasmus Lerdorf, Zeev Suraski");
+ CREDIT_LINE("ISAPI SAPI Module", "Andi Gutmans, Zeev Suraski");
+ CREDIT_LINE("CGI SAPI Module", "Rasmus Lerdorf, Stig Bakken");
PUTS("</table>\n");
- SECTION("Configuration");
- PUTS("php3.ini file path is set to: ");
- PUTS(CONFIGURATION_FILE_PATH);
- PUTS("<br>\n");
- PUTS("<table border=5 width=\"600\">\n");
- PUTS("<tr><th bgcolor=\"" HEADER_COLOR "\">Directive</th><th bgcolor=\"" HEADER_COLOR "\">Master Value</th><th bgcolor=\"" HEADER_COLOR "\">Local Value</th></tr>\n");
- PHP3_CONF_STR("arg_separator", INI_ORIG_STR("arg_separator"), PG(arg_separator));
- PHP3_CONF_LONG("asp_tags", INI_ORIG_INT("asp_tags"), PG(asp_tags));
- PHP3_CONF_STR("auto_prepend_file", INI_ORIG_STR("auto_prepend_file"), PG(auto_prepend_file));
- PHP3_CONF_STR("auto_append_file", INI_ORIG_STR("auto_append_file"), PG(auto_append_file));
- PHP3_CONF_STR("browscap", INI_ORIG_STR("browscap"), INI_STR("browscap"));
- PHP3_CONF_LONG("define_syslog_variables", INI_ORIG_STR("define_syslog_variables"), INI_STR("define_syslog_variables"));
- PHP3_CONF_LONG("display_errors", INI_ORIG_INT("display_errors"), PG(display_errors));
- PHP3_CONF_STR("doc_root", INI_ORIG_STR("doc_root"), PG(doc_root));
- PHP3_CONF_LONG("enable_dl", INI_ORIG_INT("enable_dl"), PG(enable_dl));
- PHP3_CONF_STR("error_log", INI_ORIG_STR("error_log"), PG(error_log));
- PHP3_CONF_STR("error_prepend_string", INI_ORIG_STR("error_prepend_string"), INI_STR("error_prepend_string"));
- PHP3_CONF_STR("error_append_string", INI_ORIG_STR("error_append_string"), INI_STR("error_append_string"));
- PHP3_CONF_LONG("error_reporting", INI_ORIG_INT("error_reporting"), EG(error_reporting));
- PHP3_CONF_STR("extension_dir", INI_ORIG_STR("extension_dir"), PG(extension_dir));
- PHP3_CONF_STR("gpc_order", INI_ORIG_STR("gpc_order"), PG(gpc_order));
- PHP3_CONF_STR("include_path", INI_ORIG_STR("include_path"), PG(include_path));
- PHP3_CONF_LONG("log_errors", INI_ORIG_INT("log_errors"), PG(log_errors));
- PHP3_CONF_LONG("max_execution_time", INI_ORIG_INT("max_execution_time"), PG(max_execution_time));
- PHP3_CONF_LONG("magic_quotes_gpc", INI_ORIG_INT("magic_quotes_gpc"), PG(magic_quotes_gpc));
- PHP3_CONF_LONG("magic_quotes_runtime", INI_ORIG_INT("magic_quotes_runtime"), PG(magic_quotes_runtime));
- PHP3_CONF_LONG("magic_quotes_sybase", INI_ORIG_INT("magic_quotes_sybase"), PG(magic_quotes_sybase));
- PHP3_CONF_LONG("memory limit", INI_ORIG_INT("memory_limit"), PG(memory_limit));
- PHP3_CONF_STR("open_basedir", INI_ORIG_STR("open_basedir"), PG(open_basedir));
- PHP3_CONF_LONG("precision", INI_ORIG_INT("precision"), EG(precision));
- PHP3_CONF_LONG("safe_mode", INI_ORIG_INT("safe_mode"), PG(safe_mode));
- PHP3_CONF_STR("safe_mode_exec_dir", INI_ORIG_STR("safe_mode_exec_dir"), PG(safe_mode_exec_dir));
- PHP3_CONF_STR("sendmail_from", INI_ORIG_STR("sendmail_from"), INI_STR("sendmail_from"));
- PHP3_CONF_STR("sendmail_path", INI_ORIG_STR("sendmail_path"), INI_STR("sendmail_path"));
- PHP3_CONF_LONG("short_open_tag", INI_ORIG_INT("short_open_tag"), PG(short_tags));
- PHP3_CONF_STR("SMTP", INI_ORIG_STR("SMTP"), INI_STR("SMTP"));
- PHP3_CONF_LONG("sql_safe_mode", INI_ORIG_INT("sql.safe_mode"), PG(sql_safe_mode));
- PHP3_CONF_LONG("track_errors", INI_ORIG_INT("track_errors"), PG(track_errors));
- PHP3_CONF_LONG("track_vars", INI_ORIG_INT("track_vars"), PG(track_vars));
- PHP3_CONF_LONG("upload_max_filesize", INI_ORIG_INT("upload_max_filesize"), PG(upload_max_filesize));
- PHP3_CONF_STR("upload_tmp_dir", INI_ORIG_STR("upload_tmp_dir"), PG(upload_tmp_dir));
- PHP3_CONF_STR("user_dir", INI_ORIG_STR("user_dir"), PG(user_dir));
- PHP3_CONF_LONG("y2k_compliance", INI_ORIG_INT("y2k_compliance"), PG(y2k_compliance));
+
+ PUTS("<hr><h1>Configuraton</h1>\n");
+ PUTS("<h2>PHP Core</h2>\n");
+ display_ini_entries(NULL);
+ _php3_hash_apply(&module_registry,(int (*)(void *)) _display_module_info);
+
+#if 0
/* apache only directives */
PHP3_CONF_LONG("engine", INI_ORIG_INT("engine"), INI_INT("engine")); /* apache only */
PHP3_CONF_LONG("xbithack", INI_ORIG_INT("xbithack"), INI_INT("xbithack")); /* apache only */
PHP3_CONF_LONG("last_modified", INI_ORIG_INT("last_modified"), INI_INT("last_modified")); /* apache only */
/* end of apache only directives */
-
- /* And now for the highlight colours */
- php3_printf("<tr><td bgcolor=\"" ENTRY_NAME_COLOR "\">highlight_comment</td><td bgcolor=\"" CONTENTS_COLOR "\"><font color=%s>&nbsp;%s</font></td><td bgcolor=\"" CONTENTS_COLOR "\"><font color=%s>&nbsp;%s</font></td></tr>\n",INI_ORIG_STR("highlight.comment"), INI_ORIG_STR("highlight.comment"), INI_STR("highlight.comment"), INI_STR("highlight.comment"));
- php3_printf("<tr><td bgcolor=\"" ENTRY_NAME_COLOR "\">highlight_default</td><td bgcolor=\"" CONTENTS_COLOR "\"><font color=%s>&nbsp;%s</font></td><td bgcolor=\"" CONTENTS_COLOR "\"><font color=%s>&nbsp;%s</font></td></tr>\n",INI_ORIG_STR("highlight.default"), INI_ORIG_STR("highlight.default"), INI_STR("highlight.default"), INI_STR("highlight.default"));
- php3_printf("<tr><td bgcolor=\"" ENTRY_NAME_COLOR "\">highlight_html</td><td bgcolor=\"" CONTENTS_COLOR "\"><font color=%s>&nbsp;%s</font></td><td bgcolor=\"" CONTENTS_COLOR "\"><font color=%s>&nbsp;%s</font></td></tr>\n",INI_ORIG_STR("highlight.html"), INI_ORIG_STR("highlight.html"), INI_STR("highlight.html"), INI_STR("highlight.html"));
- php3_printf("<tr><td bgcolor=\"" ENTRY_NAME_COLOR "\">highlight_string</td><td bgcolor=\"" CONTENTS_COLOR "\"><font color=%s>&nbsp;%s</font></td><td bgcolor=\"" CONTENTS_COLOR "\"><font color=%s>&nbsp;%s</font></td></tr>\n",INI_ORIG_STR("highlight.string"), INI_ORIG_STR("highlight.string"), INI_STR("highlight.string"), INI_STR("highlight.string"));
- php3_printf("<tr><td bgcolor=\"" ENTRY_NAME_COLOR "\">highlight_bg</td><td bgcolor=\"" CONTENTS_COLOR "\"><font color=%s>&nbsp;%s</font></td><td bgcolor=\"" CONTENTS_COLOR "\"><font color=%s>&nbsp;%s</font></td></tr>\n",INI_ORIG_STR("highlight.bg"), INI_ORIG_STR("highlight.bg"), INI_STR("highlight.bg"), INI_STR("highlight.bg"));
- php3_printf("<tr><td bgcolor=\"" ENTRY_NAME_COLOR "\">highlight_keyword</td><td bgcolor=\"" CONTENTS_COLOR "\"><font color=%s>&nbsp;%s</font></td><td bgcolor=\"" CONTENTS_COLOR "\"><font color=%s>&nbsp;%s</font></td></tr>\n",INI_ORIG_STR("highlight.keyword"), INI_ORIG_STR("highlight.keyword"), INI_STR("highlight.keyword"), INI_STR("highlight.keyword"));
- PUTS("</table>");
-
-#if USE_SAPI /* call a server module specific info function */
- sapi_rqst->info(sapi_rqst);
#endif
SECTION("Environment");
PUTS("<table border=5 width=\"600\">\n");
- PUTS("<tr><th bgcolor=\"" HEADER_COLOR "\">Variable</th><th bgcolor=\"" HEADER_COLOR "\">Value</th></tr>\n");
+ php_info_print_table_header(2, "Variable", "Value");
for (env=environ; env!=NULL && *env !=NULL; env++) {
tmp1 = estrdup(*env);
if (!(tmp2=strchr(tmp1,'='))) { /* malformed entry? */
@@ -211,15 +152,7 @@ PHPAPI void _php3_info(void)
}
*tmp2 = 0;
tmp2++;
- PUTS("<tr><td bgcolor=\"" ENTRY_NAME_COLOR "\">");
- PUTS(tmp1);
- PUTS("</td><td bgcolor=\"" CONTENTS_COLOR "\">");
- if (tmp2 && *tmp2) {
- PUTS(tmp2);
- } else {
- PUTS("&nbsp;");
- }
- PUTS("</td></tr>\n");
+ php_info_print_table_row(2, tmp1, tmp2);
efree(tmp1);
}
PUTS("</table>\n");
@@ -232,34 +165,18 @@ PHPAPI void _php3_info(void)
SECTION("PHP Variables");
PUTS("<table border=5 width=\"600\">\n");
- PUTS("<tr><th bgcolor=\"" HEADER_COLOR "\">Variable</th><th bgcolor=\"" HEADER_COLOR "\">Value</th></tr>\n");
+ php_info_print_table_header(2, "Variable", "Value");
if (_php3_hash_find(&EG(symbol_table), "PHP_SELF", sizeof("PHP_SELF"), (void **) &data) != FAILURE) {
- PUTS("<tr><td bgcolor=\"" ENTRY_NAME_COLOR "\">");
- PUTS("PHP_SELF");
- PUTS("</td><td bgcolor=\"" CONTENTS_COLOR "\">");
- PUTS((*data)->value.str.val);
- PUTS("</td></tr>\n");
+ php_info_print_table_row(2, "PHP_SELF", (*data)->value.str.val);
}
if (_php3_hash_find(&EG(symbol_table), "PHP_AUTH_TYPE", sizeof("PHP_AUTH_TYPE"), (void **) &data) != FAILURE) {
- PUTS("<tr><td bgcolor=\"" ENTRY_NAME_COLOR "\">");
- PUTS("PHP_AUTH_TYPE");
- PUTS("</td><td bgcolor=\"" CONTENTS_COLOR "\">");
- PUTS((*data)->value.str.val);
- PUTS("</td></tr>\n");
+ php_info_print_table_row(2, "PHP_AUTH_TYPE", (*data)->value.str.val);
}
if (_php3_hash_find(&EG(symbol_table), "PHP_AUTH_USER", sizeof("PHP_AUTH_USER"), (void **) &data) != FAILURE) {
- PUTS("<tr><td bgcolor=\"" ENTRY_NAME_COLOR "\">");
- PUTS("PHP_AUTH_USER");
- PUTS("</td><td bgcolor=\"" CONTENTS_COLOR "\">");
- PUTS((*data)->value.str.val);
- PUTS("</td></tr>\n");
+ php_info_print_table_row(2, "PHP_AUTH_USER", (*data)->value.str.val);
}
if (_php3_hash_find(&EG(symbol_table), "PHP_AUTH_PW", sizeof("PHP_AUTH_PW"), (void **) &data) != FAILURE) {
- PUTS("<tr><td bgcolor=\"" ENTRY_NAME_COLOR "\">");
- PUTS("PHP_AUTH_PW");
- PUTS("</td><td bgcolor=\"" CONTENTS_COLOR "\">");
- PUTS((*data)->value.str.val);
- PUTS("</td></tr>\n");
+ php_info_print_table_row(2, "PHP_AUTH_PW", (*data)->value.str.val);
}
if (_php3_hash_find(&EG(symbol_table), "HTTP_GET_VARS", sizeof("HTTP_GET_VARS"), (void **) &data) != FAILURE) {
_php3_hash_internal_pointer_reset((*data)->value.ht);
@@ -338,13 +255,9 @@ PHPAPI void _php3_info(void)
SECTION("Apache Environment");
PUTS("<table border=5 width=\"600\">\n");
- PUTS("<tr><th bgcolor=\"" HEADER_COLOR "\">Variable</th><th bgcolor=\"" HEADER_COLOR "\">Value</th></tr>\n");
+ php_info_print_table_header(2, "Variable", "Value");
for (i=0; i < arr->nelts; i++) {
- PUTS("<tr><td bgcolor=\"" ENTRY_NAME_COLOR "\">");
- PUTS(elts[i].key);
- PUTS("</td><td bgcolor=\"" CONTENTS_COLOR "\">");
- PUTS(elts[i].val);
- PUTS("&nbsp;</td></tr>\n");
+ php_info_print_table_row(2, elts[i].key, elts[i].val);
}
PUTS("</table>\n");
}
@@ -362,18 +275,12 @@ PHPAPI void _php3_info(void)
SECTION("HTTP Headers Information");
PUTS("<table border=5 width=\"600\">\n");
PUTS(" <tr><th colspan=2 bgcolor=\"" HEADER_COLOR "\">HTTP Request Headers</th></tr>\n");
- PUTS("<tr><td bgcolor=\"" ENTRY_NAME_COLOR "\">HTTP Request</td><td bgcolor=\"" CONTENTS_COLOR "\">");
- PUTS(r->the_request);
- PUTS("&nbsp;</td></tr>\n");
+ php_info_print_table_row(2, "HTTP Request", r->the_request);
env_arr = table_elts(r->headers_in);
env = (table_entry *)env_arr->elts;
for (i = 0; i < env_arr->nelts; ++i) {
if (env[i].key) {
- PUTS("<tr><td bgcolor=\"" ENTRY_NAME_COLOR "\">");
- PUTS(env[i].key);
- PUTS("</td><td bgcolor=\"" CONTENTS_COLOR "\">");
- PUTS(env[i].val);
- PUTS("&nbsp;</td></tr>\n");
+ php_info_print_table_row(2, env[i].key, env[i].val);
}
}
PUTS(" <tr><th colspan=2 bgcolor=\"" HEADER_COLOR "\">HTTP Response Headers</th></tr>\n");
@@ -381,11 +288,7 @@ PHPAPI void _php3_info(void)
env = (table_entry *)env_arr->elts;
for(i = 0; i < env_arr->nelts; ++i) {
if (env[i].key) {
- PUTS("<tr><td bgcolor=\"" ENTRY_NAME_COLOR "\">");
- PUTS(env[i].key);
- PUTS("</td><td bgcolor=\"" CONTENTS_COLOR "\">");
- PUTS(env[i].val);
- PUTS("&nbsp;</td></tr>\n");
+ php_info_print_table_row(2, env[i].key, env[i].val);
}
}
PUTS("</table>\n\n");
@@ -394,15 +297,6 @@ PHPAPI void _php3_info(void)
PUTS("</center>");
- PUTS("<hr>\n");
- PUTS("<table width=\"100%%\"><tr>\n");
- php3_printf("<td><h2>Zend</h2>This program makes use of the Zend scripting language engine:<br><pre>%s</pre></td>", get_zend_version());
- PUTS("<td width=\"100\"><a href=\"http://www.zend.com/\"><img src=\"");
- if (SG(request_info).request_uri) {
- PUTS(SG(request_info).request_uri);
- }
- PUTS("?=PHPE9568F35-D428-11d2-A769-00AA001ACF42\" border=\"0\" width=\"100\" height=\"89\"></a></td>\n");
- PUTS("</tr></table>\n");
SECTION("PHP License");
PUTS("<PRE>This program is free software; you can redistribute it and/or modify\n");
@@ -426,6 +320,53 @@ PHPAPI void _php3_info(void)
}
+
+PHPAPI void php_info_print_table_header(int num_cols, ...)
+{
+ int i;
+ va_list row_elements;
+ char *row_element;
+
+ va_start(row_elements, num_cols);
+
+ php3_printf("<tr>");
+ for (i=0; i<num_cols; i++) {
+ row_element = va_arg(row_elements, char *);
+ if (!row_element || !*row_element) {
+ row_element = "&nbsp;";
+ }
+ php3_printf("<th bgcolor=\"" HEADER_COLOR "\" valign=\"top\">%s</th>", row_element);
+ }
+ php3_printf("</tr>\n");
+
+ va_end(row_elements);
+}
+
+
+PHPAPI void php_info_print_table_row(int num_cols, ...)
+{
+ int i;
+ va_list row_elements;
+ char *color = ENTRY_NAME_COLOR;
+ char *row_element;
+
+ va_start(row_elements, num_cols);
+
+ php3_printf("<tr>");
+ for (i=0; i<num_cols; i++) {
+ row_element = va_arg(row_elements, char *);
+ if (!row_element || !*row_element) {
+ row_element = "&nbsp;";
+ }
+ php3_printf("<td bgcolor=\"%s\" valign=\"top\">%s</td>", color, row_element);
+ color = CONTENTS_COLOR;
+ }
+ php3_printf("</tr>\n");
+
+ va_end(row_elements);
+}
+
+
/* {{{ proto void phpinfo(void)
Output a page of useful information about PHP and the current request */
void php3_info(INTERNAL_FUNCTION_PARAMETERS)
diff --git a/ext/standard/info.h b/ext/standard/info.h
index 49adc456f6..73db458108 100644
--- a/ext/standard/info.h
+++ b/ext/standard/info.h
@@ -32,9 +32,11 @@
#ifndef _INFO_H
#define _INFO_H
-extern void php3_version(INTERNAL_FUNCTION_PARAMETERS);
-extern void php3_info(INTERNAL_FUNCTION_PARAMETERS);
-
+void php3_version(INTERNAL_FUNCTION_PARAMETERS);
+void php3_info(INTERNAL_FUNCTION_PARAMETERS);
PHPAPI void _php3_info(void);
+PHPAPI void php_info_print_table_header(int num_cols, ...);
+PHPAPI void php_info_print_table_row(int num_cols, ...);
+
#endif /* _INFO_H */
diff --git a/ext/standard/mail.c b/ext/standard/mail.c
index da06d4007d..a6e97161ed 100644
--- a/ext/standard/mail.c
+++ b/ext/standard/mail.c
@@ -160,7 +160,7 @@ int _php3_mail(char *to, char *subject, char *message, char *headers)
return 1;
}
-void php3_info_mail(void)
+void php3_info_mail(ZEND_MODULE_INFO_FUNC_ARGS)
{
#if MSVC5
PUTS("Internal Sendmail support for Windows 4");
@@ -172,7 +172,7 @@ void php3_info_mail(void)
#else
void php3_mail(INTERNAL_FUNCTION_PARAMETERS) {}
-void php3_info_mail() {}
+void php3_info_mail(ZEND_MODULE_INFO_FUNC_ARGS) {}
#endif
diff --git a/ext/standard/php3_mail.h b/ext/standard/php3_mail.h
index 3fb763ecb0..71ac97fe8f 100644
--- a/ext/standard/php3_mail.h
+++ b/ext/standard/php3_mail.h
@@ -37,7 +37,7 @@ extern php3_module_entry mail_module_entry;
#define mail_module_ptr &mail_module_entry
extern void php3_mail(INTERNAL_FUNCTION_PARAMETERS);
-extern void php3_info_mail(void);
+extern void php3_info_mail(ZEND_MODULE_INFO_FUNC_ARGS);
extern int _php3_mail(char *to, char *subject, char *message, char *headers);
#else
diff --git a/ext/standard/post.c b/ext/standard/post.c
index f961602e77..7be502ff69 100644
--- a/ext/standard/post.c
+++ b/ext/standard/post.c
@@ -42,6 +42,7 @@
* This reads the post form data into a string.
* Remember to free this pointer when done with it.
*/
+#if APACHE
static char *php3_getpost(pval *http_post_vars PLS_DC)
{
char *buf = NULL;
@@ -149,6 +150,14 @@ static char *php3_getpost(pval *http_post_vars PLS_DC)
#endif
return (buf);
}
+#else
+static char *php3_getpost(pval *http_post_vars PLS_DC)
+{
+ SLS_FETCH();
+
+ return SG(request_info).post_data;
+}
+#endif
/*
@@ -352,7 +361,7 @@ void php3_treat_data(int arg, char *str)
res = (char *) estrdup(var);
}
} else if (arg == PARSE_COOKIE) { /* Cookie data */
- var = (char *)request_info.cookies;
+ var = SG(request_info).cookie_data;
if (var && *var) {
res = (char *) estrdup(var);
}
diff --git a/ext/sybase/php3_sybase-ct.h b/ext/sybase/php3_sybase-ct.h
index 1ce0a30f0c..c8e89a6213 100644
--- a/ext/sybase/php3_sybase-ct.h
+++ b/ext/sybase/php3_sybase-ct.h
@@ -49,7 +49,7 @@ extern int php3_minit_sybct(INIT_FUNC_ARGS);
extern int php3_rinit_sybct(INIT_FUNC_ARGS);
extern int php3_mshutdown_sybct(SHUTDOWN_FUNC_ARGS);
extern int php3_rshutdown_sybct(SHUTDOWN_FUNC_ARGS);
-extern void php3_info_sybct(void);
+extern void php3_info_sybct(ZEND_MODULE_INFO_FUNC_ARGS);
extern void php3_sybct_connect(INTERNAL_FUNCTION_PARAMETERS);
extern void php3_sybct_pconnect(INTERNAL_FUNCTION_PARAMETERS);
extern void php3_sybct_close(INTERNAL_FUNCTION_PARAMETERS);
diff --git a/ext/sybase/php3_sybase.h b/ext/sybase/php3_sybase.h
index dbfcdd767a..3b1a5e18a1 100644
--- a/ext/sybase/php3_sybase.h
+++ b/ext/sybase/php3_sybase.h
@@ -47,7 +47,7 @@ extern int php3_minit_sybase(INIT_FUNC_ARGS);
extern int php3_rinit_sybase(INIT_FUNC_ARGS);
extern int php3_mshutdown_sybase(SHUTDOWN_FUNC_ARGS);
extern int php3_rshutdown_sybase(SHUTDOWN_FUNC_ARGS);
-extern void php3_info_sybase(void);
+extern void php3_info_sybase(ZEND_MODULE_INFO_FUNC_ARGS);
extern void php3_sybase_connect(INTERNAL_FUNCTION_PARAMETERS);
extern void php3_sybase_pconnect(INTERNAL_FUNCTION_PARAMETERS);
extern void php3_sybase_close(INTERNAL_FUNCTION_PARAMETERS);
diff --git a/ext/sybase/sybase-ct.c b/ext/sybase/sybase-ct.c
index 7f45658d6b..58ba286bad 100644
--- a/ext/sybase/sybase-ct.c
+++ b/ext/sybase/sybase-ct.c
@@ -1596,7 +1596,7 @@ void php3_sybct_affected_rows(INTERNAL_FUNCTION_PARAMETERS)
}
-void php3_info_sybct(void)
+void php3_info_sybct(ZEND_MODULE_INFO_FUNC_ARGS)
{
char maxp[16],maxl[16];
diff --git a/ext/sybase/sybase.c b/ext/sybase/sybase.c
index df17867142..94a8c9ccd1 100644
--- a/ext/sybase/sybase.c
+++ b/ext/sybase/sybase.c
@@ -1186,7 +1186,7 @@ void php3_sybase_result(INTERNAL_FUNCTION_PARAMETERS)
}
-void php3_info_sybase(void)
+void php3_info_sybase(ZEND_MODULE_INFO_FUNC_ARGS)
{
char maxp[16],maxl[16];
diff --git a/ext/xml/xml.c b/ext/xml/xml.c
index eed6a3f6e0..299be2cfc3 100644
--- a/ext/xml/xml.c
+++ b/ext/xml/xml.c
@@ -102,7 +102,7 @@ int php3_minit_xml(INIT_FUNC_ARGS);
int php3_rinit_xml(INIT_FUNC_ARGS);
int php3_mshutdown_xml(SHUTDOWN_FUNC_ARGS);
int php3_rshutdown_xml(SHUTDOWN_FUNC_ARGS);
-void php3_info_xml(void);
+void php3_info_xml(ZEND_MODULE_INFO_FUNC_ARGS);
static xml_parser *xml_get_parser(int, const char *, HashTable *);
static void xml_destroy_parser(xml_parser *);
@@ -273,7 +273,7 @@ int php3_rshutdown_xml(SHUTDOWN_FUNC_ARGS)
/* }}} */
/* {{{ php3_info_xml() */
-void php3_info_xml()
+void php3_info_xml(ZEND_MODULE_INFO_FUNC_ARGS)
{
PUTS("XML support active");
}
diff --git a/ext/zlib/php3_zlib.h b/ext/zlib/php3_zlib.h
index 22052fbab4..710c694cba 100644
--- a/ext/zlib/php3_zlib.h
+++ b/ext/zlib/php3_zlib.h
@@ -40,7 +40,7 @@ extern php3_module_entry php3_zlib_module_entry;
extern int php3_minit_zlib(INIT_FUNC_ARGS);
extern int php3_mshutdown_zlib(SHUTDOWN_FUNC_ARGS);
-extern void php3_info_zlib(void);
+extern void php3_info_zlib(ZEND_MODULE_INFO_FUNC_ARGS);
extern void php3_gzopen(INTERNAL_FUNCTION_PARAMETERS);
extern void php3_gzclose(INTERNAL_FUNCTION_PARAMETERS);
extern void php3_gzeof(INTERNAL_FUNCTION_PARAMETERS);
diff --git a/ext/zlib/zlib.c b/ext/zlib/zlib.c
index 46ff513c56..c72c07c26d 100644
--- a/ext/zlib/zlib.c
+++ b/ext/zlib/zlib.c
@@ -179,7 +179,7 @@ int php3_mshutdown_zlib(SHUTDOWN_FUNC_ARGS){
return SUCCESS;
}
-void php3_info_zlib(void)
+void php3_info_zlib(ZEND_MODULE_INFO_FUNC_ARGS)
{
PUTS("Zlib support active (compiled with ");
PUTS(ZLIB_VERSION);
diff --git a/main/SAPI.c b/main/SAPI.c
index 1df5fe4fea..a5b9b21b9d 100644
--- a/main/SAPI.c
+++ b/main/SAPI.c
@@ -2,10 +2,12 @@
+----------------------------------------------------------------------+
| Server API Abstraction Layer |
+----------------------------------------------------------------------+
- | Copyright (c) 1999 SAPI Development Team |
+ | Copyright (c) 1998, 1999 SAPI Development Team |
+----------------------------------------------------------------------+
- | This source file is subject to the GNU public license, that is |
- | bundled with this package in the file LICENSE. |
+ | This source file is subject to the Zend license, that is bundled |
+ | with this package in the file LICENSE. If you did not receive a |
+ | copy of the Zend license, please mail us at zend@zend.com so we can |
+ | send you a copy immediately. |
+----------------------------------------------------------------------+
| Design: Shane Caraveo <shane@caraveo.com> |
| Authors: Andi Gutmans <andi@zend.com> |
@@ -59,17 +61,21 @@ static void sapi_free_header(sapi_header_struct *sapi_header)
SAPI_API void sapi_activate(SLS_D)
{
zend_llist_init(&SG(sapi_headers).headers, sizeof(sapi_header_struct), (void (*)(void *)) sapi_free_header, 0);
- SG(sapi_headers).content_type.header = NULL;
+ SG(sapi_headers).send_default_content_type = 1;
SG(sapi_headers).http_response_code = 200;
SG(headers_sent) = 0;
+ if (SG(server_context)) {
+ SG(request_info).post_data = sapi_module.read_post(SLS_C);
+ SG(request_info).cookie_data = sapi_module.read_cookies(SLS_C);
+ }
}
SAPI_API void sapi_deactivate(SLS_D)
{
zend_llist_destroy(&SG(sapi_headers).headers);
- if (SG(sapi_headers).content_type.header) {
- efree(SG(sapi_headers).content_type.header);
+ if (SG(server_context) && SG(request_info).post_data) {
+ efree(SG(request_info).post_data);
}
}
@@ -93,7 +99,7 @@ SAPI_API int sapi_add_header(char *header_line, uint header_line_len)
sapi_header.header_len = header_line_len;
if (sapi_module.header_handler) {
- retval = sapi_module.header_handler(&sapi_header, &SG(sapi_headers));
+ retval = sapi_module.header_handler(&sapi_header, &SG(sapi_headers) SLS_CC);
} else {
retval = SAPI_HEADER_ADD;
}
@@ -107,13 +113,7 @@ SAPI_API int sapi_add_header(char *header_line, uint header_line_len)
if (colon_offset) {
*colon_offset = 0;
if (!STRCASECMP(header_line, "Content-Type")) {
- if (SG(sapi_headers).content_type.header) {
- efree(SG(sapi_headers).content_type.header);
- }
- *colon_offset = ':';
- SG(sapi_headers).content_type.header = (char *) header_line;
- SG(sapi_headers).content_type.header_len = header_line_len;
- return SUCCESS;
+ SG(sapi_headers).send_default_content_type = 0;
}
*colon_offset = ':';
}
@@ -145,9 +145,7 @@ SAPI_API int sapi_send_headers()
return SUCCESS;
break;
case SAPI_HEADER_DO_SEND:
- if (SG(sapi_headers).content_type.header) {
- sapi_module.send_header(&SG(sapi_headers).content_type, SG(server_context));
- } else {
+ if (SG(sapi_headers).send_default_content_type) {
sapi_module.send_header(&default_header, SG(server_context));
}
zend_llist_apply_with_argument(&SG(sapi_headers).headers, (void (*)(void *, void *)) sapi_module.send_header, SG(server_context));
diff --git a/main/SAPI.h b/main/SAPI.h
index 58925b630e..03bc4f7868 100644
--- a/main/SAPI.h
+++ b/main/SAPI.h
@@ -24,8 +24,8 @@ typedef struct {
typedef struct {
zend_llist headers;
- sapi_header_struct content_type;
int http_response_code;
+ unsigned char send_default_content_type;
} sapi_headers_struct;
@@ -36,11 +36,17 @@ extern sapi_module_struct sapi_module; /* true global */
typedef struct {
+ char *request_method;
char *query_string;
+ char *post_data;
+ char *cookie_data;
+ uint content_length;
char *path_translated;
char *request_uri;
+ char *content_type;
+
unsigned char headers_only;
} sapi_request_info;
@@ -89,9 +95,12 @@ struct _sapi_module_struct {
void (*sapi_error)(int type, const char *error_msg, ...);
- int (*header_handler)(sapi_header_struct *sapi_header, sapi_headers_struct *sapi_headers);
+ int (*header_handler)(sapi_header_struct *sapi_header, sapi_headers_struct *sapi_headers SLS_DC);
int (*send_headers)(sapi_headers_struct *sapi_headers SLS_DC);
void (*send_header)(sapi_header_struct *sapi_header, void *server_context);
+
+ char *(*read_post)(SLS_D);
+ char *(*read_cookies)(SLS_D);
};
diff --git a/main/main.c b/main/main.c
index 52a1f07b85..a14dbbabcf 100644
--- a/main/main.c
+++ b/main/main.c
@@ -186,41 +186,41 @@ static PHP_INI_MH(OnUpdateErrorReporting)
# define DEFAULT_SENDMAIL_PATH NULL
#endif
PHP_INI_BEGIN()
- STD_PHP_INI_ENTRY("short_open_tag", "1", PHP_INI_ALL, OnUpdateInt, short_tags, php_core_globals, core_globals)
- STD_PHP_INI_ENTRY("asp_tags", "0", PHP_INI_ALL, OnUpdateInt, asp_tags, php_core_globals, core_globals)
+ STD_PHP_INI_BOOLEAN("short_open_tag", "1", PHP_INI_ALL, OnUpdateInt, short_tags, php_core_globals, core_globals)
+ STD_PHP_INI_BOOLEAN("asp_tags", "0", PHP_INI_ALL, OnUpdateInt, asp_tags, php_core_globals, core_globals)
PHP_INI_ENTRY("precision", "14", PHP_INI_ALL, OnSetPrecision)
- PHP_INI_ENTRY("highlight.comment", HL_COMMENT_COLOR, PHP_INI_ALL, NULL)
- PHP_INI_ENTRY("highlight.default", HL_DEFAULT_COLOR, PHP_INI_ALL, NULL)
- PHP_INI_ENTRY("highlight.html", HL_HTML_COLOR, PHP_INI_ALL, NULL)
- PHP_INI_ENTRY("highlight.string", HL_STRING_COLOR, PHP_INI_ALL, NULL)
- PHP_INI_ENTRY("highlight.bg", HL_BG_COLOR, PHP_INI_ALL, NULL)
- PHP_INI_ENTRY("highlight.keyword", HL_KEYWORD_COLOR, PHP_INI_ALL, NULL)
+ PHP_INI_ENTRY_EX("highlight.comment", HL_COMMENT_COLOR, PHP_INI_ALL, NULL, php_ini_color_displayer_cb)
+ PHP_INI_ENTRY_EX("highlight.default", HL_DEFAULT_COLOR, PHP_INI_ALL, NULL, php_ini_color_displayer_cb)
+ PHP_INI_ENTRY_EX("highlight.html", HL_HTML_COLOR, PHP_INI_ALL, NULL, php_ini_color_displayer_cb)
+ PHP_INI_ENTRY_EX("highlight.string", HL_STRING_COLOR, PHP_INI_ALL, NULL, php_ini_color_displayer_cb)
+ PHP_INI_ENTRY_EX("highlight.bg", HL_BG_COLOR, PHP_INI_ALL, NULL, php_ini_color_displayer_cb)
+ PHP_INI_ENTRY_EX("highlight.keyword", HL_KEYWORD_COLOR, PHP_INI_ALL, NULL, php_ini_color_displayer_cb)
- STD_PHP_INI_ENTRY("magic_quotes_gpc", "1", PHP_INI_ALL, OnUpdateInt, magic_quotes_gpc, php_core_globals, core_globals)
- STD_PHP_INI_ENTRY("magic_quotes_runtime", "0", PHP_INI_ALL, OnUpdateInt, magic_quotes_runtime, php_core_globals, core_globals)
- STD_PHP_INI_ENTRY("magic_quotes_sybase", "0", PHP_INI_ALL, OnUpdateInt, magic_quotes_sybase, php_core_globals, core_globals)
+ STD_PHP_INI_BOOLEAN("magic_quotes_gpc", "1", PHP_INI_ALL, OnUpdateInt, magic_quotes_gpc, php_core_globals, core_globals)
+ STD_PHP_INI_BOOLEAN("magic_quotes_runtime", "0", PHP_INI_ALL, OnUpdateInt, magic_quotes_runtime, php_core_globals, core_globals)
+ STD_PHP_INI_BOOLEAN("magic_quotes_sybase", "0", PHP_INI_ALL, OnUpdateInt, magic_quotes_sybase, php_core_globals, core_globals)
- STD_PHP_INI_ENTRY("safe_mode", "0", PHP_INI_SYSTEM, OnUpdateInt, safe_mode, php_core_globals, core_globals)
- STD_PHP_INI_ENTRY("sql.safe_mode", "0", PHP_INI_SYSTEM, OnUpdateInt, sql_safe_mode, php_core_globals, core_globals)
+ STD_PHP_INI_BOOLEAN("safe_mode", "0", PHP_INI_SYSTEM, OnUpdateInt, safe_mode, php_core_globals, core_globals)
+ STD_PHP_INI_BOOLEAN("sql.safe_mode", "0", PHP_INI_SYSTEM, OnUpdateInt, sql_safe_mode, php_core_globals, core_globals)
STD_PHP_INI_ENTRY("safe_mode_exec_dir", "1", PHP_INI_SYSTEM, OnUpdateString, safe_mode_exec_dir, php_core_globals, core_globals)
- STD_PHP_INI_ENTRY("enable_dl", "1", PHP_INI_SYSTEM, OnUpdateInt, enable_dl, php_core_globals, core_globals)
+ STD_PHP_INI_BOOLEAN("enable_dl", "1", PHP_INI_SYSTEM, OnUpdateInt, enable_dl, php_core_globals, core_globals)
PHP_INI_ENTRY("SMTP", "localhost", PHP_INI_ALL, NULL)
PHP_INI_ENTRY("sendmail_path", DEFAULT_SENDMAIL_PATH, PHP_INI_SYSTEM, NULL)
PHP_INI_ENTRY("sendmail_from", NULL, PHP_INI_ALL, NULL)
PHP_INI_ENTRY("error_reporting", NULL, PHP_INI_ALL, OnUpdateErrorReporting)
- STD_PHP_INI_ENTRY("display_errors", "1", PHP_INI_ALL, OnUpdateInt, display_errors, php_core_globals, core_globals)
- STD_PHP_INI_ENTRY("track_errors", "0", PHP_INI_ALL, OnUpdateInt, track_errors, php_core_globals, core_globals)
- STD_PHP_INI_ENTRY("log_errors", "0", PHP_INI_ALL, OnUpdateInt, log_errors, php_core_globals, core_globals)
+ STD_PHP_INI_BOOLEAN("display_errors", "1", PHP_INI_ALL, OnUpdateInt, display_errors, php_core_globals, core_globals)
+ STD_PHP_INI_BOOLEAN("track_errors", "0", PHP_INI_ALL, OnUpdateInt, track_errors, php_core_globals, core_globals)
+ STD_PHP_INI_BOOLEAN("log_errors", "0", PHP_INI_ALL, OnUpdateInt, log_errors, php_core_globals, core_globals)
STD_PHP_INI_ENTRY("error_log", NULL, PHP_INI_ALL, OnUpdateString, error_log, php_core_globals, core_globals)
STD_PHP_INI_ENTRY("auto_prepend_file", NULL, PHP_INI_ALL, OnUpdateString, auto_prepend_file, php_core_globals, core_globals)
STD_PHP_INI_ENTRY("auto_append_file", NULL, PHP_INI_ALL, OnUpdateString, auto_append_file, php_core_globals, core_globals)
- STD_PHP_INI_ENTRY("y2k_compliance", "0", PHP_INI_ALL, OnUpdateInt, y2k_compliance, php_core_globals, core_globals)
+ STD_PHP_INI_BOOLEAN("y2k_compliance", "0", PHP_INI_ALL, OnUpdateInt, y2k_compliance, php_core_globals, core_globals)
STD_PHP_INI_ENTRY("doc_root", NULL, PHP_INI_SYSTEM, OnUpdateStringUnempty, doc_root, php_core_globals, core_globals)
STD_PHP_INI_ENTRY("user_dir", NULL, PHP_INI_SYSTEM, OnUpdateStringUnempty, user_dir, php_core_globals, core_globals)
@@ -233,12 +233,12 @@ PHP_INI_BEGIN()
PHP_INI_ENTRY("browscap", NULL, PHP_INI_SYSTEM, NULL)
- PHP_INI_ENTRY("define_syslog_variables", "0", PHP_INI_ALL, NULL)
+ PHP_INI_ENTRY_EX("define_syslog_variables", "0", PHP_INI_ALL, NULL, php_ini_boolean_displayer_cb)
PHP_INI_ENTRY("max_execution_time", "30", PHP_INI_ALL, OnChangeMaxExecutionTime)
PHP_INI_ENTRY("memory_limit", "8388608", PHP_INI_ALL, OnChangeMemoryLimit)
- STD_PHP_INI_ENTRY("track_vars", "0", PHP_INI_ALL, OnUpdateInt, track_vars, php_core_globals, core_globals)
+ STD_PHP_INI_BOOLEAN("track_vars", "0", PHP_INI_ALL, OnUpdateInt, track_vars, php_core_globals, core_globals)
STD_PHP_INI_ENTRY("gpc_order", "GPC", PHP_INI_ALL, OnUpdateStringUnempty, gpc_order, php_core_globals, core_globals)
STD_PHP_INI_ENTRY("arg_separator", "&", PHP_INI_ALL, OnUpdateStringUnempty, arg_separator, php_core_globals, core_globals)
PHP_INI_END()
@@ -771,6 +771,7 @@ int php_module_startup(sapi_module_struct *sf)
int module_number=0; /* for REGISTER_INI_ENTRIES() */
#ifdef ZTS
php_core_globals *core_globals;
+ sapi_globals_struct *sapi_globals = ts_resource(sapi_globals_id);
#endif
#if (WIN32|WINNT) && !(USE_SAPI)
WORD wVersionRequested;
@@ -779,6 +780,8 @@ int php_module_startup(sapi_module_struct *sf)
wVersionRequested = MAKEWORD(2, 0);
#endif
+ SG(server_context) = NULL;
+ sapi_activate(SLS_C);
if (module_initialized) {
return SUCCESS;
@@ -805,6 +808,7 @@ int php_module_startup(sapi_module_struct *sf)
#endif
PG(header_is_being_sent) = 0;
+ SG(request_info).headers_only = 0;
#if HAVE_SETLOCALE
setlocale(LC_CTYPE, "");
@@ -838,6 +842,7 @@ int php_module_startup(sapi_module_struct *sf)
return FAILURE;
}
module_initialized = 1;
+ sapi_deactivate(SLS_C);
return SUCCESS;
}
@@ -903,7 +908,7 @@ int _php3_hash_environment(PLS_D ELS_DC)
switch(*p++) {
case 'p':
case 'P':
- if (!_gpc_flags[0] && php3_headers_unsent() && request_info.request_method && !strcasecmp(request_info.request_method, "post")) {
+ if (!_gpc_flags[0] && !SG(headers_sent) && SG(request_info).request_method && !strcasecmp(SG(request_info).request_method, "POST")) {
php3_treat_data(PARSE_POST, NULL); /* POST Data */
_gpc_flags[0]=1;
}
diff --git a/main/php_ini.c b/main/php_ini.c
index 815b582cbd..fbe1ad0dab 100644
--- a/main/php_ini.c
+++ b/main/php_ini.c
@@ -34,6 +34,10 @@
#include "php_ini.h"
#include "zend_alloc.h"
#include "php_globals.h"
+#include "ext/standard/info.h"
+
+#define ENTRY_NAME_COLOR "#999999"
+#define CONTENTS_COLOR "#DDDDDD"
static HashTable known_directives;
@@ -93,7 +97,7 @@ int php_ini_rshutdown()
* Registration / unregistration
*/
-int php_register_ini_entries(php_ini_entry *ini_entry, int module_number)
+PHPAPI int php_register_ini_entries(php_ini_entry *ini_entry, int module_number)
{
php_ini_entry *p = ini_entry;
php_ini_entry *hashed_ini_entry;
@@ -126,13 +130,13 @@ int php_register_ini_entries(php_ini_entry *ini_entry, int module_number)
}
-void php_unregister_ini_entries(int module_number)
+PHPAPI void php_unregister_ini_entries(int module_number)
{
_php3_hash_apply_with_argument(&known_directives, (int (*)(void *, void *)) php_remove_ini_entries, (void *) &module_number);
}
-int php_alter_ini_entry(char *name, uint name_length, char *new_value, uint new_value_length, int modify_type)
+PHPAPI int php_alter_ini_entry(char *name, uint name_length, char *new_value, uint new_value_length, int modify_type)
{
php_ini_entry *ini_entry;
char *duplicate;
@@ -166,7 +170,7 @@ int php_alter_ini_entry(char *name, uint name_length, char *new_value, uint new_
}
-int php_restore_ini_entry(char *name, uint name_length)
+PHPAPI int php_restore_ini_entry(char *name, uint name_length)
{
php_ini_entry *ini_entry;
@@ -182,11 +186,25 @@ int php_restore_ini_entry(char *name, uint name_length)
}
+PHPAPI int php_ini_register_displayer(char *name, uint name_length, void (*displayer)(php_ini_entry *ini_entry, int type))
+{
+ php_ini_entry *ini_entry;
+
+ if (_php3_hash_find(&known_directives, name, name_length, (void **) &ini_entry)==FAILURE) {
+ return FAILURE;
+ }
+
+ ini_entry->displayer = displayer;
+ return SUCCESS;
+}
+
+
+
/*
* Data retrieval
*/
-long php_ini_long(char *name, uint name_length, int orig)
+PHPAPI long php_ini_long(char *name, uint name_length, int orig)
{
php_ini_entry *ini_entry;
@@ -202,7 +220,7 @@ long php_ini_long(char *name, uint name_length, int orig)
}
-double php_ini_double(char *name, uint name_length, int orig)
+PHPAPI double php_ini_double(char *name, uint name_length, int orig)
{
php_ini_entry *ini_entry;
@@ -218,7 +236,7 @@ double php_ini_double(char *name, uint name_length, int orig)
}
-char *php_ini_string(char *name, uint name_length, int orig)
+PHPAPI char *php_ini_string(char *name, uint name_length, int orig)
{
php_ini_entry *ini_entry;
@@ -235,7 +253,101 @@ char *php_ini_string(char *name, uint name_length, int orig)
-/* Standard message handlers for core_globals */
+static void php_ini_displayer_cb(php_ini_entry *ini_entry, int type)
+{
+ if (ini_entry->displayer) {
+ ini_entry->displayer(ini_entry, type);
+ } else {
+ char *display_string;
+ uint display_string_length;
+
+ if (type==PHP_INI_DISPLAY_ORIG && ini_entry->orig_value) {
+ display_string = ini_entry->orig_value;
+ display_string_length = ini_entry->orig_value_length;
+ } else if (ini_entry->value && ini_entry->value[0]) {
+ display_string = ini_entry->value;
+ display_string_length = ini_entry->value_length;
+ } else {
+ display_string = "<i>no value</i>";
+ display_string_length = sizeof("<i>no value</i>")-1;
+ }
+ PHPWRITE(display_string, display_string_length);
+ }
+}
+
+
+PHP_INI_DISP(php_ini_boolean_displayer_cb)
+{
+ int value;
+
+ if (type==PHP_INI_DISPLAY_ORIG && ini_entry->orig_value) {
+ value = atoi(ini_entry->orig_value);
+ } else if (ini_entry->value) {
+ value = atoi(ini_entry->value);
+ } else {
+ value = 0;
+ }
+ if (value) {
+ PUTS("On");
+ } else {
+ PUTS("Off");
+ }
+}
+
+
+PHP_INI_DISP(php_ini_color_displayer_cb)
+{
+ char *value;
+
+ if (type==PHP_INI_DISPLAY_ORIG && ini_entry->orig_value) {
+ value = ini_entry->orig_value;
+ } else if (ini_entry->value) {
+ value = ini_entry->value;
+ } else {
+ value = NULL;
+ }
+ if (value) {
+ php3_printf("<font color=\"%s\">%s</font>", value, value);
+ } else {
+ PUTS("<i>no value</i>;");
+ }
+}
+
+
+static int php_ini_displayer(php_ini_entry *ini_entry, int module_number)
+{
+ if (ini_entry->module_number != module_number) {
+ return 0;
+ }
+
+ PUTS("<tr><td align=\"center\" bgcolor=\"" ENTRY_NAME_COLOR "\">");
+ PHPWRITE(ini_entry->name, ini_entry->name_length-1);
+ PUTS("<td align=\"center\" bgcolor=\"" CONTENTS_COLOR "\">");
+ php_ini_displayer_cb(ini_entry, PHP_INI_DISPLAY_ACTIVE);
+ PUTS("</td><td align=\"center\" bgcolor=\"" CONTENTS_COLOR "\">");
+ php_ini_displayer_cb(ini_entry, PHP_INI_DISPLAY_ORIG);
+ PUTS("</td></tr>\n");
+ return 0;
+}
+
+
+PHPAPI void display_ini_entries(zend_module_entry *module)
+{
+ int module_number;
+
+ if (module) {
+ module_number = module->module_number;
+ } else {
+ module_number = 0;
+ }
+ PUTS("<table border=5 width=\"600\">\n");
+ php_info_print_table_header(3, "Directive", "Master Value", "Local Value");
+ zend_hash_apply_with_argument(&known_directives, (int (*)(void *, void *)) php_ini_displayer, (void *) module_number);
+ PUTS("</table>\n");
+}
+
+
+/* Standard message handlers */
PHP_INI_MH(OnUpdateInt)
{
diff --git a/main/php_ini.h b/main/php_ini.h
index f76dd83cbb..de9a994858 100644
--- a/main/php_ini.h
+++ b/main/php_ini.h
@@ -10,6 +10,7 @@
typedef struct _php_ini_entry php_ini_entry;
#define PHP_INI_MH(name) int name(php_ini_entry *entry, char *new_value, uint new_value_length, void *mh_arg1, void *mh_arg2, void *mh_arg3)
+#define PHP_INI_DISP(name) void name(php_ini_entry *ini_entry, int type)
struct _php_ini_entry {
int module_number;
@@ -27,6 +28,8 @@ struct _php_ini_entry {
char *orig_value;
uint orig_value_length;
int modified;
+
+ void (*displayer)(php_ini_entry *ini_entry, int type);
};
@@ -34,36 +37,57 @@ int php_ini_mstartup();
int php_ini_mshutdown();
int php_ini_rshutdown();
-int php_register_ini_entries(php_ini_entry *ini_entry, int module_number);
-void php_unregister_ini_entries(int module_number);
-int php_alter_ini_entry(char *name, uint name_length, char *new_value, uint new_value_length, int modify_type);
-int php_restore_ini_entry(char *name, uint name_length);
+PHPAPI int php_register_ini_entries(php_ini_entry *ini_entry, int module_number);
+PHPAPI void php_unregister_ini_entries(int module_number);
+PHPAPI int php_alter_ini_entry(char *name, uint name_length, char *new_value, uint new_value_length, int modify_type);
+PHPAPI int php_restore_ini_entry(char *name, uint name_length);
+PHPAPI void display_ini_entries(zend_module_entry *module);
+
+PHPAPI long php_ini_long(char *name, uint name_length, int orig);
+PHPAPI double php_ini_double(char *name, uint name_length, int orig);
+PHPAPI char *php_ini_string(char *name, uint name_length, int orig);
-long php_ini_long(char *name, uint name_length, int orig);
-double php_ini_double(char *name, uint name_length, int orig);
-char *php_ini_string(char *name, uint name_length, int orig);
+PHPAPI int php_ini_register_displayer(char *name, uint name_length, void (*displayer)(php_ini_entry *ini_entry, int type));
+PHPAPI PHP_INI_DISP(php_ini_boolean_displayer_cb);
+PHPAPI PHP_INI_DISP(php_ini_color_displayer_cb);
#define PHP_INI_BEGIN() static php_ini_entry ini_entries[] = {
-#define PHP_INI_END() { 0, 0, NULL, 0, NULL, NULL, NULL, 0, NULL, 0, 0 } };
+#define PHP_INI_END() { 0, 0, NULL, 0, NULL, NULL, NULL, NULL, NULL, 0, NULL, 0, 0, NULL } };
+
+#define PHP_INI_ENTRY3_EX(name, default_value, modifyable, on_modify, arg1, arg2, arg3, displayer) \
+ { 0, modifyable, name, sizeof(name), on_modify, arg1, arg2, arg3, default_value, sizeof(default_value)-1, NULL, 0, 0, displayer },
#define PHP_INI_ENTRY3(name, default_value, modifyable, on_modify, arg1, arg2, arg3) \
- { 0, modifyable, name, sizeof(name), on_modify, arg1, arg2, arg3, default_value, sizeof(default_value)-1, NULL, 0, 0 },
+ PHP_INI_ENTRY3_EX(name, default_value, modifyable, on_modify, arg1, arg2, arg3, NULL)
+
+#define PHP_INI_ENTRY2_EX(name, default_value, modifyable, on_modify, arg1, arg2, displayer) \
+ PHP_INI_ENTRY3_EX(name, default_value, modifyable, on_modify, arg1, arg2, NULL, displayer)
#define PHP_INI_ENTRY2(name, default_value, modifyable, on_modify, arg1, arg2) \
- PHP_INI_ENTRY3(name, default_value, modifyable, on_modify, arg1, arg2, NULL)
+ PHP_INI_ENTRY2_EX(name, default_value, modifyable, on_modify, arg1, arg2, NULL)
+
+#define PHP_INI_ENTRY1_EX(name, default_value, modifyable, on_modify, arg1, displayer) \
+ PHP_INI_ENTRY3_EX(name, default_value, modifyable, on_modify, arg1, NULL, NULL, displayer)
#define PHP_INI_ENTRY1(name, default_value, modifyable, on_modify, arg1) \
- PHP_INI_ENTRY3(name, default_value, modifyable, on_modify, arg1, NULL, NULL)
+ PHP_INI_ENTRY1_EX(name, default_value, modifyable, on_modify, arg1, NULL)
+#define PHP_INI_ENTRY_EX(name, default_value, modifyable, on_modify, displayer) \
+ PHP_INI_ENTRY3_EX(name, default_value, modifyable, on_modify, NULL, NULL, NULL, displayer)
+
#define PHP_INI_ENTRY(name, default_value, modifyable, on_modify) \
- PHP_INI_ENTRY3(name, default_value, modifyable, on_modify, NULL, NULL, NULL)
+ PHP_INI_ENTRY_EX(name, default_value, modifyable, on_modify, NULL)
#ifdef ZTS
#define STD_PHP_INI_ENTRY(name, default_value, modifyable, on_modify, property_name, struct_type, struct_ptr) \
PHP_INI_ENTRY2(name, default_value, modifyable, on_modify, (void *) XtOffsetOf(struct_type, property_name), (void *) &struct_ptr##_id)
+#define STD_PHP_INI_BOOLEAN(name, default_value, modifyable, on_modify, property_name, struct_type, struct_ptr) \
+ PHP_INI_ENTRY3_EX(name, default_value, modifyable, on_modify, (void *) XtOffsetOf(struct_type, property_name), (void *) &struct_ptr##_id, NULL, php_ini_boolean_displayer_cb)
#else
#define STD_PHP_INI_ENTRY(name, default_value, modifyable, on_modify, property_name, struct_type, struct_ptr) \
PHP_INI_ENTRY2(name, default_value, modifyable, on_modify, (void *) XtOffsetOf(struct_type, property_name), (void *) &struct_ptr)
+#define STD_PHP_INI_BOOLEAN(name, default_value, modifyable, on_modify, property_name, struct_type, struct_ptr) \
+ PHP_INI_ENTRY3_EX(name, default_value, modifyable, on_modify, (void *) XtOffsetOf(struct_type, property_name), (void *) &struct_ptr, NULL, php_ini_boolean_displayer_cb)
#endif
#define INI_INT(name) php_ini_long((name), sizeof(name), 0)
@@ -78,6 +102,10 @@ char *php_ini_string(char *name, uint name_length, int orig);
#define REGISTER_INI_ENTRIES() php_register_ini_entries(ini_entries, module_number)
#define UNREGISTER_INI_ENTRIES() php_unregister_ini_entries(module_number)
+#define DISPLAY_INI_ENTRIES() display_ini_entries(module)
+
+#define REGISTER_INI_DISPLAYER(name, displayer) php_ini_register_displayer((name), sizeof(name), displayer)
+#define REGISTER_INI_BOOLEAN(name) REGISTER_INI_DISPLAYER(name, php_ini_boolean_displayer_cb)
pval *cfg_get_entry(char *name, uint name_length);
@@ -88,4 +116,8 @@ PHP_INI_MH(OnUpdateReal);
PHP_INI_MH(OnUpdateString);
PHP_INI_MH(OnUpdateStringUnempty);
+
+#define PHP_INI_DISPLAY_ORIG 1
+#define PHP_INI_DISPLAY_ACTIVE 2
+
#endif /* _PHP_INI_H */
diff --git a/mod_php3.c b/mod_php3.c
index a102fe8f5f..01bdd8d73d 100644
--- a/mod_php3.c
+++ b/mod_php3.c
@@ -64,6 +64,8 @@ void php_module_shutdown();
void php_module_shutdown_for_exec();
int php_module_shutdown_wrapper(sapi_module_struct *sapi_globals);
+int php3_error(int type, const char *format, ...);
+
#include "util_script.h"
#include "php_version.h"
@@ -118,6 +120,56 @@ static int zend_apache_ub_write(const char *str, uint str_length)
}
+char *sapi_apache_read_post(SLS_D)
+{
+ return NULL;
+}
+
+
+char *sapi_apache_read_cookies(SLS_D)
+{
+ return table_get(r->subprocess_env, "HTTP_COOKIE");
+}
+
+
+int sapi_apache_header_handler(sapi_header_struct *sapi_header, sapi_headers_struct *sapi_headers SLS_DC)
+{
+ char *header_name, *header_content, *p;
+ request_rec *r = (request_rec *) SG(server_context);
+
+ header_name = sapi_header->header;
+
+ header_content = p = strchr(header_name, ':');
+ if (!p) {
+ return 0;
+ }
+
+ *p = 0;
+ do {
+ header_content++
+ } while (*header_content==' ');
+
+ if (!strcasecmp(header_name, "Content-Type")) {
+ r->content_type = pstrdup(header_content);
+ } else if (!strcasecmp(header_name, "Location")) {
+ r->status = REDIRECT;
+ } else {
+ table_set(r->headers_out, header_name, header_content);
+ }
+
+ *p = ':'; /* a well behaved header handler shouldn't change its original arguments */
+
+ return 0; /* don't use the default SAPI mechanism, Apache duplicates this functionality */
+}
+
+
+void sapi_apache_send_headers(sapi_headers_struct *sapi_headers SLS_DC)
+{
+ send_http_header((request_rec *) SG(server_context));
+ return SAPI_HEADER_SENT_SUCCESSFULLY;
+}
+
+
sapi_module_struct sapi_module = {
"PHP Language", /* name */
@@ -125,6 +177,15 @@ sapi_module_struct sapi_module = {
php_module_shutdown_wrapper, /* shutdown */
zend_apache_ub_write, /* unbuffered write */
+
+ php3_error, /* error handler */
+
+ sapi_apache_header_handler, /* header handler */
+ sapi_apache_send_headers, /* send headers handler */
+ NULL, /* send header handler */
+
+ sapi_apache_read_post, /* read POST data */
+ sapi_apache_read_cookies /* read Cookies */
};
diff --git a/request_info.c b/request_info.c
index ef8482772a..86a56f7c30 100644
--- a/request_info.c
+++ b/request_info.c
@@ -37,17 +37,11 @@ PHPAPI php3_request_info request_info;
#if CGI_BINARY
int php3_init_request_info(void *conf)
{
- char *buf; /* temporary buffers */
SLS_FETCH();
request_info.current_user = NULL;
request_info.current_user_length = 0;
- request_info.request_method = getenv("REQUEST_METHOD");
request_info.script_name = getenv("SCRIPT_NAME");
- buf = getenv("CONTENT_LENGTH");
- request_info.content_length = (buf ? atoi(buf) : 0);
- request_info.content_type = getenv("CONTENT_TYPE");
- request_info.cookies = getenv("HTTP_COOKIE");
request_info.script_filename = getenv("SCRIPT_FILENAME");
/* Hack for annoying servers that do not set SCRIPT_FILENAME for us */
if (!request_info.script_filename) {
@@ -110,13 +104,11 @@ int php3_init_request_info(void *conf)
request_info.current_user_length = 0;
request_info.filename = r->filename;
- request_info.request_method = r->method;
+ SG(request_info).request_method = r->method;
request_info.content_type = table_get(r->subprocess_env, "CONTENT_TYPE");
buf = table_get(r->subprocess_env, "CONTENT_LENGTH");
- request_info.content_length = (buf ? atoi(buf) : 0);
-
- request_info.cookies = table_get(r->subprocess_env, "HTTP_COOKIE");
+ SG(request_info).content_length = (buf ? atoi(buf) : 0);
return SUCCESS;
}
diff --git a/request_info.h b/request_info.h
index 2bcbfa7d77..51ff6606d2 100644
--- a/request_info.h
+++ b/request_info.h
@@ -32,14 +32,9 @@
typedef struct {
char *filename;
- char *path_info;
- const char *request_method;
char *script_name;
char *current_user;
int current_user_length;
- unsigned int content_length;
- const char *content_type;
- const char *cookies;
const char *script_filename;
char *php_argv0;
} php3_request_info;