summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Doc/whatsnew/3.13.rst8
-rw-r--r--Include/pyport.h19
-rw-r--r--Misc/NEWS.d/next/C API/2023-09-01-18-42-31.gh-issue-108765.IyYNDu.rst6
-rw-r--r--Modules/_multiprocessing/semaphore.c4
-rw-r--r--Modules/posixmodule.c4
-rw-r--r--Modules/readline.c16
-rw-r--r--Modules/resource.c4
-rw-r--r--Modules/signalmodule.c10
-rw-r--r--Modules/timemodule.c2
-rw-r--r--Modules/xxsubtype.c2
-rw-r--r--Python/pytime.c5
11 files changed, 43 insertions, 37 deletions
diff --git a/Doc/whatsnew/3.13.rst b/Doc/whatsnew/3.13.rst
index 401de11..1c91a1d 100644
--- a/Doc/whatsnew/3.13.rst
+++ b/Doc/whatsnew/3.13.rst
@@ -934,6 +934,14 @@ Porting to Python 3.13
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
----------
diff --git a/Include/pyport.h b/Include/pyport.h
index f2046de..c4168d1 100644
--- a/Include/pyport.h
+++ b/Include/pyport.h
@@ -184,25 +184,6 @@ typedef Py_ssize_t Py_ssize_clean_t;
# 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 *
*******************************/
diff --git a/Misc/NEWS.d/next/C API/2023-09-01-18-42-31.gh-issue-108765.IyYNDu.rst b/Misc/NEWS.d/next/C API/2023-09-01-18-42-31.gh-issue-108765.IyYNDu.rst
new file mode 100644
index 0000000..7b33481
--- /dev/null
+++ b/Misc/NEWS.d/next/C API/2023-09-01-18-42-31.gh-issue-108765.IyYNDu.rst
@@ -0,0 +1,6 @@
+``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.
diff --git a/Modules/_multiprocessing/semaphore.c b/Modules/_multiprocessing/semaphore.c
index d22b8d1..f8f2afd 100644
--- a/Modules/_multiprocessing/semaphore.c
+++ b/Modules/_multiprocessing/semaphore.c
@@ -9,6 +9,10 @@
#include "multiprocessing.h"
+#ifdef HAVE_SYS_TIME_H
+# include <sys/time.h> // gettimeofday()
+#endif
+
#ifdef HAVE_MP_SEMAPHORE
enum { RECURSIVE_MUTEX, SEMAPHORE };
diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c
index 6e829b2..b4c502b 100644
--- a/Modules/posixmodule.c
+++ b/Modules/posixmodule.c
@@ -57,6 +57,10 @@
#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
diff --git a/Modules/readline.c b/Modules/readline.c
index 2531b23..aeae654 100644
--- a/Modules/readline.c
+++ b/Modules/readline.c
@@ -12,14 +12,13 @@
#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.
@@ -27,7 +26,7 @@
* 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
@@ -1333,7 +1332,8 @@ readline_until_enter_or_signal(const char *prompt, int *signal)
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. */
diff --git a/Modules/resource.c b/Modules/resource.c
index f5d9972..9e302a3 100644
--- a/Modules/resource.c
+++ b/Modules/resource.c
@@ -2,10 +2,6 @@
#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.
diff --git a/Modules/signalmodule.c b/Modules/signalmodule.c
index 3adb2e8..8d65567 100644
--- a/Modules/signalmodule.c
+++ b/Modules/signalmodule.c
@@ -16,10 +16,10 @@
#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
@@ -29,16 +29,16 @@
#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)
diff --git a/Modules/timemodule.c b/Modules/timemodule.c
index 68948b6..4e55da7 100644
--- a/Modules/timemodule.c
+++ b/Modules/timemodule.c
@@ -7,7 +7,7 @@
#include "pycore_runtime.h" // _Py_ID()
#include <ctype.h>
-
+#include <time.h> // clock()
#ifdef HAVE_SYS_TIMES_H
# include <sys/times.h>
#endif
diff --git a/Modules/xxsubtype.c b/Modules/xxsubtype.c
index 63b2226..560f43e 100644
--- a/Modules/xxsubtype.c
+++ b/Modules/xxsubtype.c
@@ -1,5 +1,7 @@
#include "Python.h"
+
#include <stddef.h> // offsetof()
+#include <time.h> // clock()
PyDoc_STRVAR(xxsubtype__doc__,
diff --git a/Python/pytime.c b/Python/pytime.c
index 49cd5f4..d1e29e5 100644
--- a/Python/pytime.c
+++ b/Python/pytime.c
@@ -1,5 +1,10 @@
#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