[Redbutton-devel] SF.net SVN: redbutton: [313] redbutton-browser/trunk/ResidentProgramClass.c
Brought to you by:
skilvington
|
From: <ski...@us...> - 2007-05-23 16:09:27
|
Revision: 313
http://svn.sourceforge.net/redbutton/?rev=313&view=rev
Author: skilvington
Date: 2007-05-23 09:09:25 -0700 (Wed, 23 May 2007)
Log Message:
-----------
GCD returns local time, FDa is passed local time
Modified Paths:
--------------
redbutton-browser/trunk/ResidentProgramClass.c
Modified: redbutton-browser/trunk/ResidentProgramClass.c
===================================================================
--- redbutton-browser/trunk/ResidentProgramClass.c 2007-05-23 12:12:49 UTC (rev 312)
+++ redbutton-browser/trunk/ResidentProgramClass.c 2007-05-23 16:09:25 UTC (rev 313)
@@ -369,7 +369,9 @@
GenericInteger *time_par;
unsigned int mheg_date;
unsigned int mheg_time;
- time_t now;
+ unsigned int unix_time;
+ struct timeval now;
+ struct timezone zone;
if(!check_parameters(params, 2, Parameter_new_generic_integer, /* out: date */
Parameter_new_generic_integer)) /* out: time */
@@ -381,14 +383,17 @@
date_par = &(get_parameter(params, 1)->u.new_generic_integer);
time_par = &(get_parameter(params, 2)->u.new_generic_integer);
+ /* need to return local time, so take timezone into account */
+ gettimeofday(&now, &zone);
+ unix_time = now.tv_sec - (zone.tz_minuteswest * 60);
+
/* number of days since 00:00:00 1/1/1970 */
- now = time(NULL);
- mheg_date = now / (60 * 60 * 24);
+ mheg_date = unix_time / (60 * 60 * 24);
/* number of days since 00:00:00 17/11/1858 */
mheg_date += MHEG_EPOCH_OFFSET;
/* number of seconds since 00:00:00 */
- mheg_time = now % (60 * 60 * 24);
+ mheg_time = unix_time % (60 * 60 * 24);
GenericInteger_setInteger(date_par, caller_gid, mheg_date);
GenericInteger_setInteger(time_par, caller_gid, mheg_time);
@@ -446,8 +451,12 @@
/* convert to UNIX time */
unix_time = ((mheg_date - MHEG_EPOCH_OFFSET) * (24 * 60 * 60)) + mheg_time;
- /* let libc do all the hard work of working out the year etc */
- tm = localtime(&unix_time);
+ /*
+ * let libc do all the hard work of working out the year etc
+ * we are passed a date/time as returned by GetCurrentDate, ie local time
+ * as GCD has already taken care of the timezone, use gmtime() not localtime() here
+ */
+ tm = gmtime(&unix_time);
/* write it out */
dateString.size = 0;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|