Patch #788404: ignore "b" and "t" mode modifiers in posix_popen.
Fixes #703198. Backported to 2.3.
diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c
index a882023..9c58c9d 100644
--- a/Modules/posixmodule.c
+++ b/Modules/posixmodule.c
@@ -4348,6 +4348,11 @@
 	PyObject *f;
 	if (!PyArg_ParseTuple(args, "s|si:popen", &name, &mode, &bufsize))
 		return NULL;
+	/* Strip mode of binary or text modifiers */
+	if (strcmp(mode, "rb") == 0 || strcmp(mode, "rt") == 0)
+		mode = "r";
+	else if (strcmp(mode, "wb") == 0 || strcmp(mode, "wt") == 0)
+		mode = "w";
 	Py_BEGIN_ALLOW_THREADS
 	fp = popen(name, mode);
 	Py_END_ALLOW_THREADS