mirror of
https://github.com/python/cpython.git
synced 2025-12-08 02:08:20 +00:00
Implement readlines function. Closes Bug #110686.
This commit is contained in:
parent
e84b74039b
commit
c912a3a8fd
1 changed files with 36 additions and 0 deletions
|
|
@ -224,6 +224,40 @@ O_readline(Oobject *self, PyObject *args) {
|
||||||
return PyString_FromStringAndSize(output, n);
|
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__[] =
|
static char O_write__doc__[] =
|
||||||
"write(s) -- Write a string to the file"
|
"write(s) -- Write a string to the file"
|
||||||
"\n\nNote (hack:) writing None resets the buffer"
|
"\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__},
|
{"write", (PyCFunction)O_write, METH_VARARGS, O_write__doc__},
|
||||||
{"read", (PyCFunction)O_read, METH_VARARGS, O_read__doc__},
|
{"read", (PyCFunction)O_read, METH_VARARGS, O_read__doc__},
|
||||||
{"readline", (PyCFunction)O_readline, METH_VARARGS, O_readline__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__},
|
{"reset", (PyCFunction)O_reset, METH_VARARGS, O_reset__doc__},
|
||||||
{"seek", (PyCFunction)O_seek, METH_VARARGS, O_seek__doc__},
|
{"seek", (PyCFunction)O_seek, METH_VARARGS, O_seek__doc__},
|
||||||
{"tell", (PyCFunction)O_tell, METH_VARARGS, O_tell__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[] = {
|
static struct PyMethodDef I_methods[] = {
|
||||||
{"read", (PyCFunction)O_read, METH_VARARGS, O_read__doc__},
|
{"read", (PyCFunction)O_read, METH_VARARGS, O_read__doc__},
|
||||||
{"readline", (PyCFunction)O_readline, METH_VARARGS, O_readline__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__},
|
{"reset", (PyCFunction)O_reset, METH_VARARGS, O_reset__doc__},
|
||||||
{"seek", (PyCFunction)I_seek, METH_VARARGS, O_seek__doc__},
|
{"seek", (PyCFunction)I_seek, METH_VARARGS, O_seek__doc__},
|
||||||
{"tell", (PyCFunction)O_tell, METH_VARARGS, O_tell__doc__},
|
{"tell", (PyCFunction)O_tell, METH_VARARGS, O_tell__doc__},
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue