@@ -963,6 +963,29 @@ file_readline(PyFileObject *f, PyObject *args)
963963 return get_line (f , n );
964964}
965965
966+ static PyObject *
967+ file_xreadlines (PyFileObject * f , PyObject * args )
968+ {
969+ static PyObject * xreadlines_function = NULL ;
970+
971+ if (!PyArg_ParseTuple (args , ":xreadlines" ))
972+ return NULL ;
973+
974+ if (!xreadlines_function ) {
975+ PyObject * xreadlines_module =
976+ PyImport_ImportModule ("xreadlines" );
977+ if (!xreadlines_module )
978+ return NULL ;
979+
980+ xreadlines_function = PyObject_GetAttrString (xreadlines_module ,
981+ "xreadlines" );
982+ Py_DECREF (xreadlines_module );
983+ if (!xreadlines_function )
984+ return NULL ;
985+ }
986+ return PyObject_CallFunction (xreadlines_function , "(O)" , f );
987+ }
988+
966989static PyObject *
967990file_readlines (PyFileObject * f , PyObject * args )
968991{
@@ -1009,7 +1032,7 @@ file_readlines(PyFileObject *f, PyObject *args)
10091032 buffersize *= 2 ;
10101033 if (buffersize > INT_MAX ) {
10111034 PyErr_SetString (PyExc_OverflowError ,
1012- "line is longer than a Python string can hold" );
1035+ "line is longer than a Python string can hold" );
10131036 goto error ;
10141037 }
10151038 if (big_buffer == NULL ) {
@@ -1232,6 +1255,7 @@ static PyMethodDef file_methods[] = {
12321255 {"tell" , (PyCFunction )file_tell , 0 },
12331256 {"readinto" , (PyCFunction )file_readinto , 0 },
12341257 {"readlines" , (PyCFunction )file_readlines , 1 },
1258+ {"xreadlines" , (PyCFunction )file_xreadlines , 1 },
12351259 {"writelines" , (PyCFunction )file_writelines , 0 },
12361260 {"flush" , (PyCFunction )file_flush , 0 },
12371261 {"close" , (PyCFunction )file_close , 0 },
0 commit comments