bpo-31904: Port the time module on VxWorks (GH-12305) · python/cpython@f1464f4
@@ -145,7 +145,7 @@ perf_counter(_Py_clock_info_t *info)
145145return _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
150150static PyObject*
151151pyclock(_Py_clock_info_t *info)
@@ -765,7 +765,7 @@ time_strftime(PyObject *self, PyObject *args)
765765return 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__)
769769if (buf.tm_year + 1900 < 1 || 9999 < buf.tm_year + 1900) {
770770PyErr_SetString(PyExc_ValueError,
771771"strftime() requires year in [1; 9999]");
@@ -1001,18 +1001,21 @@ time_mktime(PyObject *self, PyObject *tm_tuple)
10011001return 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] */
10081008if (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. */
10111012PyErr_SetString(PyExc_OverflowError,
10121013"mktime argument out of range");
10131014return 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