Am Freitag, den 08.02.2013, 15:01 -0500 schrieb Rich Felker: > It's part of the "xlocale" set of interfaces that seem to have > originated with glibc or maybe Sun, and later made it into POSIX 2008. > It allows you to pass a locale_t argument to get the results in a > non-default locale, but you can instead just request the current > locale. really bizarre that they didn't estimate it necessary to document it > > And I actually use this in P99 to provide the C11 Annex K interface > > strerror_s, which is much closer to strerror_r than strerror_l. Well, > > we now have > > Are you sure this is the best interface to provide to applications? the best I don't know, but it is now a standard and provides runtime-constraint handlers, and basic function parameter checking, which are nice features. (Just forget about the official title "Bounds checking interfaces".) > I'd instead provide a thread-safe interface with an interface > identical to strerror, since that's by far the easiest to use. > > If on the other hand you want to provide Annex K in principle, I do > that's > another matter, but there's a fairly large portion of it that can't be > provided portably on top of an existing libc (mainly the scanf or > printf stuff, I think). yes, these don't work and since P99 isn't a library but only wrappers I can't provide that. But for the most of it the wrappers are quite simple and provided by P99. > > strerror C, POSIX > > strerror_r POSIX > > strerror_l POSIX > > strerror_s C > > > > superbe. Again a case where a liaison between the C committee and the > > POSIX could have helped. > > The problem seems to be just that C didn't have threads (and thus no > need for strerror_r or strerror_l) until C11. But now they have threads, and so at the same moment of introducing them they could have equipped them with a semantic (POSIX comes into mind :) and used other interfaces from POSIX that already exist. And, also I think that even before the _r version would have been a good thing. I think the _r stands for reentrant, and for a function that you would typically like to use in error or signal handlers, this is a nice feature. Jens -- :: INRIA Nancy Grand Est :: http://www.loria.fr/~gustedt/ :: :: AlGorille ::::::::::::::: office Nancy : +33 383593090 :: :: ICube :::::::::::::: office Strasbourg : +33 368854536 :: :: ::::::::::::::::::::::::::: gsm France : +33 651400183 :: :: :::::::::::::::::::: gsm international : +49 15737185122 ::