nginx-0.0.1-2003-11-11-21:13:43 import
diff --git a/src/os/win32/ngx_files.h b/src/os/win32/ngx_files.h
index a29e333..0565eaf 100644
--- a/src/os/win32/ngx_files.h
+++ b/src/os/win32/ngx_files.h
@@ -69,8 +69,8 @@
 
 #define ngx_file_uniq(fi)   (*(ngx_file_uniq_t *) &fi.nFileIndexHigh)
 
-/* There are 134774 days between 1 Jan 1970 and 1 Jan 1601,
-   11644473600 seconds or 11644473600,000,000,0 100-nanosecond intervals */
+
+/* 116444736000000000 is commented in src/os/win32/ngx_time.c */
 
 #define ngx_file_mtime(fi)                                                  \
    (time_t) (((((unsigned __int64) fi.ftLastWriteTime.dwHighDateTime << 32) \
diff --git a/src/os/win32/ngx_time.c b/src/os/win32/ngx_time.c
new file mode 100644
index 0000000..8497c53
--- /dev/null
+++ b/src/os/win32/ngx_time.c
@@ -0,0 +1,29 @@
+
+#include <ngx_config.h>
+#include <ngx_core.h>
+
+
+void ngx_gettimeofday(struct timeval *tp)
+{
+    uint64_t  intervals;
+    FILETIME  ft;
+
+    GetSystemTimeAsFileTime(&ft);
+
+    /*
+     * A file time is a 64-bit value that represents the number
+     * of 100-nanosecond intervals that have elapsed since
+     * 12:00 A.M. January 1, 1601 (UTC).
+     *
+     * Between January 1, 1970 (Epoch) and January 1, 1601 there are
+     * 134744 days,
+     * 11644473600 seconds or
+     * 11644473600,000,000,0 100-nanosecond intervals.
+     */
+
+    intervals = ((uint64_t) ft.dwHighDateTime << 32) | ft.dwLowDateTime;
+    intervals -= 116444736000000000;
+
+    tp->tv_sec = intervals / 10000000;
+    tp->tv_usec = (intervals % 10000000) / 10;
+}
diff --git a/src/os/win32/ngx_time.h b/src/os/win32/ngx_time.h
index 4cd84e5..36f8918 100644
--- a/src/os/win32/ngx_time.h
+++ b/src/os/win32/ngx_time.h
@@ -6,8 +6,10 @@
 #include <ngx_core.h>
 
 
-typedef unsigned int   ngx_msec_t;
-#define NGX_MAX_MSEC   ~0
+typedef uint64_t       ngx_epoch_msec_t;
+
+typedef u_int          ngx_msec_t;
+#define NGX_MAX_MSEC   (ngx_msec_t) -1
 
 
 typedef SYSTEMTIME     ngx_tm_t;
@@ -23,10 +25,16 @@
 
 #define ngx_msleep     Sleep
 #define ngx_localtime  GetLocalTime
-#define ngx_msec       GetTickCount
 
-/* STUB */
-#define ngx_time()     time(NULL)
+
+struct timeval {
+    long   tv_sec;
+    long   tv_usec;
+};
+
+
+void ngx_gettimeofday(struct timeval *tp);
+
 
 
 #endif /* _NGX_TIME_H_INCLUDED_ */