1996-05-04 07:50:46 +00:00
/*
Unix SMB / Netbios implementation .
Version 1.9 .
Kanji Extensions
1998-01-22 13:27:43 +00:00
Copyright ( C ) Andrew Tridgell 1992 - 1998
1996-05-04 07:50:46 +00:00
This program is free software ; you can redistribute it and / or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation ; either version 2 of the License , or
( at your option ) any later version .
This program is distributed in the hope that it will be useful ,
but WITHOUT ANY WARRANTY ; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
GNU General Public License for more details .
You should have received a copy of the GNU General Public License
along with this program ; if not , write to the Free Software
Foundation , Inc . , 675 Mass Ave , Cambridge , MA 0213 9 , USA .
Adding for Japanese language by < fujita @ ainix . isac . co . jp > 1994.9 .5
and extend coding system to EUC / SJIS / JIS / HEX at 1994.10 .11
and add all jis codes sequence at 1995.8 .16
Notes : Hexadecimal code by < ohki @ gssm . otuka . tsukuba . ac . jp >
1997-08-21 20:03:45 +00:00
and add upper / lower case conversion 1997.8 .21
1996-05-04 07:50:46 +00:00
*/
# ifndef _KANJI_H_
# define _KANJI_H_
/* FOR SHIFT JIS CODE */
# define is_shift_jis(c) \
( ( 0x81 < = ( ( unsigned char ) ( c ) ) & & ( ( unsigned char ) ( c ) ) < = 0x9f ) \
2000-10-03 02:12:14 +00:00
| | ( 0xe0 < = ( ( unsigned char ) ( c ) ) & & ( ( unsigned char ) ( c ) ) < = 0xfc ) )
1996-05-04 07:50:46 +00:00
# define is_shift_jis2(c) \
( 0x40 < = ( ( unsigned char ) ( c ) ) & & ( ( unsigned char ) ( c ) ) < = 0xfc \
& & ( ( unsigned char ) ( c ) ) ! = 0x7f )
# define is_kana(c) ((0xa0 <= ((unsigned char) (c)) && ((unsigned char) (c)) <= 0xdf))
1997-08-21 20:03:45 +00:00
/* case conversion */
# define is_sj_upper2(c) \
( ( 0x60 < = ( unsigned char ) ( c ) ) & & ( ( unsigned char ) ( c ) < = 0x79 ) )
# define is_sj_lower2(c) \
( ( 0x81 < = ( unsigned char ) ( c ) ) & & ( ( unsigned char ) ( c ) < = 0x9A ) )
# define sjis_alph 0x82
# define is_sj_alph(c) (sjis_alph == (unsigned char) (c))
# define is_sj_upper(c1, c2) (is_sj_alph (c1) && is_sj_upper2 (c2))
# define is_sj_lower(c1, c2) (is_sj_alph (c1) && is_sj_lower2 (c2))
# define sj_toupper2(c) \
( is_sj_lower2 ( c ) ? ( ( int ) ( ( unsigned char ) ( c ) - 0x81 + 0x60 ) ) : \
( ( int ) ( unsigned char ) ( c ) ) )
# define sj_tolower2(c) \
( is_sj_upper2 ( c ) ? ( ( int ) ( ( unsigned char ) ( c ) - 0x60 + 0x81 ) ) : \
( ( int ) ( unsigned char ) ( c ) ) )
2000-10-03 02:12:14 +00:00
# define is_sj_ru_upper2(c) \
( ( 0x40 < = ( unsigned char ) ( c ) ) & & ( ( unsigned char ) ( c ) < = 0x60 ) )
# define is_sj_ru_lower2(c) \
( ( ( 0x70 < = ( unsigned char ) ( c ) ) & & ( ( unsigned char ) ( c ) < = 0x7e ) ) | | \
( ( 0x80 < = ( unsigned char ) ( c ) ) & & ( ( unsigned char ) ( c ) < = 0x91 ) ) )
# define sjis_russian 0x84
# define is_sj_russian(c) (sjis_russian == (unsigned char) (c))
# define is_sj_ru_upper(c1, c2) (is_sj_russian (c1) && is_sj_ru_upper2 (c2))
# define is_sj_ru_lower(c1, c2) (is_sj_russian (c1) && is_sj_ru_lower2 (c2))
# define sj_ru_toupper2(c) \
( is_sj_ru_lower2 ( c ) ? ( ( int ) ( ( unsigned char ) ( c ) + \
( ( ( unsigned char ) ( c ) > = 0x4f ) ? ( 0x70 - 0x40 ) : ( 0x80 - 0x4f ) ) ) ) : \
( ( int ) ( unsigned char ) ( c ) ) )
# define sj_ru_tolower2(c) \
( is_sj_ru_upper2 ( c ) ? ( ( int ) ( ( unsigned char ) ( c ) - \
( ( ( unsigned char ) ( c ) > = 0x80 ) ? ( 0x70 - 0x40 ) : ( 0x80 - 0x4f ) ) ) ) : \
( ( int ) ( unsigned char ) ( c ) ) )
1996-05-04 07:50:46 +00:00
# ifdef _KANJI_C_
/* FOR EUC CODE */
# define euc_kana (0x8e)
# define is_euc_kana(c) (((unsigned char) (c)) == euc_kana)
# define is_euc(c) (0xa0 < ((unsigned char) (c)) && ((unsigned char) (c)) < 0xff)
2000-10-03 02:12:14 +00:00
# define euc_sup (0x8f)
# define is_euc_sup(c) (((unsigned char ) (c)) == euc_sup)
1996-05-04 07:50:46 +00:00
/* FOR JIS CODE */
/* default jis third shift code, use for output */
# ifndef JIS_KSO
# define JIS_KSO 'B'
# endif
# ifndef JIS_KSI
# define JIS_KSI 'J'
# endif
/* in: \E$B or \E$@ */
/* out: \E(J or \E(B or \E(H */
# define jis_esc (0x1b)
# define jis_so (0x0e)
# define jis_so1 ('$')
# define jis_so2 ('B')
# define jis_si (0x0f)
# define jis_si1 ('(')
# define jis_si2 ('J')
# define is_esc(c) (((unsigned char) (c)) == jis_esc)
# define is_so1(c) (((unsigned char) (c)) == jis_so1)
# define is_so2(c) (((unsigned char) (c)) == jis_so2 || ((unsigned char) (c)) == '@')
# define is_si1(c) (((unsigned char) (c)) == jis_si1)
# define is_si2(c) (((unsigned char) (c)) == jis_si2 || ((unsigned char) (c)) == 'B' \
| | ( ( unsigned char ) ( c ) ) = = ' H ' )
# define is_so(c) (((unsigned char) (c)) == jis_so)
# define is_si(c) (((unsigned char) (c)) == jis_si)
# define junet_kana1 ('(')
# define junet_kana2 ('I')
# define is_juk1(c) (((unsigned char) (c)) == junet_kana1)
# define is_juk2(c) (((unsigned char) (c)) == junet_kana2)
# define _KJ_ROMAN (0)
# define _KJ_KANJI (1)
# define _KJ_KANA (2)
/* FOR HEX */
# define HEXTAG ':'
# define hex2bin(x) \
( ( ( int ) ' 0 ' < = ( ( int ) ( x ) ) & & ( ( int ) ( x ) ) < = ( int ) ' 9 ' ) ? \
( ( ( int ) ( x ) ) - ( int ) ' 0 ' ) : \
( ( int ) ' a ' < = ( ( int ) ( x ) ) & & ( ( int ) ( x ) ) < = ( int ) ' f ' ) ? \
( ( ( int ) ( x ) ) - ( int ) ' a ' + 10 ) : \
( ( ( int ) ( x ) ) - ( int ) ' A ' + 10 ) )
# define bin2hex(x) \
( ( ( ( int ) ( x ) ) > = 10 ) ? ( ( ( int ) ( x ) ) - 10 + ( int ) ' a ' ) : ( ( ( int ) ( x ) ) + ( int ) ' 0 ' ) )
1998-03-03 20:19:14 +00:00
/* For Hangul (Korean - code page 949). */
# define is_hangul(c) ((0x81 <= ((unsigned char) (c)) && ((unsigned char) (c)) <= 0xfd))
1996-05-04 07:50:46 +00:00
1998-03-03 20:19:14 +00:00
/* For traditional Chinese (known as Big5 encoding - code page 950). */
# define is_big5_c1(c) ((0xa1 <= ((unsigned char) (c)) && ((unsigned char) (c)) <= 0xf9))
1998-04-09 00:07:17 +00:00
/* For simplified Chinese (code page - 936). */
# define is_simpch_c1(c) ((0xa1 <= ((unsigned char) (c)) && ((unsigned char) (c)) <= 0xf7))
1998-03-03 20:19:14 +00:00
# else /* not _KANJI_C_ */
1996-05-04 07:50:46 +00:00
1997-12-18 11:05:00 +00:00
/*
* The following is needed for AIX systems that have
* their own # defines for strchr , strrchr , strstr
* and strtok .
*/
# ifdef strchr
# undef strchr
# endif /* strchr */
# ifdef strrchr
# undef strrchr
# endif /* strrchr */
# ifdef strstr
# undef strstr
# endif /* strstr */
# ifdef strtok
# undef strtok
# endif /* strtok */
1998-03-03 20:19:14 +00:00
/* Ensure we use our definitions in all other files than kanji.c. */
1997-12-18 11:05:00 +00:00
1998-03-03 20:19:14 +00:00
/* Function pointers we will replace. */
1998-11-12 19:40:33 +00:00
extern char * ( * multibyte_strchr ) ( const char * s , int c ) ;
extern char * ( * multibyte_strrchr ) ( const char * s , int c ) ;
extern char * ( * multibyte_strstr ) ( const char * s1 , const char * s2 ) ;
extern char * ( * multibyte_strtok ) ( char * s1 , const char * s2 ) ;
1998-03-03 20:19:14 +00:00
extern char * ( * _dos_to_unix ) ( char * str , BOOL overwrite ) ;
extern char * ( * _unix_to_dos ) ( char * str , BOOL overwrite ) ;
2001-03-26 23:13:02 +00:00
extern char * ( * _dos_to_dos ) ( char * str , BOOL overwrite ) ;
1998-03-03 20:19:14 +00:00
extern BOOL ( * is_multibyte_char ) ( char c ) ;
1998-04-09 00:07:17 +00:00
extern int ( * _skip_multibyte_char ) ( char c ) ;
1998-03-03 20:19:14 +00:00
# define strchr(s1, c) ((*multibyte_strchr)((s1), (c)))
# define strrchr(s1, c) ((*multibyte_strrchr)((s1), (c)))
# define strstr(s1, s2) ((*multibyte_strstr)((s1), (s2)))
# define strtok(s1, s2) ((*multibyte_strtok)((s1), (s2)))
# define dos_to_unix(x,y) ((*_dos_to_unix)((x), (y)))
# define unix_to_dos(x,y) ((*_unix_to_dos)((x), (y)))
2001-03-26 23:13:02 +00:00
# define dos_to_dos(x,y) ((*_dos_to_dos)((x), (y)))
1998-04-09 00:07:17 +00:00
# define skip_multibyte_char(c) ((*_skip_multibyte_char)((c)))
1996-05-04 07:50:46 +00:00
# endif /* _KANJI_C_ */
# define UNKNOWN_CODE (-1)
# define SJIS_CODE (0)
# define EUC_CODE (1)
# define JIS7_CODE (2)
# define JIS8_CODE (3)
# define JUNET_CODE (4)
# define HEX_CODE (5)
# define CAP_CODE (6)
# define DOSV_CODE SJIS_CODE
2000-10-03 02:12:14 +00:00
# define EUC3_CODE (7)
# define UTF8_CODE (8)
# ifdef _KANJI_C_
/* For conversion */
# define EXTSJISC(c) (0xf0 <= ((unsigned char)(c)) \
& & ( ( unsigned char ) ( c ) < = 0xfc ) )
# define GETAHI (0x81)
# define GETALO (0xac)
typedef struct _sjis_regur_t {
int start ;
int end ;
int rstart ;
} sjis_regur_t ;
/* When Converting to EUC and JIS, there is no room for
* these SJIS codes whose hi byte is larger than 0xf0 .
*
* So we must drop or convert it to harmless code .
* This is not standard way , so it is ad hoc but practical .
* It is also thought of backward and future compatibility .
*
* Miura .
*/
static sjis_regur_t sjisconv [ ] = {
{ 0xfa40 , 0xfa49 , 0xeeef } ,
{ 0xfa4a , 0xfa53 , 0x8754 } ,
{ 0xfa54 , 0xfa54 , 0x81ca } ,
{ 0xfa55 , 0xfa57 , 0xeefa } ,
{ 0xfa58 , 0xfa58 , 0x878a } ,
{ 0xfa59 , 0xfa59 , 0x8782 } ,
{ 0xfa5a , 0xfa5a , 0x8784 } ,
{ 0xfa5b , 0xfa5b , 0x81e6 } ,
{ 0xfa5c , 0xfa7e , 0xed40 } ,
{ 0xfa80 , 0xfa9b , 0xed63 } ,
{ 0xfa9c , 0xfafc , 0xed80 } ,
{ 0xfb40 , 0xfb5b , 0xede1 } ,
{ 0xfb5c , 0xfb7e , 0xee40 } ,
{ 0xfb80 , 0xfb9b , 0xee63 } ,
{ 0xfb9c , 0xfbfc , 0xee80 } ,
{ 0xfc40 , 0xfc4b , 0xeee1 }
} ;
# define SJISCONVTBLSIZ (sizeof(sjisconv) / sizeof(sjis_regur_t))
static sjis_regur_t sjisrev [ ] = {
{ 0x81ca , 0x81ca , 0xfa54 } ,
{ 0x81e6 , 0x81e6 , 0xfa5b } ,
{ 0x8754 , 0x875d , 0xfa4a } ,
{ 0x8782 , 0x8782 , 0xfa59 } ,
{ 0x8784 , 0x8784 , 0xfa5a } ,
{ 0x878a , 0x878a , 0xfa58 } ,
{ 0xed40 , 0xed62 , 0xfa5c } ,
{ 0xed63 , 0xed7e , 0xfa80 } ,
{ 0xed80 , 0xede0 , 0xfa9c } ,
{ 0xede1 , 0xedfc , 0xfb40 } ,
{ 0xee40 , 0xee62 , 0xfb5c } ,
{ 0xee63 , 0xee7e , 0xfb80 } ,
{ 0xee80 , 0xeee0 , 0xfb9c } ,
{ 0xeee1 , 0xeeec , 0xfc40 } ,
{ 0xeeef , 0xeef8 , 0xfa40 } ,
{ 0xeefa , 0xeefc , 0xfa55 }
} ;
# define SJISREVTBLSIZ (sizeof(sjisrev) / sizeof(sjis_regur_t))
1996-05-04 07:50:46 +00:00
2000-10-03 02:12:14 +00:00
/* EUC3BYTE DEFINITIONS */
typedef struct _sjis_euc_map_t {
int sjis ;
int euc ;
} sjis_euc_map_t ;
static sjis_euc_map_t euc3conv2 [ ] = {
{ 0x8754 , 0xf3fd } ,
{ 0x8755 , 0xf3fe } ,
{ 0x8756 , 0xf4a1 } ,
{ 0x8757 , 0xf4a2 } ,
{ 0x8758 , 0xf4a3 } ,
{ 0x8759 , 0xf4a4 } ,
{ 0x875a , 0xf4a5 } ,
{ 0x875b , 0xf4a6 } ,
{ 0x875c , 0xf4a7 } ,
{ 0x875d , 0xf4a8 } ,
{ 0x8782 , 0xf4ac } ,
{ 0x8784 , 0xf4ad } ,
{ 0x878a , 0xf4ab }
} ;
# define EUC3CONV2TBLSIZ (sizeof(euc3conv2) / sizeof(sjis_euc_map_t))
/* IBM Kanji to EUC 3byte */
static int euc3conv [ ] = {
/* 0xfa40 */
0xf3f3 , 0xf3f4 , 0xf3f5 , 0xf3f6 , 0xf3f7 , 0xf3f8 , 0xf3f9 , 0xf3fa , 0xf3fb , 0xf3fc , 0xf3fd , 0xf3fe , 0xf4a1 , 0xf4a2 , 0xf4a3 , 0xf4a4 ,
/* 0xfa50 */
0xf4a5 , 0xf4a6 , 0xf4a7 , 0xf4a8 , 0 , 0xa2c3 , 0xf4a9 , 0xf4aa , 0xf4ab , 0xf4ac , 0xf4ad , 0 , 0xd4e3 , 0xdcdf , 0xe4e9 , 0xe3f8 ,
/* 0xfa60 */
0xd9a1 , 0xb1bb , 0xf4ae , 0xc2ad , 0xc3fc , 0xe4d0 , 0xc2bf , 0xbcf4 , 0xb0a9 , 0xb0c8 , 0xf4af , 0xb0d2 , 0xb0d4 , 0xb0e3 , 0xb0ee , 0xb1a7 ,
/* 0xfa70 */
0xb1a3 , 0xb1ac , 0xb1a9 , 0xb1be , 0xb1df , 0xb1d8 , 0xb1c8 , 0xb1d7 , 0xb1e3 , 0xb1f4 , 0xb1e1 , 0xb2a3 , 0xf4b0 , 0xb2bb , 0xb2e6 ,
/* 0xfa80 */
0xb2ed , 0xb2f5 , 0xb2fc , 0xf4b1 , 0xb3b5 , 0xb3d8 , 0xb3db , 0xb3e5 , 0xb3ee , 0xb3fb , 0xf4b2 , 0xf4b3 , 0xb4c0 , 0xb4c7 , 0xb4d0 , 0xb4de ,
/* 0xfa90 */
0xf4b4 , 0xb5aa , 0xf4b5 , 0xb5af , 0xb5c4 , 0xb5e8 , 0xf4b6 , 0xb7c2 , 0xb7e4 , 0xb7e8 , 0xb7e7 , 0xf4b7 , 0xf4b8 , 0xf4b9 , 0xb8ce , 0xb8e1 ,
/* 0xfaa0 */
0xb8f5 , 0xb8f7 , 0xb8f8 , 0xb8fc , 0xb9af , 0xb9b7 , 0xbabe , 0xbadb , 0xcdaa , 0xbae1 , 0xf4ba , 0xbaeb , 0xbbb3 , 0xbbb8 , 0xf4bb , 0xbbca ,
/* 0xfab0 */
0xf4bc , 0xf4bd , 0xbbd0 , 0xbbde , 0xbbf4 , 0xbbf5 , 0xbbf9 , 0xbce4 , 0xbced , 0xbcfe , 0xf4be , 0xbdc2 , 0xbde7 , 0xf4bf , 0xbdf0 , 0xbeb0 ,
/* 0xfac0 */
0xbeac , 0xf4c0 , 0xbeb3 , 0xbebd , 0xbecd , 0xbec9 , 0xbee4 , 0xbfa8 , 0xbfc9 , 0xc0c4 , 0xc0e4 , 0xc0f4 , 0xc1a6 , 0xf4c1 , 0xc1f5 , 0xc1fc ,
/* 0xfad0 */
0xf4c2 , 0xc1f8 , 0xc2ab , 0xc2a1 , 0xc2a5 , 0xf4c3 , 0xc2b8 , 0xc2ba , 0xf4c4 , 0xc2c4 , 0xc2d2 , 0xc2d7 , 0xc2db , 0xc2de , 0xc2ed , 0xc2f0 ,
/* 0xfae0 */
0xf4c5 , 0xc3a1 , 0xc3b5 , 0xc3c9 , 0xc3b9 , 0xf4c6 , 0xc3d8 , 0xc3fe , 0xf4c7 , 0xc4cc , 0xf4c8 , 0xc4d9 , 0xc4ea , 0xc4fd , 0xf4c9 , 0xc5a7 ,
/* 0xfaf0 */
0xc5b5 , 0xc5b6 , 0xf4ca , 0xc5d5 , 0xc6b8 , 0xc6d7 , 0xc6e0 , 0xc6ea , 0xc6e3 , 0xc7a1 , 0xc7ab , 0xc7c7 , 0xc7c3 ,
/* 0xfb40 */
0xc7cb , 0xc7cf , 0xc7d9 , 0xf4cb , 0xf4cc , 0xc7e6 , 0xc7ee , 0xc7fc , 0xc7eb , 0xc7f0 , 0xc8b1 , 0xc8e5 , 0xc8f8 , 0xc9a6 , 0xc9ab , 0xc9ad ,
/* 0xfb50 */
0xf4cd , 0xc9ca , 0xc9d3 , 0xc9e9 , 0xc9e3 , 0xc9fc , 0xc9f4 , 0xc9f5 , 0xf4ce , 0xcab3 , 0xcabd , 0xcaef , 0xcaf1 , 0xcbae , 0xf4cf , 0xcbca ,
/* 0xfb60 */
0xcbe6 , 0xcbea , 0xcbf0 , 0xcbf4 , 0xcbee , 0xcca5 , 0xcbf9 , 0xccab , 0xccae , 0xccad , 0xccb2 , 0xccc2 , 0xccd0 , 0xccd9 , 0xf4d0 , 0xcdbb ,
/* 0xfb70 */
0xf4d1 , 0xcebb , 0xf4d2 , 0xceba , 0xcec3 , 0xf4d3 , 0xcef2 , 0xb3dd , 0xcfd5 , 0xcfe2 , 0xcfe9 , 0xcfed , 0xf4d4 , 0xf4d5 , 0xf4d6 ,
/* 0xfb80 */
0xf4d7 , 0xd0e5 , 0xf4d8 , 0xd0e9 , 0xd1e8 , 0xf4d9 , 0xf4da , 0xd1ec , 0xd2bb , 0xf4db , 0xd3e1 , 0xd3e8 , 0xd4a7 , 0xf4dc , 0xf4dd , 0xd4d4 ,
/* 0xfb90 */
0xd4f2 , 0xd5ae , 0xf4de , 0xd7de , 0xf4df , 0xd8a2 , 0xd8b7 , 0xd8c1 , 0xd8d1 , 0xd8f4 , 0xd9c6 , 0xd9c8 , 0xd9d1 , 0xf4e0 , 0xf4e1 , 0xf4e2 ,
/* 0xfba0 */
0xf4e3 , 0xf4e4 , 0xdcd3 , 0xddc8 , 0xddd4 , 0xddea , 0xddfa , 0xdea4 , 0xdeb0 , 0xf4e5 , 0xdeb5 , 0xdecb , 0xf4e6 , 0xdfb9 , 0xf4e7 , 0xdfc3 ,
/* 0xfbb0 */
0xf4e8 , 0xf4e9 , 0xe0d9 , 0xf4ea , 0xf4eb , 0xe1e2 , 0xf4ec , 0xf4ed , 0xf4ee , 0xe2c7 , 0xe3a8 , 0xe3a6 , 0xe3a9 , 0xe3af , 0xe3b0 , 0xe3aa ,
/* 0xfbc0 */
0xe3ab , 0xe3bc , 0xe3c1 , 0xe3bf , 0xe3d5 , 0xe3d8 , 0xe3d6 , 0xe3df , 0xe3e3 , 0xe3e1 , 0xe3d4 , 0xe3e9 , 0xe4a6 , 0xe3f1 , 0xe3f2 , 0xe4cb ,
/* 0xfbd0 */
0xe4c1 , 0xe4c3 , 0xe4be , 0xf4ef , 0xe4c0 , 0xe4c7 , 0xe4bf , 0xe4e0 , 0xe4de , 0xe4d1 , 0xf4f0 , 0xe4dc , 0xe4d2 , 0xe4db , 0xe4d4 , 0xe4fa ,
/* 0xfbe0 */
0xe4ef , 0xe5b3 , 0xe5bf , 0xe5c9 , 0xe5d0 , 0xe5e2 , 0xe5ea , 0xe5eb , 0xf4f1 , 0xf4f2 , 0xf4f3 , 0xe6e8 , 0xe6ef , 0xe7ac , 0xf4f4 , 0xe7ae ,
/* 0xfbf0 */
0xf4f5 , 0xe7b1 , 0xf4f6 , 0xe7b2 , 0xe8b1 , 0xe8b6 , 0xf4f7 , 0xf4f8 , 0xe8dd , 0xf4f9 , 0xf4fa , 0xe9d1 , 0xf4fb ,
/* 0xfc40 */
0xe9ed , 0xeacd , 0xf4fc , 0xeadb , 0xeae6 , 0xeaea , 0xeba5 , 0xebfb , 0xebfa , 0xf4fd , 0xecd6 , 0xf4fe
} ;
# define EUC3CONVTBLSIZ (sizeof(euc3conv) / sizeof(int))
/* EUC3byte to SJIS Code */
typedef struct _sjis_euc_revmap_t {
int euc ;
int sjis ;
} sjis_euc_revmap_t ;
static sjis_euc_revmap_t euc3rev [ ] = {
{ 0xa2c3 , 0xfa55 } ,
{ 0xb0a9 , 0xfa68 } ,
{ 0xb0c8 , 0xfa69 } ,
{ 0xb0d2 , 0xfa6b } ,
{ 0xb0d4 , 0xfa6c } ,
{ 0xb0e3 , 0xfa6d } ,
{ 0xb0ee , 0xfa6e } ,
{ 0xb1a3 , 0xfa70 } ,
{ 0xb1a7 , 0xfa6f } ,
{ 0xb1a9 , 0xfa72 } ,
{ 0xb1ac , 0xfa71 } ,
{ 0xb1bb , 0xfa61 } ,
{ 0xb1be , 0xfa73 } ,
{ 0xb1c8 , 0xfa76 } ,
{ 0xb1d7 , 0xfa77 } ,
{ 0xb1d8 , 0xfa75 } ,
{ 0xb1df , 0xfa74 } ,
{ 0xb1e1 , 0xfa7a } ,
{ 0xb1e3 , 0xfa78 } ,
{ 0xb1f4 , 0xfa79 } ,
{ 0xb2a3 , 0xfa7b } ,
{ 0xb2bb , 0xfa7d } ,
{ 0xb2e6 , 0xfa7e } ,
{ 0xb2ed , 0xfa80 } ,
{ 0xb2f5 , 0xfa81 } ,
{ 0xb2fc , 0xfa82 } ,
{ 0xb3b5 , 0xfa84 } ,
{ 0xb3d8 , 0xfa85 } ,
{ 0xb3db , 0xfa86 } ,
{ 0xb3dd , 0xfb77 } ,
{ 0xb3e5 , 0xfa87 } ,
{ 0xb3ee , 0xfa88 } ,
{ 0xb3fb , 0xfa89 } ,
{ 0xb4c0 , 0xfa8c } ,
{ 0xb4c7 , 0xfa8d } ,
{ 0xb4d0 , 0xfa8e } ,
{ 0xb4de , 0xfa8f } ,
{ 0xb5aa , 0xfa91 } ,
{ 0xb5af , 0xfa93 } ,
{ 0xb5c4 , 0xfa94 } ,
{ 0xb5e8 , 0xfa95 } ,
{ 0xb7c2 , 0xfa97 } ,
{ 0xb7e4 , 0xfa98 } ,
{ 0xb7e7 , 0xfa9a } ,
{ 0xb7e8 , 0xfa99 } ,
{ 0xb8ce , 0xfa9e } ,
{ 0xb8e1 , 0xfa9f } ,
{ 0xb8f5 , 0xfaa0 } ,
{ 0xb8f7 , 0xfaa1 } ,
{ 0xb8f8 , 0xfaa2 } ,
{ 0xb8fc , 0xfaa3 } ,
{ 0xb9af , 0xfaa4 } ,
{ 0xb9b7 , 0xfaa5 } ,
{ 0xbabe , 0xfaa6 } ,
{ 0xbadb , 0xfaa7 } ,
{ 0xbae1 , 0xfaa9 } ,
{ 0xbaeb , 0xfaab } ,
{ 0xbbb3 , 0xfaac } ,
{ 0xbbb8 , 0xfaad } ,
{ 0xbbca , 0xfaaf } ,
{ 0xbbd0 , 0xfab2 } ,
{ 0xbbde , 0xfab3 } ,
{ 0xbbf4 , 0xfab4 } ,
{ 0xbbf5 , 0xfab5 } ,
{ 0xbbf9 , 0xfab6 } ,
{ 0xbce4 , 0xfab7 } ,
{ 0xbced , 0xfab8 } ,
{ 0xbcf4 , 0xfa67 } ,
{ 0xbcfe , 0xfab9 } ,
{ 0xbdc2 , 0xfabb } ,
{ 0xbde7 , 0xfabc } ,
{ 0xbdf0 , 0xfabe } ,
{ 0xbeac , 0xfac0 } ,
{ 0xbeb0 , 0xfabf } ,
{ 0xbeb3 , 0xfac2 } ,
{ 0xbebd , 0xfac3 } ,
{ 0xbec9 , 0xfac5 } ,
{ 0xbecd , 0xfac4 } ,
{ 0xbee4 , 0xfac6 } ,
{ 0xbfa8 , 0xfac7 } ,
{ 0xbfc9 , 0xfac8 } ,
{ 0xc0c4 , 0xfac9 } ,
{ 0xc0e4 , 0xfaca } ,
{ 0xc0f4 , 0xfacb } ,
{ 0xc1a6 , 0xfacc } ,
{ 0xc1f5 , 0xface } ,
{ 0xc1f8 , 0xfad1 } ,
{ 0xc1fc , 0xfacf } ,
{ 0xc2a1 , 0xfad3 } ,
{ 0xc2a5 , 0xfad4 } ,
{ 0xc2ab , 0xfad2 } ,
{ 0xc2ad , 0xfa63 } ,
{ 0xc2b8 , 0xfad6 } ,
{ 0xc2ba , 0xfad7 } ,
{ 0xc2bf , 0xfa66 } ,
{ 0xc2c4 , 0xfad9 } ,
{ 0xc2d2 , 0xfada } ,
{ 0xc2d7 , 0xfadb } ,
{ 0xc2db , 0xfadc } ,
{ 0xc2de , 0xfadd } ,
{ 0xc2ed , 0xfade } ,
{ 0xc2f0 , 0xfadf } ,
{ 0xc3a1 , 0xfae1 } ,
{ 0xc3b5 , 0xfae2 } ,
{ 0xc3b9 , 0xfae4 } ,
{ 0xc3c9 , 0xfae3 } ,
{ 0xc3d8 , 0xfae6 } ,
{ 0xc3fc , 0xfa64 } ,
{ 0xc3fe , 0xfae7 } ,
{ 0xc4cc , 0xfae9 } ,
{ 0xc4d9 , 0xfaeb } ,
{ 0xc4ea , 0xfaec } ,
{ 0xc4fd , 0xfaed } ,
{ 0xc5a7 , 0xfaef } ,
{ 0xc5b5 , 0xfaf0 } ,
{ 0xc5b6 , 0xfaf1 } ,
{ 0xc5d5 , 0xfaf3 } ,
{ 0xc6b8 , 0xfaf4 } ,
{ 0xc6d7 , 0xfaf5 } ,
{ 0xc6e0 , 0xfaf6 } ,
{ 0xc6e3 , 0xfaf8 } ,
{ 0xc6ea , 0xfaf7 } ,
{ 0xc7a1 , 0xfaf9 } ,
{ 0xc7ab , 0xfafa } ,
{ 0xc7c3 , 0xfafc } ,
{ 0xc7c7 , 0xfafb } ,
{ 0xc7cb , 0xfb40 } ,
{ 0xc7cf , 0xfb41 } ,
{ 0xc7d9 , 0xfb42 } ,
{ 0xc7e6 , 0xfb45 } ,
{ 0xc7eb , 0xfb48 } ,
{ 0xc7ee , 0xfb46 } ,
{ 0xc7f0 , 0xfb49 } ,
{ 0xc7fc , 0xfb47 } ,
{ 0xc8b1 , 0xfb4a } ,
{ 0xc8e5 , 0xfb4b } ,
{ 0xc8f8 , 0xfb4c } ,
{ 0xc9a6 , 0xfb4d } ,
{ 0xc9ab , 0xfb4e } ,
{ 0xc9ad , 0xfb4f } ,
{ 0xc9ca , 0xfb51 } ,
{ 0xc9d3 , 0xfb52 } ,
{ 0xc9e3 , 0xfb54 } ,
{ 0xc9e9 , 0xfb53 } ,
{ 0xc9f4 , 0xfb56 } ,
{ 0xc9f5 , 0xfb57 } ,
{ 0xc9fc , 0xfb55 } ,
{ 0xcab3 , 0xfb59 } ,
{ 0xcabd , 0xfb5a } ,
{ 0xcaef , 0xfb5b } ,
{ 0xcaf1 , 0xfb5c } ,
{ 0xcbae , 0xfb5d } ,
{ 0xcbca , 0xfb5f } ,
{ 0xcbe6 , 0xfb60 } ,
{ 0xcbea , 0xfb61 } ,
{ 0xcbee , 0xfb64 } ,
{ 0xcbf0 , 0xfb62 } ,
{ 0xcbf4 , 0xfb63 } ,
{ 0xcbf9 , 0xfb66 } ,
{ 0xcca5 , 0xfb65 } ,
{ 0xccab , 0xfb67 } ,
{ 0xccad , 0xfb69 } ,
{ 0xccae , 0xfb68 } ,
{ 0xccb2 , 0xfb6a } ,
{ 0xccc2 , 0xfb6b } ,
{ 0xccd0 , 0xfb6c } ,
{ 0xccd9 , 0xfb6d } ,
{ 0xcdaa , 0xfaa8 } ,
{ 0xcdbb , 0xfb6f } ,
{ 0xceba , 0xfb73 } ,
{ 0xcebb , 0xfb71 } ,
{ 0xcec3 , 0xfb74 } ,
{ 0xcef2 , 0xfb76 } ,
{ 0xcfd5 , 0xfb78 } ,
{ 0xcfe2 , 0xfb79 } ,
{ 0xcfe9 , 0xfb7a } ,
{ 0xcfed , 0xfb7b } ,
{ 0xd0e5 , 0xfb81 } ,
{ 0xd0e9 , 0xfb83 } ,
{ 0xd1e8 , 0xfb84 } ,
{ 0xd1ec , 0xfb87 } ,
{ 0xd2bb , 0xfb88 } ,
{ 0xd3e1 , 0xfb8a } ,
{ 0xd3e8 , 0xfb8b } ,
{ 0xd4a7 , 0xfb8c } ,
{ 0xd4d4 , 0xfb8f } ,
{ 0xd4e3 , 0xfa5c } ,
{ 0xd4f2 , 0xfb90 } ,
{ 0xd5ae , 0xfb91 } ,
{ 0xd7de , 0xfb93 } ,
{ 0xd8a2 , 0xfb95 } ,
{ 0xd8b7 , 0xfb96 } ,
{ 0xd8c1 , 0xfb97 } ,
{ 0xd8d1 , 0xfb98 } ,
{ 0xd8f4 , 0xfb99 } ,
{ 0xd9a1 , 0xfa60 } ,
{ 0xd9c6 , 0xfb9a } ,
{ 0xd9c8 , 0xfb9b } ,
{ 0xd9d1 , 0xfb9c } ,
{ 0xdcd3 , 0xfba2 } ,
{ 0xdcdf , 0xfa5d } ,
{ 0xddc8 , 0xfba3 } ,
{ 0xddd4 , 0xfba4 } ,
{ 0xddea , 0xfba5 } ,
{ 0xddfa , 0xfba6 } ,
{ 0xdea4 , 0xfba7 } ,
{ 0xdeb0 , 0xfba8 } ,
{ 0xdeb5 , 0xfbaa } ,
{ 0xdecb , 0xfbab } ,
{ 0xdfb9 , 0xfbad } ,
{ 0xdfc3 , 0xfbaf } ,
{ 0xe0d9 , 0xfbb2 } ,
{ 0xe1e2 , 0xfbb5 } ,
{ 0xe2c7 , 0xfbb9 } ,
{ 0xe3a6 , 0xfbbb } ,
{ 0xe3a8 , 0xfbba } ,
{ 0xe3a9 , 0xfbbc } ,
{ 0xe3aa , 0xfbbf } ,
{ 0xe3ab , 0xfbc0 } ,
{ 0xe3af , 0xfbbd } ,
{ 0xe3b0 , 0xfbbe } ,
{ 0xe3bc , 0xfbc1 } ,
{ 0xe3bf , 0xfbc3 } ,
{ 0xe3c1 , 0xfbc2 } ,
{ 0xe3d4 , 0xfbca } ,
{ 0xe3d5 , 0xfbc4 } ,
{ 0xe3d6 , 0xfbc6 } ,
{ 0xe3d8 , 0xfbc5 } ,
{ 0xe3df , 0xfbc7 } ,
{ 0xe3e1 , 0xfbc9 } ,
{ 0xe3e3 , 0xfbc8 } ,
{ 0xe3e9 , 0xfbcb } ,
{ 0xe3f1 , 0xfbcd } ,
{ 0xe3f2 , 0xfbce } ,
{ 0xe3f8 , 0xfa5f } ,
{ 0xe4a6 , 0xfbcc } ,
{ 0xe4be , 0xfbd2 } ,
{ 0xe4bf , 0xfbd6 } ,
{ 0xe4c0 , 0xfbd4 } ,
{ 0xe4c1 , 0xfbd0 } ,
{ 0xe4c3 , 0xfbd1 } ,
{ 0xe4c7 , 0xfbd5 } ,
{ 0xe4cb , 0xfbcf } ,
{ 0xe4d0 , 0xfa65 } ,
{ 0xe4d1 , 0xfbd9 } ,
{ 0xe4d2 , 0xfbdc } ,
{ 0xe4d4 , 0xfbde } ,
{ 0xe4db , 0xfbdd } ,
{ 0xe4dc , 0xfbdb } ,
{ 0xe4de , 0xfbd8 } ,
{ 0xe4e0 , 0xfbd7 } ,
{ 0xe4e9 , 0xfa5e } ,
{ 0xe4ef , 0xfbe0 } ,
{ 0xe4fa , 0xfbdf } ,
{ 0xe5b3 , 0xfbe1 } ,
{ 0xe5bf , 0xfbe2 } ,
{ 0xe5c9 , 0xfbe3 } ,
{ 0xe5d0 , 0xfbe4 } ,
{ 0xe5e2 , 0xfbe5 } ,
{ 0xe5ea , 0xfbe6 } ,
{ 0xe5eb , 0xfbe7 } ,
{ 0xe6e8 , 0xfbeb } ,
{ 0xe6ef , 0xfbec } ,
{ 0xe7ac , 0xfbed } ,
{ 0xe7ae , 0xfbef } ,
{ 0xe7b1 , 0xfbf1 } ,
{ 0xe7b2 , 0xfbf3 } ,
{ 0xe8b1 , 0xfbf4 } ,
{ 0xe8b6 , 0xfbf5 } ,
{ 0xe8dd , 0xfbf8 } ,
{ 0xe9d1 , 0xfbfb } ,
{ 0xe9ed , 0xfc40 } ,
{ 0xeacd , 0xfc41 } ,
{ 0xeadb , 0xfc43 } ,
{ 0xeae6 , 0xfc44 } ,
{ 0xeaea , 0xfc45 } ,
{ 0xeba5 , 0xfc46 } ,
{ 0xebfa , 0xfc48 } ,
{ 0xebfb , 0xfc47 } ,
{ 0xecd6 , 0xfc4a } ,
{ 0xf3f3 , 0xfa40 } ,
{ 0xf3f4 , 0xfa41 } ,
{ 0xf3f5 , 0xfa42 } ,
{ 0xf3f6 , 0xfa43 } ,
{ 0xf3f7 , 0xfa44 } ,
{ 0xf3f8 , 0xfa45 } ,
{ 0xf3f9 , 0xfa46 } ,
{ 0xf3fa , 0xfa47 } ,
{ 0xf3fb , 0xfa48 } ,
{ 0xf3fc , 0xfa49 } ,
{ 0xf3fd , 0xfa4a } ,
{ 0xf3fe , 0xfa4b } ,
{ 0xf4a1 , 0xfa4c } ,
{ 0xf4a2 , 0xfa4d } ,
{ 0xf4a3 , 0xfa4e } ,
{ 0xf4a4 , 0xfa4f } ,
{ 0xf4a5 , 0xfa50 } ,
{ 0xf4a6 , 0xfa51 } ,
{ 0xf4a7 , 0xfa52 } ,
{ 0xf4a8 , 0xfa53 } ,
{ 0xf4a9 , 0xfa56 } ,
{ 0xf4aa , 0xfa57 } ,
{ 0xf4ab , 0xfa58 } ,
{ 0xf4ac , 0xfa59 } ,
{ 0xf4ad , 0xfa5a } ,
{ 0xf4ae , 0xfa62 } ,
{ 0xf4af , 0xfa6a } ,
{ 0xf4b0 , 0xfa7c } ,
{ 0xf4b1 , 0xfa83 } ,
{ 0xf4b2 , 0xfa8a } ,
{ 0xf4b3 , 0xfa8b } ,
{ 0xf4b4 , 0xfa90 } ,
{ 0xf4b5 , 0xfa92 } ,
{ 0xf4b6 , 0xfa96 } ,
{ 0xf4b7 , 0xfa9b } ,
{ 0xf4b8 , 0xfa9c } ,
{ 0xf4b9 , 0xfa9d } ,
{ 0xf4ba , 0xfaaa } ,
{ 0xf4bb , 0xfaae } ,
{ 0xf4bc , 0xfab0 } ,
{ 0xf4bd , 0xfab1 } ,
{ 0xf4be , 0xfaba } ,
{ 0xf4bf , 0xfabd } ,
{ 0xf4c0 , 0xfac1 } ,
{ 0xf4c1 , 0xfacd } ,
{ 0xf4c2 , 0xfad0 } ,
{ 0xf4c3 , 0xfad5 } ,
{ 0xf4c4 , 0xfad8 } ,
{ 0xf4c5 , 0xfae0 } ,
{ 0xf4c6 , 0xfae5 } ,
{ 0xf4c7 , 0xfae8 } ,
{ 0xf4c8 , 0xfaea } ,
{ 0xf4c9 , 0xfaee } ,
{ 0xf4ca , 0xfaf2 } ,
{ 0xf4cb , 0xfb43 } ,
{ 0xf4cc , 0xfb44 } ,
{ 0xf4cd , 0xfb50 } ,
{ 0xf4ce , 0xfb58 } ,
{ 0xf4cf , 0xfb5e } ,
{ 0xf4d0 , 0xfb6e } ,
{ 0xf4d1 , 0xfb70 } ,
{ 0xf4d2 , 0xfb72 } ,
{ 0xf4d3 , 0xfb75 } ,
{ 0xf4d4 , 0xfb7c } ,
{ 0xf4d5 , 0xfb7d } ,
{ 0xf4d6 , 0xfb7e } ,
{ 0xf4d7 , 0xfb80 } ,
{ 0xf4d8 , 0xfb82 } ,
{ 0xf4d9 , 0xfb85 } ,
{ 0xf4da , 0xfb86 } ,
{ 0xf4db , 0xfb89 } ,
{ 0xf4dc , 0xfb8d } ,
{ 0xf4dd , 0xfb8e } ,
{ 0xf4de , 0xfb92 } ,
{ 0xf4df , 0xfb94 } ,
{ 0xf4e0 , 0xfb9d } ,
{ 0xf4e1 , 0xfb9e } ,
{ 0xf4e2 , 0xfb9f } ,
{ 0xf4e3 , 0xfba0 } ,
{ 0xf4e4 , 0xfba1 } ,
{ 0xf4e5 , 0xfba9 } ,
{ 0xf4e6 , 0xfbac } ,
{ 0xf4e7 , 0xfbae } ,
{ 0xf4e8 , 0xfbb0 } ,
{ 0xf4e9 , 0xfbb1 } ,
{ 0xf4ea , 0xfbb3 } ,
{ 0xf4eb , 0xfbb4 } ,
{ 0xf4ec , 0xfbb6 } ,
{ 0xf4ed , 0xfbb7 } ,
{ 0xf4ee , 0xfbb8 } ,
{ 0xf4ef , 0xfbd3 } ,
{ 0xf4f0 , 0xfbda } ,
{ 0xf4f1 , 0xfbe8 } ,
{ 0xf4f2 , 0xfbe9 } ,
{ 0xf4f3 , 0xfbea } ,
{ 0xf4f4 , 0xfbee } ,
{ 0xf4f5 , 0xfbf0 } ,
{ 0xf4f6 , 0xfbf2 } ,
{ 0xf4f7 , 0xfbf6 } ,
{ 0xf4f8 , 0xfbf7 } ,
{ 0xf4f9 , 0xfbf9 } ,
{ 0xf4fa , 0xfbfa } ,
{ 0xf4fb , 0xfbfc } ,
{ 0xf4fc , 0xfc42 } ,
{ 0xf4fd , 0xfc49 } ,
{ 0xf4fe , 0xfc4b } ,
} ;
# define EUC3REVTBLSIZ (sizeof(euc3rev) / sizeof(sjis_euc_revmap_t))
# endif /* _KANJI_C_ */
1996-05-04 07:50:46 +00:00
# endif /* _KANJI_H_ */