| // @@@ START COPYRIGHT @@@ |
| // |
| // Licensed to the Apache Software Foundation (ASF) under one |
| // or more contributor license agreements. See the NOTICE file |
| // distributed with this work for additional information |
| // regarding copyright ownership. The ASF licenses this file |
| // to you under the Apache License, Version 2.0 (the |
| // "License"); you may not use this file except in compliance |
| // with the License. You may obtain a copy of the License at |
| // |
| // http://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, |
| // software distributed under the License is distributed on an |
| // "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| // KIND, either express or implied. See the License for the |
| // specific language governing permissions and limitations |
| // under the License. |
| // |
| // @@@ END COPYRIGHT @@@ |
|
|
|
|
| #ifndef FCCONV_H
|
| #define FCCONV_H 1
|
|
|
| #ifndef _KERNEL
|
| #include <stdio.h>
|
| #include <stdlib.h>
|
| #include <stddef.h>
|
| #include <ctype.h>
|
| //#include "iconv_local.h" // BRL
|
| #endif
|
|
|
| typedef unsigned char uchar_t ; // JAC
|
| typedef unsigned char uchar ; // JAC
|
| typedef char * caddr_t ; // JAC
|
| typedef unsigned int uint ; // JAC
|
| typedef unsigned int uint_t ; // JAC
|
| typedef unsigned short ushort_t ; // JAC
|
|
|
| //#include <sys/errno.h> //BRL
|
| #include "errno.h" //JAC
|
| #include <sys/types.h>
|
|
|
| // #ifdef _KERNEL //BRL
|
| /*
|
| * ICONV status
|
| */
|
| #define ICONV_DONE 0
|
| #define ICONV_TRUNC 1 /* EINVAL */
|
| #define ICONV_INVAL 2 /* EILSEQ */
|
| #define ICONV_OVER 3 /* E2BIG */
|
| // #endif //BRL
|
|
|
| /*
|
| * Default ROW_SIZE
|
| */
|
| #ifndef ROW_SIZE
|
| #define ROW_SIZE 64
|
| #endif
|
|
|
| /*
|
| * Status flags in _LC_fcconv_iconv_t
|
| */
|
| #define CONV_BOM_WRITTEN 0x0001 /* Byte order mark written */
|
| #define CONV_REVERSE_INBYTE 0x0002 /* Reverse byte ordering of input */
|
| #define CONV_REVERSE_OUTBYTE 0x0004 /* Reverse byte ordering of output */
|
| #define CONV_SAVE_FLAGS 0x0008 /* Save flags value in input routine */
|
| #define CONV_UTF7_CONVTABLE 0x0010 /* UTF-7 conversion table defined */
|
| #define CONV_UTF7_OPTIONAL 0x0020 /* Enable UTF-7 optional direct chars */
|
| #define CONV_UTF7_VERBOSE 0x0040 /* Always output SHIFT_OUT */
|
| #define CONV_REWIND 0x0080 /* Rewind the conversion due to error */
|
| #define CONV_ASCII_INOMAP 0x0100 /* No input ASCII character mapping */
|
| #define CONV_ASCII_IDMAP2 0x0200 /* Map input ASCII to cell2 directly */
|
| #define CONV_ASCII_ONOMAP 0x0100 /* No output ASCII character mapping */
|
| #define CONV_ASCII_ODMAP2 0x0200 /* Map output ASCII to cell2 directly */
|
| #define CONV_INPUT_PROCESSED 0x0400 /* May be set after input processing */
|
| #define CONV_FUNC_FIRST 0x0800 /* Try conversion function first */
|
| #define CONV_FUNC_NEXT 0x1000 /* Try conversion function next if
|
| table lookup fails */
|
| #define CONV_NO_UDC 0x2000 /* Don't map any UCS UDC character */
|
|
|
| /*
|
| * Other macros
|
| */
|
| #define UCS4_BOM 0x0000feff /* UCS-4 byte order mark */
|
| #define UCS4_BOM_REVERSE 0xfffe0000 /* Reversed UCS-4 BOM */
|
| #define UCS2_BOM 0xfeff /* UCS-2 byte order mark */
|
| #define UCS2_BOM_REVERSE 0xfffe /* Reversed UCS-2 BOM */
|
| #define BAD (ucs2_t)-1
|
| #define IDE (ucs2_t)-2 /* Code is identical */
|
| #define UCS2_IDE ((ucs2_t)IDE)
|
| #define UCS2_BAD ((ucs2_t)BAD)
|
| #define UCS4_BAD ((ucs4_t)BAD)
|
| #define ARRAY_SIZE(arr) (sizeof(arr)/sizeof(arr[0]))
|
| #define UCODE_MASK 0x40000000
|
| #define IS_UCODE(c) ((c) & UCODE_MASK)
|
| #define GET_UCODE(c) ((c) & ~UCODE_MASK)
|
| #ifdef _KERNEL
|
| #define _ISASCII(c) ((c) >= 0x21 && (c) <= 0x7e)
|
| #else
|
| #define _ISASCII(c) isascii(c)
|
| #endif
|
| #ifdef _KERNEL
|
| #define _STRCASECMP(f, c) strcmp(f, c)
|
| #else
|
| #define _STRCASECMP(f, c) strcasecmp(f, c)
|
| #endif
|
|
|
|
|
| /*
|
| * Error return values
|
| */
|
| #define ERR_INVALID_CHAR -1 /* EILSEQ, ICONV_INVAL */
|
| #define ERR_INPUT_INCOMPLETE -2 /* EINVAL, ICONV_TRUNC */
|
| #define ERR_BUFFER_OVERRUN -3 /* E2BIG , ICONV_OVER */
|
| #define ERR_NOINPUT -4
|
|
|
| /*
|
| * Codeset numbers
|
| */
|
| typedef enum codeset
|
| {
|
| UCS , /* Generic UCS form */
|
| UCS_4 ,
|
| UCS_2 ,
|
| UTF_8 ,
|
| UTF_7 ,
|
| UTF_8_PASCII , /* Pass ASCII directly without table lookup */
|
| UCS_4_1_1 ,
|
| UCS_2_1_1 ,
|
| UTF_8_1_1 ,
|
| UTF_7_1_1 ,
|
| ISO8859_1 ,
|
| ISO8859_2 ,
|
| ISO8859_3 ,
|
| ISO8859_4 ,
|
| ISO8859_5 ,
|
| ISO8859_6 ,
|
| ISO8859_7 ,
|
| ISO8859_8 ,
|
| ISO8859_9 ,
|
| ISO885915 ,
|
| CP437 , /* DOS Latin US */
|
| CP737 , /* DOS Greek */
|
| CP775 , /* DOS Balt Rim */
|
| CP850 , /* DOS Latin 1 */
|
| CP852 , /* DOS Latin 2 */
|
| CP855 , /* DOS Cyrillic */
|
| CP857 , /* DOS Turkish */
|
| CP860 , /* DOS Portuguese */
|
| CP861 , /* DOS Icelandic */
|
| CP862 , /* DOS Hebrew */
|
| CP863 , /* DOS Canadian French */
|
| CP864 , /* DOS Arabic */
|
| CP865 , /* DOS Nordic */
|
| CP866 , /* DOS Cyrillic Russian */
|
| CP869 , /* DOS Greek 2 */
|
| CP874 , /* DOS Thai */
|
| CP932 , /* Shift JIS */
|
| CP936 , /* Extended GB */
|
| CP949 , /* Unified Hangul (Extended Wansung) */
|
| CP950 , /* Big 5 */
|
| CP1250 , /* Windows Latin 2 */
|
| CP1251 , /* Windows Cyrillic */
|
| CP1252 , /* Windows Latin 1 */
|
| CP1253 , /* Windows Greek */
|
| CP1254 , /* Windows Turkish */
|
| CP1255 , /* Windows Hebrew */
|
| CP1256 , /* Windows Arabic */
|
| CP1257 , /* Windows Baltic */
|
| CP1258 , /* Windows Vietnamese */
|
| DINGBATS ,
|
| SYMBOL ,
|
| TACTIS ,
|
| DECKANJI ,
|
| SJIS ,
|
| EUCJP ,
|
| SDECKANJI ,
|
| ISO_2022_JP ,
|
| DECHANYU ,
|
| EUCTW ,
|
| BIG5 ,
|
| DECHANZI ,
|
| GB2312 ,
|
| GBK ,
|
| GB18030 ,
|
| DECKOREAN ,
|
| KSC5601 ,
|
| EUCKR ,
|
| HKSCS , /* Hong Kong Supplementary Character Set */
|
| /*
|
| * Font mapping character sets
|
| */
|
| JISX0201_GR ,
|
| JISX0208_GL ,
|
| JISX0208_GR ,
|
| JISX0212_GL ,
|
| JISX0212_GR ,
|
| JISX_UDC ,
|
| GB2312_GL ,
|
| GB2312_GR ,
|
| GB2312_UDC ,
|
| GBK_GLGR ,
|
| KSC5601_GL ,
|
| KSC5601_GR ,
|
| CNS11643_1GL ,
|
| CNS11643_1GR ,
|
| CNS11643_2GL ,
|
| CNS11643_2GR ,
|
| CNS11643_3GL ,
|
| CNS11643_3GR ,
|
| CNS11643_4GL ,
|
| CNS11643_4GR ,
|
| DEC_CNS11643 ,
|
| DEC_CNS11643_UDC,
|
| DTSCS ,
|
| BIG5_GLGR ,
|
| BIG5_UDC
|
| } codeset_t ;
|
|
|
| /*
|
| * Row and column manipulation macros
|
| *
|
| * Only least significant 11 bits of the row index is used.
|
| * The other bits are used for status bits.
|
| */
|
| # define ROW_MASK 0x7ff
|
| # define ROW_CELL4 0x800 /* Row is index to 4-byte cell table */
|
| # define IS_CELL4_ROW(c) ((c) & ROW_CELL4)
|
| # define MASKROW(c) ((c) & ROW_MASK )
|
|
|
| #define ROW(c) ((c) / ROW_SIZE)
|
| #define COL(c) ((c) % ROW_SIZE)
|
|
|
| /*
|
| * The row table is ucs2_t whereas the cell table can be either ucs2_t or
|
| * ucs4_t. So the comparison with BAD must match the proper type to avoid
|
| * sign extension problem.
|
| */
|
| #ifdef USE_IDMAP
|
| #define GET_VAL(cd, idx, val, io) \
|
| { \
|
| register ucs2_t _row, _col, _value; \
|
| _row = ROW(idx) ; _col = COL(idx) ; \
|
| if ((_row >= (cd)->##io##row_count) || \
|
| ((_row = (cd)->##io##row_table[_row]) == UCS2_IDE))\
|
| val = idx ; \
|
| else if (_row == UCS2_BAD) \
|
| val = BAD ; \
|
| else if (IS_CELL4_ROW(_row)) \
|
| val = (cd)->##io##cell4_tab[MASKROW(_row)][_col]; \
|
| else { \
|
| _value = (cd)->##io##cell2_tab[_row][_col]; \
|
| val = (_value == UCS2_BAD) ? BAD : _value ; \
|
| } \
|
| }
|
| #else /* USE_IDMAP */
|
| #define GET_VAL(cd, idx, val, io) \
|
| { \
|
| register ucs2_t _row, _col, _value; \
|
| _row = ROW(idx) ; _col = COL(idx) ; \
|
| if ((_row >= (cd)->##io##row_count) || \
|
| ((_row = (cd)->##io##row_table[_row]) == UCS2_BAD))\
|
| val = BAD ; \
|
| else if (IS_CELL4_ROW(_row)) \
|
| val = (cd)->##io##cell4_tab[MASKROW(_row)][_col]; \
|
| else { \
|
| _value = (cd)->##io##cell2_tab[_row][_col]; \
|
| val = (_value == UCS2_BAD) ? BAD : _value ; \
|
| } \
|
| }
|
| #endif /* USE_IDMAP */
|
|
|
| #define GET_IVAL(cd, idx, val) GET_VAL(cd, idx, val, i)
|
| #define GET_OVAL(cd, idx, val) GET_VAL(cd, idx, val, o)
|
|
|
| typedef struct _LC_fcconv_iconv_rec _LC_fcconv_iconv_t ;
|
| typedef unsigned short ucs2_t ;
|
| typedef unsigned int ucs4_t ;
|
| typedef const ucs2_t row_t ;
|
| typedef const ucs2_t cell2_t[ROW_SIZE] ;
|
| typedef const ucs4_t cell4_t[ROW_SIZE] ;
|
|
|
| /*
|
| * Need new type because the wchar_t type (used by the DEC source as we
|
| * received it) is only a 2-byte thing on NT and on Yosemite and the
|
| * DEC source code was assuming it was a 4-byte thing.
|
| */
|
| typedef unsigned int WChar_t;
|
|
|
| typedef int (*cfunc_t )(WChar_t) ; /* Font charset conversion function */ // JAC
|
| typedef int (*infunc_t )(_LC_fcconv_iconv_t *, uchar_t **, int) ;
|
| typedef int (*outfunc_t)(_LC_fcconv_iconv_t *, uchar_t * , int, ucs4_t) ;
|
| typedef int (*cnvfunc_t)(_LC_fcconv_iconv_t *, uchar_t **, size_t *,
|
| uchar_t **, size_t *) ;
|
| /* UCS to UDC mapping function */
|
| typedef WChar_t (*udcfunc_t)(ucs4_t) ; // JAC
|
|
|
| /*
|
| * _LC_fcconv_iconv_t
|
| */
|
| struct _LC_fcconv_iconv_rec {
|
| #ifndef _KERNEL
|
| // _LC_core_iconv_t core ; //BRL & JAC -- Don't think we need this.
|
| #endif
|
| int flags ; /* Status and control flags */
|
| int srccode ; /* Source codeset number */
|
| int dstcode ; /* Destination codeset number */
|
| infunc_t infunc ; /* Input function */
|
| outfunc_t outfunc ; /* Output function */
|
| udcfunc_t udcfunc ; /* UCS to UDC conversion function */
|
| cnvfunc_t cnvfunc ; /* Conversion function */
|
| caddr_t convtable ; /* Conversion table (for UTF-7) */
|
|
|
| /* To UCS conversion table */
|
| cell2_t *icell2_tab ; /* Input 2-byte cell table */
|
| cell4_t *icell4_tab ; /* Input 4-byte cell table */
|
| row_t *irow_table ; /* Input row to cell mapping table */
|
| int irow_count ; /* No. of rows in input row_table */
|
|
|
| /* From UCS conversion table */
|
| cell2_t *ocell2_tab ; /* Output 2-byte cell table */
|
| cell4_t *ocell4_tab ; /* Output 4-byte cell table */
|
| row_t *orow_table ; /* Output row to cell mapping table */
|
| int orow_count ; /* No. of rows in output row_table */
|
|
|
| /* Default conversion character or string if cannot be converted */
|
| WChar_t defucsch ; /* Default character in UCS-4 */ // JAC
|
| WChar_t defchar ; /* Default single/multi byte char */ // JAC
|
| char *defstr ; /* Default string */
|
| int defstrlen ; /* Length of the default string */
|
| // BRL wint_t maxucs ; /* Maximum allowable UCS value */
|
| } ;
|
|
|
| /*
|
| * Function prototypes
|
| */
|
| extern int __input_ucs4 (_LC_fcconv_iconv_t *, uchar_t **, int) ;
|
| extern int __input_ucs2 (_LC_fcconv_iconv_t *, uchar_t **, int) ;
|
| extern int __input_utf7 (_LC_fcconv_iconv_t *, uchar_t **, int) ;
|
| extern int __input_utf8 (_LC_fcconv_iconv_t *, uchar_t **, int) ;
|
| extern int __output_ucs4(_LC_fcconv_iconv_t *, uchar_t * , int, ucs4_t) ;
|
| extern int __output_ucs2(_LC_fcconv_iconv_t *, uchar_t * , int, ucs4_t) ;
|
| extern int __output_utf7(_LC_fcconv_iconv_t *, uchar_t * , int, ucs4_t) ;
|
| extern int __output_utf8(_LC_fcconv_iconv_t *, uchar_t * , int, ucs4_t) ;
|
|
|
| extern int __from_ucs_exec (_LC_fcconv_iconv_t *, uchar_t** , size_t *,
|
| uchar_t** , size_t *);
|
| extern int __to_ucs_exec (_LC_fcconv_iconv_t *, uchar_t** , size_t *,
|
| uchar_t** , size_t *);
|
| extern int __cs_to_ucs_exec(_LC_fcconv_iconv_t *, uchar_t** , size_t *,
|
| uchar_t** , size_t *);
|
| extern int __sb_to_ucs_exec(_LC_fcconv_iconv_t *, uchar_t** , size_t *,
|
| uchar_t** , size_t *);
|
| extern int __sb_to_sb_exec (_LC_fcconv_iconv_t *, uchar_t** , size_t *,
|
| uchar_t** , size_t *);
|
| extern int __mb_to_mb_exec (_LC_fcconv_iconv_t *, uchar_t** , size_t *,
|
| uchar_t** , size_t *);
|
|
|
| extern int __sjis_index (_LC_fcconv_iconv_t *, uchar_t **, int) ;
|
| extern int __deckanji_index (_LC_fcconv_iconv_t *, uchar_t **, int) ;
|
| extern int __sdeckanji_index (_LC_fcconv_iconv_t *, uchar_t **, int) ;
|
| extern int __eucjp_index (_LC_fcconv_iconv_t *, uchar_t **, int) ;
|
| extern int __jisx0201gr_index (_LC_fcconv_iconv_t *, uchar_t **, int) ;
|
| extern int __jisx0208gl_index (_LC_fcconv_iconv_t *, uchar_t **, int) ;
|
| extern int __jisx0208gr_index (_LC_fcconv_iconv_t *, uchar_t **, int) ;
|
| extern int __jisx0212gl_index (_LC_fcconv_iconv_t *, uchar_t **, int) ;
|
| extern int __jisx0212gr_index (_LC_fcconv_iconv_t *, uchar_t **, int) ;
|
| extern int __jisxudc_index (_LC_fcconv_iconv_t *, uchar_t **, int) ;
|
|
|
| extern int __dechanzi_index (_LC_fcconv_iconv_t *, uchar_t **, int) ;
|
| extern int __dechanyu_index (_LC_fcconv_iconv_t *, uchar_t **, int) ;
|
| extern int __euctw_index (_LC_fcconv_iconv_t *, uchar_t **, int) ;
|
| extern int __big5_index (_LC_fcconv_iconv_t *, uchar_t **, int) ;
|
| extern int __hkscs_index (_LC_fcconv_iconv_t *, uchar_t **, int) ;
|
| extern int __gb2312_index (_LC_fcconv_iconv_t *, uchar_t **, int) ;
|
| extern int __gb2312gl_index (_LC_fcconv_iconv_t *, uchar_t **, int) ;
|
| extern int __gbk_index (_LC_fcconv_iconv_t *, uchar_t **, int) ;
|
| extern int __gb18030_index (_LC_fcconv_iconv_t *, uchar_t **, int) ;
|
| extern int __cns116431gl_index (_LC_fcconv_iconv_t *, uchar_t **, int) ;
|
| extern int __cns116431gr_index (_LC_fcconv_iconv_t *, uchar_t **, int) ;
|
| extern int __cns116432gl_index (_LC_fcconv_iconv_t *, uchar_t **, int) ;
|
| extern int __cns116432gr_index (_LC_fcconv_iconv_t *, uchar_t **, int) ;
|
| extern int __deccns11643_index (_LC_fcconv_iconv_t *, uchar_t **, int) ;
|
| extern int __deccns11643udc_index(_LC_fcconv_iconv_t *, uchar_t **, int) ;
|
| extern int __dtscs_index (_LC_fcconv_iconv_t *, uchar_t **, int) ;
|
| extern int __big5glgr_index (_LC_fcconv_iconv_t *, uchar_t **, int) ;
|
| extern int __big5udc_index (_LC_fcconv_iconv_t *, uchar_t **, int) ;
|
| extern int __gb2312udc_index (_LC_fcconv_iconv_t *, uchar_t **, int) ;
|
|
|
| extern int __deckorean_index (_LC_fcconv_iconv_t *, uchar_t **, int) ;
|
| extern int __ksc5601gl_index (_LC_fcconv_iconv_t *, uchar_t **, int) ;
|
| extern int __cp949_index (_LC_fcconv_iconv_t *, uchar_t **, int) ;
|
|
|
| /*
|
| * Special font character set conversion functions
|
| */
|
| extern int __eucjp_to_jisx0201gr (WChar_t) ; // JAC
|
| extern int __eucjp_to_jisx0208gl (WChar_t) ; // JAC
|
| extern int __eucjp_to_jisx0208gr (WChar_t) ; // JAC
|
| extern int __eucjp_to_jisx0212gl (WChar_t) ; // JAC
|
| extern int __eucjp_to_jisx0212gr (WChar_t) ; // JAC
|
| extern int __deckanji_to_jisxudc (WChar_t) ; // JAC
|
| extern int __gb2312_to_gb2312gl (WChar_t) ; // JAC
|
| extern int __gb2312_to_gb2312gr (WChar_t) ; // JAC
|
| extern int __gbk_to_gbkglgr (WChar_t) ; // JAC
|
| extern int __euctw_to_cns116431gl (WChar_t) ; // JAC
|
| extern int __euctw_to_cns116431gr (WChar_t) ; // JAC
|
| extern int __euctw_to_cns116432gl (WChar_t) ; // JAC
|
| extern int __euctw_to_cns116432gr (WChar_t) ; // JAC
|
| extern int __euctw_to_cns116433gl (WChar_t) ; // JAC
|
| extern int __euctw_to_cns116433gr (WChar_t) ; // JAC
|
| extern int __euctw_to_cns116434gl (WChar_t) ; // JAC
|
| extern int __euctw_to_cns116434gr (WChar_t) ; // JAC
|
| extern int __dechanyu_to_dtscs (WChar_t) ; // JAC
|
| extern int __dechanyu_to_deccns11643 (WChar_t) ; // JAC
|
| extern int __dechanyu_to_deccns11643udc (WChar_t) ; // JAC
|
| extern int __big5_to_big5glgr (WChar_t) ; // JAC
|
| extern int __big5_to_big5udc (WChar_t) ; // JAC
|
| extern int __dechanzi_to_gb2312udc (WChar_t) ; // JAC
|
| extern int __deckorean_to_ksc5601gl (WChar_t) ; // JAC
|
| extern int __deckorean_to_ksc5601gr (WChar_t) ; // JAC
|
|
|
| /*
|
| * UCS's UDC mapping functions
|
| */
|
| extern WChar_t __UDC_to_sjis (ucs4_t) ; // JAC
|
| extern WChar_t __UDC_to_big5 (ucs4_t) ; // JAC
|
| extern WChar_t __UDC_to_dechanyu (ucs4_t) ; // JAC
|
| extern WChar_t __UDC_to_dechanzi (ucs4_t) ; // JAC
|
| extern WChar_t __UDC_to_deckanji (ucs4_t) ; // JAC
|
| extern WChar_t __UDC_to_eucjp (ucs4_t) ; // JAC
|
| extern WChar_t __UDC_to_euctw (ucs4_t) ; // JAC
|
| extern WChar_t __UDC_to_sdeckanji(ucs4_t) ; // JAC
|
| extern WChar_t __UDC_to_gb18030 (ucs4_t) ; // JAC
|
| extern WChar_t __UDC_to_gb2312 (ucs4_t) ; // JAC
|
| extern WChar_t __UDC_to_gbk (ucs4_t) ; // JAC
|
| extern WChar_t __UDC_to_hkscs (ucs4_t) ; // JAC
|
| extern WChar_t __UDC_to_deckorean(ucs4_t) ; // JAC
|
| extern WChar_t __UDC_to_cp949 (ucs4_t) ; // JAC
|
|
|
|
|
| /*
|
| * Special UCS mapping functions
|
| */
|
| extern WChar_t __UCS_to_gb18030(ucs4_t) ; // JAC BRL
|
|
|
| /*
|
| * Function name mappings
|
| */
|
| #define __gb2312gr_index __gb2312_index
|
| #define __gbkglgr_index __gbk_index
|
| #define __ksc5601gr_index __deckorean_index
|
| #define __UCS_to_sjis NULL
|
| #define __UCS_to_big5 NULL
|
| #define __UCS_to_dechanyu NULL
|
| #define __UCS_to_dechanzi NULL
|
| #define __UCS_to_deckanji NULL
|
| #define __UCS_to_eucjp NULL
|
| #define __UCS_to_sdeckanji NULL
|
| #define __UCS_to_gbk NULL
|
| #define __UCS_to_euctw NULL
|
| #define __UCS_to_deckorean NULL
|
| #define __UCS_to_cp949 NULL
|
| #define __UCS_to_gb2312 NULL
|
| #define __UCS_to_hkscs NULL
|
|
|
| #endif /* FCCONV_H */
|