]> granicus.if.org Git - python/commitdiff
Jeff Epler's patch adding an xreadlines() method. (It just imports
authorGuido van Rossum <guido@python.org>
Tue, 9 Jan 2001 21:50:24 +0000 (21:50 +0000)
committerGuido van Rossum <guido@python.org>
Tue, 9 Jan 2001 21:50:24 +0000 (21:50 +0000)
the xreadlines module and lets it do its thing.)

Objects/fileobject.c

index 430ec468dc92c7c1f1ff84b1254fac62fe15b0c8..523fe81395b3e0926ce57177575003bb10ab0a34 100644 (file)
@@ -963,6 +963,29 @@ file_readline(PyFileObject *f, PyObject *args)
        return get_line(f, n);
 }
 
+static PyObject *
+file_xreadlines(PyFileObject *f, PyObject *args)
+{
+       static PyObject* xreadlines_function = NULL;
+       
+       if (!PyArg_ParseTuple(args, ":xreadlines"))
+               return NULL;
+       
+       if (!xreadlines_function) {
+               PyObject *xreadlines_module =
+                       PyImport_ImportModule("xreadlines");
+               if(!xreadlines_module)
+                       return NULL;
+
+               xreadlines_function = PyObject_GetAttrString(xreadlines_module,
+                                                            "xreadlines");
+               Py_DECREF(xreadlines_module);
+               if(!xreadlines_function)
+                       return NULL;
+       }
+       return PyObject_CallFunction(xreadlines_function, "(O)", f);
+}
+
 static PyObject *
 file_readlines(PyFileObject *f, PyObject *args)
 {
@@ -1009,7 +1032,7 @@ file_readlines(PyFileObject *f, PyObject *args)
                        buffersize *= 2;
                        if (buffersize > INT_MAX) {
                                PyErr_SetString(PyExc_OverflowError,
-                                       "line is longer than a Python string can hold");
+                           "line is longer than a Python string can hold");
                                goto error;
                        }
                        if (big_buffer == NULL) {
@@ -1232,6 +1255,7 @@ static PyMethodDef file_methods[] = {
        {"tell",        (PyCFunction)file_tell, 0},
        {"readinto",    (PyCFunction)file_readinto, 0},
        {"readlines",   (PyCFunction)file_readlines, 1},
+       {"xreadlines",  (PyCFunction)file_xreadlines, 1},
        {"writelines",  (PyCFunction)file_writelines, 0},
        {"flush",       (PyCFunction)file_flush, 0},
        {"close",       (PyCFunction)file_close, 0},