summaryrefslogtreecommitdiff
path: root/evutil_time.c
diff options
context:
space:
mode:
authoryuangongji <82787816@qq.com>2019-09-19 15:24:51 +0800
committeryuangongji <82787816@qq.com>2019-09-19 15:52:49 +0800
commit148d12ad31b03a813f4ffd9df14a85392aa74130 (patch)
treedb42a0108c1edaa86a3a846313afa6af241e5090 /evutil_time.c
parent0cd536b0b33d2aa59cee3805846f81cf4e4a5ce9 (diff)
downloadlibevent-148d12ad31b03a813f4ffd9df14a85392aa74130.tar.gz
evutil_time: detect and use _gmtime64_s()/_gmtime64()
Diffstat (limited to 'evutil_time.c')
-rw-r--r--evutil_time.c20
1 files changed, 15 insertions, 5 deletions
diff --git a/evutil_time.c b/evutil_time.c
index c3a23589..c576463b 100644
--- a/evutil_time.c
+++ b/evutil_time.c
@@ -158,18 +158,28 @@ evutil_date_rfc1123(char *date, const size_t datelen, const struct tm *tm)
time_t t = time(NULL);
-#ifndef _WIN32
+#if defined(EVENT__HAVE__GMTIME64_S) || !defined(_WIN32)
struct tm sys;
#endif
/* If `tm` is null, set system's current time. */
if (tm == NULL) {
-#ifdef _WIN32
- /** TODO: detect _gmtime64()/_gmtime64_s() */
- tm = gmtime(&t);
-#else
+#if !defined(_WIN32)
gmtime_r(&t, &sys);
tm = &sys;
+ /** detect _gmtime64()/_gmtime64_s() */
+#elif defined(EVENT__HAVE__GMTIME64_S)
+ errno_t err;
+ err = _gmtime64_s(&sys, &t);
+ if (err) {
+ event_errx(1, "Invalid argument to _gmtime64_s");
+ } else {
+ tm = &sys;
+ }
+#elif defined(EVENT__HAVE__GMTIME64)
+ tm = _gmtime64(&t);
+#else
+ tm = gmtime(&t);
#endif
}