]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-108765: Python.h no longer includes <sys/time.h> (#108775)
authorVictor Stinner <vstinner@python.org>
Sat, 2 Sep 2023 15:51:19 +0000 (17:51 +0200)
committerGitHub <noreply@github.com>
Sat, 2 Sep 2023 15:51:19 +0000 (17:51 +0200)
Python.h no longer includes <time.h>, <sys/select.h> and <sys/time.h>
standard header files.

* Add <time.h> include to xxsubtype.c.
* Add <sys/time.h> include to posixmodule.c and semaphore.c.
* readline.c includes <sys/select.h> instead of <sys/time.h>.
* resource.c no longer includes <time.h> and <sys/time.h>.

Doc/whatsnew/3.13.rst
Include/pyport.h
Misc/NEWS.d/next/C API/2023-09-01-18-42-31.gh-issue-108765.IyYNDu.rst [new file with mode: 0644]
Modules/_multiprocessing/semaphore.c
Modules/posixmodule.c
Modules/readline.c
Modules/resource.c
Modules/signalmodule.c
Modules/timemodule.c
Modules/xxsubtype.c
Python/pytime.c

index 401de11b34ec5fc408ea0ebf57d16ddc167a0cc9..1c91a1dadb899f0e1452c3fa0a6c69b1c47b88fb 100644 (file)
@@ -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
 ----------
 
index f2046de2bbcc5a05085cc94c900e896c0c00f072..c4168d10f5815133e2df3e79e52671674c407d0a 100644 (file)
@@ -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 (file)
index 0000000..7b33481
--- /dev/null
@@ -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.
index d22b8d18e33e42842b3816239bce4bf79252bc02..f8f2afda28d06dbc58ef1228836f87ba1575700b 100644 (file)
@@ -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 };
index 6e829b200fa46df128f702cc448b06a9d5500142..b4c502bef50ba9d9bd018033eb9c89cb039b8cb9 100644 (file)
 
 #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
index 2531b236b6ef178cbe1df32c440b62dcc5be589a..aeae654162f13f49fb10d874c35dbf5355254cc3 100644 (file)
 #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.  */
index f5d9972d9a8ff79e9365b30500811e211e6623e5..9e302a3a1ed962adebf517d56034f41d9c5169b3 100644 (file)
@@ -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.
index 3adb2e8dfe58d8d6d73723e29dc65f51649bb53b..8d6556727b3a5a768c0c157d4d2273ec00c85fe8 100644 (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)
index 68948b6be1a61a2e4d8786723e141e9b39b908ab..4e55da71b117caf04c39183bbb8ca045bc004604 100644 (file)
@@ -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
index 63b22268c597b6a32a20c0423d2ab07ac6d2630f..560f43e5b3a643a2ff8809e7a8cd55a8c4d6efa7 100644 (file)
@@ -1,5 +1,7 @@
 #include "Python.h"
+
 #include <stddef.h>               // offsetof()
+#include <time.h>                 // clock()
 
 
 PyDoc_STRVAR(xxsubtype__doc__,
index 49cd5f4e8ea61759ffe7113665de4c88914ca6a0..d1e29e57d362f64f73847fbe8cc019910ee98b31 100644 (file)
@@ -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