From f3923e9dd7a49bc2bc8600b3e0bb147b70e2de28 Mon Sep 17 00:00:00 2001 From: Antoine Pitrou Date: Tue, 24 Jul 2012 21:23:53 +0200 Subject: [PATCH] Issue #15413: os.times() had disappeared under Windows. --- Misc/NEWS | 2 ++ Modules/posixmodule.c | 50 +++++++++++++++++++++---------------------- 2 files changed, 27 insertions(+), 25 deletions(-) diff --git a/Misc/NEWS b/Misc/NEWS index 7bf89f8a45..e9f04de229 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -52,6 +52,8 @@ Core and Builtins Library ------- +- Issue #15413: os.times() had disappeared under Windows. + - Issue #15402: An issue in the struct module that caused sys.getsizeof to return incorrect results for struct.Struct instances has been fixed. Initial patch by Serhiy Storchaka. diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c index b99a5fe01e..bbf9baf2c6 100644 --- a/Modules/posixmodule.c +++ b/Modules/posixmodule.c @@ -7453,8 +7453,11 @@ static PyStructSequence_Desc times_result_desc = { static PyTypeObject TimesResultType; +#ifdef MS_WINDOWS +#define HAVE_TIMES /* mandatory, for the method table */ +#endif -#if defined(HAVE_TIMES) || defined(MS_WINDOWS) +#ifdef HAVE_TIMES static PyObject * build_times_result(double user, double system, @@ -7492,10 +7495,6 @@ Return an object containing floating point numbers indicating process\n\ times. The object behaves like a named tuple with these fields:\n\ (utime, stime, cutime, cstime, elapsed_time)"); -#endif - - -#ifdef HAVE_TIMES #if defined(PYCC_VACPP) && defined(PYOS_OS2) static long system_uptime(void) @@ -7520,26 +7519,6 @@ posix_times(PyObject *self, PyObject *noargs) (double)0 /* t.tms_cstime / HZ */, (double)system_uptime() / 1000); } -#else /* not OS2 */ -#define NEED_TICKS_PER_SECOND -static long ticks_per_second = -1; -static PyObject * -posix_times(PyObject *self, PyObject *noargs) -{ - struct tms t; - clock_t c; - errno = 0; - c = times(&t); - if (c == (clock_t) -1) - return posix_error(); - return build_times_result( - (double)t.tms_utime / ticks_per_second, - (double)t.tms_stime / ticks_per_second, - (double)t.tms_cutime / ticks_per_second, - (double)t.tms_cstime / ticks_per_second, - (double)c / ticks_per_second); -} -#endif /* not OS2 */ #elif defined(MS_WINDOWS) static PyObject * posix_times(PyObject *self, PyObject *noargs) @@ -7562,8 +7541,29 @@ posix_times(PyObject *self, PyObject *noargs) (double)0, (double)0); } +#else /* Neither Windows nor OS/2 */ +#define NEED_TICKS_PER_SECOND +static long ticks_per_second = -1; +static PyObject * +posix_times(PyObject *self, PyObject *noargs) +{ + struct tms t; + clock_t c; + errno = 0; + c = times(&t); + if (c == (clock_t) -1) + return posix_error(); + return build_times_result( + (double)t.tms_utime / ticks_per_second, + (double)t.tms_stime / ticks_per_second, + (double)t.tms_cutime / ticks_per_second, + (double)t.tms_cstime / ticks_per_second, + (double)c / ticks_per_second); +} #endif +#endif /* HAVE_TIMES */ + #ifdef HAVE_GETSID PyDoc_STRVAR(posix_getsid__doc__, -- 2.40.0