summaryrefslogtreecommitdiff
path: root/opcode.h
diff options
context:
space:
mode:
authorKarl Williamson <khw@cpan.org>2022-09-03 14:49:52 -0600
committerKarl Williamson <khw@cpan.org>2022-09-07 12:11:42 -0600
commitec18fac0008c98267fc560f7023d1d11703ed66d (patch)
tree36010312de8ebed3492df4154e97290913e1fcab /opcode.h
parentd8e250fa2b45c62809ba490260a7de1930f7486f (diff)
downloadperl-ec18fac0008c98267fc560f7023d1d11703ed66d.tar.gz
locale.c: Don't ever use system LC_ALL
This fixes #20231 LC_ALL is a compendium of the individual locale categories, such as LC_CTYPE, LC_NUMERIC, .... When all categories are in the same locale, it acts just like an individual category. But when the categories are not in the same locale, some means must be used to indicate that. Platforms differ in how they represent this. Alpine uses: a;b;c;d;e;f where each letter is replaced by the correct locale for a given category. Which category is in which position is deterministic, and platform-specific. Other platforms separate by a '/'. And glibc uses a more informative format: LC_CTYPE=a;LC_NUMBERIC=b; ... This has the advantage that it's obvious to the reader what is what, and the order in the string is irrelevant. It might be possible, but painful, for a Configure probe to figure out what the syntax is for the current platform. I chose not to do that. A platform might come along with a novel syntax unanticipated by whatever probe we came up with. Instead, perl uses the glibc format internally, and when it needs to get or set LC_ALL from the system, it loops through each category individually, so that by the time it has done all of them, LC_ALL will have been implicitly handled. The breaking commit a7ff7ac failed to do that.
Diffstat (limited to 'opcode.h')
0 files changed, 0 insertions, 0 deletions