#endif
#endif
+
+#include "SAPI.h"
+
#if MSVC5 || !defined(HAVE_GETOPT)
#include "getopt.h"
#endif
/* True globals (no need for thread safety) */
HashTable configuration_hash;
char *php3_ini_path = NULL;
+#ifdef ZTS
+php_core_globals *main_core_globals;
+#endif
static PHP_INI_MH(OnSetPrecision)
}
+
+#ifndef NEW_SAPI
+# if APACHE
+static int zend_apache_ub_write(const char *str, uint str_length)
+{
+ if (php3_rqst) {
+ return rwrite(str, str_length, php3_rqst);
+ } else {
+ return fwrite(str, 1, str_length, stdout);
+ }
+}
+
+sapi_functions_struct sapi_functions = {
+ zend_apache_ub_write
+};
+
+# elif CGI_BINARY
+
+static int zend_cgibin_ub_write(const char *str, uint str_length)
+{
+ return fwrite(str, 1, str_length, stdout);
+}
+
+sapi_functions_struct sapi_functions = {
+ zend_cgibin_ub_write
+};
+# endif
+#endif
+
+
int php3_request_startup(CLS_D ELS_DC PLS_DC)
{
zend_output_startup();
}
+#ifdef ZTS
+static core_globals_ctor(php_core_globals *core_globals)
+{
+ *core_globals = *main_core_globals;
+}
+#endif
+
+
int php3_module_startup()
{
zend_utility_functions zuf;
zend_startup(&zuf, NULL);
#ifdef ZTS
- core_globals_id = ts_allocate_id(sizeof(php_core_globals), NULL, NULL);
+ core_globals_id = ts_allocate_id(sizeof(php_core_globals), core_globals_ctor, NULL);
core_globals = ts_resource(core_globals_id);
+ main_core_globals = core_globals;
+#endif
+
+#ifdef NEW_SAPI
+ sapi_startup();
#endif
#if HAVE_SETLOCALE
#include "logos.h"
-static void php3_parse(zend_file_handle *primary_file CLS_DC ELS_DC PLS_DC)
+void php3_parse(zend_file_handle *primary_file CLS_DC ELS_DC PLS_DC)
{
zend_file_handle *prepend_file_p, *append_file_p;
zend_file_handle prepend_file, append_file;
#if CGI_BINARY
-static void _php3_usage(char *argv0)
+void _php3_usage(char *argv0)
{
char *prog;
extern void yy_destroy_tls(void);
#endif
+#ifndef ZTS
int main(int argc, char *argv[])
{
int cgi = 0, c, i, len;
}
#endif /* CGI_BINARY */
+#endif /* ZTS */
+
#if APACHE
PHPAPI int apache_php3_module_main(request_rec * r, int fd, int display_source_mode)
# ADD BSC32 /nologo\r
LINK32=link.exe\r
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386\r
-# ADD LINK32 lib44bsd95.lib resolv.lib winmm.lib wsock32.lib netapi32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib libzendts.lib tsrm.lib /nologo /version:3.0 /subsystem:console /machine:I386 /nodefaultlib:"libc.lib" /out:"Release_TS\php.exe" /libpath:"lib" /libpath:"\src\lib" /libpath:"d:\src\bind\lib" /libpath:"..\tsrm\release_TS" /libpath:"..\libzend\Release_TS"\r
+# ADD LINK32 lib44bsd95.lib resolv.lib winmm.lib wsock32.lib netapi32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib libzendts.lib tsrm.lib /nologo /version:3.0 /subsystem:console /machine:I386 /nodefaultlib:"libc.lib" /out:"Release_TS\php.exe" /libpath:"lib" /libpath:"..\tsrm\release_TS" /libpath:"..\libzend\Release_TS" /libpath:"."\r
\r
!ELSEIF "$(CFG)" == "php4ts - Win32 Debug_TS"\r
\r
# ADD BSC32 /nologo\r
LINK32=link.exe\r
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept\r
-# ADD LINK32 lib44bsd95.lib resolv.lib winmm.lib wsock32.lib netapi32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib TSRM.lib libzendts.lib /nologo /version:3.0 /subsystem:console /debug /machine:I386 /nodefaultlib:"libcd" /nodefaultlib:"libcmt" /out:"Debug_TS\php.exe" /pdbtype:sept /libpath:"lib" /libpath:"\src\lib" /libpath:"d:\src\bind\lib" /libpath:"..\TSRM\debug_ts" /libpath:"..\libzend\Debug_TS"\r
+# ADD LINK32 winmm.lib wsock32.lib netapi32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib TSRM.lib libzendts.lib php4libts.lib lib44bsd95.lib resolv.lib /nologo /version:3.0 /subsystem:console /debug /machine:I386 /nodefaultlib:"libcd" /nodefaultlib:"libcmt" /out:"Debug_TS\php.exe" /pdbtype:sept /libpath:"lib" /libpath:"..\TSRM\debug_ts" /libpath:"..\libzend\Debug_TS" /libpath:"Debug_TS"\r
# SUBTRACT LINK32 /pdb:none\r
\r
!ENDIF \r
\r
# Name "php4ts - Win32 Release_TS"\r
# Name "php4ts - Win32 Debug_TS"\r
-# Begin Group "Core"\r
-\r
-# PROP Default_Filter ""\r
# Begin Group "Source Files"\r
\r
-# PROP Default_Filter ""\r
-# Begin Source File\r
-\r
-SOURCE=".\configuration-parser.c"\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=".\configuration-scanner.c"\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\ext\standard\cyr_convert.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=".\fopen-wrappers.c"\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\getopt.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\internal_functions.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\main.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\output.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\php3_realpath.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\php_ini.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\ext\standard\quot_print.c\r
-# End Source File\r
+# PROP Default_Filter ".c"\r
# Begin Source File\r
\r
-SOURCE=.\request_info.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\safe_mode.c\r
+SOURCE=.\cgi_main.c\r
# End Source File\r
# End Group\r
# Begin Group "Header Files"\r
\r
-# PROP Default_Filter ""\r
-# Begin Source File\r
-\r
-SOURCE=.\config.w32.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=".\configuration-parser.h"\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=".\configuration-parser.tab.h"\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\ext\standard\cyr_convert.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\getopt.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\internal_functions_registry.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\logos.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\main.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\output.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\php.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\php3_compat.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\php3_realpath.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\php_globals.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\php_ini.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\ext\standard\quot_print.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\request_info.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\safe_mode.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\win95nt.h\r
-# End Source File\r
-# End Group\r
-# End Group\r
-# Begin Group "Function Modules"\r
-\r
-# PROP Default_Filter ""\r
-# Begin Group "Source Files No. 1"\r
-\r
-# PROP Default_Filter ""\r
-# Begin Source File\r
-\r
-SOURCE=.\ext\apache\apache.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\ext\standard\base64.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\ext\standard\basic_functions.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\ext\bcmath\bcmath.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\ext\standard\browscap.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\ext\standard\datetime.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\ext\standard\dir.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\ext\standard\dl.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\ext\standard\dns.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\ext\standard\exec.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\ext\standard\file.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\ext\standard\filestat.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\ext\standard\flock_compat.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\ext\standard\formatted_print.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\ext\standard\fsock.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\ext\standard\head.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\ext\standard\html.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\ext\standard\image.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\ext\standard\info.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\ext\standard\iptc.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\ext\standard\link.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\ext\standard\mail.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\ext\standard\math.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\ext\standard\md5.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\ext\standard\microtime.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\ext\standard\mime.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\ext\bcmath\number.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\ext\odbc\odbc.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\ext\standard\pack.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\ext\standard\pageinfo.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\ext\standard\post.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\ext\standard\rand.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\ext\standard\reg.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\ext\standard\soundex.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\ext\standard\string.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\ext\standard\syslog.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\ext\standard\type.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\ext\standard\uniqid.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\ext\standard\url.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\ext\standard\var.c\r
-# End Source File\r
-# End Group\r
-# Begin Group "Header Files No. 1"\r
-\r
-# PROP Default_Filter ""\r
-# Begin Source File\r
-\r
-SOURCE=.\ext\standard\base64.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\ext\standard\basic_functions.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\ext\standard\datetime.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\ext\standard\dl.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\ext\standard\dns.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\ext\standard\exec.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\ext\standard\file.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\ext\standard\flock_compat.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\ext\standard\fsock.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\functions\global.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\ext\standard\head.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\ext\standard\html.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\ext\standard\md5.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\ext\standard\mime.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\ext\bcmath\number.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\ext\standard\pageinfo.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\ext\bcmath\php3_bcmath.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\functions\php3_dir.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\functions\php3_filestat.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\functions\php3_ldap.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\ext\standard\php3_mail.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\ext\odbc\php3_odbc.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\ext\standard\php3_string.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\functions\php3_string.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\functions\php3_syslog.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\functions\phpdir.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\functions\phpmath.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\ext\standard\post.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\ext\standard\reg.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\ext\standard\type.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\ext\standard\uniqid.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\ext\standard\url.h\r
-# End Source File\r
-# End Group\r
-# Begin Group "Regular Expressions"\r
-\r
-# PROP Default_Filter ""\r
-# Begin Source File\r
-\r
-SOURCE=.\regex\regcomp.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\regex\regerror.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\regex\regexec.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\regex\regfree.c\r
-# End Source File\r
-# End Group\r
-# End Group\r
-# Begin Group "Win32"\r
-\r
-# PROP Default_Filter ""\r
-# Begin Group "Source Files No. 2"\r
-\r
-# PROP Default_Filter ""\r
-# Begin Source File\r
-\r
-SOURCE=.\ext\com\COM.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\win32\pwd.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\win32\readdir.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\win32\registry.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\win32\sendmail.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\win32\time.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\win32\wfile.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\dl\snmp\winsnmp.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\win32\winutil.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\win32\wsyslog.c\r
-# End Source File\r
-# End Group\r
-# Begin Group "Header Files No. 2"\r
-\r
-# PROP Default_Filter ""\r
-# Begin Source File\r
-\r
-SOURCE=.\win32\grp.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\win32\param.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\ext\com\php3_COM.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\win32\php_registry.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\win32\pwd.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\win32\readdir.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\win32\sendmail.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\win32\syslog.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\win32\time.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\win32\unistd.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\win32\wfile.h\r
-# End Source File\r
-# End Group\r
-# End Group\r
-# Begin Group "Parsers"\r
-\r
-# PROP Default_Filter ""\r
-# Begin Source File\r
-\r
-SOURCE=".\configuration-parser.y"\r
-\r
-!IF "$(CFG)" == "php4ts - Win32 Release_TS"\r
-\r
-!ELSEIF "$(CFG)" == "php4ts - Win32 Debug_TS"\r
-\r
-# Begin Custom Build\r
-InputDir=.\r
-InputPath=".\configuration-parser.y"\r
-\r
-BuildCmds= \\r
- bison --output=configuration-parser.c -v -d -S "C:\Program Files\Cygnus\share\bison.simple" -p cfg configuration-parser.y\r
-\r
-"$(InputDir)\configuration-parser.c" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"\r
- $(BuildCmds)\r
-\r
-"$(InputDir)\configuration-parser.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"\r
- $(BuildCmds)\r
-# End Custom Build\r
-\r
-!ENDIF \r
-\r
-# End Source File\r
-# End Group\r
-# Begin Group "Scanners"\r
-\r
-# PROP Default_Filter ""\r
-# Begin Source File\r
-\r
-SOURCE=".\configuration-scanner.l"\r
-\r
-!IF "$(CFG)" == "php4ts - Win32 Release_TS"\r
-\r
-!ELSEIF "$(CFG)" == "php4ts - Win32 Debug_TS"\r
-\r
-# Begin Custom Build\r
-InputPath=".\configuration-scanner.l"\r
-\r
-"configuration-scanner.c" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"\r
- flex -i -Pcfg -oconfiguration-scanner.c configuration-scanner.l\r
-\r
-# End Custom Build\r
-\r
-!ENDIF \r
-\r
-# End Source File\r
+# PROP Default_Filter ".h"\r
# End Group\r
# End Target\r
# End Project\r