bpo-31904: Port the time module on VxWorks (GH-12305) · python/cpython@f1464f4

@@ -145,7 +145,7 @@ perf_counter(_Py_clock_info_t *info)

145145

return _PyFloat_FromPyTime(t);

146146

}

147147148-

#if defined(MS_WINDOWS) || defined(HAVE_CLOCK)

148+

#if (defined(MS_WINDOWS) || defined(HAVE_CLOCK)) && !defined(__VXWORKS__)

149149

#define PYCLOCK

150150

static PyObject*

151151

pyclock(_Py_clock_info_t *info)

@@ -765,7 +765,7 @@ time_strftime(PyObject *self, PyObject *args)

765765

return NULL;

766766

}

767767768-

#if defined(_MSC_VER) || (defined(__sun) && defined(__SVR4)) || defined(_AIX)

768+

#if defined(_MSC_VER) || (defined(__sun) && defined(__SVR4)) || defined(_AIX) || defined(__VXWORKS__)

769769

if (buf.tm_year + 1900 < 1 || 9999 < buf.tm_year + 1900) {

770770

PyErr_SetString(PyExc_ValueError,

771771

"strftime() requires year in [1; 9999]");

@@ -1001,18 +1001,21 @@ time_mktime(PyObject *self, PyObject *tm_tuple)

10011001

return NULL;

10021002

}

100310031004-

#ifdef _AIX

1004+

#if defined(_AIX) || (defined(__VXWORKS__) && !defined(_WRS_CONFIG_LP64))

10051005

/* bpo-19748: AIX mktime() valid range is 00:00:00 UTC, January 1, 1970

10061006

to 03:14:07 UTC, January 19, 2038. Thanks to the workaround below,

10071007

it is possible to support years in range [1902; 2037] */

10081008

if (tm.tm_year < 2 || tm.tm_year > 137) {

10091009

/* bpo-19748: On AIX, mktime() does not report overflow error

1010-

for timestamp < -2^31 or timestamp > 2**31-1. */

1010+

for timestamp < -2^31 or timestamp > 2**31-1. VxWorks has the

1011+

same issue when working in 32 bit mode. */

10111012

PyErr_SetString(PyExc_OverflowError,

10121013

"mktime argument out of range");

10131014

return NULL;

10141015

}

1016+

#endif

101510171018+

#ifdef _AIX

10161019

/* bpo-34373: AIX mktime() has an integer overflow for years in range

10171020

[1902; 1969]. Workaround the issue by using a year greater or equal than

10181021

1970 (tm_year >= 70): mktime() behaves correctly in that case