mirror of
https://github.com/python/cpython.git
synced 2025-11-03 11:23:31 +00:00
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.
This commit is contained in:
parent
9e392e2412
commit
c410e92974
1 changed files with 17 additions and 0 deletions
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue