diff src/os/win32/ngx_win32_init.c @ 282:30310107dbc9

nginx-0.0.2-2004-03-09-22:47:07 import
author Igor Sysoev <igor@sysoev.ru>
date Tue, 09 Mar 2004 19:47:07 +0000
parents 00cafae0bdf1
children 55e496a8ece3
line wrap: on
line diff
--- a/src/os/win32/ngx_win32_init.c
+++ b/src/os/win32/ngx_win32_init.c
@@ -17,6 +17,13 @@ ngx_os_io_t ngx_os_io = {
 };
 
 
+typedef struct {
+    WORD  wServicePackMinor;
+    WORD  wSuiteMask;
+    BYTE  wProductType;
+} ngx_osviex_stub_t;
+
+
 /* Should these pointers be per protocol ? */
 LPFN_ACCEPTEX              acceptex;
 LPFN_GETACCEPTEXSOCKADDRS  getacceptexsockaddrs;
@@ -29,11 +36,12 @@ static GUID tf_guid = WSAID_TRANSMITFILE
 
 int ngx_os_init(ngx_log_t *log)
 {
-    u_int            osviex;
-    DWORD            bytes;
-    SOCKET           s;
-    WSADATA          wsd;
-    OSVERSIONINFOEX  osvi;
+    u_int               osviex;
+    DWORD               bytes;
+    SOCKET              s;
+    WSADATA             wsd;
+    OSVERSIONINFOEX     osvi;
+    ngx_osviex_stub_t  *osviex_stub;
 
     /* get Windows version */
 
@@ -75,17 +83,16 @@ int ngx_os_init(ngx_log_t *log)
         ngx_win32_version += osvi.wServicePackMajor * 10
                              + osvi.wServicePackMinor;
 
+        /*
+         * the MSVC 6.0 SP2 defines wSuiteMask and wProductType
+         * as WORD wReserved[2]
+         */
+        osviex_stub = (ngx_osviex_stub_t *) &osvi.wServicePackMinor;
+
         ngx_log_error(NGX_LOG_INFO, log, 0,
                       "OS: %u build:%u, \"%s\", suite:%x, type:%u",
                       ngx_win32_version, osvi.dwBuildNumber, osvi.szCSDVersion,
-                      osvi.wReserved[0], osvi.wReserved[1]);
-
-#if 0
-        ngx_log_error(NGX_LOG_INFO, log, 0,
-                      "OS: %u build:%u, \"%s\", suite:%x, type:%u",
-                      ngx_win32_version, osvi.dwBuildNumber, osvi.szCSDVersion,
-                      osvi.wSuiteMask, osvi.wProductType);
-#endif
+                      osviex_stub->wSuiteMask, osviex_stub->wProductType);
 
     } else {
         if (osvi.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS) {
@@ -123,6 +130,10 @@ int ngx_os_init(ngx_log_t *log)
         return NGX_ERROR;
     }
 
+    if (ngx_win32_version < NGX_WIN_NT) {
+        return NGX_OK;
+    }
+
     /* get AcceptEx(), GetAcceptExSockAddrs() and TransmitFile() addresses */
 
     s = ngx_socket(AF_INET, SOCK_STREAM, IPPROTO_IP, 0);