diff Modules/cStringIO.c @ 30097:1c4d19b9baac 2.3

SF bug #770485: cStringIO does not set closed attr
author Raymond Hettinger <python@rcn.com>
date Fri, 08 Aug 2003 12:22:30 +0000
parents 0ea5991f6edb
children 29032f37dc8f 88c1e17ceffc
line wrap: on
line diff
--- a/Modules/cStringIO.c	Fri Aug 08 11:05:59 2003 +0000
+++ b/Modules/cStringIO.c	Fri Aug 08 12:22:30 2003 +0000
@@ -88,6 +88,22 @@
 }
 
 static PyObject *
+IO_get_closed(IOobject *self, void *closure)
+{
+	PyObject *result = Py_False;
+
+	if (self->buf == NULL)
+		result = Py_True;
+	Py_INCREF(result);
+	return result;
+}
+
+static PyGetSetDef file_getsetlist[] = {
+	{"closed", (getter)IO_get_closed, NULL, "True if the file is closed"},
+	{0},
+};
+
+static PyObject *
 IO_flush(IOobject *self, PyObject *unused) {
 
         UNLESS (IO__opencheck(self)) return NULL;
@@ -455,6 +471,7 @@
 static PyMemberDef O_memberlist[] = {
 	{"softspace",	T_INT,	offsetof(Oobject, softspace),	0,
 	 "flag indicating that a space needs to be printed; used by print"},
+	 /* getattr(f, "closed") is implemented without this table */
 	{NULL} /* Sentinel */
 };
 
@@ -498,7 +515,8 @@
   PyObject_SelfIter,		/*tp_iter */
   (iternextfunc)IO_iternext,	/*tp_iternext */
   O_methods,			/*tp_methods */
-  O_memberlist			/*tp_members */
+  O_memberlist,			/*tp_members */
+  file_getsetlist,		/*tp_getset */
 };
 
 static PyObject *
@@ -614,7 +632,9 @@
   0,					/* tp_weaklistoffset */
   PyObject_SelfIter,			/* tp_iter */
   (iternextfunc)IO_iternext,		/* tp_iternext */
-  I_methods				/* tp_methods */
+  I_methods,				/* tp_methods */
+  0,					/* tp_members */
+  file_getsetlist,			/* tp_getset */
 };
 
 static PyObject *