--- psiconv/trunk/lib/psiconv/unicode.c 2004/01/04 22:07:02 182 +++ psiconv/trunk/lib/psiconv/unicode.c 2004/02/02 21:56:48 193 @@ -45,7 +45,7 @@ /* 0x48 */ 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, /* 0x50 */ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, /* 0x58 */ 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, - /* 0x60 */ 0x0060, 0x0060, 0x0060, 0x0060, 0x0060, 0x0060, 0x0060, 0x0067, + /* 0x60 */ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, /* 0x68 */ 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, /* 0x70 */ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, /* 0x78 */ 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x0000, @@ -111,9 +111,9 @@ int i; if (!output) return PSICONV_E_NOMEM; - if (!(*output = malloc(sizeof(**output) * (1 + strlen(input))))) + if (!(*output = malloc(sizeof(**output) * (1 + strlen((const char *) input))))) return PSICONV_E_NOMEM; - for (i = 0; i < strlen(input); i++) + for (i = 0; i < strlen((const char *) input); i++) (*output)[i] = psiconv_unicode_from_char(config,input[i]); (*output)[i] = 0x0000; return PSICONV_E_OK; @@ -142,3 +142,35 @@ i++; return i; } + +psiconv_ucs2 *psiconv_unicode_strdup(const psiconv_ucs2 *input) +{ + psiconv_ucs2 *output; + int i = 0; + + if (!(output = malloc(sizeof(*output) * + (1 + psiconv_unicode_strlen(input))))) + return NULL; + while ((output[i] = input[i])) + i++; + return output; +} + +int psiconv_unicode_strcmp(const psiconv_ucs2 *str1, const psiconv_ucs2 *str2) +{ + int i = 0; + while (str1[i] && str2[i]) { + if (str1[i] < str2[i]) + return -1; + if (str1[i] > str2[i]) + return 1; + i++; + } + if (str1[i] < str2[i]) + return -1; + else if (str1[i] > str2[i]) + return 1; + else + return 0; +} +