Sujet : Re: Sorting problem with Unix sort(1) with UTF-8 punctuation characters - locale issue
De : janis_papanagnou+ng (at) *nospam* hotmail.com (Janis Papanagnou)
Groupes : comp.unix.shellDate : 20. Feb 2025, 06:37:01
Autres entêtes
Organisation : A noiseless patient Spider
Message-ID : <vp6f1v$2n5hh$1@dont-email.me>
References : 1 2
User-Agent : Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.8.0
On 19.02.2025 21:22, Christian Weisgerber wrote:
My working hypothesis would be that setting LC_TIME to a nonexistent
locale causes an error that invalidates the _whole_ locale setting
and causes a fallback to a default setting, likely the "C" locale.
One thing I've forgotten to mention here; if an unknown locale is used
I get an error "...: unknown locale". But it seems to be sufficient if
the first part (e.g. "de_DE") is existing to not create a diagnostic.
Suffixes as in "de_DE.xyz" are not notified as errors. So, yes, some
fall-back/default must be in place since the commands are executed
anyway, even with a notified wrong locale. I'd expect that "de_DE.xyz"
would fall back to "de_DE", but that is speculation. (A peek into the
'strace' differences didn't really enlighten me.[*])
Janis
[*] For LC_ALL=
de_DE.xyz@abc for example:
open("/usr/lib/locale/locale-archive", O_RDONLY|O_CLOEXEC) = 3
open("/usr/share/locale/locale.alias", O_RDONLY|O_CLOEXEC) = 3
open("/usr/lib/locale/
de_DE.xyz@abc/LC_IDENTIFICATION",
O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/usr/lib/locale/
de_DE@abc/LC_IDENTIFICATION", O_RDONLY|O_CLOEXEC)
= -1 ENOENT (No such file or directory)
open("/usr/lib/locale/
de.xyz@abc/LC_IDENTIFICATION", O_RDONLY|O_CLOEXEC)
= -1 ENOENT (No such file or directory)
open("/usr/lib/locale/
de@abc/LC_IDENTIFICATION", O_RDONLY|O_CLOEXEC) =
-1 ENOENT (No such file or directory)
open("/usr/lib/locale/de_DE.xyz/LC_IDENTIFICATION", O_RDONLY|O_CLOEXEC)
= -1 ENOENT (No such file or directory)
open("/usr/lib/locale/de_DE/LC_IDENTIFICATION", O_RDONLY|O_CLOEXEC) = -1
ENOENT (No such file or directory)
open("/usr/lib/locale/de.xyz/LC_IDENTIFICATION", O_RDONLY|O_CLOEXEC) =
-1 ENOENT (No such file or directory)
open("/usr/lib/locale/de/LC_IDENTIFICATION", O_RDONLY|O_CLOEXEC) = -1
ENOENT (No such file or directory)
open("/usr/share/locale-langpack/
de_DE.xyz@abc/LC_IDENTIFICATION",
O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/usr/share/locale-langpack/
de_DE@abc/LC_IDENTIFICATION",
O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/usr/share/locale-langpack/
de.xyz@abc/LC_IDENTIFICATION",
O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/usr/share/locale-langpack/
de@abc/LC_IDENTIFICATION",
O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/usr/share/locale-langpack/de_DE.xyz/LC_IDENTIFICATION",
O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/usr/share/locale-langpack/de_DE/LC_IDENTIFICATION",
O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/usr/share/locale-langpack/de.xyz/LC_IDENTIFICATION",
O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/usr/share/locale-langpack/de/LC_IDENTIFICATION",
O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)