From 77950821de1b9739a3a1023bf932e1bd7ba7ce0b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Duval?= Date: Mon, 22 Nov 2004 00:35:22 +0000 Subject: [PATCH] added new fields to the real_time_date replacement struct timezone_offset is used to have a GMT real_time_clock() initial set_timezone implementation (still not working) git-svn-id: file:///srv/svn/repos/haiku/trunk/current@10134 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/kernel/libroot/os/time.c | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/src/kernel/libroot/os/time.c b/src/kernel/libroot/os/time.c index 8fd8b28a8a..eb2d4b79ba 100644 --- a/src/kernel/libroot/os/time.c +++ b/src/kernel/libroot/os/time.c @@ -16,7 +16,9 @@ static struct real_time_data sRealTimeDefaults = { 0, - 100000 + 100000, + 0, + 0 }; static struct real_time_data *sRealTimeData; @@ -41,14 +43,16 @@ __init_time(void) uint32 real_time_clock(void) { - return (sRealTimeData->boot_time + system_time()) / 1000000; + return (sRealTimeData->boot_time + system_time() + + sRealTimeData->timezone_offset) / 1000000; } bigtime_t real_time_clock_usecs(void) { - return sRealTimeData->boot_time + system_time(); + return sRealTimeData->boot_time + system_time() + + sRealTimeData->timezone_offset; } @@ -63,7 +67,17 @@ status_t set_timezone(char *timezone) { // ToDo: set_timezone() - return B_ERROR; + status_t err; + struct tm *tm; + time_t t; + + time(&t); + tm = localtime(&t); + + if ((err = _kern_set_tzspecs(tm->tm_gmtoff, tm->tm_isdst))