timezone support for macintosh (Jack)

This commit is contained in:
Guido van Rossum 1997-10-08 15:27:56 +00:00
parent 5bd919b6d7
commit e6a4b7bf3e
1 changed files with 36 additions and 0 deletions

View File

@ -89,6 +89,37 @@ extern int ftime();
static int floatsleep Py_PROTO((double));
static double floattime Py_PROTO(());
#ifdef macintosh
/* Our own timezone. We have enough information to deduce whether
** DST is on currently, but unfortunately we cannot put it to good
** use because we don't know the rules (and that is needed to have
** localtime() return correct tm_isdst values for times other than
** the current time. So, we cop out and only tell the user the current
** timezone.
*/
static long timezone;
static void
initmactimezone()
{
MachineLocation loc;
long delta;
ReadLocation(&loc);
if (loc.latitude == 0 && loc.longitude == 0 && loc.u.gmtDelta == 0)
return;
delta = loc.u.gmtDelta & 0x00FFFFFF;
if (delta & 0x00800000)
delta |= 0xFF000000;
timezone = -delta;
}
#endif /* macintosh */
static PyObject *
time_time(self, args)
PyObject *self;
@ -430,6 +461,11 @@ inittime()
ins(d, "tzname",
Py_BuildValue("(zz)", wintername, summername));
}
#else
#ifdef macintosh
initmactimezone();
ins(d, "timezone", PyInt_FromLong(timezone));
#endif /* macintosh */
#endif /* HAVE_TM_ZONE */
#endif /* !HAVE_TZNAME */
if (PyErr_Occurred())