[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