- added optional bufsize argument to new popen methods.
  for the moment, this argument must be left out or set
  to -1 (only the default bufsize is supported, that is)
diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c
index c40060d..4d40c07 100644
--- a/Modules/posixmodule.c
+++ b/Modules/posixmodule.c
@@ -2155,7 +2155,7 @@
   
 	char *cmdstring;
 	char *mode = "r";
-	if (!PyArg_ParseTuple(args, "s|s:popen", &cmdstring, &mode))
+	if (!PyArg_ParseTuple(args, "s|si:popen", &cmdstring, &mode, &bufsize))
 		return NULL;
 
 	s = PyTuple_New(0);
@@ -2168,6 +2168,11 @@
 	} else
 		tm = _O_WRONLY;
 	 
+	if (bufsize != -1) {
+		PyErr_SetString(PyExc_ValueError, "bufsize must be -1");
+		return NULL;
+	}
+
 	if (*(mode+1) == 't')
 		f = _PyPopen(cmdstring, tm | _O_TEXT , POPEN_1);
 	else if (*(mode+1) == 'b')
@@ -2192,7 +2197,8 @@
   
 	char *cmdstring;
 	char *mode = "t";
-	if (!PyArg_ParseTuple(args, "s|s:popen2", &cmdstring, &mode))
+	int bufsize = -1;
+	if (!PyArg_ParseTuple(args, "s|si:popen2", &cmdstring, &mode, &bufsize))
 		return NULL;
   
 	if (*mode == 't')
@@ -2203,7 +2209,12 @@
 	} else
 		tm = _O_BINARY;
   
-	f = _PyPopen(cmdstring, tm , POPEN_2);
+	if (bufsize != -1) {
+		PyErr_SetString(PyExc_ValueError, "bufsize must be -1");
+		return NULL;
+	}
+
+	f = _PyPopen(cmdstring, tm, POPEN_2);
   
 	return f;
 }
@@ -2223,7 +2234,8 @@
   
 	char *cmdstring;
 	char *mode = "t";
-	if (!PyArg_ParseTuple(args, "s|s:Popen3", &cmdstring, &mode))
+	int bufsize = -1;
+	if (!PyArg_ParseTuple(args, "s|si:popen3", &cmdstring, &mode, &bufsize))
 		return NULL;
   
 	if (*mode == 't')
@@ -2234,6 +2246,11 @@
 	} else
 		tm = _O_BINARY;
   
+	if (bufsize != -1) {
+		PyErr_SetString(PyExc_ValueError, "bufsize must be -1");
+		return NULL;
+	}
+
 	f = _PyPopen(cmdstring, tm, POPEN_3);
   
 	return f;
@@ -2254,7 +2271,8 @@
   
 	char *cmdstring;
 	char *mode = "t";
-	if (!PyArg_ParseTuple(args, "s|s:popen4", &cmdstring, &mode))
+	int bufsize = -1;
+	if (!PyArg_ParseTuple(args, "s|si:popen4", &cmdstring, &mode, &bufsize))
 		return NULL;
   
 	if (*mode == 't')
@@ -2264,9 +2282,14 @@
 		return NULL;
 	} else
 		tm = _O_BINARY;
-  
+
+	if (bufsize != -1) {
+		PyErr_SetString(PyExc_ValueError, "bufsize must be -1");
+		return NULL;
+	}
+
 	f = _PyPopen(cmdstring, tm , POPEN_4);
-  
+
 	return f;
 }