Hi!
Custom strcoll() is best approach, but if don't need it, I think writing
README is enough. Locale tests are not in regressoin test, so everyone
should be happy. I didn't include locale tests in regression test because:
1) not so many people need locale support
2) anyway there are so many locale problems that regression test will fail
for many testers. Initially I thought "locale problems" are only in locale data, but your
investigation reveals there are broken locale function out there, too.
On Thu, 19 Nov 1998, Pedro J. Lobo wrote:
> Well, after a bit of investigation, now I know where the problem is. When
> you do a case sensitive comparison, 'A' is considered "smaller" than 'a'.
> Except, of course, if you use Digital's strcoll() (agh!). The comparison
> when locale is enabled isn't case insensitive. Simply, the "sensitivity"
> is inverted: 'A' is considered *greater* than 'a' (but not equal, as I
> first thought). When you use the 'C' locale (that is, no locale), then the
> output of strcmp() and strcoll() is the same.
>
> So, this is indeed a Digital Unix problem. I've made the same tests under
> FreeBSD, and they work as expected on it.
>
> The next question is what to do now. I will send a message to Digital so
> they can fix this bug in future releases, but what do I do in the
> meantime? The problem is not dangerous except if you rely on upper-case
> letters being ordered before lower-case. I could make a custom "expected"
> output so that the regression tests do not fail, or we could simply write
> a "README.DigitalUnix" telling the story. Writing a custom strcoll() seems
> a bit overkill. What do you think?
Oleg.
---- Oleg Broytmann National Research Surgery Centre http://sun.med.ru/~phd/ Programmers don't die, they
justGOSUB without RETURN.