From: Pekka Riikonen Date: Thu, 31 May 2007 13:50:37 +0000 (+0000) Subject: Fixed UTC offset minutes to be actually minutes. X-Git-Tag: autodist.1.3.2~7 X-Git-Url: http://git.silcnet.org/gitweb/?p=silc.git;a=commitdiff_plain;h=b4a473c4f74cffeacb353429c26e9687396d6ac7 Fixed UTC offset minutes to be actually minutes. --- diff --git a/CHANGES b/CHANGES index 5b7d41ec..4620accc 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,8 @@ +Thu May 31 16:49:13 EEST 2007 Pekka Riikonen + + * Fixed UTC offset minutes to be actually minutes. Affected + file is lib/silcutil/silctime.c. + Thu May 31 09:40:56 EEST 2007 Pekka Riikonen * SILC Toolkit 1.1. diff --git a/lib/silcutil/silctime.c b/lib/silcutil/silctime.c index 3f3a2807..ea6258ae 100644 --- a/lib/silcutil/silctime.c +++ b/lib/silcutil/silctime.c @@ -108,6 +108,7 @@ SilcBool silc_time_value(SilcInt64 time_val, SilcTime ret_time) struct tm *t; unsigned int msec = 0; time_t timeval; + SilcInt32 ctz = 0; if (!ret_time) return TRUE; @@ -139,32 +140,24 @@ SilcBool silc_time_value(SilcInt64 time_val, SilcTime ret_time) #else #if defined(HAVE_TIMEZONE) ret_time->utc_east = timezone < 0 ? 1 : 0; + ctz = timezone; + if (ret_time->dst) + ctz -= 3600; #elif defined(HAVE_TM_GMTOFF) ret_time->utc_east = t->tm_gmtoff > 0 ? 1 : 0; + ctz = -t->tm_gmtoff; #elif defined(HAVE___TM_GMTOFF) ret_time->utc_east = t->__tm_gmtoff > 0 ? 1 : 0; + ctz = -t->__tm_gmtoff; #elif defined(HAVE___TM_GMTOFF__) ret_time->utc_east = t->__tm_gmtoff__ > 0 ? 1 : 0; + ctz = -t->__tm_gmtoff__; #endif /* HAVE_TIMEZONE */ -#if defined(HAVE_TIMEZONE) - ret_time->utc_hour = (ret_time->utc_east ? (-(timezone)) / 3600 : - timezone / 3600); - if (ret_time->dst) - ret_time->utc_hour++; - ret_time->utc_minute = (ret_time->utc_east ? (-(timezone)) % 3600 : - timezone % 3600); -#elif defined(HAVE_GMTIME) - t = gmtime(&timeval); - if (t) { - ret_time->utc_hour = (ret_time->utc_east - ? ret_time->hour - t->tm_hour - : ret_time->hour + t->tm_hour); - ret_time->utc_minute = (ret_time->utc_east - ? ret_time->minute - t->tm_min - : ret_time->minute + t->tm_min); - } -#endif /* HAVE_TIMEZONE */ + ret_time->utc_hour = (ret_time->utc_east ? (-(ctz)) / 3600 : ctz / 3600); + ret_time->utc_minute = (ret_time->utc_east ? (-(ctz)) % 3600 : ctz % 3600); + if (ret_time->utc_minute) + ret_time->utc_minute /= 60; #endif /* SILC_WIN32 */ return TRUE; diff --git a/lib/silcutil/tests/test_silctime.c b/lib/silcutil/tests/test_silctime.c index 0bbe2814..bcfa713e 100644 --- a/lib/silcutil/tests/test_silctime.c +++ b/lib/silcutil/tests/test_silctime.c @@ -22,6 +22,7 @@ int main(int argc, char **argv) SILC_LOG_DEBUG(("day : %d", curtime.day)); SILC_LOG_DEBUG(("hour : %d", curtime.hour)); SILC_LOG_DEBUG(("minute : %d", curtime.minute)); + SILC_LOG_DEBUG(("second : %d", curtime.second)); SILC_LOG_DEBUG(("msecond : %d", curtime.msecond)); SILC_LOG_DEBUG(("utc_hour : %d", curtime.utc_hour)); SILC_LOG_DEBUG(("utc_min : %d", curtime.utc_minute));