RFC: Locale-independent case-insensitive string comparison
fgouget at codeweavers.com
Mon Sep 24 06:01:01 CDT 2012
diff --git a/dlls/wininet/http.c b/dlls/wininet/http.c
index 28f82a3..f465ad7 100644
@@ -640,7 +640,7 @@ static void HTTP_FixURL(http_request_t *request)
- if(CSTR_EQUAL != CompareStringW( LOCALE_SYSTEM_DEFAULT, NORM_IGNORECASE,
+ if(CSTR_EQUAL != CompareStringW( LOCALE_INVARIANT, NORM_IGNORECASE,
request->path, strlenW(request->path), szHttp, strlenW(szHttp) )
&& request->path != '/') /* not an absolute path ?? --> fix it !! */
In this code snippet it feels wrong to have this string comparison depend on the system
locale, which in Wine's case would come from the user's Unix locale.
Isn't this a case where LOCALE_INVARIANT would be better?
However I have not found a case where this makes a difference anyway,
either with 'http:' or with 'file:'. That is, 'file:' always matches
'FILE:', even in Turkish, as long as I don't use NORM_LINGUISTIC_CASING.
Conversely, 'fîle:' is different from 'FILE:' no matter what.
Once I have a CompareString() test-case I can make some for UrlIs(),
PathCreateFormURL(), possibly ShellExecute(), etc.
Francois Gouget <fgouget at codeweavers.com>
More information about the wine-devel