Annotation of embedaddon/expat/xmlwf/codepage.c, revision 1.1.1.1

1.1       misho       1: /* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd
                      2:    See the file COPYING for copying permission.
                      3: */
                      4: 
                      5: #include "codepage.h"
                      6: 
                      7: #if (defined(WIN32) || (defined(__WATCOMC__) && defined(__NT__)))
                      8: #define STRICT 1
                      9: #define WIN32_LEAN_AND_MEAN 1
                     10: 
                     11: #include <windows.h>
                     12: 
                     13: int
                     14: codepageMap(int cp, int *map)
                     15: {
                     16:   int i;
                     17:   CPINFO info;
                     18:   if (!GetCPInfo(cp, &info) || info.MaxCharSize > 2)
                     19:     return 0;
                     20:   for (i = 0; i < 256; i++)
                     21:     map[i] = -1;
                     22:   if (info.MaxCharSize > 1) {
                     23:     for (i = 0; i < MAX_LEADBYTES; i+=2) {
                     24:       int j, lim;
                     25:       if (info.LeadByte[i] == 0 && info.LeadByte[i + 1] == 0)
                     26:         break;
                     27:       lim = info.LeadByte[i + 1];
                     28:       for (j = info.LeadByte[i]; j <= lim; j++)
                     29:         map[j] = -2;
                     30:     }
                     31:   }
                     32:   for (i = 0; i < 256; i++) {
                     33:    if (map[i] == -1) {
                     34:      char c = (char)i;
                     35:      unsigned short n;
                     36:      if (MultiByteToWideChar(cp, MB_PRECOMPOSED|MB_ERR_INVALID_CHARS,
                     37:                              &c, 1, &n, 1) == 1)
                     38:        map[i] = n;
                     39:    }
                     40:   }
                     41:   return 1;
                     42: }
                     43: 
                     44: int
                     45: codepageConvert(int cp, const char *p)
                     46: {
                     47:   unsigned short c;
                     48:   if (MultiByteToWideChar(cp, MB_PRECOMPOSED|MB_ERR_INVALID_CHARS,
                     49:                           p, 2, &c, 1) == 1)
                     50:     return c;
                     51:   return -1;
                     52: }
                     53: 
                     54: #else /* not WIN32 */
                     55: 
                     56: int
                     57: codepageMap(int cp, int *map)
                     58: {
                     59:   return 0;
                     60: }
                     61: 
                     62: int
                     63: codepageConvert(int cp, const char *p)
                     64: {
                     65:   return -1;
                     66: }
                     67: 
                     68: #endif /* not WIN32 */

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>