diff --git a/Doc/library/fcntl.rst b/Doc/library/fcntl.rst index 9d8021150c4..846c8d7ba96 100644 --- a/Doc/library/fcntl.rst +++ b/Doc/library/fcntl.rst @@ -44,6 +44,11 @@ descriptor. ``F_SETPIPE_SZ`` constants, which allow to check and modify a pipe's size respectively. +.. versionchanged:: 3.11 + On FreeBSD, the fcntl module exposes the ``F_DUP2FD`` and ``F_DUP2FD_CLOEXEC`` + constants, which allow to duplicate a file descriptor, the latter setting + ``FD_CLOEXEC`` flag in addition. + The module defines the following functions: diff --git a/Doc/whatsnew/3.11.rst b/Doc/whatsnew/3.11.rst index a570864743d..264a801da78 100644 --- a/Doc/whatsnew/3.11.rst +++ b/Doc/whatsnew/3.11.rst @@ -329,6 +329,14 @@ unicodedata * The Unicode database has been updated to version 14.0.0. (:issue:`45190`). +fcntl +----- + +* On FreeBSD, the `F_DUP2FD` and `F_DUP2FD_CLOEXEC` flags respectively + are supported, the former equals to ``dup2`` usage while the latter set + the ``FD_CLOEXEC`` flag in addition. + + Optimizations ============= diff --git a/Misc/NEWS.d/next/Library/2021-12-08-19-15-03.bpo-46016.s9PuyF.rst b/Misc/NEWS.d/next/Library/2021-12-08-19-15-03.bpo-46016.s9PuyF.rst new file mode 100644 index 00000000000..7308c542aac --- /dev/null +++ b/Misc/NEWS.d/next/Library/2021-12-08-19-15-03.bpo-46016.s9PuyF.rst @@ -0,0 +1 @@ +Adding `F_DUP2FD` and `F_DUP2FD_CLOEXEC` constants from FreeBSD into the fcntl module. diff --git a/Modules/fcntlmodule.c b/Modules/fcntlmodule.c index cdf0f9bf379..ea9b2bc14a9 100644 --- a/Modules/fcntlmodule.c +++ b/Modules/fcntlmodule.c @@ -581,6 +581,14 @@ all_ins(PyObject* m) if (PyModule_AddIntMacro(m, F_NOCACHE)) return -1; #endif +/* FreeBSD specifics */ +#ifdef F_DUP2FD + if (PyModule_AddIntMacro(m, F_DUP2FD)) return -1; +#endif +#ifdef F_DUP2FD_CLOEXEC + if (PyModule_AddIntMacro(m, F_DUP2FD_CLOEXEC)) return -1; +#endif + /* For F_{GET|SET}FL */ #ifdef FD_CLOEXEC if (PyModule_AddIntMacro(m, FD_CLOEXEC)) return -1;