]> granicus.if.org Git - python/commitdiff
Issue #8965: initfsencoding() doesn't change the encoding on Mac OS X
authorVictor Stinner <victor.stinner@haypocalc.com>
Fri, 11 Jun 2010 00:36:33 +0000 (00:36 +0000)
committerVictor Stinner <victor.stinner@haypocalc.com>
Fri, 11 Jun 2010 00:36:33 +0000 (00:36 +0000)
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.

Python/pythonrun.c

index 05a980085dd598ba26a147455e332d60c777b7c3..5b7cd202513fb6f57e8e3c4c36224f2e622470f3 100644 (file)
@@ -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 */