]> granicus.if.org Git - python/commitdiff
Use PyObject_AsFileDescriptor
authorAndrew M. Kuchling <amk@amk.ca>
Thu, 13 Jul 2000 23:59:35 +0000 (23:59 +0000)
committerAndrew M. Kuchling <amk@amk.ca>
Thu, 13 Jul 2000 23:59:35 +0000 (23:59 +0000)
Modules/_tkinter.c
Modules/selectmodule.c

index 8fb321ee7750fcb4b7fb05edff51ab4c209473e8..0383f1eaca540e929d7b3b76315e49aeea65e577 100644 (file)
@@ -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;
 
index 23b7036522ea47e8ea0e66f381cd61ff7272b55e..8f73d385241d22cfa0dff4d6dc9bb9c2eb19a069 100644 (file)
@@ -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 */