#ifndef _CHARSET_H
#define _CHARSET_H
#ifndef CHARSET_C
extern char *dos_char_map;
extern char *upper_char_map;
extern char *lower_char_map;
extern void add_char_string(char *s);
extern void charset_initialise(void);
#ifdef toupper
#undef toupper
#endif
#ifdef tolower
#undef tolower
#endif
#ifdef isupper
#undef isupper
#endif
#ifdef islower
#undef islower
#endif
#ifdef isdoschar
#undef isdoschar
#endif
#ifdef isspace
#undef isspace
#endif
#define toupper(c) (upper_char_map[((c)&0xff)] & 0xff)
#define tolower(c) (lower_char_map[((c)&0xff)] & 0xff)
#define isupper(c) (((c)&0xff) != tolower((c)&0xff))
#define islower(c) (((c)&0xff) != toupper((c)&0xff))
#define isdoschar(c) (dos_char_map[((c)&0xff)] != 0)
#define isspace(c) ((c)==' ' || (c) == '\t')
#define issafe(c) (isalnum((c&0xff)) || strchr("-._",c))
#endif
#define CODEPAGE_FILE_VERSION_ID 0x1
#define CODEPAGE_HEADER_SIZE 8
#define CODEPAGE_VERSION_OFFSET 0
#define CODEPAGE_CLIENT_CODEPAGE_OFFSET 2
#define CODEPAGE_LENGTH_OFFSET 4
#define UNICODE_MAP_FILE_VERSION_ID 0x8001
#define UNICODE_MAP_HEADER_SIZE 30
#define UNICODE_MAP_CODEPAGE_ID_SIZE 20
#define UNICODE_MAP_VERSION_OFFSET 0
#define UNICODE_MAP_CLIENT_CODEPAGE_OFFSET 2
#define UNICODE_MAP_CP_TO_UNICODE_LENGTH_OFFSET 22
#define UNICODE_MAP_UNICODE_TO_CP_LENGTH_OFFSET 26
#endif