functions: ``close()``, ``getpagesize()``, ``getpid()`` and ``sysconf()``.
(Contributed by Victor Stinner in :gh:`108765`.)
+* ``Python.h`` no longer includes these standard header files: ``<time.h>``,
+ ``<sys/select.h>`` and ``<sys/time.h>``. If needed, they should now be
+ included explicitly. For example, ``<time.h>`` provides the ``clock()`` and
+ ``gmtime()`` functions, ``<sys/select.h>`` provides the ``select()``
+ function, and ``<sys/time.h>`` provides the ``futimes()``, ``gettimeofday()``
+ and ``setitimer()`` functions.
+ (Contributed by Victor Stinner in :gh:`108765`.)
+
Deprecated
----------
# define Py_MEMCPY memcpy
#endif
-/********************************************
- * WRAPPER FOR <time.h> and/or <sys/time.h> *
- ********************************************/
-
-#ifdef HAVE_SYS_TIME_H
-#include <sys/time.h>
-#endif
-#include <time.h>
-
-/******************************
- * WRAPPER FOR <sys/select.h> *
- ******************************/
-
-/* NB caller must include <sys/types.h> */
-
-#ifdef HAVE_SYS_SELECT_H
-#include <sys/select.h>
-#endif /* !HAVE_SYS_SELECT_H */
-
/*******************************
* stat() and fstat() fiddling *
*******************************/
--- /dev/null
+``Python.h`` no longer includes these standard header files: ``<time.h>``,
+``<sys/select.h>`` and ``<sys/time.h>``. If needed, they should now be included
+explicitly. For example, ``<time.h>`` provides the ``clock()`` and ``gmtime()``
+functions, ``<sys/select.h>`` provides the ``select()`` function, and
+``<sys/time.h>`` provides the ``futimes()``, ``gettimeofday()`` and
+``setitimer()`` functions. Patch by Victor Stinner.
#include "multiprocessing.h"
+#ifdef HAVE_SYS_TIME_H
+# include <sys/time.h> // gettimeofday()
+#endif
+
#ifdef HAVE_MP_SEMAPHORE
enum { RECURSIVE_MUTEX, SEMAPHORE };
#include <stdio.h> // ctermid()
#include <stdlib.h> // system()
+#ifdef HAVE_SYS_TIME_H
+# include <sys/time.h> // futimes()
+#endif
+
// SGI apparently needs this forward declaration
#ifdef HAVE__GETPTY
#include "Python.h"
#include "pycore_pylifecycle.h" // _Py_SetLocaleFromEnv()
-#include <errno.h>
-#include <signal.h>
-#include <stddef.h>
+#include <errno.h> // errno
+#include <signal.h> // SIGWINCH
#include <stdlib.h> // free()
-#ifdef HAVE_SYS_TIME_H
-#include <sys/time.h>
+#include <string.h> // strdup()
+#ifdef HAVE_SYS_SELECT_H
+# include <sys/select.h> // select()
#endif
-#include <time.h>
#if defined(HAVE_SETLOCALE)
/* GNU readline() mistakenly sets the LC_CTYPE locale.
* We must save and restore the locale around the rl_initialize() call.
*/
#define SAVE_LOCALE
-#include <locale.h>
+# include <locale.h> // setlocale()
#endif
#ifdef SAVE_LOCALE
int has_input = 0, err = 0;
while (!has_input)
- { struct timeval timeout = {0, 100000}; /* 0.1 seconds */
+ {
+ struct timeval timeout = {0, 100000}; // 100 ms (0.1 seconds)
/* [Bug #1552726] Only limit the pause if an input hook has been
defined. */
#include <errno.h> // errno
#include <string.h>
#include <sys/resource.h> // getrusage()
-#ifdef HAVE_SYS_TIME_H
-# include <sys/time.h>
-#endif
-#include <time.h>
#include <unistd.h> // getpagesize()
/* On some systems, these aren't in any header file.
#include "pycore_signal.h" // _Py_RestoreSignals()
#ifndef MS_WINDOWS
-# include "posixmodule.h"
+# include "posixmodule.h" // _PyLong_FromUid()
#endif
#ifdef MS_WINDOWS
-# include "socketmodule.h" /* needed for SOCKET_T */
+# include "socketmodule.h" // SOCKET_T
#endif
#ifdef MS_WINDOWS
#endif
#ifdef HAVE_SIGNAL_H
-# include <signal.h>
+# include <signal.h> // sigaction()
#endif
#ifdef HAVE_SYS_SYSCALL_H
-# include <sys/syscall.h>
+# include <sys/syscall.h> // __NR_pidfd_send_signal
#endif
#ifdef HAVE_SYS_STAT_H
# include <sys/stat.h>
#endif
#ifdef HAVE_SYS_TIME_H
-# include <sys/time.h>
+# include <sys/time.h> // setitimer()
#endif
#if defined(HAVE_PTHREAD_SIGMASK) && !defined(HAVE_BROKEN_PTHREAD_SIGMASK)
#include "pycore_runtime.h" // _Py_ID()
#include <ctype.h>
-
+#include <time.h> // clock()
#ifdef HAVE_SYS_TIMES_H
# include <sys/times.h>
#endif
#include "Python.h"
+
#include <stddef.h> // offsetof()
+#include <time.h> // clock()
PyDoc_STRVAR(xxsubtype__doc__,
#include "Python.h"
#include "pycore_time.h" // _PyTime_t
+
+#include <time.h> // gmtime_r()
+#ifdef HAVE_SYS_TIME_H
+# include <sys/time.h> // gettimeofday()
+#endif
#ifdef MS_WINDOWS
# include <winsock2.h> // struct timeval
#endif