wez             Fri Jul 30 10:24:59 2004 EDT

  Added files:                 (Branch: PHP_5_0)
    /php-src/win32      globals.c php_win32_globals.h 

  Modified files:              
    /php-src/ext/standard       basic_functions.c 
    /php-src/main       config.w32.h 
    /php-src/win32      pwd.c time.c wsyslog.c 
    /php-src/win32/build        config.w32 
  Log:
  MFH: various ZTS fixes
  
  
http://cvs.php.net/diff.php/php-src/ext/standard/basic_functions.c?r1=1.673&r2=1.673.2.1&ty=u
Index: php-src/ext/standard/basic_functions.c
diff -u php-src/ext/standard/basic_functions.c:1.673 
php-src/ext/standard/basic_functions.c:1.673.2.1
--- php-src/ext/standard/basic_functions.c:1.673        Sun Jun 27 17:49:47 2004
+++ php-src/ext/standard/basic_functions.c      Fri Jul 30 10:24:59 2004
@@ -17,7 +17,7 @@
    +----------------------------------------------------------------------+
  */
 
-/* $Id: basic_functions.c,v 1.673 2004/06/27 21:49:47 iliaa Exp $ */
+/* $Id: basic_functions.c,v 1.673.2.1 2004/07/30 14:24:59 wez Exp $ */
 
 #include "php.h"
 #include "php_streams.h"
@@ -35,6 +35,10 @@
 #include "ext/standard/dns.h"
 #include "ext/standard/php_uuencode.h"
 
+#ifdef PHP_WIN32
+#include "win32/php_win32_globals.h"
+#endif
+
 typedef struct yy_buffer_state *YY_BUFFER_STATE;
 
 #include "zend.h"
@@ -999,8 +1003,14 @@
 {
 #ifdef ZTS
        ts_allocate_id(&basic_globals_id, sizeof(php_basic_globals), 
(ts_allocate_ctor) basic_globals_ctor, (ts_allocate_dtor) basic_globals_dtor);
+#ifdef PHP_WIN32
+       ts_allocate_id(&php_win32_core_globals_id, sizeof(php_win32_core_globals), 
(ts_allocate_ctor)php_win32_core_globals_ctor, NULL);
+#endif
 #else
        basic_globals_ctor(&basic_globals TSRMLS_CC);
+#ifdef PHP_WIN32
+       php_win32_core_globals_ctor(&php_win32_core_globals TSRMLS_CC);
+#endif
 #endif
 
        REGISTER_LONG_CONSTANT("CONNECTION_ABORTED", PHP_CONNECTION_ABORTED, CONST_CS 
| CONST_PERSISTENT);
@@ -1099,6 +1109,9 @@
 {
 #ifdef ZTS
        ts_free_id(basic_globals_id);
+#ifdef PHP_WIN32
+       ts_free_id(php_win32_core_globals_id);
+#endif
 #else
        basic_globals_dtor(&basic_globals TSRMLS_CC);
 #endif
@@ -1208,6 +1221,9 @@
        PHP_RSHUTDOWN(assert)(SHUTDOWN_FUNC_ARGS_PASSTHRU);
        PHP_RSHUTDOWN(url_scanner_ex)(SHUTDOWN_FUNC_ARGS_PASSTHRU);
        PHP_RSHUTDOWN(streams)(SHUTDOWN_FUNC_ARGS_PASSTHRU);
+#ifdef PHP_WIN32
+       PHP_RSHUTDOWN(win32_core_globals)(SHUTDOWN_FUNC_ARGS_PASSTHRU);
+#endif
 
        if (BG(user_tick_functions)) {
                zend_llist_destroy(BG(user_tick_functions));
http://cvs.php.net/diff.php/php-src/main/config.w32.h?r1=1.85&r2=1.85.2.1&ty=u
Index: php-src/main/config.w32.h
diff -u php-src/main/config.w32.h:1.85 php-src/main/config.w32.h:1.85.2.1
--- php-src/main/config.w32.h:1.85      Tue Feb 10 13:50:10 2004
+++ php-src/main/config.w32.h   Fri Jul 30 10:24:59 2004
@@ -1,26 +1,20 @@
 /*
-       Build Configuration for Win32.
-       This has only been tested with MS VisualC++ 6 (and later).
-
-       $Id: config.w32.h,v 1.85 2004/02/10 18:50:10 zeev Exp $
+       Build Configuration Template for Win32.
+       $Id: config.w32.h,v 1.85.2.1 2004/07/30 14:24:59 wez Exp $
 */
 
 /* Default PHP / PEAR directories */
-#define CONFIGURATION_FILE_PATH "php.ini"
-#define PEAR_INSTALLDIR "c:\\php5\\pear"
-#define PHP_BINDIR "c:\\php5"
 #define PHP_CONFIG_FILE_PATH (getenv("SystemRoot"))?getenv("SystemRoot"):""
-#define PHP_CONFIG_FILE_SCAN_DIR ""
-#define PHP_DATADIR "c:\\php5"
-#define PHP_EXTENSION_DIR "c:\\php5"
-#define PHP_INCLUDE_PATH       ".;c:\\php5\\pear"
-#define PHP_LIBDIR "c:\\php5"
-#define PHP_LOCALSTATEDIR "c:\\php5"
-#define PHP_PREFIX "c:\\php5"
-#define PHP_SYSCONFDIR "c:\\php5"
-
-/* Enable / Disable BCMATH extension (default: enabled) */
-#define HAVE_BCMATH 1
+#define CONFIGURATION_FILE_PATH "php.ini"
+#define PEAR_INSTALLDIR "C:\\php5\\pear"
+#define PHP_BINDIR "C:\\php5"
+#define PHP_DATADIR "C:\\php5"
+#define PHP_EXTENSION_DIR "C:\\php5"
+#define PHP_INCLUDE_PATH       ".;C:\\php5\\pear"
+#define PHP_LIBDIR "C:\\php5"
+#define PHP_LOCALSTATEDIR "C:\\php5"
+#define PHP_PREFIX "C:\\php5"
+#define PHP_SYSCONFDIR "C:\\php5"
 
 /* Enable / Disable crypt() function (default: enabled) */
 #define HAVE_CRYPT 1
@@ -29,64 +23,12 @@
 #define PHP_MD5_CRYPT 1
 #define PHP_BLOWFISH_CRYPT 0
 
-/* Enable / Disable CALENDAR extension (default: enabled) */
-#define HAVE_CALENDAR 1
-
-/* Enable / Disable CTYPE extension (default: enabled) */
-#define HAVE_CTYPE 1
-
-/* Enable / Disable FTP extension (default: enabled) */
-#define HAVE_FTP 1
-
-/* Enable / Disable MBSTRING extension (default: disabled) */
-/* #define HAVE_MBSTRING 0 */ 
-/* #define HAVE_MBREGEX  0 */ 
-/* #define HAVE_MBSTR_CN 0 */ 
-/* #define HAVE_MBSTR_JA 0 */ 
-/* #define HAVE_MBSTR_KR 0 */
-/* #define HAVE_MBSTR_RU 0 */
-/* #define HAVE_MBSTR_TW 0 */ 
-
-/* If you have the .Net SDK in your include path, define this
- * to compile .Net support into your COM extension. */
-#define HAVE_MSCOREE_H 0
-
-/* Enable / Disable ODBC extension (default: enabled) */
-#define HAVE_UODBC 1
-
-/* Enable / Disable PCRE extension (default: enabled) */
-#define HAVE_BUNDLED_PCRE      1
-#define HAVE_PCRE 1
-
-/* Enable / Disable SESSION extension (default: enabled) */
-#define HAVE_PHP_SESSION 1
-
-/* Enable / Disable TOKENIZER extension (default: enabled) */
-#define HAVE_TOKENIZER 1
-
-/* Enable / Disable WDDX extension (default: enabled) */
-#define HAVE_WDDX 1
-
-/* Enable / Disable XML extensions (default: enabled) */
-#define HAVE_LIBXML 1
-#define HAVE_DOM 1
-#define HAVE_SIMPLEXML 1
-#define HAVE_XML 1
-
-/* Enable / Disable ZLIB extension (default: enabled) */
-#define HAVE_ZLIB 1
-
-/* Enable / Disable SQLite extension (default: enabled) */
-#define HAVE_SQLITE 1
-
 /* PHP Runtime Configuration */
-#define FORCE_CGI_REDIRECT 1
 #define PHP_URL_FOPEN 1
 #define PHP_SAFE_MODE 0
 #define MAGIC_QUOTES 0
 #define USE_CONFIG_FILE 1
 #define DEFAULT_SHORT_OPEN_TAG "1"
-#define ENABLE_PATHINFO_CHECK 1
 
 /* Platform-Specific Configuration. Should not be changed. */
 #define PHP_SIGCHILD 0
@@ -143,7 +85,7 @@
 #define HAVE_LOCALECONV 1
 #define HAVE_LOCALE_H 1
 #ifndef HAVE_LIBBIND
-#define HAVE_SETVBUF 1
+# define HAVE_SETVBUF 1
 #endif
 #define HAVE_SHUTDOWN 1
 #define HAVE_SNPRINTF 1
@@ -188,13 +130,6 @@
 #define HAVE_GLOB
 #define PHP_SHLIB_SUFFIX "dll"
 #define HAVE_SQLDATASOURCES
-#define POSIX_MALLOC_THRESHOLD 10
-
-
-/*
- * defining HAVE_SOCKLEN_T prevents PHP from building with the latest platform SDK...
- * #define HAVE_SOCKLEN_T
- */
 
 /* Win32 supports strcoll */
 #define HAVE_STRCOLL 1
@@ -203,3 +138,129 @@
 #define PHP_CAN_SUPPORT_PROC_OPEN 1
 
 #define HAVE_MBLEN
+
+#undef HAVE_ATOF_ACCEPTS_NAN
+#undef HAVE_ATOF_ACCEPTS_INF
+#define HAVE_HUGE_VAL_NAN 1
+
+/* values determined by configure.js */
+
+/* undefined */
+#define CONFIGURE_COMMAND "cscript /nologo configure.js "
+
+/* undefined */
+#define HAVE_ARPA_NAMESER_H 1
+
+/* undefined */
+#define HAVE_WSPIAPI_H 1
+
+/* undefined */
+#define HAVE_GETADDRINFO 1
+
+/* undefined */
+#define HAVE_GAI_STRERROR 1
+
+/* undefined */
+#define HAVE_IPV6 1
+
+/* undefined */
+#define MEMORY_LIMIT 0
+
+/* undefined */
+#define HAVE_NEWAPIS_H 1
+
+/* CGI redirect mode */
+#define FORCE_CGI_REDIRECT 1
+
+/* Pathinfo check */
+#define ENABLE_PATHINFO_CHECK 1
+
+/* undefined */
+#define PHP_FASTCGI 1
+
+/* Have BCMATH library */
+#define HAVE_BCMATH 1
+
+/* Have calendar */
+#define HAVE_CALENDAR 1
+
+/* Have COM_DOTNET support */
+#define HAVE_COM_DOTNET 1
+
+/* undefined */
+#define HAVE_MSCOREE_H 1
+
+/* Have ctype */
+#define HAVE_CTYPE 1
+
+/* Have FTP support */
+#define HAVE_FTP 1
+
+/* undefined */
+#define HAVE_GD_H 1
+
+/* GD support */
+#define HAVE_LIBGD 1
+
+/* undefined */
+#define HAVE_ICONV_H 1
+
+/* Define if iconv extension is enabled */
+#define HAVE_ICONV 1
+
+/* Define if libiconv is available */
+#define HAVE_LIBICONV 1
+
+/* Which iconv implementation to use */
+#define PHP_ICONV_IMPL "\"libiconv\""
+
+/* Whether iconv supports errno or not */
+#define ICONV_SUPPORTS_ERRNO 1
+
+/* undefined */
+#define HAVE_LIBXML_PARSER_H 1
+
+/* LibXML support */
+#define HAVE_LIBXML 1
+
+/* ODBC support */
+#define HAVE_UODBC 1
+
+/* Using bundled PCRE library */
+#define HAVE_BUNDLED_PCRE 1
+
+/* Have PCRE library */
+#define HAVE_PCRE 1
+
+/* Session support */
+#define HAVE_PHP_SESSION 1
+
+/* undefined */
+#define HAVE_SPL 1
+
+/* SQLite support */
+#define HAVE_SQLITE 1
+
+/* undefined */
+#define PHP_CONFIG_FILE_SCAN_DIR ""
+
+/* Tokenizer support */
+#define HAVE_TOKENIZER 1
+
+/* ZLIB support */
+#define HAVE_ZLIB 1
+
+/* undefined */
+#define HAVE_ZLIB_H 1
+
+/* DOM support */
+#define HAVE_DOM 1
+
+/* Simple XML support */
+#define HAVE_SIMPLEXML 1
+
+/* WDDX support */
+#define HAVE_WDDX 1
+
+/* XML support */
+#define HAVE_XML 1
http://cvs.php.net/diff.php/php-src/win32/pwd.c?r1=1.9&r2=1.9.2.1&ty=u
Index: php-src/win32/pwd.c
diff -u php-src/win32/pwd.c:1.9 php-src/win32/pwd.c:1.9.2.1
--- php-src/win32/pwd.c:1.9     Thu Jan  8 03:18:21 2004
+++ php-src/win32/pwd.c Fri Jul 30 10:24:59 2004
@@ -16,7 +16,7 @@
    +----------------------------------------------------------------------+
 */
 
-/* $Id: pwd.c,v 1.9 2004/01/08 08:18:21 andi Exp $ */
+/* $Id: pwd.c,v 1.9.2.1 2004/07/30 14:24:59 wez Exp $ */
 
 #include "php.h"                               /*php specific */
 #include <lmaccess.h>
@@ -26,10 +26,7 @@
 #include <lmapibuf.h>
 #include "pwd.h"
 #include "grp.h"
-
-#ifndef THREAD_SAFE
-static struct passwd pwd;
-#endif
+#include "php_win32_globals.h"
 
 static char *home_dir = ".";
 static char *login_shell = "not command.com!";
@@ -44,21 +41,26 @@
 char *
 getlogin()
 {
-       static char name[256];
+       char name[256];
        DWORD max_len = 256;
+       TSRMLS_FETCH();
 
+       STR_FREE(PW32G(login_name));    
        GetUserName(name, &max_len);
-       return name;
+       name[max_len] = '\0';
+       PW32G(login_name) = strdup(name);
+       return PW32G(login_name);
 }
 
 struct passwd *
 getpwuid(int user_id)
 {
-       pwd.pw_name = getlogin();
-       pwd.pw_dir = home_dir;
-       pwd.pw_shell = login_shell;
-       pwd.pw_uid = 0;
+       TSRMLS_FETCH();
+       PW32G(pwd).pw_name = getlogin();
+       PW32G(pwd).pw_dir = home_dir;
+       PW32G(pwd).pw_shell = login_shell;
+       PW32G(pwd).pw_uid = 0;
 
-       return &pwd;
+       return &PW32G(pwd);
 }
 
http://cvs.php.net/diff.php/php-src/win32/time.c?r1=1.9&r2=1.9.2.1&ty=u
Index: php-src/win32/time.c
diff -u php-src/win32/time.c:1.9 php-src/win32/time.c:1.9.2.1
--- php-src/win32/time.c:1.9    Mon Jan 12 21:07:04 2004
+++ php-src/win32/time.c        Fri Jul 30 10:24:59 2004
@@ -11,7 +11,7 @@
  *
  *****************************************************************************/
 
-/* $Id: time.c,v 1.9 2004/01/13 02:07:04 wez Exp $ */
+/* $Id: time.c,v 1.9.2.1 2004/07/30 14:24:59 wez Exp $ */
 
  /**
   *
@@ -33,6 +33,7 @@
 #include <winbase.h>
 #include <mmsystem.h>
 #include <errno.h>
+#include "php_win32_globals.h"
 
 int getfilesystemtime(struct timeval *time_Info) 
 {
@@ -51,64 +52,61 @@
 
 PHPAPI int gettimeofday(struct timeval *time_Info, struct timezone *timezone_Info)
 {
-
-       static struct timeval starttime = {0, 0};
-       static __int64 lasttime = 0;
-       static __int64 freq = 0;
        __int64 timer;
        LARGE_INTEGER li;
        BOOL b;
        double dt;
+       TSRMLS_FETCH();
 
        /* Get the time, if they want it */
        if (time_Info != NULL) {
-               if (starttime.tv_sec == 0) {
+               if (PW32G(starttime).tv_sec == 0) {
             b = QueryPerformanceFrequency(&li);
             if (!b) {
-                starttime.tv_sec = -1;
+                PW32G(starttime).tv_sec = -1;
             }
             else {
-                freq = li.QuadPart;
+                PW32G(freq) = li.QuadPart;
                 b = QueryPerformanceCounter(&li);
                 if (!b) {
-                    starttime.tv_sec = -1;
+                    PW32G(starttime).tv_sec = -1;
                 }
                 else {
-                    getfilesystemtime(&starttime);
+                    getfilesystemtime(&PW32G(starttime));
                     timer = li.QuadPart;
-                    dt = (double)timer/freq;
-                    starttime.tv_usec -= (int)((dt-(int)dt)*1000000);
-                    if (starttime.tv_usec < 0) {
-                        starttime.tv_usec += 1000000;
-                        --starttime.tv_sec;
+                    dt = (double)timer/PW32G(freq);
+                    PW32G(starttime).tv_usec -= (int)((dt-(int)dt)*1000000);
+                    if (PW32G(starttime).tv_usec < 0) {
+                        PW32G(starttime).tv_usec += 1000000;
+                        --PW32G(starttime).tv_sec;
                     }
-                    starttime.tv_sec -= (int)dt;
+                    PW32G(starttime).tv_sec -= (int)dt;
                 }
             }
         }
-        if (starttime.tv_sec > 0) {
+        if (PW32G(starttime).tv_sec > 0) {
             b = QueryPerformanceCounter(&li);
             if (!b) {
-                starttime.tv_sec = -1;
+                PW32G(starttime).tv_sec = -1;
             }
             else {
                 timer = li.QuadPart;
-                if (timer < lasttime) {
+                if (timer < PW32G(lasttime)) {
                     getfilesystemtime(time_Info);
-                    dt = (double)timer/freq;
-                    starttime = *time_Info;
-                    starttime.tv_usec -= (int)((dt-(int)dt)*1000000);
-                    if (starttime.tv_usec < 0) {
-                        starttime.tv_usec += 1000000;
-                        --starttime.tv_sec;
+                    dt = (double)timer/PW32G(freq);
+                    PW32G(starttime) = *time_Info;
+                    PW32G(starttime).tv_usec -= (int)((dt-(int)dt)*1000000);
+                    if (PW32G(starttime).tv_usec < 0) {
+                        PW32G(starttime).tv_usec += 1000000;
+                        --PW32G(starttime).tv_sec;
                     }
-                    starttime.tv_sec -= (int)dt;
+                    PW32G(starttime).tv_sec -= (int)dt;
                 }
                 else {
-                    lasttime = timer;
-                    dt = (double)timer/freq;
-                    time_Info->tv_sec = starttime.tv_sec + (int)dt;
-                    time_Info->tv_usec = starttime.tv_usec + 
(int)((dt-(int)dt)*1000000);
+                    PW32G(lasttime) = timer;
+                    dt = (double)timer/PW32G(freq);
+                    time_Info->tv_sec = PW32G(starttime).tv_sec + (int)dt;
+                    time_Info->tv_usec = PW32G(starttime).tv_usec + 
(int)((dt-(int)dt)*1000000);
                     if (time_Info->tv_usec > 1000000) {
                         time_Info->tv_usec -= 1000000;
                         ++time_Info->tv_sec;
@@ -116,7 +114,7 @@
                 }
             }
         }
-        if (starttime.tv_sec < 0) {
+        if (PW32G(starttime).tv_sec < 0) {
             getfilesystemtime(time_Info);
         }
 
@@ -144,6 +142,7 @@
        CloseHandle(timer);
 }
 
+#if 0 /* looks pretty ropey in here */
 #ifdef HAVE_SETITIMER
 
 
@@ -225,3 +224,5 @@
 }
 
 #endif
+#endif
+
http://cvs.php.net/diff.php/php-src/win32/wsyslog.c?r1=1.4&r2=1.4.28.1&ty=u
Index: php-src/win32/wsyslog.c
diff -u php-src/win32/wsyslog.c:1.4 php-src/win32/wsyslog.c:1.4.28.1
--- php-src/win32/wsyslog.c:1.4 Sat Feb 19 08:11:02 2000
+++ php-src/win32/wsyslog.c     Fri Jul 30 10:24:59 2004
@@ -56,15 +56,14 @@
 #include <fcntl.h>
 #include <process.h>
 
-#ifndef THREAD_SAFE
-static char *loghdr;                   /* log file header string */
-static HANDLE loghdl = NULL;   /* handle of event source */
-#endif
+#include "php_win32_globals.h"
 
 void closelog(void)
 {
-       DeregisterEventSource(loghdl);
-       efree(loghdr);
+       TSRMLS_FETCH();
+       DeregisterEventSource(PW32G(log_source));
+       STR_FREE(PW32G(log_header));
+       PW32G(log_header) = NULL;
 }
 
 /* Emulator for BSD syslog() routine
@@ -77,12 +76,14 @@
 {
        va_list args;
        LPTSTR strs[2];
-       char tmp[1024];                         /* callers must be careful not to pop 
this */
        unsigned short etype;
-       
+       char *tmp = NULL;
+       TSRMLS_FETCH();
+
        /* default event source */
-               if (!loghdl)
-               openlog("c-client", LOG_PID, LOG_MAIL);
+       if (!PW32G(log_source))
+               openlog("php", LOG_PID, LOG_SYSLOG);
+
        switch (priority) {                     /* translate UNIX type into NT type */
                case LOG_ALERT:
                        etype = EVENTLOG_ERROR_TYPE;
@@ -94,12 +95,13 @@
                        etype = EVENTLOG_WARNING_TYPE;
        }
        va_start(args, message);        /* initialize vararg mechanism */
-       vsprintf(tmp, message, args);   /* build message */
-       strs[0] = loghdr;       /* write header */
+       vspprintf(&tmp, 0, message, args);      /* build message */
+       strs[0] = PW32G(log_header);    /* write header */
        strs[1] = tmp;                          /* then the message */
        /* report the event */
-       ReportEvent(loghdl, etype, (unsigned short) priority, 2000, NULL, 2, 0, strs, 
NULL);
+       ReportEvent(PW32G(log_source), etype, (unsigned short) priority, 2000, NULL, 
2, 0, strs, NULL);
        va_end(args);
+       efree(tmp);
 }
 
 
@@ -111,12 +113,14 @@
 
 void openlog(const char *ident, int logopt, int facility)
 {
-       char tmp[1024];
+       TSRMLS_FETCH();
 
-       if (loghdl) {
+       if (PW32G(log_source)) {
                closelog();
        }
-       loghdl = RegisterEventSource(NULL, ident);
-       sprintf(tmp, (logopt & LOG_PID) ? "%s[%d]" : "%s", ident, getpid());
-       loghdr = estrdup(tmp);  /* save header for later */
+
+       STR_FREE(PW32G(log_header));
+
+       PW32G(log_source) = RegisterEventSource(NULL, ident);
+       spprintf(&PW32G(log_header), 0, (logopt & LOG_PID) ? "%s[%d]" : "%s", ident, 
getpid());
 }
http://cvs.php.net/diff.php/php-src/win32/build/config.w32?r1=1.26&r2=1.26.2.1&ty=u
Index: php-src/win32/build/config.w32
diff -u php-src/win32/build/config.w32:1.26 php-src/win32/build/config.w32:1.26.2.1
--- php-src/win32/build/config.w32:1.26 Thu May 13 08:14:56 2004
+++ php-src/win32/build/config.w32      Fri Jul 30 10:24:59 2004
@@ -1,5 +1,5 @@
 // vim:ft=javascript
-// $Id: config.w32,v 1.26 2004/05/13 12:14:56 wez Exp $
+// $Id: config.w32,v 1.26.2.1 2004/07/30 14:24:59 wez Exp $
 // "Master" config file; think of it as a configure.in
 // equivalent.
 
@@ -194,7 +194,7 @@
        userspace.c transports.c xp_socket.c mmap.c");
 
 ADD_SOURCES("win32", "crypt_win32.c flock.c glob.c md5crypt.c pwd.c readdir.c \
-       registry.c select.c sendmail.c time.c wfile.c winutil.c wsyslog.c");
+       registry.c select.c sendmail.c time.c wfile.c winutil.c wsyslog.c globals.c");
 
 ADD_SOURCES("regex", "regcomp.c regerror.c regexec.c regfree.c");
 

http://cvs.php.net/co.php/php-src/win32/globals.c?r=1.1&p=1
Index: php-src/win32/globals.c
+++ php-src/win32/globals.c
/*
   +----------------------------------------------------------------------+
   | PHP Version 5                                                        |
   +----------------------------------------------------------------------+
   | Copyright (c) 1997-2004 The PHP Group                                |
   +----------------------------------------------------------------------+
   | This source file is subject to version 3.0 of the PHP license,       |
   | that is bundled with this package in the file LICENSE, and is        |
   | available through the world-wide-web at the following url:           |
   | http://www.php.net/license/3_0.txt.                                  |
   | If you did not receive a copy of the PHP license and are unable to   |
   | obtain it through the world-wide-web, please send a note to          |
   | [EMAIL PROTECTED] so we can mail you a copy immediately.               |
   +----------------------------------------------------------------------+
   | Author: Wez Furlong <[EMAIL PROTECTED]>                                    |
   +----------------------------------------------------------------------+
*/

/* $Id: globals.c,v 1.1 2004/07/29 02:59:43 wez Exp $ */

#include "php.h"
#include "php_win32_globals.h"

#ifdef ZTS
PHPAPI int php_win32_core_globals_id;
#else
php_win32_core_globals php_win32_core_globals;
#endif

void php_win32_core_globals_ctor(void *vg TSRMLS_DC)
{
        php_win32_core_globals *wg = (php_win32_core_globals*)vg;
        memset(wg, 0, sizeof(*wg));
}

PHP_RSHUTDOWN_FUNCTION(win32_core_globals)
{
        php_win32_core_globals *wg =
#ifdef ZTS
                ts_resource(php_win32_core_globals_id)
#else
                &php_win32_core_globals
#endif
                ;

        STR_FREE(wg->login_name);
        
        memset(wg, 0, sizeof(*wg));
}


http://cvs.php.net/co.php/php-src/win32/php_win32_globals.h?r=1.1&p=1
Index: php-src/win32/php_win32_globals.h
+++ php-src/win32/php_win32_globals.h
/*
   +----------------------------------------------------------------------+
   | PHP Version 5                                                        |
   +----------------------------------------------------------------------+
   | Copyright (c) 1997-2004 The PHP Group                                |
   +----------------------------------------------------------------------+
   | This source file is subject to version 3.0 of the PHP license,       |
   | that is bundled with this package in the file LICENSE, and is        |
   | available through the world-wide-web at the following url:           |
   | http://www.php.net/license/3_0.txt.                                  |
   | If you did not receive a copy of the PHP license and are unable to   |
   | obtain it through the world-wide-web, please send a note to          |
   | [EMAIL PROTECTED] so we can mail you a copy immediately.               |
   +----------------------------------------------------------------------+
   | Author: Wez Furlong <[EMAIL PROTECTED]>                                    |
   +----------------------------------------------------------------------+
*/

/* $Id: php_win32_globals.h,v 1.1 2004/07/29 02:59:43 wez Exp $ */

#ifndef PHP_WIN32_GLOBALS_H
#define PHP_WIN32_GLOBALS_H

/* misc globals for thread-safety under win32 */

#include "pwd.h"

typedef struct _php_win32_core_globals php_win32_core_globals;

#ifdef ZTS
# define PW32G(v)               TSRMG(php_win32_core_globals_id, 
php_win32_core_globals*, v)
extern PHPAPI int php_win32_core_globals_id;
#else
# define PW32G(v)               (php_win32_core_globals.v)
extern PHPAPI struct _php_win32_core_globals php_win32_core_globals;
#endif

struct _php_win32_core_globals {
        /* syslog */
        char *log_header;
        HANDLE log_source;

        /* getpwuid */
        struct passwd pwd;

        /* getlogin */
        char *login_name;

        /* time */
        struct timeval starttime;
        __int64                 lasttime, freq;
};

void php_win32_core_globals_ctor(void *vg TSRMLS_DC);
PHP_RSHUTDOWN_FUNCTION(win32_core_globals);

#endif


-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to