diff options
author | Martin v. Löwis <martin@v.loewis.de> | 2006-04-03 10:56:49 (GMT) |
---|---|---|
committer | Martin v. Löwis <martin@v.loewis.de> | 2006-04-03 10:56:49 (GMT) |
commit | ea62d2535f6160d5b4306ea060f5da05cfa7e9ab (patch) | |
tree | d3ce394a4d53a281d208995811397a247bb764d6 | |
parent | cf0a2a8576b4780263cfeb96d081eea06a1ebe92 (diff) | |
download | cpython-ea62d2535f6160d5b4306ea060f5da05cfa7e9ab.zip cpython-ea62d2535f6160d5b4306ea060f5da05cfa7e9ab.tar.gz cpython-ea62d2535f6160d5b4306ea060f5da05cfa7e9ab.tar.bz2 |
Bug #1421664: Set sys.stderr.encoding
-rw-r--r-- | Misc/NEWS | 3 | ||||
-rw-r--r-- | Python/pythonrun.c | 10 | ||||
-rw-r--r-- | Python/sysmodule.c | 5 |
3 files changed, 18 insertions, 0 deletions
@@ -12,6 +12,9 @@ What's New in Python 2.5 alpha 1? 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. diff --git a/Python/pythonrun.c b/Python/pythonrun.c index 4c8c517..1aa6930 100644 --- a/Python/pythonrun.c +++ b/Python/pythonrun.c @@ -281,6 +281,16 @@ Py_InitializeEx(int install_sigs) } 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 diff --git a/Python/sysmodule.c b/Python/sysmodule.c index dfa6ac8..4a52742 100644 --- a/Python/sysmodule.c +++ b/Python/sysmodule.c @@ -1069,6 +1069,11 @@ _PySys_Init(void) 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); |