From: Victor Stinner Date: Fri, 11 Jun 2010 00:36:33 +0000 (+0000) Subject: Issue #8965: initfsencoding() doesn't change the encoding on Mac OS X X-Git-Tag: v3.2a1~578 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=7f84ab59523ab7f7d7d288551a459e24718b8c7d;p=python Issue #8965: initfsencoding() doesn't change the encoding on Mac OS X File system encoding have to be hardcoded to "utf-8" on Mac OS X. r81190 introduced a regression: the encoding was changed depending on the locale. --- diff --git a/Python/pythonrun.c b/Python/pythonrun.c index 05a980085d..5b7cd20251 100644 --- a/Python/pythonrun.c +++ b/Python/pythonrun.c @@ -703,24 +703,26 @@ initfsencoding(void) #if defined(HAVE_LANGINFO_H) && defined(CODESET) char *codeset; - /* On Unix, set the file system encoding according to the - user's preference, if the CODESET names a well-known - Python codec, and Py_FileSystemDefaultEncoding isn't - initialized by other means. Also set the encoding of - stdin and stdout if these are terminals. */ - codeset = get_codeset(); - if (codeset != NULL) { - Py_FileSystemDefaultEncoding = codeset; - Py_HasFileSystemDefaultEncoding = 0; - return; - } + if (Py_FileSystemDefaultEncoding == NULL) { + /* On Unix, set the file system encoding according to the + user's preference, if the CODESET names a well-known + Python codec, and Py_FileSystemDefaultEncoding isn't + initialized by other means. Also set the encoding of + stdin and stdout if these are terminals. */ + codeset = get_codeset(); + if (codeset != NULL) { + Py_FileSystemDefaultEncoding = codeset; + Py_HasFileSystemDefaultEncoding = 0; + return; + } - PyErr_Clear(); - fprintf(stderr, - "Unable to get the locale encoding: " - "fallback to utf-8\n"); - Py_FileSystemDefaultEncoding = "utf-8"; - Py_HasFileSystemDefaultEncoding = 1; + PyErr_Clear(); + fprintf(stderr, + "Unable to get the locale encoding: " + "fallback to utf-8\n"); + Py_FileSystemDefaultEncoding = "utf-8"; + Py_HasFileSystemDefaultEncoding = 1; + } #endif /* the encoding is mbcs, utf-8 or ascii */