Message329351
The discussion with Victor on https://bugs.python.org/issue34914 highlighted the fact that it's OK to use 8-bit string comparisons to check for "-E", "-I", and a "-X coerce_legacy_c_locale=0" due to the fact that all encodings used as locale encodings are sufficiently ASCII compatible for that to work as desired.
So before proceeding with merging https://github.com/python/cpython/pull/9257, I'm going to review that possibility, and see how much code it would actually add to support an extra internal helper API like:
int _Py_LegacyLocaleCoercionEnabled(int argv, char* argv[]);
That would then inspect the unprocessed 8-bit command line arguments, as well as the process environment, to determine whether or not locale coercion should be attempted, making the complete dance:
_Py_SetLocaleFromEnv(LC_CTYPE);
if (_Py_LegacyLocaleDetected() && _Py_LegacyLocaleCoercionEnabled(argc, argv))
{
_Py_CoerceLegacyLocale(&pymain.report_locale_coercion);
}
If we wanted to officially expose this for embedding apps, the API would need a bit more thought, so it probably makes sense to wait and see if the nominally-private-but-exposed-to-the-linker approach is good enough in practice. |
|
Date |
User |
Action |
Args |
2018-11-06 11:07:29 | ncoghlan | set | recipients:
+ ncoghlan, ned.deily |
2018-11-06 11:07:28 | ncoghlan | set | messageid: <1541502448.95.0.788709270274.issue34589@psf.upfronthosting.co.za> |
2018-11-06 11:07:28 | ncoghlan | link | issue34589 messages |
2018-11-06 11:07:28 | ncoghlan | create | |
|