diff options
author | Martin v. Löwis <martin@v.loewis.de> | 2000-09-19 11:06:46 (GMT) |
---|---|---|
committer | Martin v. Löwis <martin@v.loewis.de> | 2000-09-19 11:06:46 (GMT) |
commit | c912a3a8fd353fab8d075f0d449703b9174ec2b1 (patch) | |
tree | a8da7f91c5b350d114a0112bee76d7b58da7a948 /Modules | |
parent | e84b74039bb28b6ae7e4e9291566ee7f13532f93 (diff) | |
download | cpython-c912a3a8fd353fab8d075f0d449703b9174ec2b1.zip cpython-c912a3a8fd353fab8d075f0d449703b9174ec2b1.tar.gz cpython-c912a3a8fd353fab8d075f0d449703b9174ec2b1.tar.bz2 |
Implement readlines function. Closes Bug #110686.
Diffstat (limited to 'Modules')
-rw-r--r-- | Modules/cStringIO.c | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/Modules/cStringIO.c b/Modules/cStringIO.c index 749ebcb..4341a8f 100644 --- a/Modules/cStringIO.c +++ b/Modules/cStringIO.c @@ -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__}, |