File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / expat / xmlwf / codepage.c
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Tue Feb 21 23:00:54 2012 UTC (12 years, 8 months ago) by misho
Branches: expat, MAIN
CVS tags: v2_1_0, v2_0_1p0, v2_0_1, HEAD
expat

    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>