Implement readlines function. Closes Bug #110686.

This commit is contained in:
Martin v. Löwis 2000-09-19 11:06:46 +00:00
parent e84b74039b
commit c912a3a8fd
1 changed files with 36 additions and 0 deletions

View File

@ -224,6 +224,40 @@ O_readline(Oobject *self, PyObject *args) {
return PyString_FromStringAndSize(output, n);
}
static char O_readlines__doc__[] =
"readlines() -- Read all lines"
;
static PyObject *
O_readlines(Oobject *self, PyObject *args) {
int n;
char *output;
PyObject *result, *line;
int hint = 0, length = 0;
UNLESS(PyArg_ParseTuple(args, "|i:write", &hint)) return NULL;
result = PyList_New(0);
if (!result)
return NULL;
while(1){
n = O_creadline((PyObject*)self,&output);
if (n == 0)
break;
line = PyString_FromStringAndSize (output, n);
if (!line){
Py_DECREF (result);
return NULL;
}
PyList_Append (result, line);
Py_DECREF (line);
length += n;
if (hint > 0 && length >= hint)
break;
}
return result;
}
static char O_write__doc__[] =
"write(s) -- Write a string to the file"
"\n\nNote (hack:) writing None resets the buffer"
@ -390,6 +424,7 @@ static struct PyMethodDef O_methods[] = {
{"write", (PyCFunction)O_write, METH_VARARGS, O_write__doc__},
{"read", (PyCFunction)O_read, METH_VARARGS, O_read__doc__},
{"readline", (PyCFunction)O_readline, METH_VARARGS, O_readline__doc__},
{"readlines", (PyCFunction)O_readlines, METH_VARARGS, O_readlines__doc__},
{"reset", (PyCFunction)O_reset, METH_VARARGS, O_reset__doc__},
{"seek", (PyCFunction)O_seek, METH_VARARGS, O_seek__doc__},
{"tell", (PyCFunction)O_tell, METH_VARARGS, O_tell__doc__},
@ -522,6 +557,7 @@ I_seek(Oobject *self, PyObject *args) {
static struct PyMethodDef I_methods[] = {
{"read", (PyCFunction)O_read, METH_VARARGS, O_read__doc__},
{"readline", (PyCFunction)O_readline, METH_VARARGS, O_readline__doc__},
{"readlines", (PyCFunction)O_readlines,METH_VARARGS, O_readlines__doc__},
{"reset", (PyCFunction)O_reset, METH_VARARGS, O_reset__doc__},
{"seek", (PyCFunction)I_seek, METH_VARARGS, O_seek__doc__},
{"tell", (PyCFunction)O_tell, METH_VARARGS, O_tell__doc__},