summaryrefslogtreecommitdiffstats
path: root/Modules/clinic
diff options
context:
space:
mode:
authorVictor Stinner <vstinner@python.org>2024-03-14 13:58:07 (GMT)
committerGitHub <noreply@github.com>2024-03-14 13:58:07 (GMT)
commita76288ad9ba715216a29c89e046846b3eaf0fab7 (patch)
tree33ec622c1df7a0703e0e14b0971ba218883ab12b /Modules/clinic
parent2a54c4b25e05e30c50b915302fa846dd0d4e018b (diff)
downloadcpython-a76288ad9ba715216a29c89e046846b3eaf0fab7.zip
cpython-a76288ad9ba715216a29c89e046846b3eaf0fab7.tar.gz
cpython-a76288ad9ba715216a29c89e046846b3eaf0fab7.tar.bz2
gh-116646, AC: Always use PyObject_AsFileDescriptor() in fildes (#116806)
The fildes converter of Argument Clinic now always call PyObject_AsFileDescriptor(), not only for the limited C API. The _PyLong_FileDescriptor_Converter() converter stays as a fallback when PyObject_AsFileDescriptor() cannot be used.
Diffstat (limited to 'Modules/clinic')
-rw-r--r--Modules/clinic/posixmodule.c.h48
-rw-r--r--Modules/clinic/selectmodule.c.h30
-rw-r--r--Modules/clinic/termios.c.h27
3 files changed, 67 insertions, 38 deletions
diff --git a/Modules/clinic/posixmodule.c.h b/Modules/clinic/posixmodule.c.h
index b7338d1..0398629 100644
--- a/Modules/clinic/posixmodule.c.h
+++ b/Modules/clinic/posixmodule.c.h
@@ -7,7 +7,6 @@ preserve
# include "pycore_runtime.h" // _Py_ID()
#endif
#include "pycore_abstract.h" // _PyNumber_Index()
-#include "pycore_fileutils.h" // _PyLong_FileDescriptor_Converter()
#include "pycore_long.h" // _PyLong_UnsignedInt_Converter()
#include "pycore_modsupport.h" // _PyArg_UnpackKeywords()
@@ -481,7 +480,8 @@ os_fchdir(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *k
if (!args) {
goto exit;
}
- if (!_PyLong_FileDescriptor_Converter(args[0], &fd)) {
+ fd = PyObject_AsFileDescriptor(args[0]);
+ if (fd < 0) {
goto exit;
}
return_value = os_fchdir_impl(module, fd);
@@ -1024,7 +1024,8 @@ os_fsync(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kw
if (!args) {
goto exit;
}
- if (!_PyLong_FileDescriptor_Converter(args[0], &fd)) {
+ fd = PyObject_AsFileDescriptor(args[0]);
+ if (fd < 0) {
goto exit;
}
return_value = os_fsync_impl(module, fd);
@@ -1107,7 +1108,8 @@ os_fdatasync(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject
if (!args) {
goto exit;
}
- if (!_PyLong_FileDescriptor_Converter(args[0], &fd)) {
+ fd = PyObject_AsFileDescriptor(args[0]);
+ if (fd < 0) {
goto exit;
}
return_value = os_fdatasync_impl(module, fd);
@@ -4531,7 +4533,8 @@ os_grantpt(PyObject *module, PyObject *arg)
PyObject *return_value = NULL;
int fd;
- if (!_PyLong_FileDescriptor_Converter(arg, &fd)) {
+ fd = PyObject_AsFileDescriptor(arg);
+ if (fd < 0) {
goto exit;
}
return_value = os_grantpt_impl(module, fd);
@@ -4567,7 +4570,8 @@ os_unlockpt(PyObject *module, PyObject *arg)
PyObject *return_value = NULL;
int fd;
- if (!_PyLong_FileDescriptor_Converter(arg, &fd)) {
+ fd = PyObject_AsFileDescriptor(arg);
+ if (fd < 0) {
goto exit;
}
return_value = os_unlockpt_impl(module, fd);
@@ -4604,7 +4608,8 @@ os_ptsname(PyObject *module, PyObject *arg)
PyObject *return_value = NULL;
int fd;
- if (!_PyLong_FileDescriptor_Converter(arg, &fd)) {
+ fd = PyObject_AsFileDescriptor(arg);
+ if (fd < 0) {
goto exit;
}
return_value = os_ptsname_impl(module, fd);
@@ -4664,7 +4669,8 @@ os_login_tty(PyObject *module, PyObject *arg)
PyObject *return_value = NULL;
int fd;
- if (!_PyLong_FileDescriptor_Converter(arg, &fd)) {
+ fd = PyObject_AsFileDescriptor(arg);
+ if (fd < 0) {
goto exit;
}
return_value = os_login_tty_impl(module, fd);
@@ -5881,7 +5887,8 @@ os_setns(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kw
if (!args) {
goto exit;
}
- if (!_PyLong_FileDescriptor_Converter(args[0], &fd)) {
+ fd = PyObject_AsFileDescriptor(args[0]);
+ if (fd < 0) {
goto exit;
}
if (!noptargs) {
@@ -6322,7 +6329,8 @@ os_timerfd_settime(PyObject *module, PyObject *const *args, Py_ssize_t nargs, Py
if (!args) {
goto exit;
}
- if (!_PyLong_FileDescriptor_Converter(args[0], &fd)) {
+ fd = PyObject_AsFileDescriptor(args[0]);
+ if (fd < 0) {
goto exit;
}
if (!noptargs) {
@@ -6435,7 +6443,8 @@ os_timerfd_settime_ns(PyObject *module, PyObject *const *args, Py_ssize_t nargs,
if (!args) {
goto exit;
}
- if (!_PyLong_FileDescriptor_Converter(args[0], &fd)) {
+ fd = PyObject_AsFileDescriptor(args[0]);
+ if (fd < 0) {
goto exit;
}
if (!noptargs) {
@@ -6495,7 +6504,8 @@ os_timerfd_gettime(PyObject *module, PyObject *arg)
PyObject *return_value = NULL;
int fd;
- if (!_PyLong_FileDescriptor_Converter(arg, &fd)) {
+ fd = PyObject_AsFileDescriptor(arg);
+ if (fd < 0) {
goto exit;
}
return_value = os_timerfd_gettime_impl(module, fd);
@@ -6529,7 +6539,8 @@ os_timerfd_gettime_ns(PyObject *module, PyObject *arg)
PyObject *return_value = NULL;
int fd;
- if (!_PyLong_FileDescriptor_Converter(arg, &fd)) {
+ fd = PyObject_AsFileDescriptor(arg);
+ if (fd < 0) {
goto exit;
}
return_value = os_timerfd_gettime_ns_impl(module, fd);
@@ -9691,7 +9702,8 @@ os_fpathconf(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
if (!_PyArg_CheckPositional("fpathconf", nargs, 2, 2)) {
goto exit;
}
- if (!_PyLong_FileDescriptor_Converter(args[0], &fd)) {
+ fd = PyObject_AsFileDescriptor(args[0]);
+ if (fd < 0) {
goto exit;
}
if (!conv_path_confname(args[1], &name)) {
@@ -10834,7 +10846,8 @@ os_eventfd_read(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObj
if (!args) {
goto exit;
}
- if (!_PyLong_FileDescriptor_Converter(args[0], &fd)) {
+ fd = PyObject_AsFileDescriptor(args[0]);
+ if (fd < 0) {
goto exit;
}
return_value = os_eventfd_read_impl(module, fd);
@@ -10896,7 +10909,8 @@ os_eventfd_write(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyOb
if (!args) {
goto exit;
}
- if (!_PyLong_FileDescriptor_Converter(args[0], &fd)) {
+ fd = PyObject_AsFileDescriptor(args[0]);
+ if (fd < 0) {
goto exit;
}
if (!_PyLong_UnsignedLongLong_Converter(args[1], &value)) {
@@ -12588,4 +12602,4 @@ os__supports_virtual_terminal(PyObject *module, PyObject *Py_UNUSED(ignored))
#ifndef OS__SUPPORTS_VIRTUAL_TERMINAL_METHODDEF
#define OS__SUPPORTS_VIRTUAL_TERMINAL_METHODDEF
#endif /* !defined(OS__SUPPORTS_VIRTUAL_TERMINAL_METHODDEF) */
-/*[clinic end generated code: output=2965306970f31c5d input=a9049054013a1b77]*/
+/*[clinic end generated code: output=511f0788a6b90db0 input=a9049054013a1b77]*/
diff --git a/Modules/clinic/selectmodule.c.h b/Modules/clinic/selectmodule.c.h
index 67e76d4..dc7d3fb 100644
--- a/Modules/clinic/selectmodule.c.h
+++ b/Modules/clinic/selectmodule.c.h
@@ -6,7 +6,6 @@ preserve
# include "pycore_gc.h" // PyGC_Head
# include "pycore_runtime.h" // _Py_ID()
#endif
-#include "pycore_fileutils.h" // _PyLong_FileDescriptor_Converter()
#include "pycore_long.h" // _PyLong_UnsignedShort_Converter()
#include "pycore_modsupport.h" // _PyArg_CheckPositional()
@@ -100,7 +99,8 @@ select_poll_register(pollObject *self, PyObject *const *args, Py_ssize_t nargs)
if (!_PyArg_CheckPositional("register", nargs, 1, 2)) {
goto exit;
}
- if (!_PyLong_FileDescriptor_Converter(args[0], &fd)) {
+ fd = PyObject_AsFileDescriptor(args[0]);
+ if (fd < 0) {
goto exit;
}
if (nargs < 2) {
@@ -148,7 +148,8 @@ select_poll_modify(pollObject *self, PyObject *const *args, Py_ssize_t nargs)
if (!_PyArg_CheckPositional("modify", nargs, 2, 2)) {
goto exit;
}
- if (!_PyLong_FileDescriptor_Converter(args[0], &fd)) {
+ fd = PyObject_AsFileDescriptor(args[0]);
+ if (fd < 0) {
goto exit;
}
if (!_PyLong_UnsignedShort_Converter(args[1], &eventmask)) {
@@ -182,7 +183,8 @@ select_poll_unregister(pollObject *self, PyObject *arg)
PyObject *return_value = NULL;
int fd;
- if (!_PyLong_FileDescriptor_Converter(arg, &fd)) {
+ fd = PyObject_AsFileDescriptor(arg);
+ if (fd < 0) {
goto exit;
}
return_value = select_poll_unregister_impl(self, fd);
@@ -268,7 +270,8 @@ select_devpoll_register(devpollObject *self, PyObject *const *args, Py_ssize_t n
if (!_PyArg_CheckPositional("register", nargs, 1, 2)) {
goto exit;
}
- if (!_PyLong_FileDescriptor_Converter(args[0], &fd)) {
+ fd = PyObject_AsFileDescriptor(args[0]);
+ if (fd < 0) {
goto exit;
}
if (nargs < 2) {
@@ -318,7 +321,8 @@ select_devpoll_modify(devpollObject *self, PyObject *const *args, Py_ssize_t nar
if (!_PyArg_CheckPositional("modify", nargs, 1, 2)) {
goto exit;
}
- if (!_PyLong_FileDescriptor_Converter(args[0], &fd)) {
+ fd = PyObject_AsFileDescriptor(args[0]);
+ if (fd < 0) {
goto exit;
}
if (nargs < 2) {
@@ -356,7 +360,8 @@ select_devpoll_unregister(devpollObject *self, PyObject *arg)
PyObject *return_value = NULL;
int fd;
- if (!_PyLong_FileDescriptor_Converter(arg, &fd)) {
+ fd = PyObject_AsFileDescriptor(arg);
+ if (fd < 0) {
goto exit;
}
return_value = select_devpoll_unregister_impl(self, fd);
@@ -730,7 +735,8 @@ select_epoll_register(pyEpoll_Object *self, PyObject *const *args, Py_ssize_t na
if (!args) {
goto exit;
}
- if (!_PyLong_FileDescriptor_Converter(args[0], &fd)) {
+ fd = PyObject_AsFileDescriptor(args[0]);
+ if (fd < 0) {
goto exit;
}
if (!noptargs) {
@@ -806,7 +812,8 @@ select_epoll_modify(pyEpoll_Object *self, PyObject *const *args, Py_ssize_t narg
if (!args) {
goto exit;
}
- if (!_PyLong_FileDescriptor_Converter(args[0], &fd)) {
+ fd = PyObject_AsFileDescriptor(args[0]);
+ if (fd < 0) {
goto exit;
}
eventmask = (unsigned int)PyLong_AsUnsignedLongMask(args[1]);
@@ -874,7 +881,8 @@ select_epoll_unregister(pyEpoll_Object *self, PyObject *const *args, Py_ssize_t
if (!args) {
goto exit;
}
- if (!_PyLong_FileDescriptor_Converter(args[0], &fd)) {
+ fd = PyObject_AsFileDescriptor(args[0]);
+ if (fd < 0) {
goto exit;
}
return_value = select_epoll_unregister_impl(self, fd);
@@ -1311,4 +1319,4 @@ exit:
#ifndef SELECT_KQUEUE_CONTROL_METHODDEF
#define SELECT_KQUEUE_CONTROL_METHODDEF
#endif /* !defined(SELECT_KQUEUE_CONTROL_METHODDEF) */
-/*[clinic end generated code: output=4c2dcb31cb17c2c6 input=a9049054013a1b77]*/
+/*[clinic end generated code: output=4fc17ae9b6cfdc86 input=a9049054013a1b77]*/
diff --git a/Modules/clinic/termios.c.h b/Modules/clinic/termios.c.h
index 1c34068..2813e5e 100644
--- a/Modules/clinic/termios.c.h
+++ b/Modules/clinic/termios.c.h
@@ -2,7 +2,6 @@
preserve
[clinic start generated code]*/
-#include "pycore_fileutils.h" // _PyLong_FileDescriptor_Converter()
#include "pycore_modsupport.h" // _PyArg_CheckPositional()
PyDoc_STRVAR(termios_tcgetattr__doc__,
@@ -30,7 +29,8 @@ termios_tcgetattr(PyObject *module, PyObject *arg)
PyObject *return_value = NULL;
int fd;
- if (!_PyLong_FileDescriptor_Converter(arg, &fd)) {
+ fd = PyObject_AsFileDescriptor(arg);
+ if (fd < 0) {
goto exit;
}
return_value = termios_tcgetattr_impl(module, fd);
@@ -69,7 +69,8 @@ termios_tcsetattr(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
if (!_PyArg_CheckPositional("tcsetattr", nargs, 3, 3)) {
goto exit;
}
- if (!_PyLong_FileDescriptor_Converter(args[0], &fd)) {
+ fd = PyObject_AsFileDescriptor(args[0]);
+ if (fd < 0) {
goto exit;
}
when = PyLong_AsInt(args[1]);
@@ -108,7 +109,8 @@ termios_tcsendbreak(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
if (!_PyArg_CheckPositional("tcsendbreak", nargs, 2, 2)) {
goto exit;
}
- if (!_PyLong_FileDescriptor_Converter(args[0], &fd)) {
+ fd = PyObject_AsFileDescriptor(args[0]);
+ if (fd < 0) {
goto exit;
}
duration = PyLong_AsInt(args[1]);
@@ -139,7 +141,8 @@ termios_tcdrain(PyObject *module, PyObject *arg)
PyObject *return_value = NULL;
int fd;
- if (!_PyLong_FileDescriptor_Converter(arg, &fd)) {
+ fd = PyObject_AsFileDescriptor(arg);
+ if (fd < 0) {
goto exit;
}
return_value = termios_tcdrain_impl(module, fd);
@@ -174,7 +177,8 @@ termios_tcflush(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
if (!_PyArg_CheckPositional("tcflush", nargs, 2, 2)) {
goto exit;
}
- if (!_PyLong_FileDescriptor_Converter(args[0], &fd)) {
+ fd = PyObject_AsFileDescriptor(args[0]);
+ if (fd < 0) {
goto exit;
}
queue = PyLong_AsInt(args[1]);
@@ -213,7 +217,8 @@ termios_tcflow(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
if (!_PyArg_CheckPositional("tcflow", nargs, 2, 2)) {
goto exit;
}
- if (!_PyLong_FileDescriptor_Converter(args[0], &fd)) {
+ fd = PyObject_AsFileDescriptor(args[0]);
+ if (fd < 0) {
goto exit;
}
action = PyLong_AsInt(args[1]);
@@ -246,7 +251,8 @@ termios_tcgetwinsize(PyObject *module, PyObject *arg)
PyObject *return_value = NULL;
int fd;
- if (!_PyLong_FileDescriptor_Converter(arg, &fd)) {
+ fd = PyObject_AsFileDescriptor(arg);
+ if (fd < 0) {
goto exit;
}
return_value = termios_tcgetwinsize_impl(module, fd);
@@ -280,7 +286,8 @@ termios_tcsetwinsize(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
if (!_PyArg_CheckPositional("tcsetwinsize", nargs, 2, 2)) {
goto exit;
}
- if (!_PyLong_FileDescriptor_Converter(args[0], &fd)) {
+ fd = PyObject_AsFileDescriptor(args[0]);
+ if (fd < 0) {
goto exit;
}
winsz = args[1];
@@ -289,4 +296,4 @@ termios_tcsetwinsize(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
exit:
return return_value;
}
-/*[clinic end generated code: output=f31382658135c774 input=a9049054013a1b77]*/
+/*[clinic end generated code: output=7327a2085972bf59 input=a9049054013a1b77]*/