summaryrefslogtreecommitdiffstats
path: root/Python/pylifecycle.c
diff options
context:
space:
mode:
authorVictor Stinner <vstinner@redhat.com>2018-08-28 15:27:36 (GMT)
committerGitHub <noreply@github.com>2018-08-28 15:27:36 (GMT)
commitd500e5307aec9c5d535f66d567fadb9c587a9a36 (patch)
tree37f95130926a65be9419683aca896b3dcfcfceee /Python/pylifecycle.c
parent5cb258950ce9b69b1f65646431c464c0c17b1510 (diff)
downloadcpython-d500e5307aec9c5d535f66d567fadb9c587a9a36.zip
cpython-d500e5307aec9c5d535f66d567fadb9c587a9a36.tar.gz
cpython-d500e5307aec9c5d535f66d567fadb9c587a9a36.tar.bz2
bpo-34403: On HP-UX, force ASCII for C locale (GH-8969)
On HP-UX with C or POSIX locale, sys.getfilesystemencoding() now returns "ascii" instead of "roman8" (when the UTF-8 Mode is disabled and the C locale is not coerced). nl_langinfo(CODESET) announces "roman8" whereas it uses the Latin1 encoding in practice.
Diffstat (limited to 'Python/pylifecycle.c')
-rw-r--r--Python/pylifecycle.c30
1 files changed, 17 insertions, 13 deletions
diff --git a/Python/pylifecycle.c b/Python/pylifecycle.c
index 28704c1..cc64cf9 100644
--- a/Python/pylifecycle.c
+++ b/Python/pylifecycle.c
@@ -1576,21 +1576,25 @@ initfsencoding(PyInterpreterState *interp)
Py_FileSystemDefaultEncodeErrors = "surrogatepass";
}
#else
- if (Py_FileSystemDefaultEncoding == NULL &&
- interp->core_config.utf8_mode)
- {
- Py_FileSystemDefaultEncoding = "utf-8";
- Py_HasFileSystemDefaultEncoding = 1;
- }
- else if (Py_FileSystemDefaultEncoding == NULL) {
- Py_FileSystemDefaultEncoding = get_locale_encoding();
- if (Py_FileSystemDefaultEncoding == NULL) {
- return _Py_INIT_ERR("Unable to get the locale encoding");
+ if (Py_FileSystemDefaultEncoding == NULL) {
+ if (interp->core_config.utf8_mode) {
+ Py_FileSystemDefaultEncoding = "utf-8";
+ Py_HasFileSystemDefaultEncoding = 1;
+ }
+ else if (_Py_GetForceASCII()) {
+ Py_FileSystemDefaultEncoding = "ascii";
+ Py_HasFileSystemDefaultEncoding = 1;
}
+ else {
+ Py_FileSystemDefaultEncoding = get_locale_encoding();
+ if (Py_FileSystemDefaultEncoding == NULL) {
+ return _Py_INIT_ERR("Unable to get the locale encoding");
+ }
- Py_HasFileSystemDefaultEncoding = 0;
- interp->fscodec_initialized = 1;
- return _Py_INIT_OK();
+ Py_HasFileSystemDefaultEncoding = 0;
+ interp->fscodec_initialized = 1;
+ return _Py_INIT_OK();
+ }
}
#endif