On Tue, Aug 15, 2017 at 09:28:26PM +0200, Bruno Haible wrote: > Which is pretty senseless, since it forces programs to use functions that take > an explicit locale argument (fprintf_l, strfmon_l, and similar). The point > of standardizing duplocale(), newlocale(), uselocale() was to *eliminate* > the need for these non-standard *_l functions.
uselocale() is fundamentally broken from a design perspective. It can't be implemented without breaking ABIs. It breaks expectations of existing applications in funny ways and it is highly undesirable from a performance spective. It is also by itself useless as building block as pretty much any higher level runtime like C++ STL wants to have explicit control over locales. > And on top of that, in NetBSD 7.0, > - strfmon_l is not implemented, This one slipped through. I did a full audit for any locale-sensitive function, but that one I missed. Thanks for finding it :) > - duplocale(LC_GLOBAL_LOCALE) is broken. I think this is a completely unrelated bug where thousand groupers were handled incorrectly. Test certainly works on current. Joerg