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.
This commit is contained in:
parent
2f3d6993d7
commit
031c4bfadb
|
@ -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);
|
PyAPI_FUNC(int) _PyOS_URandomNonblock(void *buffer, Py_ssize_t size);
|
||||||
#endif /* !Py_LIMITED_API */
|
#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
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -15,20 +15,6 @@ wmain(int argc, wchar_t **argv)
|
||||||
}
|
}
|
||||||
#else
|
#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
|
int
|
||||||
main(int argc, char **argv)
|
main(int argc, char **argv)
|
||||||
|
@ -78,6 +64,16 @@ main(int argc, char **argv)
|
||||||
setlocale(LC_ALL, "");
|
setlocale(LC_ALL, "");
|
||||||
#endif
|
#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()) {
|
if (_Py_LegacyLocaleDetected()) {
|
||||||
_Py_CoerceLegacyLocale();
|
_Py_CoerceLegacyLocale();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue