From 031c4bfadb69feeda82ce886d6b0cadc638d2e1e Mon Sep 17 00:00:00 2001 From: Erik Bray Date: Fri, 27 Oct 2017 11:46:03 +0200 Subject: [PATCH] bpo-31877: Add _Py_LegacyLocaleDetected and _PyCoerceLegacyLocale to pylifecycle.h (GH-4134) Only declaring these as interns inside the CLI's main C module caused build problems on some platforms (notably Cygwin), so this switches them to a regular underscore prefixed "private" C API declaration. --- Include/pylifecycle.h | 6 ++++++ Programs/python.c | 24 ++++++++++-------------- 2 files changed, 16 insertions(+), 14 deletions(-) diff --git a/Include/pylifecycle.h b/Include/pylifecycle.h index e1737b5972b..8bbce7fd61d 100644 --- a/Include/pylifecycle.h +++ b/Include/pylifecycle.h @@ -133,6 +133,12 @@ PyAPI_FUNC(int) _PyOS_URandom(void *buffer, Py_ssize_t size); PyAPI_FUNC(int) _PyOS_URandomNonblock(void *buffer, Py_ssize_t size); #endif /* !Py_LIMITED_API */ +/* Legacy locale support */ +#ifndef Py_LIMITED_API +PyAPI_FUNC(void) _Py_CoerceLegacyLocale(void); +PyAPI_FUNC(int) _Py_LegacyLocaleDetected(void); +#endif + #ifdef __cplusplus } #endif diff --git a/Programs/python.c b/Programs/python.c index 03f8295045c..4f6b9198c85 100644 --- a/Programs/python.c +++ b/Programs/python.c @@ -15,20 +15,6 @@ wmain(int argc, wchar_t **argv) } #else -/* Access private pylifecycle helper API to better handle the legacy C locale - * - * The legacy C locale assumes ASCII as the default text encoding, which - * causes problems not only for the CPython runtime, but also other - * components like GNU readline. - * - * Accordingly, when the CLI detects it, it attempts to coerce it to a - * more capable UTF-8 based alternative. - * - * See the documentation of the PYTHONCOERCECLOCALE setting for more details. - * - */ -extern int _Py_LegacyLocaleDetected(void); -extern void _Py_CoerceLegacyLocale(void); int main(int argc, char **argv) @@ -78,6 +64,16 @@ main(int argc, char **argv) setlocale(LC_ALL, ""); #endif + /* The legacy C locale assumes ASCII as the default text encoding, which + * causes problems not only for the CPython runtime, but also other + * components like GNU readline. + * + * Accordingly, when the CLI detects it, it attempts to coerce it to a + * more capable UTF-8 based alternative. + * + * See the documentation of the PYTHONCOERCECLOCALE setting for more + * details. + */ if (_Py_LegacyLocaleDetected()) { _Py_CoerceLegacyLocale(); }