summaryrefslogtreecommitdiffstats
path: root/Modules
diff options
context:
space:
mode:
authorMartin v. Löwis <martin@v.loewis.de>2000-09-19 11:06:46 (GMT)
committerMartin v. Löwis <martin@v.loewis.de>2000-09-19 11:06:46 (GMT)
commitc912a3a8fd353fab8d075f0d449703b9174ec2b1 (patch)
treea8da7f91c5b350d114a0112bee76d7b58da7a948 /Modules
parente84b74039bb28b6ae7e4e9291566ee7f13532f93 (diff)
downloadcpython-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.c36
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__},