mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 13:41:24 +00:00 
			
		
		
		
	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
					
				
					 2 changed files with 16 additions and 14 deletions
				
			
		|  | @ -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…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Erik Bray
						Erik Bray