diff options
author | Victor Stinner <vstinner@python.org> | 2023-09-02 14:50:18 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-09-02 14:50:18 (GMT) |
commit | 594b00057e667e0d8d4e41748be056cdd829e919 (patch) | |
tree | b970b7d385d30e9bb423a30bc3029cc94fe4ca4b | |
parent | 4f9b706c6f5d4422a398146bfd011daedaef1851 (diff) | |
download | cpython-594b00057e667e0d8d4e41748be056cdd829e919.zip cpython-594b00057e667e0d8d4e41748be056cdd829e919.tar.gz cpython-594b00057e667e0d8d4e41748be056cdd829e919.tar.bz2 |
gh-108765: Python.h no longer includes <unistd.h> (#108783)
-rw-r--r-- | Doc/whatsnew/3.13.rst | 5 | ||||
-rw-r--r-- | Include/Python.h | 11 | ||||
-rw-r--r-- | Misc/NEWS.d/next/C API/2023-09-01-21-10-29.gh-issue-108765.eeXtYF.rst | 4 | ||||
-rw-r--r-- | Modules/_ctypes/malloc_closure.c | 13 | ||||
-rw-r--r-- | Modules/_posixsubprocess.c | 22 | ||||
-rw-r--r-- | Modules/_testcapimodule.c | 3 | ||||
-rw-r--r-- | Modules/grpmodule.c | 3 | ||||
-rw-r--r-- | Modules/mmapmodule.c | 3 | ||||
-rw-r--r-- | Modules/posixmodule.c | 2 | ||||
-rw-r--r-- | Modules/pwdmodule.c | 3 | ||||
-rw-r--r-- | Modules/resource.c | 11 | ||||
-rw-r--r-- | Modules/selectmodule.c | 3 | ||||
-rw-r--r-- | Modules/socketmodule.c | 2 | ||||
-rw-r--r-- | Programs/_freeze_module.c | 2 | ||||
-rw-r--r-- | Python/dup2.c | 6 | ||||
-rw-r--r-- | Python/perf_trampoline.c | 4 |
16 files changed, 55 insertions, 42 deletions
diff --git a/Doc/whatsnew/3.13.rst b/Doc/whatsnew/3.13.rst index eb3d832..401de11 100644 --- a/Doc/whatsnew/3.13.rst +++ b/Doc/whatsnew/3.13.rst @@ -929,6 +929,11 @@ Porting to Python 3.13 also the ``HAVE_IEEEFP_H`` macro. (Contributed by Victor Stinner in :gh:`108765`.) +* ``Python.h`` no longer includes the ``<unistd.h>`` standard header file. If + needed, it should now be included explicitly. For example, it provides the + functions: ``close()``, ``getpagesize()``, ``getpid()`` and ``sysconf()``. + (Contributed by Victor Stinner in :gh:`108765`.) + Deprecated ---------- diff --git a/Include/Python.h b/Include/Python.h index 002a79d..4cc72bb 100644 --- a/Include/Python.h +++ b/Include/Python.h @@ -26,14 +26,13 @@ #ifdef HAVE_STDDEF_H # include <stddef.h> // size_t #endif -#ifndef MS_WINDOWS -# include <unistd.h> // sysconf() +#ifdef HAVE_SYS_TYPES_H +# include <sys/types.h> // ssize_t #endif -// errno.h, stdio.h, stdlib.h and string.h headers are no longer used by Python -// headers, but kept for backward compatibility (no introduce new compiler -// warnings). They are not included by the limited C API version 3.11 and -// above. +// errno.h, stdio.h, stdlib.h and string.h headers are no longer used by +// Python, but kept for backward compatibility (avoid compiler warnings). +// They are no longer included by limited C API version 3.11 and newer. #if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 < 0x030b0000 # include <errno.h> // errno # include <stdio.h> // FILE* diff --git a/Misc/NEWS.d/next/C API/2023-09-01-21-10-29.gh-issue-108765.eeXtYF.rst b/Misc/NEWS.d/next/C API/2023-09-01-21-10-29.gh-issue-108765.eeXtYF.rst new file mode 100644 index 0000000..ff8f799 --- /dev/null +++ b/Misc/NEWS.d/next/C API/2023-09-01-21-10-29.gh-issue-108765.eeXtYF.rst @@ -0,0 +1,4 @@ +``Python.h`` no longer includes the ``<unistd.h>`` standard header file. If +needed, it should now be included explicitly. For example, it provides the +functions: ``close()``, ``getpagesize()``, ``getpid()`` and ``sysconf()``. +Patch by Victor Stinner. diff --git a/Modules/_ctypes/malloc_closure.c b/Modules/_ctypes/malloc_closure.c index 3a85932..bb4f8f2 100644 --- a/Modules/_ctypes/malloc_closure.c +++ b/Modules/_ctypes/malloc_closure.c @@ -1,16 +1,17 @@ #ifndef Py_BUILD_CORE_BUILTIN # define Py_BUILD_CORE_MODULE 1 #endif + #include <Python.h> #include <ffi.h> #ifdef MS_WIN32 -#include <windows.h> +# include <windows.h> #else -#include <sys/mman.h> -#include <unistd.h> -# if !defined(MAP_ANONYMOUS) && defined(MAP_ANON) -# define MAP_ANONYMOUS MAP_ANON -# endif +# include <sys/mman.h> +# include <unistd.h> // sysconf() +# if !defined(MAP_ANONYMOUS) && defined(MAP_ANON) +# define MAP_ANONYMOUS MAP_ANON +# endif #endif #include "ctypes.h" diff --git a/Modules/_posixsubprocess.c b/Modules/_posixsubprocess.c index ac2b0d4..ef76d26 100644 --- a/Modules/_posixsubprocess.c +++ b/Modules/_posixsubprocess.c @@ -8,28 +8,28 @@ #include "pycore_pystate.h" #include "pycore_signal.h" // _Py_RestoreSignals() #if defined(HAVE_PIPE2) && !defined(_GNU_SOURCE) -# define _GNU_SOURCE +# define _GNU_SOURCE #endif -#include <unistd.h> -#include <fcntl.h> +#include <unistd.h> // close() +#include <fcntl.h> // fcntl() #ifdef HAVE_SYS_TYPES_H -#include <sys/types.h> +# include <sys/types.h> #endif #if defined(HAVE_SYS_STAT_H) -#include <sys/stat.h> +# include <sys/stat.h> // stat() #endif #ifdef HAVE_SYS_SYSCALL_H -#include <sys/syscall.h> +# include <sys/syscall.h> #endif #if defined(HAVE_SYS_RESOURCE_H) -#include <sys/resource.h> +# include <sys/resource.h> #endif #ifdef HAVE_DIRENT_H -#include <dirent.h> +# include <dirent.h> // opendir() +#endif +#if defined(HAVE_SETGROUPS) +# include <grp.h> // setgroups() #endif -#ifdef HAVE_GRP_H -#include <grp.h> -#endif /* HAVE_GRP_H */ #include "posixmodule.h" diff --git a/Modules/_testcapimodule.c b/Modules/_testcapimodule.c index 4fc354a..ab33702 100644 --- a/Modules/_testcapimodule.c +++ b/Modules/_testcapimodule.c @@ -24,9 +24,6 @@ #include <float.h> // FLT_MAX #include <signal.h> #include <stddef.h> // offsetof() -#ifndef MS_WINDOWS -# include <unistd.h> -#endif #ifdef HAVE_SYS_WAIT_H # include <sys/wait.h> // W_STOPCODE diff --git a/Modules/grpmodule.c b/Modules/grpmodule.c index f570929..20e83de 100644 --- a/Modules/grpmodule.c +++ b/Modules/grpmodule.c @@ -4,7 +4,8 @@ #include "Python.h" #include "posixmodule.h" -#include <grp.h> +#include <grp.h> // getgrgid_r() +#include <unistd.h> // sysconf() #include "clinic/grpmodule.c.h" /*[clinic input] diff --git a/Modules/mmapmodule.c b/Modules/mmapmodule.c index c8cd7e5..d11200a 100644 --- a/Modules/mmapmodule.c +++ b/Modules/mmapmodule.c @@ -28,6 +28,9 @@ #include "pycore_fileutils.h" // _Py_stat_struct #include <stddef.h> // offsetof() +#ifndef MS_WINDOWS +# include <unistd.h> // close() +#endif // to support MS_WINDOWS_SYSTEM OpenFileMappingA / CreateFileMappingA // need to be replaced with OpenFileMappingW / CreateFileMappingW diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c index 7615428..6e829b2 100644 --- a/Modules/posixmodule.c +++ b/Modules/posixmodule.c @@ -286,7 +286,7 @@ corresponding Unix manual entries for more information on calls."); #endif #ifdef HAVE_COPY_FILE_RANGE -# include <unistd.h> +# include <unistd.h> // copy_file_range() #endif #if !defined(CPU_ALLOC) && defined(HAVE_SCHED_SETAFFINITY) diff --git a/Modules/pwdmodule.c b/Modules/pwdmodule.c index cc2e2a4..b703436 100644 --- a/Modules/pwdmodule.c +++ b/Modules/pwdmodule.c @@ -4,7 +4,8 @@ #include "Python.h" #include "posixmodule.h" -#include <pwd.h> +#include <pwd.h> // getpwuid() +#include <unistd.h> // sysconf() #include "clinic/pwdmodule.c.h" /*[clinic input] diff --git a/Modules/resource.c b/Modules/resource.c index 4614f5e..f5d9972 100644 --- a/Modules/resource.c +++ b/Modules/resource.c @@ -1,13 +1,12 @@ - #include "Python.h" -#include <sys/resource.h> +#include <errno.h> // errno +#include <string.h> +#include <sys/resource.h> // getrusage() #ifdef HAVE_SYS_TIME_H -#include <sys/time.h> +# include <sys/time.h> #endif #include <time.h> -#include <string.h> -#include <errno.h> -#include <unistd.h> +#include <unistd.h> // getpagesize() /* On some systems, these aren't in any header file. On others they are, with inconsistent prototypes. diff --git a/Modules/selectmodule.c b/Modules/selectmodule.c index 4987cf0..c56e682 100644 --- a/Modules/selectmodule.c +++ b/Modules/selectmodule.c @@ -17,6 +17,9 @@ #include "pycore_time.h" // _PyTime_t #include <stddef.h> // offsetof() +#ifndef MS_WINDOWS +# include <unistd.h> // close() +#endif #ifdef HAVE_SYS_DEVPOLL_H #include <sys/resource.h> diff --git a/Modules/socketmodule.c b/Modules/socketmodule.c index 2f12c9c..74b1c1c 100644 --- a/Modules/socketmodule.c +++ b/Modules/socketmodule.c @@ -269,7 +269,7 @@ shutdown(how) -- shut down traffic in one or both directions\n\ #ifdef HAVE_NETDB_H # include <netdb.h> #endif -# include <unistd.h> +#include <unistd.h> // close() /* Headers needed for inet_ntoa() and inet_addr() */ # include <arpa/inet.h> diff --git a/Programs/_freeze_module.c b/Programs/_freeze_module.c index e55f1d5..f6c46fa 100644 --- a/Programs/_freeze_module.c +++ b/Programs/_freeze_module.c @@ -19,7 +19,7 @@ #include <sys/types.h> #include <sys/stat.h> #ifndef MS_WINDOWS -#include <unistd.h> +# include <unistd.h> #endif uint32_t _Py_next_func_version = 1; diff --git a/Python/dup2.c b/Python/dup2.c index a1df049..936211f 100644 --- a/Python/dup2.c +++ b/Python/dup2.c @@ -11,9 +11,9 @@ * Return fd2 if all went well; return BADEXIT otherwise. */ -#include <errno.h> -#include <fcntl.h> -#include <unistd.h> +#include <errno.h> // errno +#include <fcntl.h> // fcntl() +#include <unistd.h> // close() #define BADEXIT -1 diff --git a/Python/perf_trampoline.c b/Python/perf_trampoline.c index b8885a3..10675bf 100644 --- a/Python/perf_trampoline.c +++ b/Python/perf_trampoline.c @@ -140,9 +140,9 @@ any DWARF information available for them). #include <fcntl.h> #include <stdio.h> #include <stdlib.h> -#include <sys/mman.h> +#include <sys/mman.h> // mmap() #include <sys/types.h> -#include <unistd.h> +#include <unistd.h> // sysconf() #if defined(__arm__) || defined(__arm64__) || defined(__aarch64__) #define PY_HAVE_INVALIDATE_ICACHE |