[RFA/libiberty] Darwin has case-insensitive filesystems
Corinna Vinschen
vinschen@redhat.com
Wed Jun 15 21:11:00 GMT 2011
On Jun 15 20:27, Eli Zaretskii wrote:
> > Date: Wed, 15 Jun 2011 10:22:36 +0200
> > From: Corinna Vinschen <...>
> > Talking about case-insensitive comparison, the filename_cmp and
> > filename_ncmp functions don't work for multibyte codesets, only for
> > singlebyte codesets. Given that UTF-8 is standard nowadays, shouldn't
> > these functions be replaced with multibyte-aware versions?
>
> I agree, but if we go that way, shouldn't we support UTF-16, which is
> used by the native Windows APIs? Windows does not use UTF-8 for file
> names.
I don't think so. UTF-16 is Windows' wchar_t (or WCHAR) codeset, but
the applications calling the libiberty functions are using the char
datatype with single- or multibyte codesets.
If the filename_cmp function converts the multibyte input strings
to wchar_t and compares the wide char strings case insensitive(*),
they would use UTF-16 under the hood on Windows anyway.
(*) As proposed in
http://sourceware.org/ml/gdb-patches/2011-06/msg00210.html,
basically like this:
#ifdef _WIN32
#define wcscasecmp _wcsicmp
#endif
mbstowcs (wide_a, a);
mbstowcs (wide_b, b);
return wcscasecmp (wide_a, wide_b);
Corinna
--
Corinna Vinschen
Cygwin Project Co-Leader
Red Hat
More information about the Gcc-patches
mailing list