diff options
-rw-r--r-- | Doc/whatsnew/3.13.rst | 8 | ||||
-rw-r--r-- | Include/pyport.h | 19 | ||||
-rw-r--r-- | Misc/NEWS.d/next/C API/2023-09-01-18-42-31.gh-issue-108765.IyYNDu.rst | 6 | ||||
-rw-r--r-- | Modules/_multiprocessing/semaphore.c | 4 | ||||
-rw-r--r-- | Modules/posixmodule.c | 4 | ||||
-rw-r--r-- | Modules/readline.c | 16 | ||||
-rw-r--r-- | Modules/resource.c | 4 | ||||
-rw-r--r-- | Modules/signalmodule.c | 10 | ||||
-rw-r--r-- | Modules/timemodule.c | 2 | ||||
-rw-r--r-- | Modules/xxsubtype.c | 2 | ||||
-rw-r--r-- | Python/pytime.c | 5 |
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 |