X-Git-Url: http://git.silcnet.org/gitweb/?a=blobdiff_plain;f=lib%2Fsilcutil%2Fsilctime.c;h=4444e4e8a5cb2e7074d1a8c02b19b7c35a97d3fa;hb=4dc3f89eed4c7e716873df2daf65fb8bd2bcc314;hp=7619f99e63ed3042006e0a3177a6cf33c47e2c58;hpb=b9fde2a2a32801d3eecba020927c94cb4838de72;p=silc.git diff --git a/lib/silcutil/silctime.c b/lib/silcutil/silctime.c index 7619f99e..4444e4e8 100644 --- a/lib/silcutil/silctime.c +++ b/lib/silcutil/silctime.c @@ -114,13 +114,12 @@ SilcBool silc_time_value(SilcInt64 time_val, SilcTime ret_time) if (!time_val) time_val = silc_time_msec(); - msec = time_val % 1000; - time_val /= 1000; + msec = (SilcUInt64)time_val % (SilcUInt64)1000; + timeval = (time_t)((SilcUInt64)time_val / (SilcUInt64)1000); time = localtime(&timeval); if (!time) return FALSE; - time_val = timeval; memset(ret_time, 0, sizeof(*ret_time)); if (!silc_time_fill(ret_time, time->tm_year + 1900, time->tm_mon + 1, @@ -148,6 +147,31 @@ SilcBool silc_time_value(SilcInt64 time_val, SilcTime ret_time) return TRUE; } +/* Returns timezone */ + +SilcBool silc_timezone(char *timezone, SilcUInt32 timezone_size) +{ + SilcTimeStruct curtime; + + if (timezone_size < 6) + return FALSE; + + if (!silc_time_value(0, &curtime)) + return FALSE; + + if (!curtime.utc_hour && curtime.utc_minute) + silc_snprintf(timezone, timezone_size, "Z"); + else if (curtime.utc_minute) + silc_snprintf(timezone, timezone_size, "%c%02d:%02d", + curtime.utc_east ? '+' : '-', curtime.utc_hour, + curtime.utc_minute); + else + silc_snprintf(timezone, timezone_size, "%c%02d", + curtime.utc_east ? '+' : '-', curtime.utc_hour); + + return TRUE; +} + /* Returns time from universal time string into SilcTime */ SilcBool silc_time_universal(const char *universal_time, SilcTime ret_time)