Commit 0703dba1 authored by heikki@donna.mysql.fi's avatar heikki@donna.mysql.fi
Browse files

ut0ut.c Rewrote ut_print_timestamp with localtime_r and in Win GetLocalTime

parent 125b4bd6
Loading
Loading
Loading
Loading
+16 −14
Original line number Diff line number Diff line
@@ -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
}

/*****************************************************************