From e6a4b7bf3eaf299ec8765b4bec74bf4c7f4db60f Mon Sep 17 00:00:00 2001 From: Guido van Rossum Date: Wed, 8 Oct 1997 15:27:56 +0000 Subject: [PATCH] timezone support for macintosh (Jack) --- Modules/timemodule.c | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/Modules/timemodule.c b/Modules/timemodule.c index 9a8fb8b5b55..8b125083a83 100644 --- a/Modules/timemodule.c +++ b/Modules/timemodule.c @@ -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())