[Python-checkins] CVS: python/dist/src/Modules cStringIO.c,2.25,2.26

Martin v. Löwis python-dev@python.org
Tue, 19 Sep 2000 04:06:50 -0700


Update of /cvsroot/python/python/dist/src/Modules
In directory slayer.i.sourceforge.net:/tmp/cvs-serv12291

Modified Files:
	cStringIO.c 
Log Message:
Implement readlines function. Closes Bug #110686.


Index: cStringIO.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Modules/cStringIO.c,v
retrieving revision 2.25
retrieving revision 2.26
diff -C2 -r2.25 -r2.26
*** cStringIO.c	2000/08/03 02:06:16	2.25
--- cStringIO.c	2000/09/19 11:06:46	2.26
***************
*** 225,228 ****
--- 225,262 ----
  }
  
+ 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"
***************
*** 391,394 ****
--- 425,429 ----
    {"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__},
***************
*** 523,526 ****
--- 558,562 ----
    {"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__},