Issue #15413: os.times() had disappeared under Windows.

This commit is contained in:
Antoine Pitrou 2012-07-24 21:23:53 +02:00
parent 4c66896553
commit f3923e9dd7
2 changed files with 27 additions and 25 deletions

View File

@ -52,6 +52,8 @@ Core and Builtins
Library Library
------- -------
- Issue #15413: os.times() had disappeared under Windows.
- Issue #15402: An issue in the struct module that caused sys.getsizeof to - Issue #15402: An issue in the struct module that caused sys.getsizeof to
return incorrect results for struct.Struct instances has been fixed. return incorrect results for struct.Struct instances has been fixed.
Initial patch by Serhiy Storchaka. Initial patch by Serhiy Storchaka.

View File

@ -7453,8 +7453,11 @@ static PyStructSequence_Desc times_result_desc = {
static PyTypeObject TimesResultType; 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 * static PyObject *
build_times_result(double user, double system, 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\ times. The object behaves like a named tuple with these fields:\n\
(utime, stime, cutime, cstime, elapsed_time)"); (utime, stime, cutime, cstime, elapsed_time)");
#endif
#ifdef HAVE_TIMES
#if defined(PYCC_VACPP) && defined(PYOS_OS2) #if defined(PYCC_VACPP) && defined(PYOS_OS2)
static long static long
system_uptime(void) system_uptime(void)
@ -7520,26 +7519,6 @@ posix_times(PyObject *self, PyObject *noargs)
(double)0 /* t.tms_cstime / HZ */, (double)0 /* t.tms_cstime / HZ */,
(double)system_uptime() / 1000); (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) #elif defined(MS_WINDOWS)
static PyObject * static PyObject *
posix_times(PyObject *self, PyObject *noargs) posix_times(PyObject *self, PyObject *noargs)
@ -7562,8 +7541,29 @@ posix_times(PyObject *self, PyObject *noargs)
(double)0, (double)0,
(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
#endif /* HAVE_TIMES */
#ifdef HAVE_GETSID #ifdef HAVE_GETSID
PyDoc_STRVAR(posix_getsid__doc__, PyDoc_STRVAR(posix_getsid__doc__,