From ce6a69112615d1092002237a246cacd94cc6f902 Mon Sep 17 00:00:00 2001 From: Ron Koenderink Date: Thu, 26 Jul 2007 01:59:32 +0000 Subject: [PATCH] (fmttime2822): Changed return type for strftime() to size_t. (fmttime2822) [_WIN32]: %T is not support option for strftime in WIN32 replaced with %H:%M:%S. Replaced %z in with +/-???? format for WIN32 as the default for WIN32 is the text description for timezone. --- src/lib/subs/show.c | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/src/lib/subs/show.c b/src/lib/subs/show.c index 5de8127b..c243baa4 100644 --- a/src/lib/subs/show.c +++ b/src/lib/subs/show.c @@ -37,6 +37,10 @@ #include +#if defined(_WIN32) +#include +#endif + #include #include "file.h" #include "game.h" @@ -715,9 +719,33 @@ static char * fmttime2822(time_t t) { static char buf[32]; - int n = strftime(buf, sizeof(buf), "%a, %d %b %Y %T %z", +#if defined(_WIN32) + size_t n; + int nn; + TIME_ZONE_INFORMATION tzi; + long time_offset; + struct tm time; + + localtime_s(&time, &t); + + n = strftime(buf, sizeof(buf), "%a, %d %b %Y %H:%M:%S", &time); + if (CANT_HAPPEN(n == 0)) { + buf[0] = 0; + return buf; + } + GetTimeZoneInformation(&tzi); + time_offset = -(tzi.Bias + + (time.tm_isdst ? tzi.DaylightBias : tzi.StandardBias)); + + nn = _snprintf_s(buf + n, sizeof(buf) - n, sizeof(buf) - n -1, + " %+03d%02d", time_offset/60, abs(time_offset) % 60); + if (CANT_HAPPEN(nn <= 0)) + buf[0] = 0; +#else + size_t int n = strftime(buf, sizeof(buf), "%a, %d %b %Y %T %z", localtime(&t)); if (CANT_HAPPEN(n == 0)) buf[0] = 0; +#endif return buf; }