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>