diff --git a/src/core/ngx_core.h b/src/core/ngx_core.h
index 7a19d1b..84b0a6d 100644
--- a/src/core/ngx_core.h
+++ b/src/core/ngx_core.h
@@ -30,7 +30,7 @@
 #include <ngx_times.h>
 #include <ngx_inet.h>
 #include <ngx_conf_file.h>
-#include <ngx_os_init.h>
+#include <ngx_os.h>
 #include <ngx_connection.h>
 
 
diff --git a/src/http/modules/ngx_http_static_handler.c b/src/http/modules/ngx_http_static_handler.c
index 33d293a..10acdad 100644
--- a/src/http/modules/ngx_http_static_handler.c
+++ b/src/http/modules/ngx_http_static_handler.c
@@ -87,30 +87,52 @@
 
 #if (WIN9X)
 
-    /*
-     * There is no way to open a file or a directory in Win9X with
-     * one syscall: Win9X has no FILE_FLAG_BACKUP_SEMANTICS flag.
-     * So we need to check its type before the opening
-     */
+    if (ngx_win32_version < NGX_WIN_NT) {
 
-    r->file.info.dwFileAttributes = GetFileAttributes(r->file.name.data);
-    if (r->file.info.dwFileAttributes == INVALID_FILE_ATTRIBUTES) {
-        err = ngx_errno;
-        ngx_log_error(NGX_LOG_ERR, r->connection->log, err,
-                      ngx_file_type_n " \"%s\" failed", r->file.name.data);
+        /*
+         * There is no way to open a file or a directory in Win9X with
+         * one syscall: Win9X has no FILE_FLAG_BACKUP_SEMANTICS flag.
+         * So we need to check its type before the opening.
+         */
 
-        if (err == NGX_ENOENT || err == NGX_ENOTDIR) {
-            return NGX_HTTP_NOT_FOUND;
+        r->file.info.dwFileAttributes = GetFileAttributes(r->file.name.data);
+        if (r->file.info.dwFileAttributes == INVALID_FILE_ATTRIBUTES) {
+            err = ngx_errno;
+            ngx_log_error(NGX_LOG_ERR, r->connection->log, err,
+                          ngx_file_type_n " \"%s\" failed", r->file.name.data);
 
-        } else if (err == NGX_EACCES) {
-            return NGX_HTTP_FORBIDDEN;
+            if (err == NGX_ENOENT || err == NGX_ENOTDIR) {
+                return NGX_HTTP_NOT_FOUND;
 
-        } else {
-            return NGX_HTTP_INTERNAL_SERVER_ERROR;
+            } else if (err == NGX_EACCES) {
+                return NGX_HTTP_FORBIDDEN;
+
+            } else {
+                return NGX_HTTP_INTERNAL_SERVER_ERROR;
+            }
+        }
+
+        if (ngx_is_dir(r->file.info)) {
+ngx_log_debug(r->connection->log, "HTTP DIR: '%s'" _ r->file.name.data);
+
+            if (!(r->headers_out.location =
+                   ngx_http_add_header(&r->headers_out, ngx_http_headers_out)))
+            {
+                return NGX_HTTP_INTERNAL_SERVER_ERROR;
+            }
+
+            *last++ = '/';
+            *last = '\0';
+            r->headers_out.location->key.len = 8;
+            r->headers_out.location->key.data = "Location" ;
+            r->headers_out.location->value.len = last - location;
+            r->headers_out.location->value.data = location;
+
+            return NGX_HTTP_MOVED_PERMANENTLY;
         }
     }
 
-#else
+#endif
 
     if (r->file.fd == NGX_INVALID_FILE) {
         r->file.fd = ngx_open_file(r->file.name.data,
@@ -163,7 +185,6 @@
     if (ngx_is_dir(r->file.info)) {
 ngx_log_debug(r->connection->log, "HTTP DIR: '%s'" _ r->file.name.data);
 
-#if !(WIN9X)
         if (ngx_close_file(r->file.fd) == NGX_FILE_ERROR) {
             ngx_log_error(NGX_LOG_ALERT, r->connection->log, ngx_errno,
                           ngx_close_file_n " \"%s\" failed", r->file.name.data);
@@ -171,7 +192,6 @@
 
         r->file.fd = NGX_INVALID_FILE;
         r->file.info_valid = 0;
-#endif
 
         if (!(r->headers_out.location =
                    ngx_http_add_header(&r->headers_out, ngx_http_headers_out)))
@@ -203,7 +223,6 @@
     }
 
 #endif
-#endif
 
     r->content_handler = ngx_http_static_handler;
 
diff --git a/src/http/ngx_http_core_module.c b/src/http/ngx_http_core_module.c
index 3f19b78..529f2ee 100644
--- a/src/http/ngx_http_core_module.c
+++ b/src/http/ngx_http_core_module.c
@@ -4,9 +4,6 @@
 #include <ngx_event.h>
 #include <ngx_http.h>
 #include <nginx.h>
-#if __FreeBSD__
-#include <ngx_freebsd_init.h>
-#endif
 
 
 static void ngx_http_phase_event_handler(ngx_event_t *rev);
diff --git a/src/os/unix/ngx_freebsd.h b/src/os/unix/ngx_freebsd.h
new file mode 100644
index 0000000..f666a6f
--- /dev/null
+++ b/src/os/unix/ngx_freebsd.h
@@ -0,0 +1,16 @@
+#ifndef _NGX_FREEBSD_H_INCLUDED_
+#define _NGX_FREEBSD_H_INCLUDED_
+
+
+ngx_chain_t *ngx_freebsd_sendfile_chain(ngx_connection_t *c, ngx_chain_t *in);
+
+
+extern int ngx_freebsd_kern_osreldate;
+extern int ngx_freebsd_hw_ncpu;
+extern int ngx_freebsd_net_inet_tcp_sendspace;
+extern int ngx_freebsd_sendfile_nbytes_bug;
+extern int ngx_freebsd_kern_ipc_zero_copy_send;
+extern int ngx_freebsd_use_tcp_nopush;
+
+
+#endif /* _NGX_FREEBSD_H_INCLUDED_ */
diff --git a/src/os/unix/ngx_freebsd_config.h b/src/os/unix/ngx_freebsd_config.h
index 233cae5..d53339f 100644
--- a/src/os/unix/ngx_freebsd_config.h
+++ b/src/os/unix/ngx_freebsd_config.h
@@ -24,23 +24,35 @@
 #include <osreldate.h>
 
 
+/* TODO: autoconf */
+#if __FreeBSD_version < 300007
+typedef u_int64_t  uint64_t;
+typedef u_int32_t  uintptr_t;
+#endif
+
+
+#if __FreeBSD_version < 330002  /* exactly */
+typedef uint32_t   socklen_t;
+#endif
+
+
 #if (i386)
 
 #define OFF_FMT    "%lld"
 #define SIZE_FMT   "%d"
 #define SIZEX_FMT  "%x"
-#define TIME_FMT   "%lu"
 
 #else  /* amd64, alpha, sparc64, ia64 */
 
 #define OFF_FMT    "%ld"
 #define SIZE_FMT   "%ld"
 #define SIZEX_FMT  "%lx"
-#define TIME_FMT   "%lu"
 
 #endif
 
+#define TIME_FMT   "%lu"
 #define PID_FMT    "%d"
+#define RLIM_FMT   "%lld"
 
 
 #ifndef HAVE_SELECT
diff --git a/src/os/unix/ngx_freebsd_init.c b/src/os/unix/ngx_freebsd_init.c
index 8bf25d0..4f3146d 100644
--- a/src/os/unix/ngx_freebsd_init.c
+++ b/src/os/unix/ngx_freebsd_init.c
@@ -1,5 +1,6 @@
 
-#include <ngx_freebsd_init.h>
+#include <ngx_config.h>
+#include <ngx_core.h>
 
 
 /* FreeBSD 3.4 at least */
diff --git a/src/os/unix/ngx_freebsd_init.h b/src/os/unix/ngx_freebsd_init.h
deleted file mode 100644
index d77bf81..0000000
--- a/src/os/unix/ngx_freebsd_init.h
+++ /dev/null
@@ -1,26 +0,0 @@
-#ifndef _NGX_FREEBSD_INIT_H_INCLUDED_
-#define _NGX_FREEBSD_INIT_H_INCLUDED_
-
-
-#include <ngx_config.h>
-#include <ngx_core.h>
-
-
-/* STUB */
-int ngx_posix_init(ngx_log_t *log);
-ssize_t ngx_unix_recv(ngx_connection_t *c, char *buf, size_t size);
-ssize_t ngx_readv_chain(ngx_connection_t *c, ngx_chain_t *entry);
-/* */
-
-ngx_chain_t *ngx_freebsd_sendfile_chain(ngx_connection_t *c, ngx_chain_t *in);
-
-
-extern int ngx_freebsd_kern_osreldate;
-extern int ngx_freebsd_hw_ncpu;
-extern int ngx_freebsd_net_inet_tcp_sendspace;
-extern int ngx_freebsd_sendfile_nbytes_bug;
-extern int ngx_freebsd_kern_ipc_zero_copy_send;
-extern int ngx_freebsd_use_tcp_nopush;
-
-
-#endif /* _NGX_FREEBSD_INIT_H_INCLUDED_ */
diff --git a/src/os/unix/ngx_freebsd_sendfile_chain.c b/src/os/unix/ngx_freebsd_sendfile_chain.c
index 65dfc03..71368c7 100644
--- a/src/os/unix/ngx_freebsd_sendfile_chain.c
+++ b/src/os/unix/ngx_freebsd_sendfile_chain.c
@@ -2,7 +2,6 @@
 #include <ngx_config.h>
 #include <ngx_core.h>
 #include <ngx_event.h>
-#include <ngx_freebsd_init.h>
 
 
 /*
diff --git a/src/os/unix/ngx_linux_config.h b/src/os/unix/ngx_linux_config.h
index ca53a23..962d17e 100644
--- a/src/os/unix/ngx_linux_config.h
+++ b/src/os/unix/ngx_linux_config.h
@@ -34,8 +34,9 @@
 #define OFF_FMT    "%lld"
 #define SIZE_FMT   "%d"
 #define SIZEX_FMT  "%x"
-#define PID_FMT    "%d"
 #define TIME_FMT   "%lu"
+#define PID_FMT    "%d"
+#define RLIM_FMT   "%lu"
 
 
 
diff --git a/src/os/unix/ngx_linux_init.c b/src/os/unix/ngx_linux_init.c
index 64bdce4..86b98aa 100644
--- a/src/os/unix/ngx_linux_init.c
+++ b/src/os/unix/ngx_linux_init.c
@@ -3,12 +3,6 @@
 #include <ngx_core.h>
 
 
-/* STUB */
-ssize_t ngx_unix_recv(ngx_connection_t *c, char *buf, size_t size);
-ngx_chain_t *ngx_writev_chain(ngx_connection_t *c, ngx_chain_t *in);
-int ngx_posix_init(ngx_log_t *log);
-
-
 char ngx_linux_kern_ostype[50];
 char ngx_linux_kern_osrelease[20];
 
diff --git a/src/core/ngx_os_init.h b/src/os/unix/ngx_os.h
similarity index 70%
copy from src/core/ngx_os_init.h
copy to src/os/unix/ngx_os.h
index e10a07d..33e3943 100644
--- a/src/core/ngx_os_init.h
+++ b/src/os/unix/ngx_os.h
@@ -1,5 +1,5 @@
-#ifndef _NGX_OS_INIT_H_INCLUDED_
-#define _NGX_OS_INIT_H_INCLUDED_
+#ifndef _NGX_OS_H_INCLUDED_
+#define _NGX_OS_H_INCLUDED_
 
 
 #include <ngx_config.h>
@@ -33,10 +33,12 @@
 
 
 int ngx_os_init(ngx_log_t *log);
-
-#if !(WIN32)
 int ngx_daemon(ngx_log_t *log);
-#endif
+int ngx_posix_init(ngx_log_t *log);
+
+ssize_t ngx_unix_recv(ngx_connection_t *c, char *buf, size_t size);
+ssize_t ngx_readv_chain(ngx_connection_t *c, ngx_chain_t *entry);
+ngx_chain_t *ngx_writev_chain(ngx_connection_t *c, ngx_chain_t *in);
 
 
 extern ngx_os_io_t  ngx_os_io;
@@ -48,4 +50,9 @@
 extern int          rotate;
 
 
-#endif /* _NGX_OS_INIT_H_INCLUDED_ */
+#ifdef __FreeBSD__
+#include <ngx_freebsd.h>
+#endif
+
+
+#endif /* _NGX_OS_H_INCLUDED_ */
diff --git a/src/os/unix/ngx_posix_init.c b/src/os/unix/ngx_posix_init.c
index fe91408..c970833 100644
--- a/src/os/unix/ngx_posix_init.c
+++ b/src/os/unix/ngx_posix_init.c
@@ -47,7 +47,7 @@
     }
 
     ngx_log_error(NGX_LOG_INFO, log, 0,
-                  "getrlimit(RLIMIT_NOFILE): %qd:%qd",
+                  "getrlimit(RLIMIT_NOFILE): " RLIM_FMT ":" RLIM_FMT,
                   rlmt.rlim_cur, rlmt.rlim_max);
 
     ngx_max_sockets = rlmt.rlim_cur;
diff --git a/src/os/unix/ngx_solaris_config.h b/src/os/unix/ngx_solaris_config.h
index 21724f8..fe680b8 100644
--- a/src/os/unix/ngx_solaris_config.h
+++ b/src/os/unix/ngx_solaris_config.h
@@ -22,6 +22,7 @@
 #include <sys/filio.h>          /* FIONBIO */
 #include <sys/stropts.h>        /* INFTIM */
 #include <sys/socket.h>
+#include <sys/systeminfo.h>
 #include <netinet/in.h>
 #include <arpa/inet.h>
 #include <netdb.h>
@@ -32,8 +33,9 @@
 #define OFF_FMT    "%lld"
 #define SIZE_FMT   "%d"
 #define SIZEX_FMT  "%x"
-#define PID_FMT    "%ld"
 #define TIME_FMT   "%lu"
+#define PID_FMT    "%ld"
+#define RLIM_FMT   "%lu"
 
 
 #ifndef HAVE_SELECT
diff --git a/src/os/unix/ngx_solaris_init.c b/src/os/unix/ngx_solaris_init.c
new file mode 100644
index 0000000..c593ed9
--- /dev/null
+++ b/src/os/unix/ngx_solaris_init.c
@@ -0,0 +1,51 @@
+
+#include <ngx_config.h>
+#include <ngx_core.h>
+
+
+char ngx_solaris_sysname[20];
+char ngx_solaris_release[10];
+char ngx_solaris_version[50];
+
+
+ngx_os_io_t ngx_os_io = {
+    ngx_unix_recv,
+    NULL,
+    NULL,
+    ngx_writev_chain,
+    NGX_HAVE_ZEROCOPY
+};
+
+
+int ngx_os_init(ngx_log_t *log)
+{
+    if (sysinfo(SI_SYSNAME, ngx_solaris_sysname, sizeof(ngx_solaris_sysname))
+                                                                         == -1)
+    {
+        ngx_log_error(NGX_LOG_ALERT, log, errno, "sysinfo(SI_SYSNAME) failed");
+        return NGX_ERROR;
+    }
+
+    if (sysinfo(SI_RELEASE, ngx_solaris_release, sizeof(ngx_solaris_release))
+                                                                         == -1)
+    {
+        ngx_log_error(NGX_LOG_ALERT, log, errno, "sysinfo(SI_RELEASE) failed");
+        return NGX_ERROR;
+    }
+
+    if (sysinfo(SI_VERSION, ngx_solaris_version, sizeof(ngx_solaris_version))
+                                                                         == -1)
+    {
+        ngx_log_error(NGX_LOG_ALERT, log, errno, "sysinfo(SI_SYSNAME) failed");
+        return NGX_ERROR;
+    }
+
+    ngx_log_error(NGX_LOG_INFO, log, 0, "OS: %s %s"
+                  ngx_solaris_sysname, ngx_solaris_release);
+
+    ngx_log_error(NGX_LOG_INFO, log, 0, "version: %s",
+                  ngx_solaris_version);
+
+
+    return ngx_posix_init(log);
+}
diff --git a/src/os/unix/ngx_time.h b/src/os/unix/ngx_time.h
index d942900..b8c6422 100644
--- a/src/os/unix/ngx_time.h
+++ b/src/os/unix/ngx_time.h
@@ -20,7 +20,10 @@
 #define ngx_tm_mon     tm_mon
 #define ngx_tm_year    tm_year
 #define ngx_tm_wday    tm_wday
+
+#ifndef SOLARIS
 #define ngx_tm_zone    tm_zone
+#endif
 
 
 void ngx_localtime(ngx_tm_t *tm);
diff --git a/src/os/win32/ngx_files.c b/src/os/win32/ngx_files.c
index faeb93d..139d141 100644
--- a/src/os/win32/ngx_files.c
+++ b/src/os/win32/ngx_files.c
@@ -6,26 +6,49 @@
 ssize_t ngx_read_file(ngx_file_t *file, char *buf, size_t size, off_t offset)
 {
     size_t      n;
-    long        high_offset;
-    ngx_err_t   err;
     OVERLAPPED  ovlp, *povlp;
 
+#if (WIN9X)
+
     if (ngx_win32_version < NGX_WIN_NT) {
-        high_offset = (long) (offset >> 32);
-        if (SetFilePointer(file->fd, (long) offset, &high_offset, FILE_BEGIN)
-                                                                 == 0xFFFFFFFF)
-        {
-            err = ngx_errno;
-            if (err != NO_ERROR) {
-                ngx_log_error(NGX_LOG_ERR, file->log, err,
-                              "SeekFilePointer() failed");
-                return NGX_ERROR;
+        long        high_offset;
+        ngx_err_t   err;
+
+        /*
+         * in Win9X the overlapped pointer must be NULL
+         * so we need to use SetFilePointer() to set the offset
+         */
+
+        if (file->offset != offset) {
+
+            /*
+             * the maximum file size on FAT16 is 2G, but on FAT32 it's 4G so we
+             * need to use high_offset because a single offset is signed value
+             */
+
+            high_offset = (long) (offset >> 32);
+            if (SetFilePointer(file->fd, (long) offset, &high_offset,
+                               FILE_BEGIN) == INVALID_SET_FILE_POINTER)
+            {
+                /*
+                 * INVALID_SET_FILE_POINTER is 0xffffffff and it can be valid
+                 * value for large file so we need also to check GetLastError()
+                 */
+
+                err = ngx_errno;
+                if (err != NO_ERROR) {
+                    ngx_log_error(NGX_LOG_ERR, file->log, err,
+                                  "SeekFilePointer() failed");
+                    return NGX_ERROR;
+                }
             }
         }
 
         povlp = NULL;
 
     } else {
+
+#endif
         ovlp.Internal = 0;
         ovlp.InternalHigh = 0;
         ovlp.Offset = (DWORD) offset;
@@ -33,7 +56,10 @@
         ovlp.hEvent = NULL;
 
         povlp = &ovlp;
+
+#if (WIN9X)
     }
+#endif
 
     if (ReadFile(file->fd, buf, size, &n, povlp) == 0) {
         ngx_log_error(NGX_LOG_ERR, file->log, ngx_errno, "ReadFile() failed");
@@ -46,13 +72,66 @@
 }
 
 
-/* TODO: as read file */
-
 ssize_t ngx_write_file(ngx_file_t *file, char *buf, size_t size, off_t offset)
 {
-    size_t n;
+    size_t      n;
+    OVERLAPPED  ovlp, *povlp;
 
-    if (WriteFile(file->fd, buf, size, &n, NULL) == 0) {
+#if (WIN9X)
+
+    if (ngx_win32_version < NGX_WIN_NT) {
+        long        high_offset;
+        ngx_err_t   err;
+
+        /*
+         * in Win9X the overlapped pointer must be NULL
+         * so we need to use SetFilePointer() to set the offset
+         */
+
+        if (file->offset != offset) {
+
+            /*
+             * the maximum file size on FAT16 is 2G, but on FAT32 it's 4G so we
+             * need to use high_offset because a single offset is signed value
+             */
+
+            high_offset = (long) (offset >> 32);
+            if (SetFilePointer(file->fd, (long) offset, &high_offset,
+                               FILE_BEGIN) == INVALID_SET_FILE_POINTER)
+            {
+                /*
+                 * INVALID_SET_FILE_POINTER is 0xffffffff and it can be valid
+                 * value for large file so we need also to check GetLastError()
+                 */
+
+                err = ngx_errno;
+                if (err != NO_ERROR) {
+                    ngx_log_error(NGX_LOG_ERR, file->log, err,
+                                  "SeekFilePointer() failed");
+                    return NGX_ERROR;
+                }
+            }
+        }
+
+        povlp = NULL;
+
+    } else {
+
+#endif
+
+        ovlp.Internal = 0;
+        ovlp.InternalHigh = 0;
+        ovlp.Offset = (DWORD) offset;
+        ovlp.OffsetHigh = (DWORD) (offset >> 32);
+        ovlp.hEvent = NULL;
+
+        povlp = &ovlp;
+
+#if (WIN9X)
+    }
+#endif
+
+    if (WriteFile(file->fd, buf, size, &n, povlp) == 0) {
         ngx_log_error(NGX_LOG_ERR, file->log, ngx_errno, "WriteFile() failed");
         return NGX_ERROR;
     }
@@ -63,12 +142,15 @@
 }
 
 
-/* TODO: log error */
-
 int ngx_file_append_mode(ngx_fd_t fd)
 {
-    if (SetFilePointer(fd, 0, NULL, FILE_END) == 0xFFFFFFFF) {
-        if (GetLastError() != NO_ERROR) {
+    ngx_err_t  err;
+
+    if (SetFilePointer(fd, 0, NULL, FILE_END) == INVALID_SET_FILE_POINTER) {
+        err = ngx_errno;
+        if (err != NO_ERROR) {
+            ngx_log_error(NGX_LOG_ERR, file->log, err,
+                          "SeekFilePointer() failed");
             return NGX_ERROR;
         }
     }
diff --git a/src/os/win32/ngx_files.h b/src/os/win32/ngx_files.h
index 8e739e9..8e386e8 100644
--- a/src/os/win32/ngx_files.h
+++ b/src/os/win32/ngx_files.h
@@ -6,11 +6,17 @@
 #include <ngx_core.h>
 
 
-/* INVALID_FILE_ATTRIBUTES specified but not defined at least in MSVC6SP2 */
+/* INVALID_FILE_ATTRIBUTES is specified but not defined at least in MSVC6SP2 */
 #ifndef INVALID_FILE_ATTRIBUTES
-#define INVALID_FILE_ATTRIBUTES     0xFFFFFFFF
+#define INVALID_FILE_ATTRIBUTES     0xffffffff
 #endif
 
+/* INVALID_SET_FILE_POINTER is not defined at least in MSVC6SP2 */
+#ifndef INVALID_SET_FILE_POINTER
+#define INVALID_SET_FILE_POINTER    0xffffffff
+#endif
+
+
 #define NGX_INVALID_FILE            INVALID_HANDLE_VALUE
 #define NGX_FILE_ERROR              0
 
diff --git a/src/core/ngx_os_init.h b/src/os/win32/ngx_os.h
similarity index 84%
rename from src/core/ngx_os_init.h
rename to src/os/win32/ngx_os.h
index e10a07d..96f1c2d 100644
--- a/src/core/ngx_os_init.h
+++ b/src/os/win32/ngx_os.h
@@ -1,11 +1,10 @@
-#ifndef _NGX_OS_INIT_H_INCLUDED_
-#define _NGX_OS_INIT_H_INCLUDED_
+ifndef _NGX_OS_H_INCLUDED_
+#define _NGX_OS_H_INCLUDED_
 
 
 #include <ngx_config.h>
 #include <ngx_core.h>
 
-
 #define NGX_IO_SENDFILE    1
 #define NGX_IO_ZEROCOPY    2
 
@@ -34,18 +33,17 @@
 
 int ngx_os_init(ngx_log_t *log);
 
-#if !(WIN32)
-int ngx_daemon(ngx_log_t *log);
-#endif
-
 
 extern ngx_os_io_t  ngx_os_io;
 extern int          ngx_max_sockets;
 extern int          ngx_inherited_nonblocking;
+extern int          ngx_win32_version;
 
 
 extern int          restart;
 extern int          rotate;
 
 
-#endif /* _NGX_OS_INIT_H_INCLUDED_ */
+
+#endif /* _NGX_OS_H_INCLUDED_ */
+
diff --git a/src/os/win32/ngx_win32_config.h b/src/os/win32/ngx_win32_config.h
index 9ec07cf..2316432 100644
--- a/src/os/win32/ngx_win32_config.h
+++ b/src/os/win32/ngx_win32_config.h
@@ -4,10 +4,7 @@
 
 #define WIN32       1
 
-/* STUB */
 #define NGX_WIN_NT  200000
-extern int  ngx_win32_version;
-/**/
 
 
 
