holger          Sun Dec  5 04:52:25 2004 EDT

  Modified files:              
    /php-src/sapi/pi3web        pi3web_sapi.c php5pi3web.dsp pi3web_sapi.h 
  Log:
  Replaced static server variables by function call and configurable list at 
the Pi3Web server side.
  
http://cvs.php.net/diff.php/php-src/sapi/pi3web/pi3web_sapi.c?r1=1.57&r2=1.58&ty=u
Index: php-src/sapi/pi3web/pi3web_sapi.c
diff -u php-src/sapi/pi3web/pi3web_sapi.c:1.57 
php-src/sapi/pi3web/pi3web_sapi.c:1.58
--- php-src/sapi/pi3web/pi3web_sapi.c:1.57      Sat Jan 17 08:00:15 2004
+++ php-src/sapi/pi3web/pi3web_sapi.c   Sun Dec  5 04:52:25 2004
@@ -21,7 +21,7 @@
    +----------------------------------------------------------------------+
  */
 
-/* $Id: pi3web_sapi.c,v 1.57 2004/01/17 13:00:15 sniper Exp $ */
+/* $Id: pi3web_sapi.c,v 1.58 2004/12/05 09:52:25 holger Exp $ */
 
 #define ZEND_INCLUDE_FULL_WINDOWS_HEADERS
 
@@ -45,41 +45,19 @@
 
 int IWasLoaded=0;
 
-static char *pi3web_server_variables[] = {
-       "ALL_HTTP",
-       "AUTH_TYPE",
-       "CONTENT_LENGTH",
-       "CONTENT_TYPE",
-       "GATEWAY_INTERFACE",
-       "PATH_INFO",
-       "PATH_TRANSLATED",
-       "QUERY_STRING",
-       "REQUEST_METHOD",
-       "REMOTE_ADDR",
-       "REMOTE_HOST",
-       "REMOTE_USER",
-       "SCRIPT_NAME",
-       "SERVER_NAME",
-       "SERVER_PORT",
-       "SERVER_PROTOCOL",
-       "SERVER_SOFTWARE",
-       NULL
-};
-
 
 static void php_info_pi3web(ZEND_MODULE_INFO_FUNC_ARGS)
 {
-       char **p = pi3web_server_variables;
        char variable_buf[PI3WEB_SERVER_VAR_BUF_SIZE];
        DWORD variable_len;
-       LPCONTROL_BLOCK lpCB;
-
-       lpCB = (LPCONTROL_BLOCK) SG(server_context);
+       LPCONTROL_BLOCK lpCB = (LPCONTROL_BLOCK) SG(server_context);
+       PIDB *pDB = (PIDB *)lpCB->GetVariableNames(lpCB->ConnID);
+       PIDBIterator *pIter = PIDB_getIterator( pDB, PIDBTYPE_STRING, 0, 0 );   
 
        PUTS("<table border=0 cellpadding=3 cellspacing=1 width=600 
align=center>\n");
        PUTS("<tr><th colspan=2 bgcolor=\"" PHP_HEADER_COLOR "\">Pi3Web Server 
Information</th></tr>\n");
        php_info_print_table_header(2, "Information Field", "Value");
-       php_info_print_table_row(2, "Pi3Web SAPI module version", "$Id: 
pi3web_sapi.c,v 1.57 2004/01/17 13:00:15 sniper Exp $");
+       php_info_print_table_row(2, "Pi3Web SAPI module version", "$Id: 
pi3web_sapi.c,v 1.58 2004/12/05 09:52:25 holger Exp $");
        php_info_print_table_row(2, "Server Name Stamp", 
HTTPCore_getServerStamp());
        snprintf(variable_buf, 511, "%d", HTTPCore_debugEnabled());
        php_info_print_table_row(2, "Debug Enabled", variable_buf);
@@ -100,22 +78,28 @@
        php_info_print_table_row(2, "HTTP Request Line", lpCB->lpszReq);
        PUTS("<tr><th colspan=2 bgcolor=\"" PHP_HEADER_COLOR "\">HTTP 
Headers</th></tr>\n");
        php_info_print_table_header(2, "Server Variable", "Value");
-       while (*p) {
+
+       /* --- loop over all registered server variables --- */
+       for(; pIter && PIDBIterator_atValidElement( pIter ); PIDBIterator_next( 
pIter ) )
+       {       
+               PCHAR pKey;
+               PIDBIterator_current( pIter, &pKey );
+               if ( !pKey ) { /* sanity */ continue; };                        
                                                        
+
                variable_len = PI3WEB_SERVER_VAR_BUF_SIZE;
-               if (lpCB->GetServerVariable(lpCB->ConnID, *p, variable_buf, 
&variable_len)
+               if (lpCB->GetServerVariable(lpCB->ConnID, pKey, variable_buf, 
&variable_len)
                        && variable_buf[0]) {
-                       php_info_print_table_row(2, *p, variable_buf);
+                       php_info_print_table_row(2, pKey, variable_buf);
                } else if (PIPlatform_getLastError() == PIAPI_EINVAL) {
                        char *tmp_variable_buf;
 
                        tmp_variable_buf = (char *) emalloc(variable_len);
-                       if (lpCB->GetServerVariable(lpCB->ConnID, *p, 
tmp_variable_buf, &variable_len)
+                       if (lpCB->GetServerVariable(lpCB->ConnID, pKey, 
tmp_variable_buf, &variable_len)
                                && variable_buf[0]) {
-                               php_info_print_table_row(2, *p, 
tmp_variable_buf);
+                               php_info_print_table_row(2, pKey, 
tmp_variable_buf);
                        }
                        efree(tmp_variable_buf);
                }
-               p++;
        }
 
        PUTS("</table>");
@@ -298,68 +282,38 @@
        char static_variable_buf[PI3WEB_SERVER_VAR_BUF_SIZE];
        char *variable_buf;
        DWORD variable_len = PI3WEB_SERVER_VAR_BUF_SIZE;
-       char *variable;
-       char *strtok_buf = NULL;
        LPCONTROL_BLOCK lpCB = (LPCONTROL_BLOCK) SG(server_context);
-       char **p = pi3web_server_variables;
-       p++; // Jump over ALL_HTTP;
+       PIDB *pDB = (PIDB *)lpCB->GetVariableNames(lpCB->ConnID);
+       PIDBIterator *pIter = PIDB_getIterator( pDB, PIDBTYPE_STRING, 0, 0 );   
+
+       /* --- loop over all registered server variables --- */                 
        
+       for(; pIter && PIDBIterator_atValidElement( pIter ); PIDBIterator_next( 
pIter ) )
+       {       
+               PCHAR pKey;
+               PIDBIterator_current( pIter, &pKey );
+               if ( !pKey ) { /* sanity */ continue; };                        
                                                        
 
-       /* Register the standard server variables */
-       while (*p) {
                variable_len = PI3WEB_SERVER_VAR_BUF_SIZE;
-               if (lpCB->GetServerVariable(lpCB->ConnID, *p, 
static_variable_buf, &variable_len)
+               if (lpCB->GetServerVariable(lpCB->ConnID, pKey, 
static_variable_buf, &variable_len)
                        && (variable_len > 1)) {
-                       php_register_variable(*p, static_variable_buf, 
track_vars_array TSRMLS_CC);
+                       php_register_variable(pKey, static_variable_buf, 
track_vars_array TSRMLS_CC);
                } else if (PIPlatform_getLastError()==PIAPI_EINVAL) {
                        variable_buf = (char *) emalloc(variable_len);
-                       if (lpCB->GetServerVariable(lpCB->ConnID, *p, 
variable_buf, &variable_len)) {
-                               php_register_variable(*p, variable_buf, 
track_vars_array TSRMLS_CC);
+                       if (lpCB->GetServerVariable(lpCB->ConnID, pKey, 
variable_buf, &variable_len)) {
+                               php_register_variable(pKey, variable_buf, 
track_vars_array TSRMLS_CC);
                        }
                        efree(variable_buf);
                }
-               p++;
+
        }
 
+
        /* PHP_SELF support */
        variable_len = PI3WEB_SERVER_VAR_BUF_SIZE;
        if (lpCB->GetServerVariable(lpCB->ConnID, "SCRIPT_NAME", 
static_variable_buf, &variable_len)
                && (variable_len > 1)) {
                php_register_variable("PHP_SELF", static_variable_buf, 
track_vars_array TSRMLS_CC);
        }
-
-       variable_len = PI3WEB_SERVER_VAR_BUF_SIZE;
-       if (lpCB->GetServerVariable(lpCB->ConnID, "ALL_HTTP", 
static_variable_buf, &variable_len)
-               && (variable_len > 1)) {
-               variable_buf = static_variable_buf;
-       } else {
-               if (PIPlatform_getLastError()==PIAPI_EINVAL) {
-                       variable_buf = (char *) emalloc(variable_len);
-                       if (!lpCB->GetServerVariable(lpCB->ConnID, "ALL_HTTP", 
variable_buf, &variable_len)) {
-                               efree(variable_buf);
-                               return;
-                       }
-               } else {
-                       return;
-               }
-       }
-       variable = php_strtok_r(variable_buf, "\r\n", &strtok_buf);
-       while (variable) {
-               char *colon = strchr(variable, ':');
-
-               if (colon) {
-                       char *value = colon+1;
-                       while (*value==' ') {
-                               value++;
-                       }
-                       *colon = 0;
-                       php_register_variable(variable, value, track_vars_array 
TSRMLS_CC);
-                       *colon = ':';
-               }
-               variable = php_strtok_r(NULL, "\r\n", &strtok_buf);
-       }
-       if (variable_buf!=static_variable_buf) {
-               efree(variable_buf);
-       }
 }
 
 static sapi_module_struct pi3web_sapi_module = {
@@ -388,7 +342,7 @@
 
 MODULE_API DWORD PHP5_wrapper(LPCONTROL_BLOCK lpCB)
 {
-       zend_file_handle file_handle;
+       zend_file_handle file_handle = {0};
        int iRet = PIAPI_COMPLETED;
        TSRMLS_FETCH();
 
http://cvs.php.net/diff.php/php-src/sapi/pi3web/php5pi3web.dsp?r1=1.1&r2=1.2&ty=u
Index: php-src/sapi/pi3web/php5pi3web.dsp
diff -u php-src/sapi/pi3web/php5pi3web.dsp:1.1 
php-src/sapi/pi3web/php5pi3web.dsp:1.2
--- php-src/sapi/pi3web/php5pi3web.dsp:1.1      Sat Jan 17 08:00:15 2004
+++ php-src/sapi/pi3web/php5pi3web.dsp  Sun Dec  5 04:52:25 2004
@@ -44,7 +44,7 @@
 # PROP Ignore_Export_Lib 0
 # PROP Target_Dir ""
 # ADD BASE CPP /nologo /MTd /W3 /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D 
"_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "php5pi3web_EXPORTS" /YX /FD /GZ /c
-# ADD CPP /nologo /MDd /W3 /GX /ZI /Od /I "...\..\include" /I "..\..\win32" /I 
"..\..\Zend" /I "..\.." /I "..\..\main" /I "..\..\TSRM" /D "_DEBUG" /D 
ZEND_DEBUG=1 /D "_WINDOWS" /D "_USRDLL" /D "ZTS" /D "ZEND_WIN32" /D "PHP_WIN32" 
/D "WIN32" /D "_MBCS" /D "PHP5PI3WEB_EXPORTS" /FR /YX /FD /GZ /c
+# ADD CPP /nologo /MDd /W3 /GX /ZI /Od /I "...\..\include" /I "..\..\win32" /I 
"..\..\Zend" /I "..\.." /I "..\..\main" /I "..\..\TSRM" /I "..\..\..\..\PIAPI" 
/I "..\..\..\..\PI2API" /I "..\..\..\..\PI3API" /D "_DEBUG" /D ZEND_DEBUG=1 /D 
"_WINDOWS" /D "_USRDLL" /D "ZTS" /D "ZEND_WIN32" /D "PHP_WIN32" /D "WIN32" /D 
"_MBCS" /D "PHP5PI3WEB_EXPORTS" /FR /YX /FD /GZ /c
 # ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
 # ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
 # ADD BASE RSC /l 0x40d /d "_DEBUG"
@@ -54,7 +54,7 @@
 # ADD BSC32 /nologo
 LINK32=link.exe
 # 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
-# ADD LINK32 php5ts_debug.lib kernel32.lib user32.lib gdi32.lib wsock32.lib 
winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib 
uuid.lib odbc32.lib odbccp32.lib PiAPI.lib Pi2API.lib Pi3API.lib /nologo 
/version:4.0 /dll /debug /machine:I386 /nodefaultlib:"libcmt" 
/nodefaultlib:"libc" /pdbtype:sept /libpath:"..\..\Debug_TS"
+# ADD LINK32 php5ts_debug.lib kernel32.lib user32.lib gdi32.lib wsock32.lib 
winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib 
uuid.lib odbc32.lib odbccp32.lib PiAPI.lib Pi2API.lib Pi3API.lib /nologo 
/version:4.0 /dll /debug /machine:I386 /nodefaultlib:"libcmt" 
/nodefaultlib:"libc" /pdbtype:sept /libpath:"..\..\Debug_TS" 
/libpath:"..\..\..\..\PIAPI" /libpath:"..\..\..\..\PI2API" 
/libpath:"..\..\..\..\PI3API"
 
 !ELSEIF  "$(CFG)" == "php5pi3web - Win32 Release_TS"
 
@@ -70,7 +70,7 @@
 # PROP Ignore_Export_Lib 0
 # PROP Target_Dir ""
 # ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D 
"_MBCS" /D "_USRDLL" /D "php5pi3web_EXPORTS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "...\..\include" /I "..\..\win32" /I 
"..\..\Zend" /I "..\.." /I "..\..\main" /I "..\..\TSRM" /D "NDEBUG" /D 
ZEND_DEBUG=0 /D "_WINDOWS" /D "_USRDLL" /D "ZTS" /D "ZEND_WIN32" /D "PHP_WIN32" 
/D "WIN32" /D "_MBCS" /D "PHP5PI3WEB_EXPORTS" /FR /YX /FD /c
+# ADD CPP /nologo /MD /W3 /GX /O2 /I "...\..\include" /I "..\..\win32" /I 
"..\..\Zend" /I "..\.." /I "..\..\main" /I "..\..\TSRM" /I "..\..\..\..\PIAPI" 
/I "..\..\..\..\PI2API" /I "..\..\..\..\PI3API" /D "NDEBUG" /D ZEND_DEBUG=0 /D 
"_WINDOWS" /D "_USRDLL" /D "ZTS" /D "ZEND_WIN32" /D "PHP_WIN32" /D "WIN32" /D 
"_MBCS" /D "PHP5PI3WEB_EXPORTS" /FR /YX /FD /c
 # ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
 # ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
 # ADD BASE RSC /l 0x40d /d "NDEBUG"
@@ -80,7 +80,7 @@
 # ADD BSC32 /nologo
 LINK32=link.exe
 # 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
-# ADD LINK32 php5ts.lib kernel32.lib user32.lib gdi32.lib wsock32.lib 
winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib 
uuid.lib odbc32.lib odbccp32.lib PiAPI.lib Pi2API.lib Pi3API.lib /nologo 
/version:4.0 /dll /machine:I386 /nodefaultlib:"libc.lib" 
/nodefaultlib:"libcmt.lib" /libpath:"..\..\Release_TS"
+# ADD LINK32 php5ts.lib kernel32.lib user32.lib gdi32.lib wsock32.lib 
winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib 
uuid.lib odbc32.lib odbccp32.lib PiAPI.lib Pi2API.lib Pi3API.lib /nologo 
/version:4.0 /dll /machine:I386 /nodefaultlib:"libc.lib" 
/nodefaultlib:"libcmt.lib" /libpath:"..\..\Release_TS" 
/libpath:"..\..\..\..\PIAPI" /libpath:"..\..\..\..\PI2API" 
/libpath:"..\..\..\..\PI3API"
 
 !ELSEIF  "$(CFG)" == "php5pi3web - Win32 Release_TS_inline"
 
@@ -97,7 +97,7 @@
 # PROP Ignore_Export_Lib 0
 # PROP Target_Dir ""
 # ADD BASE CPP /nologo /MD /W3 /GX /O2 /I ".." /I "..\main" /I "..\regex" /I 
"..\..\bindlib_w32" /I "..\Zend" /I "..\TSRM" /I "..\ext\mysql\libmysql" /I 
"..\..\..\PiAPI" /I "..\..\..\Pi2API" /I "..\..\..\Pi3API" /D "NDEBUG" /D 
ZEND_DEBUG=0 /D "_WINDOWS" /D "_USRDLL" /D "PHP5DLLTS_EXPORTS" /D "PHP_EXPORTS" 
/D "LIBZEND_EXPORTS" /D "TSRM_EXPORTS" /D "SAPI_EXPORTS" /D "MSVC5" /D "ZTS" /D 
"ZEND_WIN32" /D "PHP_WIN32" /D "WIN32" /D "_MBCS" /FR /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "...\..\include" /I "..\..\win32" /I 
"..\..\Zend" /I "..\.." /I "..\..\main" /I "..\..\TSRM" /D "NDEBUG" /D 
ZEND_DEBUG=0 /D "ZEND_WIN32_FORCE_INLINE" /D "_WINDOWS" /D "_USRDLL" /D "ZTS" 
/D "ZEND_WIN32" /D "PHP_WIN32" /D "WIN32" /D "_MBCS" /D "PHP5PI3WEB_EXPORTS" 
/FR /YX /FD /c
+# ADD CPP /nologo /MD /W3 /GX /O2 /I "...\..\include" /I "..\..\win32" /I 
"..\..\Zend" /I "..\.." /I "..\..\main" /I "..\..\TSRM" /I "..\..\..\..\PIAPI" 
/I "..\..\..\..\PI2API" /I "..\..\..\..\PI3API" /D "NDEBUG" /D ZEND_DEBUG=0 /D 
"ZEND_WIN32_FORCE_INLINE" /D "_WINDOWS" /D "_USRDLL" /D "ZTS" /D "ZEND_WIN32" 
/D "PHP_WIN32" /D "WIN32" /D "_MBCS" /D "PHP5PI3WEB_EXPORTS" /FR /YX /FD /c
 # ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
 # ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
 # ADD BASE RSC /l 0x409 /d "NDEBUG"
@@ -107,7 +107,7 @@
 # ADD BSC32 /nologo
 LINK32=link.exe
 # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib wsock32.lib winspool.lib 
comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib 
odbc32.lib odbccp32.lib ZendTS.lib TSRM.lib resolv.lib libmysql.lib PiAPI.lib 
Pi2API.lib Pi3API.lib /nologo /version:4.0 /dll /machine:I386 
/nodefaultlib:"libc.lib" /nodefaultlib:"libcmt.lib" 
/out:"..\Release_TS\php5ts.dll" /libpath:"..\TSRM\Release_TS" 
/libpath:"..\Zend\Release_TS" /libpath:"..\..\bindlib_w32\Release" 
/libpath:"..\ext\mysql\libmysql\Release_TS" /libpath:"Release_TS" 
/libpath:"..\..\..\PiAPI" /libpath:"..\..\..\Pi2API" /libpath:"..\..\..\Pi3API"
-# ADD LINK32 php5ts.lib kernel32.lib user32.lib gdi32.lib wsock32.lib 
winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib 
uuid.lib odbc32.lib odbccp32.lib PiAPI.lib Pi2API.lib Pi3API.lib /nologo 
/version:4.0 /dll /machine:I386 /nodefaultlib:"libc.lib" 
/nodefaultlib:"libcmt.lib" /libpath:"..\..\Release_TS_inline"
+# ADD LINK32 php5ts.lib kernel32.lib user32.lib gdi32.lib wsock32.lib 
winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib 
uuid.lib odbc32.lib odbccp32.lib PiAPI.lib Pi2API.lib Pi3API.lib /nologo 
/version:4.0 /dll /machine:I386 /nodefaultlib:"libc.lib" 
/nodefaultlib:"libcmt.lib" /libpath:"..\..\Release_TS_inline" 
/libpath:"..\..\..\..\PIAPI" /libpath:"..\..\..\..\PI2API" 
/libpath:"..\..\..\..\PI3API"
 
 !ENDIF 
 
http://cvs.php.net/diff.php/php-src/sapi/pi3web/pi3web_sapi.h?r1=1.6&r2=1.7&ty=u
Index: php-src/sapi/pi3web/pi3web_sapi.h
diff -u php-src/sapi/pi3web/pi3web_sapi.h:1.6 
php-src/sapi/pi3web/pi3web_sapi.h:1.7
--- php-src/sapi/pi3web/pi3web_sapi.h:1.6       Sat Jan 17 08:00:15 2004
+++ php-src/sapi/pi3web/pi3web_sapi.h   Sun Dec  5 04:52:25 2004
@@ -3,7 +3,6 @@
 
 #ifdef PHP_WIN32
 #      include <windows.h>
-#      include <httpext.h>
 #      ifdef PHP5PI3WEB_EXPORTS
 #              define MODULE_API __declspec(dllexport) 
 #      else
@@ -15,7 +14,6 @@
 
        typedef int BOOL;
        typedef void far *LPVOID;
-       typedef LPVOID HCONN;
        typedef unsigned long DWORD;
        typedef DWORD far *LPDWORD;
        typedef char CHAR;
@@ -24,6 +22,8 @@
        typedef BYTE far *LPBYTE;
 #endif
 
+       typedef LPVOID HCONN;
+
 #ifdef __cplusplus
 extern "C" {
 #endif
@@ -59,17 +59,20 @@
     LPSTR     lpszContentType;        // Content type of client data
        DWORD     dwBehavior;                     // PHP behavior (standard, 
highlight, intend
 
+
+    LPVOID (* GetVariableNames) (HCONN      hConn);
+
     BOOL (* GetServerVariable) ( HCONN       hConn,
                                  LPSTR       lpszVariableName,
                                  LPVOID      lpvBuffer,
                                  LPDWORD     lpdwSize );
 
-    BOOL (* WriteClient)  ( HCONN      ConnID,
-                            LPVOID     Buffer,
+    BOOL (* WriteClient)  ( HCONN      hConn,
+                            LPVOID     lpvBuffer,
                             LPDWORD    lpdwBytes,
                             DWORD      dwReserved );
 
-    BOOL (* ReadClient)  ( HCONN      ConnID,
+    BOOL (* ReadClient)  ( HCONN      hConn,
                            LPVOID     lpvBuffer,
                            LPDWORD    lpdwSize );
 

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

Reply via email to