]> granicus.if.org Git - php/commitdiff
- Add PHP Modules workspace
authorZeev Suraski <zeev@php.net>
Fri, 13 Aug 1999 21:03:27 +0000 (21:03 +0000)
committerZeev Suraski <zeev@php.net>
Fri, 13 Aug 1999 21:03:27 +0000 (21:03 +0000)
- Get the MySQL module to compile&work under thread-safe Win32
- Fix various thread safety issues with dynamic modules

ChangeLog
ext/mysql/mysql.c
ext/mysql/mysql.dsp
ext/standard/dl.c
main/main.c
main/php_ini.c
main/php_ini.h
php.ini-dist
php4ts.dsw
win32/php_modules.dsw [new file with mode: 0644]

index fedbdf822094b99d8e9abb632b78118157598bd2..915995ae722dd4c258fb2c6139688d1667b35e6b 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -2,6 +2,8 @@ PHP 4.0 CHANGE LOG                                                    ChangeLog
 |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
 
 ?? ?? 1999, Version 4.0 Beta 3
+- Fixed thread-safety issues in the MySQL module (Zeev)
+- Fixed thread-safe support for dynamic modules (Zeev)
 - Fixed Sybase CT build process (Zeev)
 
 August 9 1999, Version 4.0 Beta 2
index 3cd420696fc41dd5a592e656ddcfab65408b60d7..5367f878b5d2c25fa473b671b1c78260fc9b2de5 100644 (file)
@@ -246,14 +246,36 @@ static PHP_INI_MH(OnMySQLPort)
 }
 
 
+static PHP_INI_DISP(display_link_numbers)
+{
+       char *value;
+
+       if (type==PHP_INI_DISPLAY_ORIG && ini_entry->modified) {
+               value = ini_entry->orig_value;
+       } else if (ini_entry->value) {
+               value = ini_entry->value;
+       } else {
+               value = NULL;
+       }
+
+       if (value) {
+               if (atoi(value)==-1) {
+                       PUTS("Unlimited");
+               } else {
+                       php_printf("%s", value);
+               }
+       }
+}
+
+
 PHP_INI_BEGIN()
-       STD_PHP_INI_ENTRY("mysql.allow_persistent",     "1",    PHP_INI_SYSTEM,         OnUpdateInt,            allow_persistent,       php_mysql_globals,              mysql_globals)
-       STD_PHP_INI_ENTRY("mysql.max_persistent",       "-1",   PHP_INI_SYSTEM,         OnUpdateInt,            max_persistent,         php_mysql_globals,              mysql_globals)
-       STD_PHP_INI_ENTRY("mysql.max_links",            "-1",   PHP_INI_SYSTEM,         OnUpdateInt,            max_links,                      php_mysql_globals,              mysql_globals)
-       STD_PHP_INI_ENTRY("mysql.default_host",         NULL,   PHP_INI_ALL,            OnUpdateString,         default_host,           php_mysql_globals,              mysql_globals)
-       STD_PHP_INI_ENTRY("mysql.default_user",         NULL,   PHP_INI_ALL,            OnUpdateString,         default_user,           php_mysql_globals,              mysql_globals)
-       STD_PHP_INI_ENTRY("mysql.default_password",     NULL,   PHP_INI_ALL,            OnUpdateString,         default_password,       php_mysql_globals,              mysql_globals)
-       PHP_INI_ENTRY("mysql.default_port",             NULL,   PHP_INI_ALL,            OnMySQLPort)
+       STD_PHP_INI_BOOLEAN("mysql.allow_persistent",   "1",    PHP_INI_SYSTEM,         OnUpdateInt,            allow_persistent,       php_mysql_globals,              mysql_globals)
+       STD_PHP_INI_ENTRY_EX("mysql.max_persistent",    "-1",   PHP_INI_SYSTEM,         OnUpdateInt,            max_persistent,         php_mysql_globals,              mysql_globals,  display_link_numbers)
+       STD_PHP_INI_ENTRY_EX("mysql.max_links",         "-1",   PHP_INI_SYSTEM,                 OnUpdateInt,            max_links,                      php_mysql_globals,              mysql_globals,          display_link_numbers)
+       STD_PHP_INI_ENTRY("mysql.default_host",         NULL,   PHP_INI_ALL,                    OnUpdateString,         default_host,           php_mysql_globals,              mysql_globals)
+       STD_PHP_INI_ENTRY("mysql.default_user",         NULL,   PHP_INI_ALL,                    OnUpdateString,         default_user,           php_mysql_globals,              mysql_globals)
+       STD_PHP_INI_ENTRY("mysql.default_password",     NULL,   PHP_INI_ALL,                    OnUpdateString,         default_password,       php_mysql_globals,              mysql_globals)
+       PHP_INI_ENTRY("mysql.default_port",             NULL,   PHP_INI_ALL,                    OnMySQLPort)
 PHP_INI_END()
 
 
@@ -267,6 +289,8 @@ static void php_mysql_init_globals(php_mysql_globals *mysql_globals)
 
 PHP_MINIT_FUNCTION(mysql)
 {
+       ELS_FETCH();
+
 #ifdef ZTS
        mysql_globals_id = ts_allocate_id(sizeof(php_mysql_globals), php_mysql_init_globals, NULL);
 #else
@@ -306,41 +330,24 @@ PHP_RINIT_FUNCTION(mysql)
 
 PHP_MINFO_FUNCTION(mysql)
 {
-       char maxp[16],maxl[16];
+       char buf[32];
        MySLS_FETCH();
-       
-       if (MySG(max_persistent)==-1) {
-               strcpy(maxp,"Unlimited");
-       } else {
-               snprintf(maxp,15,"%ld",MySG(max_persistent));
-               maxp[15]=0;
-       }
-       if (MySG(max_links)==-1) {
-               strcpy(maxl,"Unlimited");
-       } else {
-               snprintf(maxl,15,"%ld",MySG(max_links));
-               maxl[15]=0;
-       }
-       php_printf("<table cellpadding=5>"
-                               "<tr><td>Allow persistent links:</td><td>%s</td></tr>\n"
-                               "<tr><td>Persistent links:</td><td>%d/%s</td></tr>\n"
-                               "<tr><td>Total links:</td><td>%d/%s</td></tr>\n"
-                               "<tr><td>Client API version:</td><td>%s</td></tr>\n"
-#if !(WIN32|WINNT)
-                               "<tr><td valign=\"top\">Compilation definitions:</td><td>"
-                               "<tt>MYSQL_INCLUDE=%s<br>\n"
-                       "MYSQL_LFLAGS=%s<br>\n"
-                       "MYSQL_LIBS=%s<br></tt></td></tr>"
-#endif
-                               "</table>\n",
-                               (MySG(allow_persistent)?"Yes":"No"),
-                               MySG(num_persistent),maxp,
-                               MySG(num_links),maxl,
-                               mysql_get_client_info()
+
+       DISPLAY_INI_ENTRIES();
+
+       php_printf("<table border=5 width=\"600\">");
+       php_info_print_table_header(2, "Key", "Value");
+       sprintf(buf, "%d", MySG(num_persistent));
+       php_info_print_table_row(2, "Active Persistent Links", buf);
+       sprintf(buf, "%d", MySG(num_links));
+       php_info_print_table_row(2, "Active Links", buf);
+       php_info_print_table_row(2, "Client API version", mysql_get_client_info());
 #if !(WIN32|WINNT)
-                               ,PHP_MYSQL_INCLUDE,PHP_MYSQL_LFLAGS,PHP_MYSQL_LIBS
+       php_info_print_table_row(2, "MYSQL_INCLUDE", PHP_MYSQL_INCLUDE);
+       php_info_print_table_row(2, "MYSQL_LFLAGS", PHP_MYSQL_LFLAGS);
+       php_info_print_table_row(2, "MYSQL_LIBS", PHP_MYSQL_LIBS);
 #endif
-                               );
+       php_printf("</table>\n");
 }
 
 
index 0305861375ea87fa41fb567aacd9afe30c32453a..acb2685de716a9126fe33542a60af422c584c65a 100644 (file)
@@ -45,7 +45,7 @@ RSC=rc.exe
 # PROP Ignore_Export_Lib 0\r
 # PROP Target_Dir ""\r
 # ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "MYSQL_EXPORTS" /YX /FD /c\r
-# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\.." /I "..\..\..\libzend" /I "..\..\..\bindlib_w32" /I "..\..\..\MySQL\include" /I "..\..\..\TSRM" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "MYSQL_EXPORTS" /D "COMPILE_DL" /D HAVE_MYSQL=1 /YX /FD /c\r
+# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\.." /I "..\..\libzend" /I "..\..\..\bindlib_w32" /I "..\..\..\MySQL\include" /I "..\..\TSRM" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "MYSQL_EXPORTS" /D "COMPILE_DL" /D HAVE_MYSQL=1 /YX /FD /c\r
 # ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32\r
 # ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32\r
 # ADD BASE RSC /l 0x40d /d "NDEBUG"\r
@@ -55,7 +55,7 @@ BSC32=bscmake.exe
 # 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 /dll /machine:I386\r
-# ADD 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 libmySQL.lib php4nts.lib /nologo /dll /machine:I386 /out:"Release/php_mysql.dll" /libpath:"..\..\..\MySQL\lib\opt" /libpath:"..\..\Release"\r
+# ADD 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 libmySQL.lib php4nts.lib /nologo /dll /machine:I386 /out:"Release/php_mysql.dll" /libpath:"..\..\..\MySQL\libmysql\Release" /libpath:"..\..\Release"\r
 \r
 !ELSEIF  "$(CFG)" == "mysql - Win32 Debug"\r
 \r
@@ -70,8 +70,8 @@ LINK32=link.exe
 # PROP Intermediate_Dir "Debug"\r
 # PROP Ignore_Export_Lib 0\r
 # PROP Target_Dir ""\r
-# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "MYSQL_EXPORTS" /YX /FD /GZ  /c\r
-# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "..\.." /I "..\..\..\libzend" /I "..\..\..\bindlib_w32" /I "..\..\..\MySQL\include" /I "..\..\..\TSRM" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "MYSQL_EXPORTS" /D "COMPILE_DL" /D HAVE_MYSQL=1 /D ZEND_DEBUG=1 /FR /YX /FD /GZ  /c\r
+# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "MYSQL_EXPORTS" /YX /FD /GZ /c\r
+# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "..\.." /I "..\..\libzend" /I "..\..\..\bindlib_w32" /I "..\..\..\MySQL\include" /I "..\..\TSRM" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "MYSQL_EXPORTS" /D "COMPILE_DL" /D HAVE_MYSQL=1 /D ZEND_DEBUG=1 /FR /YX /FD /GZ /c\r
 # ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32\r
 # ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32\r
 # ADD BASE RSC /l 0x40d /d "_DEBUG"\r
@@ -81,7 +81,7 @@ BSC32=bscmake.exe
 # 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 /dll /debug /machine:I386 /pdbtype:sept\r
-# ADD 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 libmySQL.lib php4nts.lib /nologo /dll /debug /machine:I386 /out:"Debug/php_mysql.dll" /pdbtype:sept /libpath:"..\..\..\MySQL\lib\debug" /libpath:"..\..\Debug"\r
+# ADD 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 libmySQL.lib php4nts.lib /nologo /dll /debug /machine:I386 /out:"Debug/php_mysql.dll" /pdbtype:sept /libpath:"..\..\..\MySQL\libmysql\Debug" /libpath:"..\..\Debug"\r
 \r
 !ELSEIF  "$(CFG)" == "mysql - Win32 Debug_TS"\r
 \r
@@ -96,8 +96,8 @@ LINK32=link.exe
 # PROP Intermediate_Dir "Debug_TS"\r
 # PROP Ignore_Export_Lib 0\r
 # PROP Target_Dir ""\r
-# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "..\.." /I "..\..\..\libzend" /I "..\..\..\bindlib_w32" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "MYSQL_EXPORTS" /D "COMPILE_DL" /D HAVE_MYSQL=1 /FR /YX /FD /GZ  /c\r
-# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "..\.." /I "..\..\..\libzend" /I "..\..\..\bindlib_w32" /I "..\..\..\MySQL\include" /I "..\..\..\TSRM" /D "_DEBUG" /D ZEND_DEBUG=1 /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "MYSQL_EXPORTS" /D "COMPILE_DL" /D HAVE_MYSQL=1 /D "ZTS" /FR /YX /FD /GZ  /c\r
+# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "..\.." /I "..\..\..\libzend" /I "..\..\..\bindlib_w32" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "MYSQL_EXPORTS" /D "COMPILE_DL" /D HAVE_MYSQL=1 /FR /YX /FD /GZ /c\r
+# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "..\.." /I "..\..\libzend" /I "..\..\..\bindlib_w32" /I "..\..\..\MySQL\include" /I "..\..\TSRM" /D "_DEBUG" /D ZEND_DEBUG=1 /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "MYSQL_EXPORTS" /D "COMPILE_DL" /D HAVE_MYSQL=1 /D "ZTS" /FR /YX /FD /GZ /c\r
 # ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32\r
 # ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32\r
 # ADD BASE RSC /l 0x40d /d "_DEBUG"\r
@@ -107,7 +107,7 @@ BSC32=bscmake.exe
 # 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 /dll /debug /machine:I386 /pdbtype:sept\r
-# ADD 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 libmySQL.lib php4ts.lib /nologo /dll /debug /machine:I386 /out:"Debug_TS/php_mysql.dll" /pdbtype:sept /libpath:"..\..\..\MySQL\lib\debug" /libpath:"..\..\Debug_TS"\r
+# ADD 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 libmySQL.lib php4ts.lib /nologo /dll /debug /machine:I386 /out:"Debug_TS/php_mysql.dll" /pdbtype:sept /libpath:"..\..\..\MySQL\libmysql\Debug" /libpath:"..\..\Debug_TS"\r
 \r
 !ELSEIF  "$(CFG)" == "mysql - Win32 Release_TS"\r
 \r
@@ -123,7 +123,7 @@ LINK32=link.exe
 # PROP Ignore_Export_Lib 0\r
 # PROP Target_Dir ""\r
 # ADD BASE CPP /nologo /MT /W3 /GX /O2 /I "..\.." /I "..\..\..\libzend" /I "..\..\..\bindlib_w32" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "MYSQL_EXPORTS" /D "COMPILE_DL" /D HAVE_MYSQL=1 /YX /FD /c\r
-# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\.." /I "..\..\..\libzend" /I "..\..\..\bindlib_w32" /I "..\..\..\MySQL\include" /I "..\..\..\TSRM" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "MYSQL_EXPORTS" /D "COMPILE_DL" /D HAVE_MYSQL=1 /D "ZTS" /YX /FD /c\r
+# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\.." /I "..\..\libzend" /I "..\..\..\bindlib_w32" /I "..\..\..\MySQL\include" /I "..\..\TSRM" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "MYSQL_EXPORTS" /D "COMPILE_DL" /D HAVE_MYSQL=1 /D "ZTS" /YX /FD /c\r
 # ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32\r
 # ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32\r
 # ADD BASE RSC /l 0x40d /d "NDEBUG"\r
@@ -133,7 +133,7 @@ BSC32=bscmake.exe
 # 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 /dll /machine:I386\r
-# ADD 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 libmySQL.lib php4ts.lib /nologo /dll /machine:I386 /out:"Release_TS/php_mysql.dll" /libpath:"..\..\..\MySQL\lib\opt" /libpath:"..\..\Release_TS"\r
+# ADD 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 libmySQL.lib php4ts.lib /nologo /dll /machine:I386 /out:"Release_TS/php_mysql.dll" /libpath:"..\..\..\MySQL\libmysql\Release" /libpath:"..\..\Release_TS"\r
 \r
 !ENDIF \r
 \r
index 945650f5aadd224a42a4442f86a684f6ed1cb201..6d3db207b07689354ce0df28c7f5b0359963cf7c 100644 (file)
@@ -87,7 +87,9 @@ void php3_dl(pval *file,int type,pval *return_value)
        php3_module_entry *(*get_module)(void);
        PLS_FETCH();
        
-       if (cfg_get_string("extension_dir",&PG(extension_dir))==SUCCESS && PG(extension_dir)){
+       if (cfg_get_string("extension_dir",&PG(extension_dir))==SUCCESS
+               && PG(extension_dir)
+               && PG(extension_dir)[0]){
                int extension_dir_len = strlen(PG(extension_dir));
 
                if (PG(extension_dir)[extension_dir_len-1]=='/' || PG(extension_dir)[extension_dir_len-1]=='\\') {
index 15fa76ac657f57d06852e5296e94890592d93eeb..63f0519f21e09ae93d1e68573d09a42c4b2ef55f 100644 (file)
@@ -96,9 +96,6 @@ void *gLock;                                  /*mutex variable */
 /* True globals (no need for thread safety) */
 HashTable configuration_hash;
 PHPAPI char *php3_ini_path = NULL;
-#ifdef ZTS
-php_core_globals *main_core_globals=NULL;
-#endif
 
 
 #define SAFE_FILENAME(f) ((f)?(f):"-")
@@ -755,20 +752,17 @@ static void php3_config_ini_shutdown()
 }
 
 
-#ifdef ZTS
-static void core_globals_ctor(php_core_globals *core_globals)
+static int zend_body_write_wrapper(const char *str, uint str_length)
 {
-       if (main_core_globals) {
-               *core_globals = *main_core_globals;
-       }
+       return zend_body_write(str, str_length);
 }
-#endif
-
 
-static int zend_body_write_wrapper(const char *str, uint str_length)
+#ifdef ZTS
+static void php_new_thread_end_handler(THREAD_T thread_id)
 {
-       return zend_body_write(str, str_length);
+       php_ini_refresh_caches();
 }
+#endif
 
 
 int php_module_startup(sapi_module_struct *sf)
@@ -810,10 +804,11 @@ int php_module_startup(sapi_module_struct *sf)
        zuf.get_ini_entry = php_get_ini_entry_for_zend;
        zend_startup(&zuf, NULL);
 
+       tsrm_set_new_thread_end_handler(php_new_thread_end_handler);
+
 #ifdef ZTS
-       core_globals_id = ts_allocate_id(sizeof(php_core_globals), core_globals_ctor, NULL);
+       core_globals_id = ts_allocate_id(sizeof(php_core_globals), NULL, NULL);
        core_globals = ts_resource(core_globals_id);
-       main_core_globals = core_globals;
 #endif
 
        PG(header_is_being_sent) = 0;
@@ -835,11 +830,12 @@ int php_module_startup(sapi_module_struct *sf)
        le_index_ptr = _register_list_destructors(NULL, NULL, 0);
        FREE_MUTEX(gLock);
 
+       php_ini_mstartup();
+
        if (php3_config_ini_startup() == FAILURE) {
                return FAILURE;
        }
 
-       php_ini_mstartup();
        REGISTER_INI_ENTRIES();
 
        zuv.short_tags = (unsigned char) PG(short_tags);
index 4c25faf5b8d807a396a827d03516380df444b8ca..bd73ef6b58ad5223f53f254f901804d1867cad87 100644 (file)
@@ -125,6 +125,21 @@ PHPAPI void php_unregister_ini_entries(int module_number)
 }
 
 
+static int php_ini_refresh_cache(php_ini_entry *p)
+{
+       if (p->on_modify) {
+               p->on_modify(p, p->value, p->value_length, p->mh_arg1, p->mh_arg2, p->mh_arg3);
+       }
+       return 0;
+}
+
+
+PHPAPI void php_ini_refresh_caches()
+{
+       zend_hash_apply(&known_directives, (int (*)(void *)) php_ini_refresh_cache);
+}
+
+
 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;
index 4ccd84c46e45523274072f49e87842229db09286..4dfd0b40bd53a894d9e1da3abb5b37d8f731d267 100644 (file)
@@ -57,6 +57,7 @@ int php_ini_rshutdown();
 
 PHPAPI int php_register_ini_entries(php_ini_entry *ini_entry, int module_number);
 PHPAPI void php_unregister_ini_entries(int module_number);
+PHPAPI void php_ini_refresh_caches();
 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);
@@ -100,11 +101,15 @@ PHPAPI PHP_INI_DISP(php_ini_color_displayer_cb);
 #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_ENTRY_EX(name, default_value, modifyable, on_modify, property_name, struct_type, struct_ptr, displayer) \
+       PHP_INI_ENTRY2_EX(name, default_value, modifyable, on_modify, (void *) XtOffsetOf(struct_type, property_name), (void *) &struct_ptr##_id, displayer)
 #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_ENTRY_EX(name, default_value, modifyable, on_modify, property_name, struct_type, struct_ptr, display) \
+       PHP_INI_ENTRY2_EX(name, default_value, modifyable, on_modify, (void *) XtOffsetOf(struct_type, property_name), (void *) &struct_ptr, displayer)
 #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
index 9cf6139ef6a7a836123ecf8cd80a6b65b6283c58..5f5438657554619f684d2bf07afb2ef4521f7962 100644 (file)
@@ -51,7 +51,7 @@ highlight.html                =       #000000
 ; Misc
 allow_builtin_links    =       Off             ; Sets whether phpinfo() will generate built-in links that display the PHP
                                                                ; and Zend logos, and tells PHP whether to honor them or not.
-                                                               ; It is no securty threat in any way, but it make sit possible
+                                                               ; It is no security threat in any way, but it makes it possible
                                                                ; to determine whether you use PHP on your server or not.
 
 
index 5bf76329bf3cae15122481a14a2a7fb9d9483328..cc2e72b1a8f8d04aaf88030ef5741f8601c8503a 100644 (file)
@@ -3,7 +3,7 @@ Microsoft Developer Studio Workspace File, Format Version 6.00
 \r
 ###############################################################################\r
 \r
-Project: "TSRM"=..\TSRM\TSRM.dsp - Package Owner=<4>\r
+Project: "TSRM"=.\TSRM\TSRM.dsp - Package Owner=<4>\r
 \r
 Package=<5>\r
 {{{\r
@@ -15,7 +15,7 @@ Package=<4>
 \r
 ###############################################################################\r
 \r
-Project: "libzendts"=..\libzend\libzendts.dsp - Package Owner=<4>\r
+Project: "libzendts"=.\libzend\libzendts.dsp - Package Owner=<4>\r
 \r
 Package=<5>\r
 {{{\r
@@ -23,6 +23,9 @@ Package=<5>
 \r
 Package=<4>\r
 {{{\r
+    Begin Project Dependency\r
+    Project_Dep_Name TSRM\r
+    End Project Dependency\r
 }}}\r
 \r
 ###############################################################################\r
diff --git a/win32/php_modules.dsw b/win32/php_modules.dsw
new file mode 100644 (file)
index 0000000..8cf96a8
--- /dev/null
@@ -0,0 +1,29 @@
+Microsoft Developer Studio Workspace File, Format Version 6.00\r
+# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!\r
+\r
+###############################################################################\r
+\r
+Project: "mysql"=.\ext\mysql\mysql.dsp - Package Owner=<4>\r
+\r
+Package=<5>\r
+{{{\r
+}}}\r
+\r
+Package=<4>\r
+{{{\r
+}}}\r
+\r
+###############################################################################\r
+\r
+Global:\r
+\r
+Package=<5>\r
+{{{\r
+}}}\r
+\r
+Package=<3>\r
+{{{\r
+}}}\r
+\r
+###############################################################################\r
+\r