summaryrefslogtreecommitdiff
path: root/innobase/ut/ut0ut.c
diff options
context:
space:
mode:
Diffstat (limited to 'innobase/ut/ut0ut.c')
-rw-r--r--innobase/ut/ut0ut.c30
1 files changed, 16 insertions, 14 deletions
diff --git a/innobase/ut/ut0ut.c b/innobase/ut/ut0ut.c
index cae0c3819f3..07ee3d2b6fe 100644
--- a/innobase/ut/ut0ut.c
+++ b/innobase/ut/ut0ut.c
@@ -57,25 +57,26 @@ ut_print_timestamp(
/*===============*/
FILE* file) /* in: file where to print */
{
- struct tm* cal_tm_ptr;
- struct tm cal_tm;
- time_t tm;
+#ifdef __WIN__
+ SYSTEMTIME cal_tm;
- try_again:
- time(&tm);
+ GetLocalTime(&cal_tm);
- cal_tm_ptr = localtime(&tm);
-
- memcpy(&cal_tm, cal_tm_ptr, sizeof(struct tm));
+ fprintf(file,"%02d%02d%02d %2d:%02d:%02d",
+ (int)cal_tm.wYear % 100,
+ (int)cal_tm.wMonth,
+ (int)cal_tm.wDay,
+ (int)cal_tm.wHour,
+ (int)cal_tm.wMinute,
+ (int)cal_tm.wSecond);
+#else
- /* In theory localtime may return a wrong result because its return
- struct is not protected with a mutex */
+ struct tm cal_tm;
+ time_t tm;
- if (difftime(tm, mktime(&cal_tm)) > 0.5
- || difftime(tm, mktime(&cal_tm)) < -0.5) {
+ time(&tm);
- goto try_again;
- }
+ localtime_r(&tm, &cal_tm);
fprintf(file,"%02d%02d%02d %2d:%02d:%02d",
cal_tm.tm_year % 100,
@@ -84,6 +85,7 @@ ut_print_timestamp(
cal_tm.tm_hour,
cal_tm.tm_min,
cal_tm.tm_sec);
+#endif
}
/*****************************************************************