From 9f28a039f6b0d320c60a605e42618fdbacd14908 Mon Sep 17 00:00:00 2001 From: "Andrew M. Kuchling" Date: Thu, 13 Jul 2000 23:59:35 +0000 Subject: Use PyObject_AsFileDescriptor --- Modules/_tkinter.c | 46 ++-------------------------------------------- Modules/selectmodule.c | 26 ++------------------------ 2 files changed, 4 insertions(+), 68 deletions(-) diff --git a/Modules/_tkinter.c b/Modules/_tkinter.c index 8fb321e..0383f1e 100644 --- a/Modules/_tkinter.c +++ b/Modules/_tkinter.c @@ -1426,48 +1426,6 @@ FileHandler(ClientData clientData, int mask) LEAVE_PYTHON } -static int -GetFileNo(PyObject *file) - /* Either an int >= 0 or an object with a - *.fileno() method that returns an int >= 0 - */ -{ - PyObject *meth, *args, *res; - int id; - if (PyInt_Check(file)) { - id = PyInt_AsLong(file); - if (id < 0) - PyErr_SetString(PyExc_ValueError, "invalid file id"); - return id; - } - args = PyTuple_New(0); - if (args == NULL) - return -1; - - meth = PyObject_GetAttrString(file, "fileno"); - if (meth == NULL) { - Py_DECREF(args); - return -1; - } - - res = PyEval_CallObject(meth, args); - Py_DECREF(args); - Py_DECREF(meth); - if (res == NULL) - return -1; - - if (PyInt_Check(res)) - id = PyInt_AsLong(res); - else - id = -1; - - if (id < 0) - PyErr_SetString(PyExc_ValueError, - "invalid fileno() return value"); - Py_DECREF(res); - return id; -} - static PyObject * Tkapp_CreateFileHandler(PyObject *self, PyObject *args) /* args is (file, mask, func) */ @@ -1478,7 +1436,7 @@ Tkapp_CreateFileHandler(PyObject *self, PyObject *args) if (!PyArg_ParseTuple(args, "OiO:createfilehandler", &file, &mask, &func)) return NULL; - tfile = GetFileNo(file); + tfile = PyObject_AsFileDescriptor(file); if (tfile < 0) return NULL; if (!PyCallable_Check(func)) { @@ -1506,7 +1464,7 @@ Tkapp_DeleteFileHandler(PyObject *self, PyObject *args) if (!PyArg_ParseTuple(args, "O:deletefilehandler", &file)) return NULL; - tfile = GetFileNo(file); + tfile = PyObject_AsFileDescriptor(file); if (tfile < 0) return NULL; diff --git a/Modules/selectmodule.c b/Modules/selectmodule.c index 23b7036..8f73d38 100644 --- a/Modules/selectmodule.c +++ b/Modules/selectmodule.c @@ -96,31 +96,9 @@ list2set(PyObject *list, fd_set *set, pylist fd2obj[FD_SETSIZE + 3]) return -1; Py_INCREF(o); + v = PyObject_AsFileDescriptor( o ); + if (v == -1) goto finally; - if (PyInt_Check(o)) { - v = PyInt_AsLong(o); - } - else if ((meth = PyObject_GetAttrString(o, "fileno")) != NULL) - { - PyObject *fno = PyEval_CallObject(meth, NULL); - Py_DECREF(meth); - if (fno == NULL) - goto finally; - - if (!PyInt_Check(fno)) { - PyErr_SetString(PyExc_TypeError, - "fileno method returned a non-integer"); - Py_DECREF(fno); - goto finally; - } - v = PyInt_AsLong(fno); - Py_DECREF(fno); - } - else { - PyErr_SetString(PyExc_TypeError, - "argument must be an int, or have a fileno() method."); - goto finally; - } #if defined(_MSC_VER) max = 0; /* not used for Win32 */ #else /* !_MSC_VER */ -- cgit v0.12