From 9309b3d8eb585610457530c51eeb4852d55d0d4a Mon Sep 17 00:00:00 2001 From: mar Date: Tue, 3 Sep 1991 17:03:15 +0000 Subject: [PATCH] handle timezone as well --- gen/moddiff.dc | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/gen/moddiff.dc b/gen/moddiff.dc index 6316be03..483a97da 100644 --- a/gen/moddiff.dc +++ b/gen/moddiff.dc @@ -62,8 +62,19 @@ Date2Sec(DS, UTime) char *DS; struct timeval *UTime; { + static int defzone = -1; int Day, Month, Year, Hour, Minute, Sec, Err, TotalDays, Iter; + if (defzone == -1) { + struct timeval tv; + struct tzp tz; + + if (gettimeofday(&tv, &tzp)) + defzone = 0; + else + defzone = tzp->tz_minuteswest; + } + #ifdef DEBUG printf("Date2Sec(\"%s\", %d.%d)\n", DS, UTime->tv_sec, UTime->tv_usec); #endif @@ -85,7 +96,7 @@ struct timeval *UTime; printf("Days after months & days: %d\n", TotalDays); #endif UTime->tv_sec = -((((24 * TotalDays) + 24 - Hour) * 60 - Minute) * 60 - - Sec); + Sec) + defzone; UTime->tv_usec = 0; return (0); } else { @@ -102,7 +113,8 @@ struct timeval *UTime; #ifdef DEBUG printf("Days after Days : %d\n", TotalDays); #endif - UTime->tv_sec = (((24 * TotalDays) + Hour) * 60 + Minute) * 60 + Sec; + UTime->tv_sec = (((24 * TotalDays) + Hour) * 60 + Minute) * 60 + + Sec + defzone; UTime->tv_usec = 0; return (0); } -- 2.45.2