From 05c550e46b08c7718d0bc83d23000baade042451 Mon Sep 17 00:00:00 2001 From: zhengchao Date: Tue, 26 Feb 2019 19:45:31 +0600 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dlog=20master=20key=E7=9A=84?= =?UTF-8?q?=E6=B3=A8=E9=87=8A=E4=B8=AD=EF=BC=8C=E4=BD=BF=E7=94=A8MESA=20ha?= =?UTF-8?q?ndle=20logger=E4=BB=A3=E7=A0=81=E5=BC=95=E5=85=A5=E7=9A=84?= =?UTF-8?q?=E6=97=B6=E9=97=B4=E5=9B=BA=E5=AE=9A=E4=B8=BA=E4=B8=9C8?= =?UTF-8?q?=E5=8C=BA=E7=9A=84bug=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- common/src/tfe_utils.cpp | 42 +++++++--------------------------------- 1 file changed, 7 insertions(+), 35 deletions(-) diff --git a/common/src/tfe_utils.cpp b/common/src/tfe_utils.cpp index 10ff3ff..0497726 100644 --- a/common/src/tfe_utils.cpp +++ b/common/src/tfe_utils.cpp @@ -31,46 +31,18 @@ char* tfe_strdup(const char* s) } char *tfe_thread_safe_ctime(const time_t *tp, char *buf, int len) { - unsigned int year, month, day, weekday, hour, min, sec; - unsigned int year_days = 365; - unsigned int month_days[12] = - {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; + struct tm local_time; + time_t now; static unsigned char weekday_str[7][4] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"}; static unsigned char month_str[12][4] = {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" }; - sec = * tp; - min = sec / 60; sec = sec % 60; - hour = min / 60; min = min % 60; hour += 8; - day = hour / 24; hour = hour % 24; - weekday = day % 7; weekday = (weekday + 4) % 7; - - for(year = 1970; day >= year_days;) - { - day -= year_days; - year ++; - - if(0 == year % 4 && (0 != year % 100 || 0 == year % 400)) - year_days = 366; - else year_days = 365; - } - - if(366 == year_days) month_days[1] = 29; - - //bug fix by yw 20120808 - for(month = 0; day >= month_days[month];) - { - day -= month_days[month]; - month ++; - } - - /* - snprintf(buf, len, "%02d:%02d:%02d, %04d/%02d/%02d, %s", - hour, min, sec, year, month, day, weekday_str[week_day]); - */ - snprintf(buf, len, "%s %s %d %02d:%02d:%02d %d", weekday_str[weekday], - month_str[month], day + 1, hour, min, sec, year); + time(&now); + if(NULL == (localtime_r(&now, &local_time))) + return NULL; + len = snprintf(buf, len, "%s %s %d %02d:%02d:%02d %d", weekday_str[local_time.tm_wday], + month_str[local_time.tm_mon], local_time.tm_mday, local_time.tm_hour, local_time.tm_min, local_time.tm_sec, local_time.tm_year+1900); return buf; } //replacement of glibc scandir, to adapt dictator malloc wrap