[Python-checkins] r43581 - in python/trunk: Misc/NEWS Python/pythonrun.c Python/sysmodule.c

martin.v.loewis python-checkins at python.org
Mon Apr 3 12:56:50 CEST 2006


Author: martin.v.loewis
Date: Mon Apr  3 12:56:49 2006
New Revision: 43581

Modified:
   python/trunk/Misc/NEWS
   python/trunk/Python/pythonrun.c
   python/trunk/Python/sysmodule.c
Log:
Bug #1421664: Set sys.stderr.encoding

Modified: python/trunk/Misc/NEWS
==============================================================================
--- python/trunk/Misc/NEWS	(original)
+++ python/trunk/Misc/NEWS	Mon Apr  3 12:56:49 2006
@@ -12,6 +12,9 @@
 Core and builtins
 -----------------
 
+- Bug #1421664: sys.stderr.encoding is now set to the same value as
+  sys.stdout.encoding.
+
 - __import__ accepts keyword arguments.
 
 - Patch #1460496: round() now accepts keyword arguments.

Modified: python/trunk/Python/pythonrun.c
==============================================================================
--- python/trunk/Python/pythonrun.c	(original)
+++ python/trunk/Python/pythonrun.c	Mon Apr  3 12:56:49 2006
@@ -281,6 +281,16 @@
 		}
 		Py_XDECREF(sys_isatty);
 
+		sys_stream = PySys_GetObject("stderr");
+		sys_isatty = PyObject_CallMethod(sys_stream, "isatty", "");
+		if (!sys_isatty)
+			PyErr_Clear();
+		if(sys_isatty && PyObject_IsTrue(sys_isatty)) {
+			if (!PyFile_SetEncoding(sys_stream, codeset))
+				Py_FatalError("Cannot set codeset of stderr");
+		}
+		Py_XDECREF(sys_isatty);
+
 		if (!Py_FileSystemDefaultEncoding)
 			Py_FileSystemDefaultEncoding = codeset;
 		else

Modified: python/trunk/Python/sysmodule.c
==============================================================================
--- python/trunk/Python/sysmodule.c	(original)
+++ python/trunk/Python/sysmodule.c	Mon Apr  3 12:56:49 2006
@@ -1069,6 +1069,11 @@
 		if (!PyFile_SetEncoding(sysout, buf))
 			return NULL;
 	}
+	if(isatty(_fileno(stderr))) {
+		sprintf(buf, "cp%d", GetConsoleOutputCP());
+		if (!PyFile_SetEncoding(syserr, buf))
+			return NULL;
+	}
 #endif
 
 	PyDict_SetItemString(sysdict, "stdin", sysin);


More information about the Python-checkins mailing list