nginx-0.0.1-2003-11-11-21:13:43 import
diff --git a/src/os/unix/ngx_linux_config.h b/src/os/unix/ngx_linux_config.h
index 11dbfac..ca53a23 100644
--- a/src/os/unix/ngx_linux_config.h
+++ b/src/os/unix/ngx_linux_config.h
@@ -35,6 +35,7 @@
#define SIZE_FMT "%d"
#define SIZEX_FMT "%x"
#define PID_FMT "%d"
+#define TIME_FMT "%lu"
diff --git a/src/os/unix/ngx_solaris_config.h b/src/os/unix/ngx_solaris_config.h
index f94936d..21724f8 100644
--- a/src/os/unix/ngx_solaris_config.h
+++ b/src/os/unix/ngx_solaris_config.h
@@ -33,6 +33,7 @@
#define SIZE_FMT "%d"
#define SIZEX_FMT "%x"
#define PID_FMT "%ld"
+#define TIME_FMT "%lu"
#ifndef HAVE_SELECT
diff --git a/src/os/unix/ngx_time.c b/src/os/unix/ngx_time.c
index bf3432b..3703991 100644
--- a/src/os/unix/ngx_time.c
+++ b/src/os/unix/ngx_time.c
@@ -5,20 +5,22 @@
void ngx_localtime(ngx_tm_t *tm)
{
+#if (HAVE_LOCALTIME_R)
+
localtime_r(&ngx_cached_time, tm);
+#else
+ ngx_tm_t *t;
+
+ t = localtime(&ngx_cached_time);
+ *tm = *t;
+
+#endif
+
tm->ngx_tm_mon++;
tm->ngx_tm_year += 1900;
}
-u_int ngx_msec(void)
-{
- struct timeval tv;
-
- gettimeofday(&tv, NULL);
-
- return tv.tv_sec * 1000 + tv.tv_usec / 1000;
-}
#if 0
diff --git a/src/os/unix/ngx_time.h b/src/os/unix/ngx_time.h
index cdec417..9dc4aea 100644
--- a/src/os/unix/ngx_time.h
+++ b/src/os/unix/ngx_time.h
@@ -3,9 +3,13 @@
#include <ngx_config.h>
+#include <ngx_core.h>
+
+
+typedef uint64_t ngx_epoch_msec_t;
typedef u_int ngx_msec_t;
-#define NGX_MAX_MSEC (u_int) -1
+#define NGX_MAX_MSEC (ngx_msec_t) -1
typedef struct tm ngx_tm_t;
@@ -17,16 +21,14 @@
#define ngx_tm_year tm_year
#define ngx_tm_wday tm_wday
-#define ngx_msleep(ms) usleep(ms * 1000)
void ngx_localtime(ngx_tm_t *tm);
-ngx_msec_t ngx_msec(void);
+#define ngx_gettimeofday(tp) gettimeofday(tp, NULL);
+#define ngx_msleep(ms) usleep(ms * 1000)
-time_t ngx_time();
extern time_t ngx_cached_time;
-
#endif /* _NGX_TIME_H_INCLUDED_ */
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_ */