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);
|
||||
#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
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue