Both - Merge signal lists
[tpg/acess2.git] / KernelLand / Kernel / utf16.c
index 514fc7c..1101fb4 100644 (file)
@@ -5,9 +5,10 @@
  * utf16.c
  * - UTF-16 Translation/Manipulation
  */
-#define DEBUG  1
+#define DEBUG  0
 #include <acess.h>
 #include <utf16.h>
+#include <ctype.h>
 
 int ReadUTF16(const Uint16 *Str16, Uint32 *Codepoint)
 {
@@ -48,7 +49,7 @@ size_t UTF16_ConvertToUTF8(size_t DestLen, char *Dest, size_t SrcLen, const Uint
        return len;
 }
 
-int UTF16_CompareWithUTF8(size_t Str16Len, const Uint16 *Str16, const char *Str8)
+int UTF16_CompareWithUTF8Ex(size_t Str16Len, const Uint16 *Str16, const char *Str8, int bCaseInsensitive)
 {
         int    pos16 = 0, pos8 = 0;
        const Uint8     *str8 = (const Uint8 *)Str8;
@@ -58,6 +59,10 @@ int UTF16_CompareWithUTF8(size_t Str16Len, const Uint16 *Str16, const char *Str8
                Uint32  cp8, cp16;
                pos16 += ReadUTF16(Str16+pos16, &cp16);
                pos8 += ReadUTF8(str8 + pos8, &cp8);
+               if( bCaseInsensitive ) {
+                       cp16 = toupper(cp16);
+                       cp8 = toupper(cp8);
+               }
        
                LOG("cp16 = %x, cp8 = %x", cp16, cp8);
                if(cp16 == cp8) continue ;
@@ -77,3 +82,13 @@ int UTF16_CompareWithUTF8(size_t Str16Len, const Uint16 *Str16, const char *Str8
                return -1;
 }
 
+int UTF16_CompareWithUTF8(size_t Str16Len, const Uint16 *Str16, const char *Str8)
+{
+       return UTF16_CompareWithUTF8Ex(Str16Len, Str16, Str8, 0);
+}
+
+int UTF16_CompareWithUTF8CI(size_t Str16Len, const Uint16 *Str16, const char *Str8)
+{
+       return UTF16_CompareWithUTF8Ex(Str16Len, Str16, Str8, 1);
+}
+

UCC git Repository :: git.ucc.asn.au