_PathLocale and __collate_load_tables()

Corinna Vinschen vinschen@redhat.com
Mon Nov 21 12:23:44 GMT 2022

On Nov 18 06:06, Stefan Tauner wrote:
> Hi,
> there is a char *_PathLocale = NULL; in ./newlib/libc/locale/locale.c
> that is only read in __collate_load_tables()
> in ./newlib/libc/posix/collate.c
> I have looked at the git history and even googled but I couldn't figure
> out at all what the variable is supposed to be used for. Half of
> __collate_load_tables() would be unreachable if _PathLocale is never
> non-null. And then I looked at where __collate_load_tables() is used...
> and it seems to be not used within the library itself at all, and from
> the __ prefix I'd assume it's not really meant to be used externally
> (although it has a prototype in collate.h).
> Is this all just dead code or what am I missing? :)

Yes, it's basically dead code.

Orignally this code was added for some reason to support locales in a
minmial BSD-like way, but has never been really used apart from minimal
LC_CTYPE and LC_MESSAGE handling for the "C" locale.  If it was meant to
have a future at one point and what this future would have entailed,
isn't clear to me.

A couple of years ago I added Cygwin-specific code to allow locale
handling by using internal Windows functionality, but I left the rest of
the code intact, so as not to break something if somebody would take a
stab at it for non-Cygwin targets.

I have a vague recollection that I inspected the code once, and found
that it was unsuable for some reason and needs a resolute helping hand.


More information about the Newlib mailing list