summaryrefslogtreecommitdiff
path: root/Python
diff options
context:
space:
mode:
authorVictor Stinner <vstinner@redhat.com>2018-10-30 12:59:20 +0100
committerGitHub <noreply@github.com>2018-10-30 12:59:20 +0100
commit21220bbe65108f5a763ead24a6b572f80d84c9e2 (patch)
tree9461c9327a7b4129f2a67dd256d1e23993cc906b /Python
parent58f7bf3a892031616a6b06ef4b8d36e2ebec172b (diff)
downloadcpython-git-21220bbe65108f5a763ead24a6b572f80d84c9e2.tar.gz
bpo-34403: Fix initfsencoding() for ASCII (GH-10233)
* Add _Py_GetForceASCII(): check if Python forces the usage of ASCII in Py_DecodeLocale() and Py_EncodeLocale(). * initfsencoding() now uses ASCII if _Py_GetForceASCII() is true.
Diffstat (limited to 'Python')
-rw-r--r--Python/fileutils.c12
-rw-r--r--Python/pylifecycle.c4
2 files changed, 16 insertions, 0 deletions
diff --git a/Python/fileutils.c b/Python/fileutils.c
index e72ce543cb..1b7e6697c7 100644
--- a/Python/fileutils.c
+++ b/Python/fileutils.c
@@ -180,6 +180,18 @@ error:
return 1;
}
+
+int
+_Py_GetForceASCII(void)
+{
+ if (force_ascii == -1) {
+ force_ascii = check_force_ascii();
+ }
+ return force_ascii;
+}
+
+
+
static int
encode_ascii(const wchar_t *text, char **str,
size_t *error_pos, const char **reason,
diff --git a/Python/pylifecycle.c b/Python/pylifecycle.c
index ba4b54864f..c01b21ffeb 100644
--- a/Python/pylifecycle.c
+++ b/Python/pylifecycle.c
@@ -1615,6 +1615,10 @@ initfsencoding(PyInterpreterState *interp)
Py_FileSystemDefaultEncoding = "utf-8";
Py_HasFileSystemDefaultEncoding = 1;
}
+ else if (_Py_GetForceASCII()) {
+ Py_FileSystemDefaultEncoding = "ascii";
+ Py_HasFileSystemDefaultEncoding = 1;
+ }
else if (Py_FileSystemDefaultEncoding == NULL) {
Py_FileSystemDefaultEncoding = get_locale_encoding();
if (Py_FileSystemDefaultEncoding == NULL) {