- Timestamp:
- Jan 23, 2004, 3:56:14 AM (22 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/emx/src/lib/locale/__convcp.c
-
Property cvs2svn:cvs-rev
changed from
1.3
to1.4
r1021 r1022 16 16 void __convert_codepage (const char *cp, UniChar *ucp) 17 17 { 18 size_t sl = 0; 18 static const struct _cp_aliases 19 { 20 const char *pszAlias; 21 const char *pszIBM; 22 } aAliases[] = 23 { /* pszAlias -> pszIBM */ 24 { "SYSTEM", "" }, 25 { "ASCII", "IBM-367" }, 26 { "UTF-8", "IBM-1208" }, 27 { "UTF-2", "IBM-1200" }, 28 { "UTF-2LE", "IBM-1200" }, 29 { "EUC-JP", "IBM-954" }, 30 { "EUC-KR", "IBM-970" }, 31 { "EUC-TW", "IBM-964" }, 32 { "EUC-CN", "IBM-1383" }, 33 { "BIG5", "IBM-950" }, 34 }; 35 int i; 36 size_t sl; 19 37 20 if (!stricmp (cp, "SYSTEM")) 21 *ucp = 0; 22 else if (!stricmp (cp, "UTF-8")) 23 memcpy (ucp, L"IBM-1208", 9*2); 24 else if (!stricmp (cp, "UCS-2LE")) 25 memcpy (ucp, L"IBM-1200", 9*2); 26 else if (!stricmp (cp, "EUC-JP")) 27 memcpy (ucp, L"IBM-954", 8*2); 28 else if (!stricmp (cp, "EUC-KR")) 29 memcpy (ucp, L"IBM-970", 8*2); 30 else if (!stricmp (cp, "EUC-TW")) 31 memcpy (ucp, L"IBM-964", 8*2); 32 else if (!stricmp (cp, "EUC-CN")) 33 memcpy (ucp, L"IBM-1383", 9*2); 34 else if (!stricmp (cp, "BIG5")) 35 memcpy (ucp, L"IBM-950", 8*2); 36 else 38 /* 39 * Try aliases. 40 */ 41 for (i = 0; i < sizeof(aAliases) / sizeof(aAliases[0]); i++ ) 37 42 { 38 /* Transform CPXXX naming style to IBM-XXX style */ 39 if ((cp[0] == 'C' || cp[0] == 'c') && (cp[1] == 'P' || cp[1] == 'p')) 43 if (!strcmp(cp, aAliases[i].pszAlias)) 40 44 { 41 ucp[sl++] = 'I'; 42 ucp[sl++] = 'B'; 43 ucp[sl++] = 'M'; 44 ucp[sl++] = '-'; 45 cp += 2; 45 cp = aAliases[i].pszIBM; 46 while ((*ucp++ = *cp++) != 0) 47 /* nada */; 48 return; 46 49 } 50 } 47 51 48 while (*cp != '\0') 49 ucp[sl++] = *cp++; 50 ucp[sl] = 0; 52 /* 53 * Generic transformations: 54 * CPxxxx -> IBM-xxxx 55 * ISO-xxxx-x -> ISOxxxx-x 56 */ 57 sl = 0; 58 /* Transform CPXXX naming style to IBM-XXX style */ 59 if ((cp[0] == 'C' || cp[0] == 'c') 60 && (cp[1] == 'P' || cp[1] == 'p')) 61 { 62 ucp[sl++] = 'I'; 63 ucp[sl++] = 'B'; 64 ucp[sl++] = 'M'; 65 ucp[sl++] = '-'; 66 cp += 2; 51 67 } 68 /* Transform ISO-XXXX-X naming style to ISOXXXX-X style */ 69 else if ((cp[0] == 'I' || cp[0] == 'i') 70 && (cp[1] == 'S' || cp[1] == 's') 71 && (cp[2] == 'O' || cp[2] == 'o') 72 && (cp[3] == '-')) 73 { 74 ucp[sl++] = 'I'; 75 ucp[sl++] = 'S'; 76 ucp[sl++] = 'O'; 77 cp += 4; 78 } 79 80 /* copy the rest of the string. */ 81 while (*cp != '\0') 82 ucp[sl++] = *cp++; 83 ucp[sl] = 0; 52 84 } -
Property cvs2svn:cvs-rev
changed from
Note:
See TracChangeset
for help on using the changeset viewer.