@@ -449,9 +449,21 @@ static int utf8codepointcmp(const PHYSFS_uint32 cp1, const PHYSFS_uint32 cp2)
PHYSFS_uint32 folded1[3 ], folded2[3 ];
locate_case_fold_mapping (cp1, folded1);
locate_case_fold_mapping (cp2, folded2);
return ( (folded1[0 ] == folded2[0 ]) &&
(folded1[1 ] == folded2[1 ]) &&
(folded1[2 ] == folded2[2 ]) );
if (folded1[0 ] < folded2[0 ])
return -1 ;
else if (folded1[0 ] > folded2[0 ])
return 1 ;
else if (folded1[1 ] < folded2[1 ])
return -1 ;
else if (folded1[1 ] > folded2[1 ])
return 1 ;
else if (folded1[2 ] < folded2[2 ])
return -1 ;
else if (folded1[2 ] > folded2[2 ])
return 1 ;
return 0 ; /* complete match. */
} /* utf8codepointcmp */
@@ -461,8 +473,11 @@ int __PHYSFS_utf8stricmp(const char *str1, const char *str2)
{
const PHYSFS_uint32 cp1 = utf8codepoint (&str1);
const PHYSFS_uint32 cp2 = utf8codepoint (&str2);
if (!utf8codepointcmp (cp1, cp2)) break ;
if (cp1 == 0 ) return 1 ;
const int rc = utf8codepointcmp (cp1, cp2);
if (rc != 0 )
return rc;
else if (cp1 == 0 )
break ; /* complete match. */
} /* while */
return 0 ;
@@ -475,12 +490,15 @@ int __PHYSFS_utf8strnicmp(const char *str1, const char *str2, PHYSFS_uint32 n)
{
const PHYSFS_uint32 cp1 = utf8codepoint (&str1);
const PHYSFS_uint32 cp2 = utf8codepoint (&str2);
if (!utf8codepointcmp (cp1, cp2)) return 0 ;
if (cp1 == 0 ) return 1 ;
const int rc = utf8codepointcmp (cp1, cp2);
if (rc != 0 )
return rc;
else if (cp1 == 0 )
return 0 ;
n--;
} /* while */
return 1 ; /* matched to n chars. */
return 0 ; /* matched to n chars. */
} /* __PHYSFS_utf8strnicmp */