Annotation of embedaddon/expat/xmlwf/codepage.c, revision 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>