diff options
author | Guido van Rossum <guido@python.org> | 2000-04-26 20:40:13 (GMT) |
---|---|---|
committer | Guido van Rossum <guido@python.org> | 2000-04-26 20:40:13 (GMT) |
commit | c410e929741252d3cfca848fcc0df616c0f225ef (patch) | |
tree | 8fa830f2de2686251b689b45e683ae6b9ef7d49c | |
parent | 9e392e2412308c7923195f226510bb1f174be215 (diff) | |
download | cpython-c410e929741252d3cfca848fcc0df616c0f225ef.zip cpython-c410e929741252d3cfca848fcc0df616c0f225ef.tar.gz cpython-c410e929741252d3cfca848fcc0df616c0f225ef.tar.bz2 |
Jack Jansen:
This patch is a workaround for Macintosh, where the GUSI I/O library
(time, stat, etc) use the MacOS epoch of 1-Jan-1904 and the MSL C
library (ctime, localtime, etc) uses the (apparently ANSI standard)
epoch of 1-Jan-1900. Python programs see the MacOS epoch and we
convert values when needed.
-rw-r--r-- | Modules/timemodule.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/Modules/timemodule.c b/Modules/timemodule.c index b01366a..7d53179 100644 --- a/Modules/timemodule.c +++ b/Modules/timemodule.c @@ -41,6 +41,14 @@ PERFORMANCE OF THIS SOFTWARE. #ifdef macintosh #include <time.h> +#include <OSUtils.h> +#ifdef USE_GUSI2 +/* GUSI, the I/O library which has the time() function and such uses the +** Mac epoch of 1904. MSL, the C library which has localtime() and so uses +** the ANSI epoch of 1900. +*/ +#define GUSI_TO_MSL_EPOCH (4*365*24*60*60) +#endif /* USE_GUSI2 */ #else #include <sys/types.h> #endif @@ -271,6 +279,9 @@ time_convert(when, function) { struct tm *p; errno = 0; +#if defined(macintosh) && defined(USE_GUSI2) + when = when + GUSI_TO_MSL_EPOCH; +#endif p = function(&when); if (p == NULL) { #ifdef EINVAL @@ -480,6 +491,9 @@ time_ctime(self, args) if (!PyArg_Parse(args, "d", &dt)) return NULL; tt = (time_t)dt; +#if defined(macintosh) && defined(USE_GUSI2) + tt = tt + GUSI_TO_MSL_EPOCH; +#endif p = ctime(&tt); if (p == NULL) { PyErr_SetString(PyExc_ValueError, "unconvertible time"); @@ -517,6 +531,9 @@ time_mktime(self, args) "mktime argument out of range"); return NULL; } +#if defined(macintosh) && defined(USE_GUSI2) + tt = tt - GUSI_TO_MSL_EPOCH; +#endif return PyFloat_FromDouble((double)tt); } |