| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,6 @@ | ||
|
|
||
| #if @HAVE_VISIBILITY@ && BUILDING_LIBICONV | ||
| #define LIBICONV_DLL_EXPORTED __attribute__((__visibility__("default"))) | ||
| #else | ||
| #define LIBICONV_DLL_EXPORTED | ||
| #endif |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,248 @@ | ||
| /* Copyright (C) 1999-2003, 2005-2006, 2008-2011 Free Software Foundation, Inc. | ||
| This file is part of the GNU LIBICONV Library. | ||
| The GNU LIBICONV Library is free software; you can redistribute it | ||
| and/or modify it under the terms of the GNU Library General Public | ||
| License as published by the Free Software Foundation; either version 2 | ||
| of the License, or (at your option) any later version. | ||
| The GNU LIBICONV Library 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 | ||
| Library General Public License for more details. | ||
| You should have received a copy of the GNU Library General Public | ||
| License along with the GNU LIBICONV Library; see the file COPYING.LIB. | ||
| If not, write to the Free Software Foundation, Inc., 51 Franklin Street, | ||
| Fifth Floor, Boston, MA 02110-1301, USA. */ | ||
|
|
||
| /* When installed, this file is called "iconv.h". */ | ||
|
|
||
| #ifndef _LIBICONV_H | ||
| #define _LIBICONV_H | ||
|
|
||
| #define _LIBICONV_VERSION 0x010E /* version number: (major<<8) + minor */ | ||
|
|
||
| #if 1 && BUILDING_LIBICONV | ||
| #define LIBICONV_DLL_EXPORTED __attribute__((__visibility__("default"))) | ||
| #else | ||
| #define LIBICONV_DLL_EXPORTED | ||
| #endif | ||
| extern LIBICONV_DLL_EXPORTED int _libiconv_version; /* Likewise */ | ||
|
|
||
| /* We would like to #include any system header file which could define | ||
| iconv_t, 1. in order to eliminate the risk that the user gets compilation | ||
| errors because some other system header file includes /usr/include/iconv.h | ||
| which defines iconv_t or declares iconv after this file, 2. when compiling | ||
| for LIBICONV_PLUG, we need the proper iconv_t type in order to produce | ||
| binary compatible code. | ||
| But gcc's #include_next is not portable. Thus, once libiconv's iconv.h | ||
| has been installed in /usr/local/include, there is no way any more to | ||
| include the original /usr/include/iconv.h. We simply have to get away | ||
| without it. | ||
| Ad 1. The risk that a system header file does | ||
| #include "iconv.h" or #include_next "iconv.h" | ||
| is small. They all do #include <iconv.h>. | ||
| Ad 2. The iconv_t type is a pointer type in all cases I have seen. (It | ||
| has to be a scalar type because (iconv_t)(-1) is a possible return value | ||
| from iconv_open().) */ | ||
|
|
||
| /* Define iconv_t ourselves. */ | ||
| #undef iconv_t | ||
| #define iconv_t libiconv_t | ||
| typedef void* iconv_t; | ||
|
|
||
| /* Get size_t declaration. | ||
| Get wchar_t declaration if it exists. */ | ||
| #include <stddef.h> | ||
|
|
||
| /* Get errno declaration and values. */ | ||
| #include <errno.h> | ||
| /* Some systems, like SunOS 4, don't have EILSEQ. Some systems, like BSD/OS, | ||
| have EILSEQ in a different header. On these systems, define EILSEQ | ||
| ourselves. */ | ||
| #ifndef EILSEQ | ||
| #define EILSEQ | ||
| #endif | ||
|
|
||
|
|
||
| #ifdef __cplusplus | ||
| extern "C" { | ||
| #endif | ||
|
|
||
|
|
||
| /* Allocates descriptor for code conversion from encoding ‘fromcode’ to | ||
| encoding ‘tocode’. */ | ||
| #ifndef LIBICONV_PLUG | ||
| #define iconv_open libiconv_open | ||
| #endif | ||
| extern LIBICONV_DLL_EXPORTED iconv_t iconv_open (const char* tocode, const char* fromcode); | ||
|
|
||
| /* Converts, using conversion descriptor ‘cd’, at most ‘*inbytesleft’ bytes | ||
| starting at ‘*inbuf’, writing at most ‘*outbytesleft’ bytes starting at | ||
| ‘*outbuf’. | ||
| Decrements ‘*inbytesleft’ and increments ‘*inbuf’ by the same amount. | ||
| Decrements ‘*outbytesleft’ and increments ‘*outbuf’ by the same amount. */ | ||
| #ifndef LIBICONV_PLUG | ||
| #define iconv libiconv | ||
| #endif | ||
| extern LIBICONV_DLL_EXPORTED size_t iconv (iconv_t cd, char* * inbuf, size_t *inbytesleft, char* * outbuf, size_t *outbytesleft); | ||
|
|
||
| /* Frees resources allocated for conversion descriptor ‘cd’. */ | ||
| #ifndef LIBICONV_PLUG | ||
| #define iconv_close libiconv_close | ||
| #endif | ||
| extern LIBICONV_DLL_EXPORTED int iconv_close (iconv_t cd); | ||
|
|
||
|
|
||
| #ifdef __cplusplus | ||
| } | ||
| #endif | ||
|
|
||
|
|
||
| #ifndef LIBICONV_PLUG | ||
|
|
||
| /* Nonstandard extensions. */ | ||
|
|
||
| #if 1 | ||
| #if 0 | ||
| /* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before | ||
| <wchar.h>. | ||
| BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be | ||
| included before <wchar.h>. */ | ||
| #include <stddef.h> | ||
| #include <stdio.h> | ||
| #include <time.h> | ||
| #endif | ||
| #include <wchar.h> | ||
| #endif | ||
|
|
||
| #ifdef __cplusplus | ||
| extern "C" { | ||
| #endif | ||
|
|
||
| /* A type that holds all memory needed by a conversion descriptor. | ||
| A pointer to such an object can be used as an iconv_t. */ | ||
| typedef struct { | ||
| void* dummy1[28]; | ||
| #if 1 | ||
| mbstate_t dummy2; | ||
| #endif | ||
| } iconv_allocation_t; | ||
|
|
||
| /* Allocates descriptor for code conversion from encoding ‘fromcode’ to | ||
| encoding ‘tocode’ into preallocated memory. Returns an error indicator | ||
| (0 or -1 with errno set). */ | ||
| #define iconv_open_into libiconv_open_into | ||
| extern LIBICONV_DLL_EXPORTED int iconv_open_into (const char* tocode, const char* fromcode, | ||
| iconv_allocation_t* resultp); | ||
|
|
||
| /* Control of attributes. */ | ||
| #define iconvctl libiconvctl | ||
| extern LIBICONV_DLL_EXPORTED int iconvctl (iconv_t cd, int request, void* argument); | ||
|
|
||
| /* Hook performed after every successful conversion of a Unicode character. */ | ||
| typedef void (*iconv_unicode_char_hook) (unsigned int uc, void* data); | ||
| /* Hook performed after every successful conversion of a wide character. */ | ||
| typedef void (*iconv_wide_char_hook) (wchar_t wc, void* data); | ||
| /* Set of hooks. */ | ||
| struct iconv_hooks { | ||
| iconv_unicode_char_hook uc_hook; | ||
| iconv_wide_char_hook wc_hook; | ||
| void* data; | ||
| }; | ||
|
|
||
| /* Fallback function. Invoked when a small number of bytes could not be | ||
| converted to a Unicode character. This function should process all | ||
| bytes from inbuf and may produce replacement Unicode characters by calling | ||
| the write_replacement callback repeatedly. */ | ||
| typedef void (*iconv_unicode_mb_to_uc_fallback) | ||
| (const char* inbuf, size_t inbufsize, | ||
| void (*write_replacement) (const unsigned int *buf, size_t buflen, | ||
| void* callback_arg), | ||
| void* callback_arg, | ||
| void* data); | ||
| /* Fallback function. Invoked when a Unicode character could not be converted | ||
| to the target encoding. This function should process the character and | ||
| may produce replacement bytes (in the target encoding) by calling the | ||
| write_replacement callback repeatedly. */ | ||
| typedef void (*iconv_unicode_uc_to_mb_fallback) | ||
| (unsigned int code, | ||
| void (*write_replacement) (const char *buf, size_t buflen, | ||
| void* callback_arg), | ||
| void* callback_arg, | ||
| void* data); | ||
| #if 1 | ||
| /* Fallback function. Invoked when a number of bytes could not be converted to | ||
| a wide character. This function should process all bytes from inbuf and may | ||
| produce replacement wide characters by calling the write_replacement | ||
| callback repeatedly. */ | ||
| typedef void (*iconv_wchar_mb_to_wc_fallback) | ||
| (const char* inbuf, size_t inbufsize, | ||
| void (*write_replacement) (const wchar_t *buf, size_t buflen, | ||
| void* callback_arg), | ||
| void* callback_arg, | ||
| void* data); | ||
| /* Fallback function. Invoked when a wide character could not be converted to | ||
| the target encoding. This function should process the character and may | ||
| produce replacement bytes (in the target encoding) by calling the | ||
| write_replacement callback repeatedly. */ | ||
| typedef void (*iconv_wchar_wc_to_mb_fallback) | ||
| (wchar_t code, | ||
| void (*write_replacement) (const char *buf, size_t buflen, | ||
| void* callback_arg), | ||
| void* callback_arg, | ||
| void* data); | ||
| #else | ||
| /* If the wchar_t type does not exist, these two fallback functions are never | ||
| invoked. Their argument list therefore does not matter. */ | ||
| typedef void (*iconv_wchar_mb_to_wc_fallback) (); | ||
| typedef void (*iconv_wchar_wc_to_mb_fallback) (); | ||
| #endif | ||
| /* Set of fallbacks. */ | ||
| struct iconv_fallbacks { | ||
| iconv_unicode_mb_to_uc_fallback mb_to_uc_fallback; | ||
| iconv_unicode_uc_to_mb_fallback uc_to_mb_fallback; | ||
| iconv_wchar_mb_to_wc_fallback mb_to_wc_fallback; | ||
| iconv_wchar_wc_to_mb_fallback wc_to_mb_fallback; | ||
| void* data; | ||
| }; | ||
|
|
||
| /* Requests for iconvctl. */ | ||
| #define ICONV_TRIVIALP 0 /* int *argument */ | ||
| #define ICONV_GET_TRANSLITERATE 1 /* int *argument */ | ||
| #define ICONV_SET_TRANSLITERATE 2 /* const int *argument */ | ||
| #define ICONV_GET_DISCARD_ILSEQ 3 /* int *argument */ | ||
| #define ICONV_SET_DISCARD_ILSEQ 4 /* const int *argument */ | ||
| #define ICONV_SET_HOOKS 5 /* const struct iconv_hooks *argument */ | ||
| #define ICONV_SET_FALLBACKS 6 /* const struct iconv_fallbacks *argument */ | ||
|
|
||
| /* Listing of locale independent encodings. */ | ||
| #define iconvlist libiconvlist | ||
| extern LIBICONV_DLL_EXPORTED void iconvlist (int (*do_one) (unsigned int namescount, | ||
| const char * const * names, | ||
| void* data), | ||
| void* data); | ||
|
|
||
| /* Canonicalize an encoding name. | ||
| The result is either a canonical encoding name, or name itself. */ | ||
| extern LIBICONV_DLL_EXPORTED const char * iconv_canonicalize (const char * name); | ||
|
|
||
| /* Support for relocatable packages. */ | ||
|
|
||
| /* Sets the original and the current installation prefix of the package. | ||
| Relocation simply replaces a pathname starting with the original prefix | ||
| by the corresponding pathname with the current prefix instead. Both | ||
| prefixes should be directory names without trailing slash (i.e. use "" | ||
| instead of "/"). */ | ||
| extern LIBICONV_DLL_EXPORTED void libiconv_set_relocation_prefix (const char *orig_prefix, | ||
| const char *curr_prefix); | ||
|
|
||
| #ifdef __cplusplus | ||
| } | ||
| #endif | ||
|
|
||
| #endif | ||
|
|
||
|
|
||
| #endif /* _LIBICONV_H */ |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,40 @@ | ||
| /* | ||
| * Copyright (C) 1999-2003, 2008 Free Software Foundation, Inc. | ||
| * This file is part of the GNU LIBICONV Library. | ||
| * | ||
| * The GNU LIBICONV Library is free software; you can redistribute it | ||
| * and/or modify it under the terms of the GNU Library General Public | ||
| * License as published by the Free Software Foundation; either version 2 | ||
| * of the License, or (at your option) any later version. | ||
| * | ||
| * The GNU LIBICONV Library 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 | ||
| * Library General Public License for more details. | ||
| * | ||
| * You should have received a copy of the GNU Library General Public | ||
| * License along with the GNU LIBICONV Library; see the file COPYING.LIB. | ||
| * If not, write to the Free Software Foundation, Inc., 51 Franklin Street, | ||
| * Fifth Floor, Boston, MA 02110-1301, USA. | ||
| */ | ||
|
|
||
| #ifdef USE_AIX | ||
| # if defined _AIX | ||
| # include "aliases_aix_sysaix.h" | ||
| # else | ||
| # include "aliases_aix.h" | ||
| # endif | ||
| #endif | ||
| #ifdef USE_OSF1 | ||
| # if defined __osf__ | ||
| # include "aliases_osf1_sysosf1.h" | ||
| # else | ||
| # include "aliases_osf1.h" | ||
| # endif | ||
| #endif | ||
| #ifdef USE_DOS | ||
| # include "aliases_dos.h" | ||
| #endif | ||
| #ifdef USE_EXTRA | ||
| # include "aliases_extra.h" | ||
| #endif |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,18 @@ | ||
| S(aix_0, "CP856", ei_cp856 ) | ||
| S(aix_1, "CP922", ei_cp922 ) | ||
| S(aix_2, "CP943", ei_cp943 ) | ||
| S(aix_3, "CP1046", ei_cp1046 ) | ||
| S(aix_4, "CP1124", ei_cp1124 ) | ||
| S(aix_5, "CP1129", ei_cp1129 ) | ||
| S(aix_6, "CP1161", ei_cp1161 ) | ||
| S(aix_7, "IBM1161", ei_cp1161 ) | ||
| S(aix_8, "IBM-1161", ei_cp1161 ) | ||
| S(aix_9, "CSIBM1161", ei_cp1161 ) | ||
| S(aix_10, "CP1162", ei_cp1162 ) | ||
| S(aix_11, "IBM1162", ei_cp1162 ) | ||
| S(aix_12, "IBM-1162", ei_cp1162 ) | ||
| S(aix_13, "CSIBM1162", ei_cp1162 ) | ||
| S(aix_14, "CP1163", ei_cp1163 ) | ||
| S(aix_15, "IBM1163", ei_cp1163 ) | ||
| S(aix_16, "IBM-1163", ei_cp1163 ) | ||
| S(aix_17, "CSIBM1163", ei_cp1163 ) |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,24 @@ | ||
| S(aix_0, "CP856", ei_cp856 ) | ||
| S(aix_1, "IBM-856", ei_cp856 ) | ||
| S(aix_2, "CP922", ei_cp922 ) | ||
| S(aix_3, "IBM-922", ei_cp922 ) | ||
| S(aix_4, "CP943", ei_cp943 ) | ||
| S(aix_5, "IBM-943", ei_cp943 ) | ||
| S(aix_6, "CP1046", ei_cp1046 ) | ||
| S(aix_7, "IBM-1046", ei_cp1046 ) | ||
| S(aix_8, "CP1124", ei_cp1124 ) | ||
| S(aix_9, "IBM-1124", ei_cp1124 ) | ||
| S(aix_10, "CP1129", ei_cp1129 ) | ||
| S(aix_11, "IBM-1129", ei_cp1129 ) | ||
| S(aix_12, "CP1161", ei_cp1161 ) | ||
| S(aix_13, "IBM1161", ei_cp1161 ) | ||
| S(aix_14, "IBM-1161", ei_cp1161 ) | ||
| S(aix_15, "CSIBM1161", ei_cp1161 ) | ||
| S(aix_16, "CP1162", ei_cp1162 ) | ||
| S(aix_17, "IBM1162", ei_cp1162 ) | ||
| S(aix_18, "IBM-1162", ei_cp1162 ) | ||
| S(aix_19, "CSIBM1162", ei_cp1162 ) | ||
| S(aix_20, "CP1163", ei_cp1163 ) | ||
| S(aix_21, "IBM1163", ei_cp1163 ) | ||
| S(aix_22, "IBM-1163", ei_cp1163 ) | ||
| S(aix_23, "CSIBM1163", ei_cp1163 ) |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,48 @@ | ||
| S(dos_0, "CP437", ei_cp437 ) | ||
| S(dos_1, "IBM437", ei_cp437 ) | ||
| S(dos_2, "437", ei_cp437 ) | ||
| S(dos_3, "CSPC8CODEPAGE437", ei_cp437 ) | ||
| S(dos_4, "CP737", ei_cp737 ) | ||
| S(dos_5, "CP775", ei_cp775 ) | ||
| S(dos_6, "IBM775", ei_cp775 ) | ||
| S(dos_7, "CSPC775BALTIC", ei_cp775 ) | ||
| S(dos_8, "CP852", ei_cp852 ) | ||
| S(dos_9, "IBM852", ei_cp852 ) | ||
| S(dos_10, "852", ei_cp852 ) | ||
| S(dos_11, "CSPCP852", ei_cp852 ) | ||
| S(dos_12, "CP853", ei_cp853 ) | ||
| S(dos_13, "CP855", ei_cp855 ) | ||
| S(dos_14, "IBM855", ei_cp855 ) | ||
| S(dos_15, "855", ei_cp855 ) | ||
| S(dos_16, "CSIBM855", ei_cp855 ) | ||
| S(dos_17, "CP857", ei_cp857 ) | ||
| S(dos_18, "IBM857", ei_cp857 ) | ||
| S(dos_19, "857", ei_cp857 ) | ||
| S(dos_20, "CSIBM857", ei_cp857 ) | ||
| S(dos_21, "CP858", ei_cp858 ) | ||
| S(dos_22, "CP860", ei_cp860 ) | ||
| S(dos_23, "IBM860", ei_cp860 ) | ||
| S(dos_24, "860", ei_cp860 ) | ||
| S(dos_25, "CSIBM860", ei_cp860 ) | ||
| S(dos_26, "CP861", ei_cp861 ) | ||
| S(dos_27, "IBM861", ei_cp861 ) | ||
| S(dos_28, "861", ei_cp861 ) | ||
| S(dos_29, "CP-IS", ei_cp861 ) | ||
| S(dos_30, "CSIBM861", ei_cp861 ) | ||
| S(dos_31, "CP863", ei_cp863 ) | ||
| S(dos_32, "IBM863", ei_cp863 ) | ||
| S(dos_33, "863", ei_cp863 ) | ||
| S(dos_34, "CSIBM863", ei_cp863 ) | ||
| S(dos_35, "CP864", ei_cp864 ) | ||
| S(dos_36, "IBM864", ei_cp864 ) | ||
| S(dos_37, "CSIBM864", ei_cp864 ) | ||
| S(dos_38, "CP865", ei_cp865 ) | ||
| S(dos_39, "IBM865", ei_cp865 ) | ||
| S(dos_40, "865", ei_cp865 ) | ||
| S(dos_41, "CSIBM865", ei_cp865 ) | ||
| S(dos_42, "CP869", ei_cp869 ) | ||
| S(dos_43, "IBM869", ei_cp869 ) | ||
| S(dos_44, "869", ei_cp869 ) | ||
| S(dos_45, "CP-GR", ei_cp869 ) | ||
| S(dos_46, "CSIBM869", ei_cp869 ) | ||
| S(dos_47, "CP1125", ei_cp1125 ) |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,12 @@ | ||
| S(extra_0, "EUC-JISX0213", ei_euc_jisx0213 ) | ||
| S(extra_1, "EUC-JIS-2004", ei_euc_jisx0213 ) | ||
| S(extra_2, "SHIFT_JISX0213", ei_shift_jisx0213 ) | ||
| S(extra_3, "SHIFT_JIS-2004", ei_shift_jisx0213 ) | ||
| S(extra_4, "ISO-2022-JP-3", ei_iso2022_jp3 ) | ||
| S(extra_5, "ISO-2022-JP-2004", ei_iso2022_jp3 ) | ||
| S(extra_6, "BIG5-2003", ei_big5_2003 ) | ||
| S(extra_7, "TDS565", ei_tds565 ) | ||
| S(extra_8, "ISO-IR-230", ei_tds565 ) | ||
| S(extra_9, "ATARIST", ei_atarist ) | ||
| S(extra_10, "ATARI", ei_atarist ) | ||
| S(extra_11, "RISCOS-LATIN1", ei_riscos1 ) |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,2 @@ | ||
| S(osf1_0, "DEC-KANJI", ei_dec_kanji ) | ||
| S(osf1_1, "DEC-HANYU", ei_dec_hanyu ) |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,4 @@ | ||
| S(osf1_0, "DEC-KANJI", ei_dec_kanji ) | ||
| S(osf1_1, "DECKANJI", ei_dec_kanji ) | ||
| S(osf1_2, "DEC-HANYU", ei_dec_hanyu ) | ||
| S(osf1_3, "DECHANYU", ei_dec_hanyu ) |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,116 @@ | ||
| /* | ||
| * Copyright (C) 1999-2002 Free Software Foundation, Inc. | ||
| * This file is part of the GNU LIBICONV Library. | ||
| * | ||
| * The GNU LIBICONV Library is free software; you can redistribute it | ||
| * and/or modify it under the terms of the GNU Library General Public | ||
| * License as published by the Free Software Foundation; either version 2 | ||
| * of the License, or (at your option) any later version. | ||
| * | ||
| * The GNU LIBICONV Library 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 | ||
| * Library General Public License for more details. | ||
| * | ||
| * You should have received a copy of the GNU Library General Public | ||
| * License along with the GNU LIBICONV Library; see the file COPYING.LIB. | ||
| * If not, write to the Free Software Foundation, Inc., 51 Franklin Street, | ||
| * Fifth Floor, Boston, MA 02110-1301, USA. | ||
| */ | ||
|
|
||
| /* | ||
| * ARMSCII-8 | ||
| */ | ||
|
|
||
| static const unsigned short armscii_8_2uni[96] = { | ||
| /* 0xa0 */ | ||
| 0x00a0, 0xfffd, 0x0587, 0x0589, 0x0029, 0x0028, 0x00bb, 0x00ab, | ||
| 0x2014, 0x002e, 0x055d, 0x002c, 0x002d, 0x058a, 0x2026, 0x055c, | ||
| /* 0xb0 */ | ||
| 0x055b, 0x055e, 0x0531, 0x0561, 0x0532, 0x0562, 0x0533, 0x0563, | ||
| 0x0534, 0x0564, 0x0535, 0x0565, 0x0536, 0x0566, 0x0537, 0x0567, | ||
| /* 0xc0 */ | ||
| 0x0538, 0x0568, 0x0539, 0x0569, 0x053a, 0x056a, 0x053b, 0x056b, | ||
| 0x053c, 0x056c, 0x053d, 0x056d, 0x053e, 0x056e, 0x053f, 0x056f, | ||
| /* 0xd0 */ | ||
| 0x0540, 0x0570, 0x0541, 0x0571, 0x0542, 0x0572, 0x0543, 0x0573, | ||
| 0x0544, 0x0574, 0x0545, 0x0575, 0x0546, 0x0576, 0x0547, 0x0577, | ||
| /* 0xe0 */ | ||
| 0x0548, 0x0578, 0x0549, 0x0579, 0x054a, 0x057a, 0x054b, 0x057b, | ||
| 0x054c, 0x057c, 0x054d, 0x057d, 0x054e, 0x057e, 0x054f, 0x057f, | ||
| /* 0xf0 */ | ||
| 0x0550, 0x0580, 0x0551, 0x0581, 0x0552, 0x0582, 0x0553, 0x0583, | ||
| 0x0554, 0x0584, 0x0555, 0x0585, 0x0556, 0x0586, 0x055a, 0xfffd, | ||
| }; | ||
|
|
||
| static int | ||
| armscii_8_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) | ||
| { | ||
| unsigned char c = *s; | ||
| if (c < 0xa0) { | ||
| *pwc = (ucs4_t) c; | ||
| return 1; | ||
| } | ||
| else { | ||
| unsigned short wc = armscii_8_2uni[c-0xa0]; | ||
| if (wc != 0xfffd) { | ||
| *pwc = (ucs4_t) wc; | ||
| return 1; | ||
| } | ||
| } | ||
| return RET_ILSEQ; | ||
| } | ||
|
|
||
| static const unsigned char armscii_8_page00[8] = { | ||
| 0xa5, 0xa4, 0x2a, 0x2b, 0xab, 0xac, 0xa9, 0x2f, /* 0x28-0x2f */ | ||
| }; | ||
| static const unsigned char armscii_8_page00_1[32] = { | ||
| 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */ | ||
| 0x00, 0x00, 0x00, 0xa7, 0x00, 0x00, 0x00, 0x00, /* 0xa8-0xaf */ | ||
| 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb0-0xb7 */ | ||
| 0x00, 0x00, 0x00, 0xa6, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */ | ||
| }; | ||
| static const unsigned char armscii_8_page05[96] = { | ||
| 0x00, 0xb2, 0xb4, 0xb6, 0xb8, 0xba, 0xbc, 0xbe, /* 0x30-0x37 */ | ||
| 0xc0, 0xc2, 0xc4, 0xc6, 0xc8, 0xca, 0xcc, 0xce, /* 0x38-0x3f */ | ||
| 0xd0, 0xd2, 0xd4, 0xd6, 0xd8, 0xda, 0xdc, 0xde, /* 0x40-0x47 */ | ||
| 0xe0, 0xe2, 0xe4, 0xe6, 0xe8, 0xea, 0xec, 0xee, /* 0x48-0x4f */ | ||
| 0xf0, 0xf2, 0xf4, 0xf6, 0xf8, 0xfa, 0xfc, 0x00, /* 0x50-0x57 */ | ||
| 0x00, 0x00, 0xfe, 0xb0, 0xaf, 0xaa, 0xb1, 0x00, /* 0x58-0x5f */ | ||
| 0x00, 0xb3, 0xb5, 0xb7, 0xb9, 0xbb, 0xbd, 0xbf, /* 0x60-0x67 */ | ||
| 0xc1, 0xc3, 0xc5, 0xc7, 0xc9, 0xcb, 0xcd, 0xcf, /* 0x68-0x6f */ | ||
| 0xd1, 0xd3, 0xd5, 0xd7, 0xd9, 0xdb, 0xdd, 0xdf, /* 0x70-0x77 */ | ||
| 0xe1, 0xe3, 0xe5, 0xe7, 0xe9, 0xeb, 0xed, 0xef, /* 0x78-0x7f */ | ||
| 0xf1, 0xf3, 0xf5, 0xf7, 0xf9, 0xfb, 0xfd, 0xa2, /* 0x80-0x87 */ | ||
| 0x00, 0xa3, 0xad, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */ | ||
| }; | ||
| static const unsigned char armscii_8_page20[24] = { | ||
| 0x00, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, /* 0x10-0x17 */ | ||
| 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */ | ||
| 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xae, 0x00, /* 0x20-0x27 */ | ||
| }; | ||
|
|
||
| static int | ||
| armscii_8_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) | ||
| { | ||
| unsigned char c = 0; | ||
| if (wc < 0x0028) { | ||
| *r = wc; | ||
| return 1; | ||
| } | ||
| else if (wc >= 0x0028 && wc < 0x0030) | ||
| c = armscii_8_page00[wc-0x0028]; | ||
| else if (wc >= 0x0030 && wc < 0x00a0) | ||
| c = wc; | ||
| else if (wc >= 0x00a0 && wc < 0x00c0) | ||
| c = armscii_8_page00_1[wc-0x00a0]; | ||
| else if (wc >= 0x0530 && wc < 0x0590) | ||
| c = armscii_8_page05[wc-0x0530]; | ||
| else if (wc >= 0x2010 && wc < 0x2028) | ||
| c = armscii_8_page20[wc-0x2010]; | ||
| if (c != 0) { | ||
| *r = c; | ||
| return 1; | ||
| } | ||
| return RET_ILUNI; | ||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,44 @@ | ||
| /* | ||
| * Copyright (C) 1999-2001 Free Software Foundation, Inc. | ||
| * This file is part of the GNU LIBICONV Library. | ||
| * | ||
| * The GNU LIBICONV Library is free software; you can redistribute it | ||
| * and/or modify it under the terms of the GNU Library General Public | ||
| * License as published by the Free Software Foundation; either version 2 | ||
| * of the License, or (at your option) any later version. | ||
| * | ||
| * The GNU LIBICONV Library 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 | ||
| * Library General Public License for more details. | ||
| * | ||
| * You should have received a copy of the GNU Library General Public | ||
| * License along with the GNU LIBICONV Library; see the file COPYING.LIB. | ||
| * If not, write to the Free Software Foundation, Inc., 51 Franklin Street, | ||
| * Fifth Floor, Boston, MA 02110-1301, USA. | ||
| */ | ||
|
|
||
| /* | ||
| * ASCII | ||
| */ | ||
|
|
||
| static int | ||
| ascii_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) | ||
| { | ||
| unsigned char c = *s; | ||
| if (c < 0x80) { | ||
| *pwc = (ucs4_t) c; | ||
| return 1; | ||
| } | ||
| return RET_ILSEQ; | ||
| } | ||
|
|
||
| static int | ||
| ascii_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) | ||
| { | ||
| if (wc < 0x0080) { | ||
| *r = wc; | ||
| return 1; | ||
| } | ||
| return RET_ILUNI; | ||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,158 @@ | ||
| /* | ||
| * Copyright (C) 1999-2005 Free Software Foundation, Inc. | ||
| * This file is part of the GNU LIBICONV Library. | ||
| * | ||
| * The GNU LIBICONV Library is free software; you can redistribute it | ||
| * and/or modify it under the terms of the GNU Library General Public | ||
| * License as published by the Free Software Foundation; either version 2 | ||
| * of the License, or (at your option) any later version. | ||
| * | ||
| * The GNU LIBICONV Library 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 | ||
| * Library General Public License for more details. | ||
| * | ||
| * You should have received a copy of the GNU Library General Public | ||
| * License along with the GNU LIBICONV Library; see the file COPYING.LIB. | ||
| * If not, write to the Free Software Foundation, Inc., 51 Franklin Street, | ||
| * Fifth Floor, Boston, MA 02110-1301, USA. | ||
| */ | ||
|
|
||
| /* | ||
| * Atari ST | ||
| */ | ||
|
|
||
| static const unsigned short atarist_2uni[128] = { | ||
| /* 0x80 */ | ||
| 0x00c7, 0x00fc, 0x00e9, 0x00e2, 0x00e4, 0x00e0, 0x00e5, 0x00e7, | ||
| 0x00ea, 0x00eb, 0x00e8, 0x00ef, 0x00ee, 0x00ec, 0x00c4, 0x00c5, | ||
| /* 0x90 */ | ||
| 0x00c9, 0x00e6, 0x00c6, 0x00f4, 0x00f6, 0x00f2, 0x00fb, 0x00f9, | ||
| 0x00ff, 0x00d6, 0x00dc, 0x00a2, 0x00a3, 0x00a5, 0x00df, 0x0192, | ||
| /* 0xa0 */ | ||
| 0x00e1, 0x00ed, 0x00f3, 0x00fa, 0x00f1, 0x00d1, 0x00aa, 0x00ba, | ||
| 0x00bf, 0x2310, 0x00ac, 0x00bd, 0x00bc, 0x00a1, 0x00ab, 0x00bb, | ||
| /* 0xb0 */ | ||
| 0x00e3, 0x00f5, 0x00d8, 0x00f8, 0x0153, 0x0152, 0x00c0, 0x00c3, | ||
| 0x00d5, 0x00a8, 0x00b4, 0x2020, 0x00b6, 0x00a9, 0x00ae, 0x2122, | ||
| /* 0xc0 */ | ||
| 0x0133, 0x0132, 0x05d0, 0x05d1, 0x05d2, 0x05d3, 0x05d4, 0x05d5, | ||
| 0x05d6, 0x05d7, 0x05d8, 0x05d9, 0x05db, 0x05dc, 0x05de, 0x05e0, | ||
| /* 0xd0 */ | ||
| 0x05e1, 0x05e2, 0x05e4, 0x05e6, 0x05e7, 0x05e8, 0x05e9, 0x05ea, | ||
| 0x05df, 0x05da, 0x05dd, 0x05e3, 0x05e5, 0x00a7, 0x2227, 0x221e, | ||
| /* 0xe0 */ | ||
| 0x03b1, 0x03b2, 0x0393, 0x03c0, 0x03a3, 0x03c3, 0x00b5, 0x03c4, | ||
| 0x03a6, 0x0398, 0x03a9, 0x03b4, 0x222e, 0x03c6, 0x2208, 0x2229, | ||
| /* 0xf0 */ | ||
| 0x2261, 0x00b1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00f7, 0x2248, | ||
| 0x00b0, 0x2219, 0x00b7, 0x221a, 0x207f, 0x00b2, 0x00b3, 0x00af, | ||
| }; | ||
|
|
||
| static int | ||
| atarist_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) | ||
| { | ||
| unsigned char c = *s; | ||
| if (c < 0x80) | ||
| *pwc = (ucs4_t) c; | ||
| else | ||
| *pwc = (ucs4_t) atarist_2uni[c-0x80]; | ||
| return 1; | ||
| } | ||
|
|
||
| static const unsigned char atarist_page00[96] = { | ||
| 0x00, 0xad, 0x9b, 0x9c, 0x00, 0x9d, 0x00, 0xdd, /* 0xa0-0xa7 */ | ||
| 0xb9, 0xbd, 0xa6, 0xae, 0xaa, 0x00, 0xbe, 0xff, /* 0xa8-0xaf */ | ||
| 0xf8, 0xf1, 0xfd, 0xfe, 0xba, 0xe6, 0xbc, 0xfa, /* 0xb0-0xb7 */ | ||
| 0x00, 0x00, 0xa7, 0xaf, 0xac, 0xab, 0x00, 0xa8, /* 0xb8-0xbf */ | ||
| 0xb6, 0x00, 0x00, 0xb7, 0x8e, 0x8f, 0x92, 0x80, /* 0xc0-0xc7 */ | ||
| 0x00, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */ | ||
| 0x00, 0xa5, 0x00, 0x00, 0x00, 0xb8, 0x99, 0x00, /* 0xd0-0xd7 */ | ||
| 0xb2, 0x00, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x9e, /* 0xd8-0xdf */ | ||
| 0x85, 0xa0, 0x83, 0xb0, 0x84, 0x86, 0x91, 0x87, /* 0xe0-0xe7 */ | ||
| 0x8a, 0x82, 0x88, 0x89, 0x8d, 0xa1, 0x8c, 0x8b, /* 0xe8-0xef */ | ||
| 0x00, 0xa4, 0x95, 0xa2, 0x93, 0xb1, 0x94, 0xf6, /* 0xf0-0xf7 */ | ||
| 0xb3, 0x97, 0xa3, 0x96, 0x81, 0x00, 0x00, 0x98, /* 0xf8-0xff */ | ||
| }; | ||
| static const unsigned char atarist_page01[104] = { | ||
| 0x00, 0x00, 0xc1, 0xc0, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */ | ||
| 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */ | ||
| 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */ | ||
| 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */ | ||
| 0x00, 0x00, 0xb5, 0xb4, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */ | ||
| 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */ | ||
| 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */ | ||
| 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */ | ||
| 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */ | ||
| 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */ | ||
| 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */ | ||
| 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */ | ||
| 0x00, 0x00, 0x9f, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */ | ||
| }; | ||
| static const unsigned char atarist_page03[56] = { | ||
| 0x00, 0x00, 0x00, 0xe2, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */ | ||
| 0xe9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x98-0x9f */ | ||
| 0x00, 0x00, 0x00, 0xe4, 0x00, 0x00, 0xe8, 0x00, /* 0xa0-0xa7 */ | ||
| 0x00, 0xea, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa8-0xaf */ | ||
| 0x00, 0xe0, 0xe1, 0x00, 0xeb, 0x00, 0x00, 0x00, /* 0xb0-0xb7 */ | ||
| 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */ | ||
| 0xe3, 0x00, 0x00, 0xe5, 0xe7, 0x00, 0xed, 0x00, /* 0xc0-0xc7 */ | ||
| }; | ||
| static const unsigned char atarist_page05[32] = { | ||
| 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, /* 0xd0-0xd7 */ | ||
| 0xca, 0xcb, 0xd9, 0xcc, 0xcd, 0xda, 0xce, 0xd8, /* 0xd8-0xdf */ | ||
| 0xcf, 0xd0, 0xd1, 0xdb, 0xd2, 0xdc, 0xd3, 0xd4, /* 0xe0-0xe7 */ | ||
| 0xd5, 0xd6, 0xd7, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe8-0xef */ | ||
| }; | ||
| static const unsigned char atarist_page22[96] = { | ||
| 0xee, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x08-0x0f */ | ||
| 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */ | ||
| 0x00, 0xf9, 0xfb, 0x00, 0x00, 0x00, 0xdf, 0x00, /* 0x18-0x1f */ | ||
| 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xde, /* 0x20-0x27 */ | ||
| 0x00, 0xef, 0x00, 0x00, 0x00, 0x00, 0xec, 0x00, /* 0x28-0x2f */ | ||
| 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */ | ||
| 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */ | ||
| 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */ | ||
| 0xf7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */ | ||
| 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */ | ||
| 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */ | ||
| 0x00, 0xf0, 0x00, 0x00, 0xf3, 0xf2, 0x00, 0x00, /* 0x60-0x67 */ | ||
| }; | ||
| static const unsigned char atarist_page23[24] = { | ||
| 0xa9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */ | ||
| 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */ | ||
| 0xf4, 0xf5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */ | ||
| }; | ||
|
|
||
| static int | ||
| atarist_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) | ||
| { | ||
| unsigned char c = 0; | ||
| if (wc < 0x0080) { | ||
| *r = wc; | ||
| return 1; | ||
| } | ||
| else if (wc >= 0x00a0 && wc < 0x0100) | ||
| c = atarist_page00[wc-0x00a0]; | ||
| else if (wc >= 0x0130 && wc < 0x0198) | ||
| c = atarist_page01[wc-0x0130]; | ||
| else if (wc >= 0x0390 && wc < 0x03c8) | ||
| c = atarist_page03[wc-0x0390]; | ||
| else if (wc >= 0x05d0 && wc < 0x05f0) | ||
| c = atarist_page05[wc-0x05d0]; | ||
| else if (wc == 0x2020) | ||
| c = 0xbb; | ||
| else if (wc == 0x207f) | ||
| c = 0xfc; | ||
| else if (wc == 0x2122) | ||
| c = 0xbf; | ||
| else if (wc >= 0x2208 && wc < 0x2268) | ||
| c = atarist_page22[wc-0x2208]; | ||
| else if (wc >= 0x2310 && wc < 0x2328) | ||
| c = atarist_page23[wc-0x2310]; | ||
| if (c != 0) { | ||
| *r = c; | ||
| return 1; | ||
| } | ||
| return RET_ILUNI; | ||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,197 @@ | ||
| /* | ||
| * Copyright (C) 1999-2002, 2006 Free Software Foundation, Inc. | ||
| * This file is part of the GNU LIBICONV Library. | ||
| * | ||
| * The GNU LIBICONV Library is free software; you can redistribute it | ||
| * and/or modify it under the terms of the GNU Library General Public | ||
| * License as published by the Free Software Foundation; either version 2 | ||
| * of the License, or (at your option) any later version. | ||
| * | ||
| * The GNU LIBICONV Library 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 | ||
| * Library General Public License for more details. | ||
| * | ||
| * You should have received a copy of the GNU Library General Public | ||
| * License along with the GNU LIBICONV Library; see the file COPYING.LIB. | ||
| * If not, write to the Free Software Foundation, Inc., 51 Franklin Street, | ||
| * Fifth Floor, Boston, MA 02110-1301, USA. | ||
| */ | ||
|
|
||
| /* | ||
| * BIG5-HKSCS:1999 | ||
| */ | ||
|
|
||
| /* | ||
| * BIG5-HKSCS:1999 can be downloaded from | ||
| * http://www.info.gov.hk/digital21/eng/hkscs/download.html | ||
| * http://www.info.gov.hk/digital21/eng/hkscs/index.html | ||
| * | ||
| * It extends BIG5 (without the rows 0xC6..0xC7) through the ranges | ||
| * | ||
| * 0x{88..8D}{40..7E,A1..FE} 641 characters | ||
| * 0x{8E..A0}{40..7E,A1..FE} 2898 characters | ||
| * 0x{C6..C8}{40..7E,A1..FE} 359 characters | ||
| * 0xF9{D6..FE} 41 characters | ||
| * 0x{FA..FE}{40..7E,A1..FE} 763 characters | ||
| * | ||
| * Note that some HKSCS characters are not contained in Unicode 3.2 | ||
| * and are therefore best represented as sequences of Unicode characters: | ||
| * 0x8862 U+00CA U+0304 LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND MACRON | ||
| * 0x8864 U+00CA U+030C LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND CARON | ||
| * 0x88A3 U+00EA U+0304 LATIN SMALL LETTER E WITH CIRCUMFLEX AND MACRON | ||
| * 0x88A5 U+00EA U+030C LATIN SMALL LETTER E WITH CIRCUMFLEX AND CARON | ||
| */ | ||
|
|
||
| #include "hkscs1999.h" | ||
| #include "flushwc.h" | ||
|
|
||
| static int | ||
| big5hkscs1999_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) | ||
| { | ||
| ucs4_t last_wc = conv->istate; | ||
| if (last_wc) { | ||
| /* Output the buffered character. */ | ||
| conv->istate = 0; | ||
| *pwc = last_wc; | ||
| return 0; /* Don't advance the input pointer. */ | ||
| } else { | ||
| unsigned char c = *s; | ||
| /* Code set 0 (ASCII) */ | ||
| if (c < 0x80) | ||
| return ascii_mbtowc(conv,pwc,s,n); | ||
| /* Code set 1 (BIG5 extended) */ | ||
| if (c >= 0xa1 && c < 0xff) { | ||
| if (n < 2) | ||
| return RET_TOOFEW(0); | ||
| { | ||
| unsigned char c2 = s[1]; | ||
| if ((c2 >= 0x40 && c2 < 0x7f) || (c2 >= 0xa1 && c2 < 0xff)) { | ||
| if (!((c == 0xc6 && c2 >= 0xa1) || c == 0xc7)) { | ||
| int ret = big5_mbtowc(conv,pwc,s,2); | ||
| if (ret != RET_ILSEQ) | ||
| return ret; | ||
| } | ||
| } | ||
| } | ||
| } | ||
| { | ||
| int ret = hkscs1999_mbtowc(conv,pwc,s,n); | ||
| if (ret != RET_ILSEQ) | ||
| return ret; | ||
| } | ||
| if (c == 0x88) { | ||
| if (n < 2) | ||
| return RET_TOOFEW(0); | ||
| { | ||
| unsigned char c2 = s[1]; | ||
| if (c2 == 0x62 || c2 == 0x64 || c2 == 0xa3 || c2 == 0xa5) { | ||
| /* It's a composed character. */ | ||
| ucs4_t wc1 = ((c2 >> 3) << 2) + 0x009a; /* = 0x00ca or 0x00ea */ | ||
| ucs4_t wc2 = ((c2 & 6) << 2) + 0x02fc; /* = 0x0304 or 0x030c */ | ||
| /* We cannot output two Unicode characters at once. So, | ||
| output the first character and buffer the second one. */ | ||
| *pwc = wc1; | ||
| conv->istate = wc2; | ||
| return 2; | ||
| } | ||
| } | ||
| } | ||
| return RET_ILSEQ; | ||
| } | ||
| } | ||
|
|
||
| #define big5hkscs1999_flushwc normal_flushwc | ||
|
|
||
| static int | ||
| big5hkscs1999_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) | ||
| { | ||
| int count = 0; | ||
| unsigned char last = conv->ostate; | ||
|
|
||
| if (last) { | ||
| /* last is = 0x66 or = 0xa7. */ | ||
| if (wc == 0x0304 || wc == 0x030c) { | ||
| /* Output the combined character. */ | ||
| if (n >= 2) { | ||
| r[0] = 0x88; | ||
| r[1] = last + ((wc & 24) >> 2) - 4; /* = 0x62 or 0x64 or 0xa3 or 0xa5 */ | ||
| conv->ostate = 0; | ||
| return 2; | ||
| } else | ||
| return RET_TOOSMALL; | ||
| } | ||
|
|
||
| /* Output the buffered character. */ | ||
| if (n < 2) | ||
| return RET_TOOSMALL; | ||
| r[0] = 0x88; | ||
| r[1] = last; | ||
| r += 2; | ||
| count = 2; | ||
| } | ||
|
|
||
| /* Code set 0 (ASCII) */ | ||
| if (wc < 0x0080) { | ||
| /* Plain ASCII character. */ | ||
| if (n > count) { | ||
| r[0] = (unsigned char) wc; | ||
| conv->ostate = 0; | ||
| return count+1; | ||
| } else | ||
| return RET_TOOSMALL; | ||
| } else { | ||
| unsigned char buf[2]; | ||
| int ret; | ||
|
|
||
| /* Code set 1 (BIG5 extended) */ | ||
| ret = big5_wctomb(conv,buf,wc,2); | ||
| if (ret != RET_ILUNI) { | ||
| if (ret != 2) abort(); | ||
| if (!((buf[0] == 0xc6 && buf[1] >= 0xa1) || buf[0] == 0xc7)) { | ||
| if (n >= count+2) { | ||
| r[0] = buf[0]; | ||
| r[1] = buf[1]; | ||
| conv->ostate = 0; | ||
| return count+2; | ||
| } else | ||
| return RET_TOOSMALL; | ||
| } | ||
| } | ||
| ret = hkscs1999_wctomb(conv,buf,wc,2); | ||
| if (ret != RET_ILUNI) { | ||
| if (ret != 2) abort(); | ||
| if ((wc & ~0x0020) == 0x00ca) { | ||
| /* A possible first character of a multi-character sequence. We have to | ||
| buffer it. */ | ||
| if (!(buf[0] == 0x88 && (buf[1] == 0x66 || buf[1] == 0xa7))) abort(); | ||
| conv->ostate = buf[1]; /* = 0x66 or = 0xa7 */ | ||
| return count+0; | ||
| } | ||
| if (n >= count+2) { | ||
| r[0] = buf[0]; | ||
| r[1] = buf[1]; | ||
| conv->ostate = 0; | ||
| return count+2; | ||
| } else | ||
| return RET_TOOSMALL; | ||
| } | ||
| return RET_ILUNI; | ||
| } | ||
| } | ||
|
|
||
| static int | ||
| big5hkscs1999_reset (conv_t conv, unsigned char *r, int n) | ||
| { | ||
| unsigned char last = conv->ostate; | ||
|
|
||
| if (last) { | ||
| if (n < 2) | ||
| return RET_TOOSMALL; | ||
| r[0] = 0x88; | ||
| r[1] = last; | ||
| /* conv->ostate = 0; will be done by the caller */ | ||
| return 2; | ||
| } else | ||
| return 0; | ||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,215 @@ | ||
| /* | ||
| * Copyright (C) 1999-2002, 2006 Free Software Foundation, Inc. | ||
| * This file is part of the GNU LIBICONV Library. | ||
| * | ||
| * The GNU LIBICONV Library is free software; you can redistribute it | ||
| * and/or modify it under the terms of the GNU Library General Public | ||
| * License as published by the Free Software Foundation; either version 2 | ||
| * of the License, or (at your option) any later version. | ||
| * | ||
| * The GNU LIBICONV Library 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 | ||
| * Library General Public License for more details. | ||
| * | ||
| * You should have received a copy of the GNU Library General Public | ||
| * License along with the GNU LIBICONV Library; see the file COPYING.LIB. | ||
| * If not, write to the Free Software Foundation, Inc., 51 Franklin Street, | ||
| * Fifth Floor, Boston, MA 02110-1301, USA. | ||
| */ | ||
|
|
||
| /* | ||
| * BIG5-HKSCS:2001 | ||
| */ | ||
|
|
||
| /* | ||
| * BIG5-HKSCS:2001 can be downloaded from | ||
| * http://www.info.gov.hk/digital21/eng/hkscs/download.html | ||
| * http://www.info.gov.hk/digital21/eng/hkscs/index.html | ||
| * | ||
| * It extends BIG5-HKSCS:1999 through 116 characters. | ||
| * | ||
| * It extends BIG5 (without the rows 0xC6..0xC7) through the ranges | ||
| * | ||
| * 0x{88..8D}{40..7E,A1..FE} 757 characters | ||
| * 0x{8E..A0}{40..7E,A1..FE} 2898 characters | ||
| * 0x{C6..C8}{40..7E,A1..FE} 359 characters | ||
| * 0xF9{D6..FE} 41 characters | ||
| * 0x{FA..FE}{40..7E,A1..FE} 763 characters | ||
| * | ||
| * Note that some HKSCS characters are not contained in Unicode 3.2 | ||
| * and are therefore best represented as sequences of Unicode characters: | ||
| * 0x8862 U+00CA U+0304 LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND MACRON | ||
| * 0x8864 U+00CA U+030C LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND CARON | ||
| * 0x88A3 U+00EA U+0304 LATIN SMALL LETTER E WITH CIRCUMFLEX AND MACRON | ||
| * 0x88A5 U+00EA U+030C LATIN SMALL LETTER E WITH CIRCUMFLEX AND CARON | ||
| */ | ||
|
|
||
| #include "hkscs2001.h" | ||
| #include "flushwc.h" | ||
|
|
||
| static int | ||
| big5hkscs2001_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) | ||
| { | ||
| ucs4_t last_wc = conv->istate; | ||
| if (last_wc) { | ||
| /* Output the buffered character. */ | ||
| conv->istate = 0; | ||
| *pwc = last_wc; | ||
| return 0; /* Don't advance the input pointer. */ | ||
| } else { | ||
| unsigned char c = *s; | ||
| /* Code set 0 (ASCII) */ | ||
| if (c < 0x80) | ||
| return ascii_mbtowc(conv,pwc,s,n); | ||
| /* Code set 1 (BIG5 extended) */ | ||
| if (c >= 0xa1 && c < 0xff) { | ||
| if (n < 2) | ||
| return RET_TOOFEW(0); | ||
| { | ||
| unsigned char c2 = s[1]; | ||
| if ((c2 >= 0x40 && c2 < 0x7f) || (c2 >= 0xa1 && c2 < 0xff)) { | ||
| if (!((c == 0xc6 && c2 >= 0xa1) || c == 0xc7)) { | ||
| int ret = big5_mbtowc(conv,pwc,s,2); | ||
| if (ret != RET_ILSEQ) | ||
| return ret; | ||
| } | ||
| } | ||
| } | ||
| } | ||
| { | ||
| int ret = hkscs1999_mbtowc(conv,pwc,s,n); | ||
| if (ret != RET_ILSEQ) | ||
| return ret; | ||
| } | ||
| { | ||
| int ret = hkscs2001_mbtowc(conv,pwc,s,n); | ||
| if (ret != RET_ILSEQ) | ||
| return ret; | ||
| } | ||
| if (c == 0x88) { | ||
| if (n < 2) | ||
| return RET_TOOFEW(0); | ||
| { | ||
| unsigned char c2 = s[1]; | ||
| if (c2 == 0x62 || c2 == 0x64 || c2 == 0xa3 || c2 == 0xa5) { | ||
| /* It's a composed character. */ | ||
| ucs4_t wc1 = ((c2 >> 3) << 2) + 0x009a; /* = 0x00ca or 0x00ea */ | ||
| ucs4_t wc2 = ((c2 & 6) << 2) + 0x02fc; /* = 0x0304 or 0x030c */ | ||
| /* We cannot output two Unicode characters at once. So, | ||
| output the first character and buffer the second one. */ | ||
| *pwc = wc1; | ||
| conv->istate = wc2; | ||
| return 2; | ||
| } | ||
| } | ||
| } | ||
| return RET_ILSEQ; | ||
| } | ||
| } | ||
|
|
||
| #define big5hkscs2001_flushwc normal_flushwc | ||
|
|
||
| static int | ||
| big5hkscs2001_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) | ||
| { | ||
| int count = 0; | ||
| unsigned char last = conv->ostate; | ||
|
|
||
| if (last) { | ||
| /* last is = 0x66 or = 0xa7. */ | ||
| if (wc == 0x0304 || wc == 0x030c) { | ||
| /* Output the combined character. */ | ||
| if (n >= 2) { | ||
| r[0] = 0x88; | ||
| r[1] = last + ((wc & 24) >> 2) - 4; /* = 0x62 or 0x64 or 0xa3 or 0xa5 */ | ||
| conv->ostate = 0; | ||
| return 2; | ||
| } else | ||
| return RET_TOOSMALL; | ||
| } | ||
|
|
||
| /* Output the buffered character. */ | ||
| if (n < 2) | ||
| return RET_TOOSMALL; | ||
| r[0] = 0x88; | ||
| r[1] = last; | ||
| r += 2; | ||
| count = 2; | ||
| } | ||
|
|
||
| /* Code set 0 (ASCII) */ | ||
| if (wc < 0x0080) { | ||
| /* Plain ASCII character. */ | ||
| if (n > count) { | ||
| r[0] = (unsigned char) wc; | ||
| conv->ostate = 0; | ||
| return count+1; | ||
| } else | ||
| return RET_TOOSMALL; | ||
| } else { | ||
| unsigned char buf[2]; | ||
| int ret; | ||
|
|
||
| /* Code set 1 (BIG5 extended) */ | ||
| ret = big5_wctomb(conv,buf,wc,2); | ||
| if (ret != RET_ILUNI) { | ||
| if (ret != 2) abort(); | ||
| if (!((buf[0] == 0xc6 && buf[1] >= 0xa1) || buf[0] == 0xc7)) { | ||
| if (n >= count+2) { | ||
| r[0] = buf[0]; | ||
| r[1] = buf[1]; | ||
| conv->ostate = 0; | ||
| return count+2; | ||
| } else | ||
| return RET_TOOSMALL; | ||
| } | ||
| } | ||
| ret = hkscs1999_wctomb(conv,buf,wc,2); | ||
| if (ret != RET_ILUNI) { | ||
| if (ret != 2) abort(); | ||
| if ((wc & ~0x0020) == 0x00ca) { | ||
| /* A possible first character of a multi-character sequence. We have to | ||
| buffer it. */ | ||
| if (!(buf[0] == 0x88 && (buf[1] == 0x66 || buf[1] == 0xa7))) abort(); | ||
| conv->ostate = buf[1]; /* = 0x66 or = 0xa7 */ | ||
| return count+0; | ||
| } | ||
| if (n >= count+2) { | ||
| r[0] = buf[0]; | ||
| r[1] = buf[1]; | ||
| conv->ostate = 0; | ||
| return count+2; | ||
| } else | ||
| return RET_TOOSMALL; | ||
| } | ||
| ret = hkscs2001_wctomb(conv,buf,wc,2); | ||
| if (ret != RET_ILUNI) { | ||
| if (ret != 2) abort(); | ||
| if (n >= count+2) { | ||
| r[0] = buf[0]; | ||
| r[1] = buf[1]; | ||
| conv->ostate = 0; | ||
| return count+2; | ||
| } else | ||
| return RET_TOOSMALL; | ||
| } | ||
| return RET_ILUNI; | ||
| } | ||
| } | ||
|
|
||
| static int | ||
| big5hkscs2001_reset (conv_t conv, unsigned char *r, int n) | ||
| { | ||
| unsigned char last = conv->ostate; | ||
|
|
||
| if (last) { | ||
| if (n < 2) | ||
| return RET_TOOSMALL; | ||
| r[0] = 0x88; | ||
| r[1] = last; | ||
| /* conv->ostate = 0; will be done by the caller */ | ||
| return 2; | ||
| } else | ||
| return 0; | ||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,231 @@ | ||
| /* | ||
| * Copyright (C) 1999-2002, 2006 Free Software Foundation, Inc. | ||
| * This file is part of the GNU LIBICONV Library. | ||
| * | ||
| * The GNU LIBICONV Library is free software; you can redistribute it | ||
| * and/or modify it under the terms of the GNU Library General Public | ||
| * License as published by the Free Software Foundation; either version 2 | ||
| * of the License, or (at your option) any later version. | ||
| * | ||
| * The GNU LIBICONV Library 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 | ||
| * Library General Public License for more details. | ||
| * | ||
| * You should have received a copy of the GNU Library General Public | ||
| * License along with the GNU LIBICONV Library; see the file COPYING.LIB. | ||
| * If not, write to the Free Software Foundation, Inc., 51 Franklin Street, | ||
| * Fifth Floor, Boston, MA 02110-1301, USA. | ||
| */ | ||
|
|
||
| /* | ||
| * BIG5-HKSCS:2004 | ||
| */ | ||
|
|
||
| /* | ||
| * BIG5-HKSCS:2004 can be downloaded from | ||
| * http://www.info.gov.hk/digital21/eng/hkscs/download.html | ||
| * http://www.info.gov.hk/digital21/eng/hkscs/index.html | ||
| * | ||
| * It extends BIG5-HKSCS:2001 through 123 characters. | ||
| * | ||
| * It extends BIG5 (without the rows 0xC6..0xC7) through the ranges | ||
| * | ||
| * 0x{87..8D}{40..7E,A1..FE} 880 characters | ||
| * 0x{8E..A0}{40..7E,A1..FE} 2898 characters | ||
| * 0x{C6..C8}{40..7E,A1..FE} 359 characters | ||
| * 0xF9{D6..FE} 41 characters | ||
| * 0x{FA..FE}{40..7E,A1..FE} 763 characters | ||
| * | ||
| * Note that some HKSCS characters are not contained in Unicode 3.2 | ||
| * and are therefore best represented as sequences of Unicode characters: | ||
| * 0x8862 U+00CA U+0304 LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND MACRON | ||
| * 0x8864 U+00CA U+030C LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND CARON | ||
| * 0x88A3 U+00EA U+0304 LATIN SMALL LETTER E WITH CIRCUMFLEX AND MACRON | ||
| * 0x88A5 U+00EA U+030C LATIN SMALL LETTER E WITH CIRCUMFLEX AND CARON | ||
| */ | ||
|
|
||
| #include "hkscs2004.h" | ||
| #include "flushwc.h" | ||
|
|
||
| static int | ||
| big5hkscs2004_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) | ||
| { | ||
| ucs4_t last_wc = conv->istate; | ||
| if (last_wc) { | ||
| /* Output the buffered character. */ | ||
| conv->istate = 0; | ||
| *pwc = last_wc; | ||
| return 0; /* Don't advance the input pointer. */ | ||
| } else { | ||
| unsigned char c = *s; | ||
| /* Code set 0 (ASCII) */ | ||
| if (c < 0x80) | ||
| return ascii_mbtowc(conv,pwc,s,n); | ||
| /* Code set 1 (BIG5 extended) */ | ||
| if (c >= 0xa1 && c < 0xff) { | ||
| if (n < 2) | ||
| return RET_TOOFEW(0); | ||
| { | ||
| unsigned char c2 = s[1]; | ||
| if ((c2 >= 0x40 && c2 < 0x7f) || (c2 >= 0xa1 && c2 < 0xff)) { | ||
| if (!((c == 0xc6 && c2 >= 0xa1) || c == 0xc7)) { | ||
| int ret = big5_mbtowc(conv,pwc,s,2); | ||
| if (ret != RET_ILSEQ) | ||
| return ret; | ||
| } | ||
| } | ||
| } | ||
| } | ||
| { | ||
| int ret = hkscs1999_mbtowc(conv,pwc,s,n); | ||
| if (ret != RET_ILSEQ) | ||
| return ret; | ||
| } | ||
| { | ||
| int ret = hkscs2001_mbtowc(conv,pwc,s,n); | ||
| if (ret != RET_ILSEQ) | ||
| return ret; | ||
| } | ||
| { | ||
| int ret = hkscs2004_mbtowc(conv,pwc,s,n); | ||
| if (ret != RET_ILSEQ) | ||
| return ret; | ||
| } | ||
| if (c == 0x88) { | ||
| if (n < 2) | ||
| return RET_TOOFEW(0); | ||
| { | ||
| unsigned char c2 = s[1]; | ||
| if (c2 == 0x62 || c2 == 0x64 || c2 == 0xa3 || c2 == 0xa5) { | ||
| /* It's a composed character. */ | ||
| ucs4_t wc1 = ((c2 >> 3) << 2) + 0x009a; /* = 0x00ca or 0x00ea */ | ||
| ucs4_t wc2 = ((c2 & 6) << 2) + 0x02fc; /* = 0x0304 or 0x030c */ | ||
| /* We cannot output two Unicode characters at once. So, | ||
| output the first character and buffer the second one. */ | ||
| *pwc = wc1; | ||
| conv->istate = wc2; | ||
| return 2; | ||
| } | ||
| } | ||
| } | ||
| return RET_ILSEQ; | ||
| } | ||
| } | ||
|
|
||
| #define big5hkscs2004_flushwc normal_flushwc | ||
|
|
||
| static int | ||
| big5hkscs2004_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) | ||
| { | ||
| int count = 0; | ||
| unsigned char last = conv->ostate; | ||
|
|
||
| if (last) { | ||
| /* last is = 0x66 or = 0xa7. */ | ||
| if (wc == 0x0304 || wc == 0x030c) { | ||
| /* Output the combined character. */ | ||
| if (n >= 2) { | ||
| r[0] = 0x88; | ||
| r[1] = last + ((wc & 24) >> 2) - 4; /* = 0x62 or 0x64 or 0xa3 or 0xa5 */ | ||
| conv->ostate = 0; | ||
| return 2; | ||
| } else | ||
| return RET_TOOSMALL; | ||
| } | ||
|
|
||
| /* Output the buffered character. */ | ||
| if (n < 2) | ||
| return RET_TOOSMALL; | ||
| r[0] = 0x88; | ||
| r[1] = last; | ||
| r += 2; | ||
| count = 2; | ||
| } | ||
|
|
||
| /* Code set 0 (ASCII) */ | ||
| if (wc < 0x0080) { | ||
| /* Plain ASCII character. */ | ||
| if (n > count) { | ||
| r[0] = (unsigned char) wc; | ||
| conv->ostate = 0; | ||
| return count+1; | ||
| } else | ||
| return RET_TOOSMALL; | ||
| } else { | ||
| unsigned char buf[2]; | ||
| int ret; | ||
|
|
||
| /* Code set 1 (BIG5 extended) */ | ||
| ret = big5_wctomb(conv,buf,wc,2); | ||
| if (ret != RET_ILUNI) { | ||
| if (ret != 2) abort(); | ||
| if (!((buf[0] == 0xc6 && buf[1] >= 0xa1) || buf[0] == 0xc7)) { | ||
| if (n >= count+2) { | ||
| r[0] = buf[0]; | ||
| r[1] = buf[1]; | ||
| conv->ostate = 0; | ||
| return count+2; | ||
| } else | ||
| return RET_TOOSMALL; | ||
| } | ||
| } | ||
| ret = hkscs1999_wctomb(conv,buf,wc,2); | ||
| if (ret != RET_ILUNI) { | ||
| if (ret != 2) abort(); | ||
| if ((wc & ~0x0020) == 0x00ca) { | ||
| /* A possible first character of a multi-character sequence. We have to | ||
| buffer it. */ | ||
| if (!(buf[0] == 0x88 && (buf[1] == 0x66 || buf[1] == 0xa7))) abort(); | ||
| conv->ostate = buf[1]; /* = 0x66 or = 0xa7 */ | ||
| return count+0; | ||
| } | ||
| if (n >= count+2) { | ||
| r[0] = buf[0]; | ||
| r[1] = buf[1]; | ||
| conv->ostate = 0; | ||
| return count+2; | ||
| } else | ||
| return RET_TOOSMALL; | ||
| } | ||
| ret = hkscs2001_wctomb(conv,buf,wc,2); | ||
| if (ret != RET_ILUNI) { | ||
| if (ret != 2) abort(); | ||
| if (n >= count+2) { | ||
| r[0] = buf[0]; | ||
| r[1] = buf[1]; | ||
| conv->ostate = 0; | ||
| return count+2; | ||
| } else | ||
| return RET_TOOSMALL; | ||
| } | ||
| ret = hkscs2004_wctomb(conv,buf,wc,2); | ||
| if (ret != RET_ILUNI) { | ||
| if (ret != 2) abort(); | ||
| if (n >= count+2) { | ||
| r[0] = buf[0]; | ||
| r[1] = buf[1]; | ||
| conv->ostate = 0; | ||
| return count+2; | ||
| } else | ||
| return RET_TOOSMALL; | ||
| } | ||
| return RET_ILUNI; | ||
| } | ||
| } | ||
|
|
||
| static int | ||
| big5hkscs2004_reset (conv_t conv, unsigned char *r, int n) | ||
| { | ||
| unsigned char last = conv->ostate; | ||
|
|
||
| if (last) { | ||
| if (n < 2) | ||
| return RET_TOOSMALL; | ||
| r[0] = 0x88; | ||
| r[1] = last; | ||
| /* conv->ostate = 0; will be done by the caller */ | ||
| return 2; | ||
| } else | ||
| return 0; | ||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,247 @@ | ||
| /* | ||
| * Copyright (C) 1999-2002, 2006, 2010 Free Software Foundation, Inc. | ||
| * This file is part of the GNU LIBICONV Library. | ||
| * | ||
| * The GNU LIBICONV Library is free software; you can redistribute it | ||
| * and/or modify it under the terms of the GNU Library General Public | ||
| * License as published by the Free Software Foundation; either version 2 | ||
| * of the License, or (at your option) any later version. | ||
| * | ||
| * The GNU LIBICONV Library 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 | ||
| * Library General Public License for more details. | ||
| * | ||
| * You should have received a copy of the GNU Library General Public | ||
| * License along with the GNU LIBICONV Library; see the file COPYING.LIB. | ||
| * If not, write to the Free Software Foundation, Inc., 51 Franklin Street, | ||
| * Fifth Floor, Boston, MA 02110-1301, USA. | ||
| */ | ||
|
|
||
| /* | ||
| * BIG5-HKSCS:2008 | ||
| */ | ||
|
|
||
| /* | ||
| * BIG5-HKSCS:2008 can be downloaded from | ||
| * http://www.ogcio.gov.hk/ccli/eng/hkscs/download.html | ||
| * http://www.ogcio.gov.hk/ccli/eng/hkscs/introduction.html | ||
| * | ||
| * It extends BIG5-HKSCS:2004 through 68 characters. | ||
| * | ||
| * It extends BIG5 (without the rows 0xC6..0xC7) through the ranges | ||
| * | ||
| * 0x{87..8D}{40..7E,A1..FE} 880 characters | ||
| * 0x{8E..A0}{40..7E,A1..FE} 2898 characters | ||
| * 0x{C6..C8}{40..7E,A1..FE} 359 characters | ||
| * 0xF9{D6..FE} 41 characters | ||
| * 0x{FA..FE}{40..7E,A1..FE} 763 characters | ||
| * | ||
| * Note that some HKSCS characters are not contained in Unicode 3.2 | ||
| * and are therefore best represented as sequences of Unicode characters: | ||
| * 0x8862 U+00CA U+0304 LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND MACRON | ||
| * 0x8864 U+00CA U+030C LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND CARON | ||
| * 0x88A3 U+00EA U+0304 LATIN SMALL LETTER E WITH CIRCUMFLEX AND MACRON | ||
| * 0x88A5 U+00EA U+030C LATIN SMALL LETTER E WITH CIRCUMFLEX AND CARON | ||
| */ | ||
|
|
||
| #include "hkscs2008.h" | ||
| #include "flushwc.h" | ||
|
|
||
| static int | ||
| big5hkscs2008_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) | ||
| { | ||
| ucs4_t last_wc = conv->istate; | ||
| if (last_wc) { | ||
| /* Output the buffered character. */ | ||
| conv->istate = 0; | ||
| *pwc = last_wc; | ||
| return 0; /* Don't advance the input pointer. */ | ||
| } else { | ||
| unsigned char c = *s; | ||
| /* Code set 0 (ASCII) */ | ||
| if (c < 0x80) | ||
| return ascii_mbtowc(conv,pwc,s,n); | ||
| /* Code set 1 (BIG5 extended) */ | ||
| if (c >= 0xa1 && c < 0xff) { | ||
| if (n < 2) | ||
| return RET_TOOFEW(0); | ||
| { | ||
| unsigned char c2 = s[1]; | ||
| if ((c2 >= 0x40 && c2 < 0x7f) || (c2 >= 0xa1 && c2 < 0xff)) { | ||
| if (!((c == 0xc6 && c2 >= 0xa1) || c == 0xc7)) { | ||
| int ret = big5_mbtowc(conv,pwc,s,2); | ||
| if (ret != RET_ILSEQ) | ||
| return ret; | ||
| } | ||
| } | ||
| } | ||
| } | ||
| { | ||
| int ret = hkscs1999_mbtowc(conv,pwc,s,n); | ||
| if (ret != RET_ILSEQ) | ||
| return ret; | ||
| } | ||
| { | ||
| int ret = hkscs2001_mbtowc(conv,pwc,s,n); | ||
| if (ret != RET_ILSEQ) | ||
| return ret; | ||
| } | ||
| { | ||
| int ret = hkscs2004_mbtowc(conv,pwc,s,n); | ||
| if (ret != RET_ILSEQ) | ||
| return ret; | ||
| } | ||
| { | ||
| int ret = hkscs2008_mbtowc(conv,pwc,s,n); | ||
| if (ret != RET_ILSEQ) | ||
| return ret; | ||
| } | ||
| if (c == 0x88) { | ||
| if (n < 2) | ||
| return RET_TOOFEW(0); | ||
| { | ||
| unsigned char c2 = s[1]; | ||
| if (c2 == 0x62 || c2 == 0x64 || c2 == 0xa3 || c2 == 0xa5) { | ||
| /* It's a composed character. */ | ||
| ucs4_t wc1 = ((c2 >> 3) << 2) + 0x009a; /* = 0x00ca or 0x00ea */ | ||
| ucs4_t wc2 = ((c2 & 6) << 2) + 0x02fc; /* = 0x0304 or 0x030c */ | ||
| /* We cannot output two Unicode characters at once. So, | ||
| output the first character and buffer the second one. */ | ||
| *pwc = wc1; | ||
| conv->istate = wc2; | ||
| return 2; | ||
| } | ||
| } | ||
| } | ||
| return RET_ILSEQ; | ||
| } | ||
| } | ||
|
|
||
| #define big5hkscs2008_flushwc normal_flushwc | ||
|
|
||
| static int | ||
| big5hkscs2008_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) | ||
| { | ||
| int count = 0; | ||
| unsigned char last = conv->ostate; | ||
|
|
||
| if (last) { | ||
| /* last is = 0x66 or = 0xa7. */ | ||
| if (wc == 0x0304 || wc == 0x030c) { | ||
| /* Output the combined character. */ | ||
| if (n >= 2) { | ||
| r[0] = 0x88; | ||
| r[1] = last + ((wc & 24) >> 2) - 4; /* = 0x62 or 0x64 or 0xa3 or 0xa5 */ | ||
| conv->ostate = 0; | ||
| return 2; | ||
| } else | ||
| return RET_TOOSMALL; | ||
| } | ||
|
|
||
| /* Output the buffered character. */ | ||
| if (n < 2) | ||
| return RET_TOOSMALL; | ||
| r[0] = 0x88; | ||
| r[1] = last; | ||
| r += 2; | ||
| count = 2; | ||
| } | ||
|
|
||
| /* Code set 0 (ASCII) */ | ||
| if (wc < 0x0080) { | ||
| /* Plain ASCII character. */ | ||
| if (n > count) { | ||
| r[0] = (unsigned char) wc; | ||
| conv->ostate = 0; | ||
| return count+1; | ||
| } else | ||
| return RET_TOOSMALL; | ||
| } else { | ||
| unsigned char buf[2]; | ||
| int ret; | ||
|
|
||
| /* Code set 1 (BIG5 extended) */ | ||
| ret = big5_wctomb(conv,buf,wc,2); | ||
| if (ret != RET_ILUNI) { | ||
| if (ret != 2) abort(); | ||
| if (!((buf[0] == 0xc6 && buf[1] >= 0xa1) || buf[0] == 0xc7)) { | ||
| if (n >= count+2) { | ||
| r[0] = buf[0]; | ||
| r[1] = buf[1]; | ||
| conv->ostate = 0; | ||
| return count+2; | ||
| } else | ||
| return RET_TOOSMALL; | ||
| } | ||
| } | ||
| ret = hkscs1999_wctomb(conv,buf,wc,2); | ||
| if (ret != RET_ILUNI) { | ||
| if (ret != 2) abort(); | ||
| if ((wc & ~0x0020) == 0x00ca) { | ||
| /* A possible first character of a multi-character sequence. We have to | ||
| buffer it. */ | ||
| if (!(buf[0] == 0x88 && (buf[1] == 0x66 || buf[1] == 0xa7))) abort(); | ||
| conv->ostate = buf[1]; /* = 0x66 or = 0xa7 */ | ||
| return count+0; | ||
| } | ||
| if (n >= count+2) { | ||
| r[0] = buf[0]; | ||
| r[1] = buf[1]; | ||
| conv->ostate = 0; | ||
| return count+2; | ||
| } else | ||
| return RET_TOOSMALL; | ||
| } | ||
| ret = hkscs2001_wctomb(conv,buf,wc,2); | ||
| if (ret != RET_ILUNI) { | ||
| if (ret != 2) abort(); | ||
| if (n >= count+2) { | ||
| r[0] = buf[0]; | ||
| r[1] = buf[1]; | ||
| conv->ostate = 0; | ||
| return count+2; | ||
| } else | ||
| return RET_TOOSMALL; | ||
| } | ||
| ret = hkscs2004_wctomb(conv,buf,wc,2); | ||
| if (ret != RET_ILUNI) { | ||
| if (ret != 2) abort(); | ||
| if (n >= count+2) { | ||
| r[0] = buf[0]; | ||
| r[1] = buf[1]; | ||
| conv->ostate = 0; | ||
| return count+2; | ||
| } else | ||
| return RET_TOOSMALL; | ||
| } | ||
| ret = hkscs2008_wctomb(conv,buf,wc,2); | ||
| if (ret != RET_ILUNI) { | ||
| if (ret != 2) abort(); | ||
| if (n >= count+2) { | ||
| r[0] = buf[0]; | ||
| r[1] = buf[1]; | ||
| conv->ostate = 0; | ||
| return count+2; | ||
| } else | ||
| return RET_TOOSMALL; | ||
| } | ||
| return RET_ILUNI; | ||
| } | ||
| } | ||
|
|
||
| static int | ||
| big5hkscs2008_reset (conv_t conv, unsigned char *r, int n) | ||
| { | ||
| unsigned char last = conv->ostate; | ||
|
|
||
| if (last) { | ||
| if (n < 2) | ||
| return RET_TOOSMALL; | ||
| r[0] = 0x88; | ||
| r[1] = last; | ||
| /* conv->ostate = 0; will be done by the caller */ | ||
| return 2; | ||
| } else | ||
| return 0; | ||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,125 @@ | ||
| /* | ||
| * Copyright (C) 1999-2002 Free Software Foundation, Inc. | ||
| * This file is part of the GNU LIBICONV Library. | ||
| * | ||
| * The GNU LIBICONV Library is free software; you can redistribute it | ||
| * and/or modify it under the terms of the GNU Library General Public | ||
| * License as published by the Free Software Foundation; either version 2 | ||
| * of the License, or (at your option) any later version. | ||
| * | ||
| * The GNU LIBICONV Library 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 | ||
| * Library General Public License for more details. | ||
| * | ||
| * You should have received a copy of the GNU Library General Public | ||
| * License along with the GNU LIBICONV Library; see the file COPYING.LIB. | ||
| * If not, write to the Free Software Foundation, Inc., 51 Franklin Street, | ||
| * Fifth Floor, Boston, MA 02110-1301, USA. | ||
| */ | ||
|
|
||
| /* | ||
| * C99 | ||
| * This is ASCII with \uXXXX and \UXXXXXXXX escape sequences, denoting Unicode | ||
| * characters. See ISO/IEC 9899:1999, section 6.4.3. | ||
| * The treatment of control characters in the range U+0080..U+009F is not | ||
| * specified; we pass them through unmodified. | ||
| */ | ||
|
|
||
| static int | ||
| c99_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) | ||
| { | ||
| unsigned char c; | ||
| ucs4_t wc; | ||
| int i; | ||
|
|
||
| c = s[0]; | ||
| if (c < 0xa0) { | ||
| if (c != '\\') { | ||
| *pwc = c; | ||
| return 1; | ||
| } | ||
| if (n < 2) | ||
| return RET_TOOFEW(0); | ||
| c = s[1]; | ||
| if (c == 'u') { | ||
| wc = 0; | ||
| for (i = 2; i < 6; i++) { | ||
| if (n <= i) | ||
| return RET_TOOFEW(0); | ||
| c = s[i]; | ||
| if (c >= '0' && c <= '9') | ||
| c -= '0'; | ||
| else if (c >= 'A' && c <= 'Z') | ||
| c -= 'A'-10; | ||
| else if (c >= 'a' && c <= 'z') | ||
| c -= 'a'-10; | ||
| else | ||
| goto simply_backslash; | ||
| wc |= (ucs4_t) c << (4 * (5-i)); | ||
| } | ||
| if ((wc >= 0x00a0 && !(wc >= 0xd800 && wc < 0xe000)) | ||
| || wc == 0x0024 || wc == 0x0040 || wc == 0x0060) { | ||
| *pwc = wc; | ||
| return 6; | ||
| } | ||
| } else if (c == 'U') { | ||
| wc = 0; | ||
| for (i = 2; i < 10; i++) { | ||
| if (n <= i) | ||
| return RET_TOOFEW(0); | ||
| c = s[i]; | ||
| if (c >= '0' && c <= '9') | ||
| c -= '0'; | ||
| else if (c >= 'A' && c <= 'Z') | ||
| c -= 'A'-10; | ||
| else if (c >= 'a' && c <= 'z') | ||
| c -= 'a'-10; | ||
| else | ||
| goto simply_backslash; | ||
| wc |= (ucs4_t) c << (4 * (9-i)); | ||
| } | ||
| if ((wc >= 0x00a0 && !(wc >= 0xd800 && wc < 0xe000)) | ||
| || wc == 0x0024 || wc == 0x0040 || wc == 0x0060) { | ||
| *pwc = wc; | ||
| return 10; | ||
| } | ||
| } else | ||
| goto simply_backslash; | ||
| } | ||
| return RET_ILSEQ; | ||
| simply_backslash: | ||
| *pwc = '\\'; | ||
| return 1; | ||
| } | ||
|
|
||
| static int | ||
| c99_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) | ||
| { | ||
| if (wc < 0xa0) { | ||
| *r = wc; | ||
| return 1; | ||
| } else { | ||
| int result; | ||
| unsigned char u; | ||
| if (wc < 0x10000) { | ||
| result = 6; | ||
| u = 'u'; | ||
| } else { | ||
| result = 10; | ||
| u = 'U'; | ||
| } | ||
| if (n >= result) { | ||
| int count; | ||
| r[0] = '\\'; | ||
| r[1] = u; | ||
| r += 2; | ||
| for (count = result-3; count >= 0; count--) { | ||
| unsigned int i = (wc >> (4*count)) & 0x0f; | ||
| *r++ = (i < 10 ? '0'+i : 'a'-10+i); | ||
| } | ||
| return result; | ||
| } else | ||
| return RET_TOOSMALL; | ||
| } | ||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,110 @@ | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str287, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str255, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str179, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str367, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str283, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str263, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str409, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str325, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str242, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str434, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str350, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str252, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str440, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str356, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str575, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str406, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str723, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str448, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str765, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str30, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str600, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str74, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str84, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str78, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str168, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str82, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str76, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str410, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str90, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str98, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str221, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str75, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str79, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str169, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str83, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str77, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str261, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str403, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str480, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str164, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str18, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str28, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str22, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str112, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str26, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str20, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str354, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str34, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str166, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str27, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str19, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str11, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str451, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str531, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str355, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str501, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str673, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str302, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str621, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str577, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str786, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str908, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str563, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str445, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str502, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str475, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str279, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str626, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str614, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str217, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str212, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str218, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str371, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str15, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str230, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str278, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str124, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str180, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str413, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str555, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str571, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str492, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str384, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str368, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str127, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str202, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str535, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str429, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str32, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str607, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str500, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str505, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str70, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str303, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str24, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str378, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str142, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str196, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str159, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str473, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str277, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str170, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str900, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str888, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str935, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str527, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str290, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str91, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str768, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str362, |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,9 @@ | ||
| (int)(long)&((struct stringpool2_t *)0)->stringpool_aix_0, | ||
| (int)(long)&((struct stringpool2_t *)0)->stringpool_aix_1, | ||
| (int)(long)&((struct stringpool2_t *)0)->stringpool_aix_2, | ||
| (int)(long)&((struct stringpool2_t *)0)->stringpool_aix_3, | ||
| (int)(long)&((struct stringpool2_t *)0)->stringpool_aix_4, | ||
| (int)(long)&((struct stringpool2_t *)0)->stringpool_aix_5, | ||
| (int)(long)&((struct stringpool2_t *)0)->stringpool_aix_6, | ||
| (int)(long)&((struct stringpool2_t *)0)->stringpool_aix_10, | ||
| (int)(long)&((struct stringpool2_t *)0)->stringpool_aix_14, |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,9 @@ | ||
| (int)(long)&((struct stringpool2_t *)0)->stringpool_aix_0, | ||
| (int)(long)&((struct stringpool2_t *)0)->stringpool_aix_2, | ||
| (int)(long)&((struct stringpool2_t *)0)->stringpool_aix_4, | ||
| (int)(long)&((struct stringpool2_t *)0)->stringpool_aix_6, | ||
| (int)(long)&((struct stringpool2_t *)0)->stringpool_aix_8, | ||
| (int)(long)&((struct stringpool2_t *)0)->stringpool_aix_10, | ||
| (int)(long)&((struct stringpool2_t *)0)->stringpool_aix_12, | ||
| (int)(long)&((struct stringpool2_t *)0)->stringpool_aix_16, | ||
| (int)(long)&((struct stringpool2_t *)0)->stringpool_aix_20, |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,15 @@ | ||
| (int)(long)&((struct stringpool2_t *)0)->stringpool_dos_0, | ||
| (int)(long)&((struct stringpool2_t *)0)->stringpool_dos_4, | ||
| (int)(long)&((struct stringpool2_t *)0)->stringpool_dos_5, | ||
| (int)(long)&((struct stringpool2_t *)0)->stringpool_dos_8, | ||
| (int)(long)&((struct stringpool2_t *)0)->stringpool_dos_12, | ||
| (int)(long)&((struct stringpool2_t *)0)->stringpool_dos_13, | ||
| (int)(long)&((struct stringpool2_t *)0)->stringpool_dos_17, | ||
| (int)(long)&((struct stringpool2_t *)0)->stringpool_dos_21, | ||
| (int)(long)&((struct stringpool2_t *)0)->stringpool_dos_22, | ||
| (int)(long)&((struct stringpool2_t *)0)->stringpool_dos_26, | ||
| (int)(long)&((struct stringpool2_t *)0)->stringpool_dos_31, | ||
| (int)(long)&((struct stringpool2_t *)0)->stringpool_dos_35, | ||
| (int)(long)&((struct stringpool2_t *)0)->stringpool_dos_38, | ||
| (int)(long)&((struct stringpool2_t *)0)->stringpool_dos_42, | ||
| (int)(long)&((struct stringpool2_t *)0)->stringpool_dos_47, |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,7 @@ | ||
| (int)(long)&((struct stringpool2_t *)0)->stringpool_extra_0, | ||
| (int)(long)&((struct stringpool2_t *)0)->stringpool_extra_2, | ||
| (int)(long)&((struct stringpool2_t *)0)->stringpool_extra_4, | ||
| (int)(long)&((struct stringpool2_t *)0)->stringpool_extra_6, | ||
| (int)(long)&((struct stringpool2_t *)0)->stringpool_extra_7, | ||
| (int)(long)&((struct stringpool2_t *)0)->stringpool_extra_9, | ||
| (int)(long)&((struct stringpool2_t *)0)->stringpool_extra_11, |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,2 @@ | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str271, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str664, |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,2 @@ | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str307, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str543, |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,2 @@ | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str258, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str390, |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,2 @@ | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str275, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str465, |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,2 @@ | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str38, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str515, |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,2 @@ | ||
| (int)(long)&((struct stringpool2_t *)0)->stringpool_osf1_0, | ||
| (int)(long)&((struct stringpool2_t *)0)->stringpool_osf1_1, |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,2 @@ | ||
| (int)(long)&((struct stringpool2_t *)0)->stringpool_osf1_0, | ||
| (int)(long)&((struct stringpool2_t *)0)->stringpool_osf1_2, |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,110 @@ | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str383, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str363, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str231, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str604, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str483, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str327, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str652, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str531, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str358, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str733, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str612, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str364, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str737, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str616, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str685, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str501, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str654, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str549, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str702, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str53, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str891, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str103, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str109, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str107, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str205, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str111, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str105, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str437, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str115, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str141, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str246, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str108, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str112, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str210, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str116, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str110, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str254, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str492, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str569, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str175, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str37, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str43, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str41, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str139, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str45, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str39, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str371, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str49, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str173, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str38, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str34, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str32, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str525, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str797, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str462, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str583, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str807, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str272, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str898, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str606, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str662, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str989, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str648, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str391, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str487, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str413, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str330, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str461, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str335, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str152, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str171, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str234, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str445, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str36, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str207, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str300, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str217, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str256, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str567, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str723, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str735, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str660, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str258, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str235, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str149, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str202, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str638, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str613, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str52, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str629, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str591, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str594, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str188, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str146, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str48, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str251, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str179, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str190, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str92, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str495, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str153, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str186, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str603, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str584, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str635, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str324, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str369, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str133, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str885, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str360, |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,110 @@ | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str310, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str368, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str293, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str464, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str525, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str395, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str515, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str576, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str355, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str521, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str582, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str363, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str534, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str595, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str440, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str665, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str644, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str716, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str695, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str36, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str596, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str64, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str60, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str100, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str162, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str76, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str70, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str158, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str86, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str92, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str177, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str67, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str103, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str165, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str79, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str73, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str345, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str669, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str790, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str131, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str21, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str17, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str57, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str119, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str33, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str27, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str115, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str43, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str141, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str24, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str34, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str35, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str448, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str561, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str410, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str335, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str470, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str704, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str685, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str607, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str689, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str800, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str454, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str195, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str331, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str484, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str202, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str449, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str513, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str139, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str190, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str262, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str603, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str71, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str149, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str170, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str251, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str271, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str450, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str769, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str791, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str710, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str354, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str332, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str153, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str203, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str491, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str461, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str42, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str542, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str473, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str471, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str30, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str314, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str52, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str352, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str81, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str96, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str12, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str378, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str308, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str144, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str771, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str757, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str806, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str421, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str343, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str105, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str654, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str394, |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,110 @@ | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str343, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str294, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str223, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str591, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str433, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str319, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str639, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str481, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str289, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str659, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str501, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str295, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str663, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str505, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str586, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str472, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str695, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str520, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str743, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str53, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str711, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str103, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str109, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str107, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str205, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str111, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str105, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str407, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str115, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str141, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str246, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str108, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str112, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str210, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str116, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str110, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str280, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str410, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str487, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str175, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str37, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str43, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str41, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str139, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str45, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str39, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str341, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str49, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str173, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str38, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str34, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str32, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str543, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str727, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str428, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str544, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str761, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str281, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str821, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str649, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str661, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str939, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str646, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str362, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str458, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str500, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str369, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str397, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str442, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str178, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str202, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str234, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str417, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str36, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str253, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str285, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str245, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str238, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str515, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str671, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str683, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str608, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str266, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str243, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str149, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str228, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str581, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str638, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str52, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str593, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str524, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str527, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str167, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str206, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str48, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str259, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str179, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str190, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str60, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str426, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str198, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str186, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str784, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str765, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str816, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str511, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str374, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str133, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str807, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str386, |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,110 @@ | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str463, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str258, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str314, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str482, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str365, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str278, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str464, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str347, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str279, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str470, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str353, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str378, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str546, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str429, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str588, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str510, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str563, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str492, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str545, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str30, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str569, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str124, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str184, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str230, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str148, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str160, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str138, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str452, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str122, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str136, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str175, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str129, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str235, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str153, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str165, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str143, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str276, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str680, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str684, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str127, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str81, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str141, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str187, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str105, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str117, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str95, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str409, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str79, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str91, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str94, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str48, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str86, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str387, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str451, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str346, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str415, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str489, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str389, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str752, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str774, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str953, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str853, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str432, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str513, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str297, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str502, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str372, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str412, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str419, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str478, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str71, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str62, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str266, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str192, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str246, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str215, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str424, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str307, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str507, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str669, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str667, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str706, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str211, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str320, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str202, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str283, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str400, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str714, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str147, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str556, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str554, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str584, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str67, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str516, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str101, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str271, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str223, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str327, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str99, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str540, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str293, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str98, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str901, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str895, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str907, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str666, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str255, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str58, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str691, | ||
| (int)(long)&((struct stringpool_t *)0)->stringpool_str411, |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,70 @@ | ||
| /* | ||
| * Copyright (C) 1999-2001 Free Software Foundation, Inc. | ||
| * This file is part of the GNU LIBICONV Library. | ||
| * | ||
| * The GNU LIBICONV Library is free software; you can redistribute it | ||
| * and/or modify it under the terms of the GNU Library General Public | ||
| * License as published by the Free Software Foundation; either version 2 | ||
| * of the License, or (at your option) any later version. | ||
| * | ||
| * The GNU LIBICONV Library 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 | ||
| * Library General Public License for more details. | ||
| * | ||
| * You should have received a copy of the GNU Library General Public | ||
| * License along with the GNU LIBICONV Library; see the file COPYING.LIB. | ||
| * If not, write to the Free Software Foundation, Inc., 51 Franklin Street, | ||
| * Fifth Floor, Boston, MA 02110-1301, USA. | ||
| */ | ||
|
|
||
| /* | ||
| * BIG-5 | ||
| */ | ||
|
|
||
| static int | ||
| ces_big5_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) | ||
| { | ||
| unsigned char c = *s; | ||
| /* Code set 0 (ASCII) */ | ||
| if (c < 0x80) | ||
| return ascii_mbtowc(conv,pwc,s,n); | ||
| /* Code set 1 (BIG5) */ | ||
| if (c >= 0xa1 && c < 0xff) { | ||
| if (n < 2) | ||
| return RET_TOOFEW(0); | ||
| { | ||
| unsigned char c2 = s[1]; | ||
| if ((c2 >= 0x40 && c2 < 0x7f) || (c2 >= 0xa1 && c2 < 0xff)) | ||
| return big5_mbtowc(conv,pwc,s,2); | ||
| else | ||
| return RET_ILSEQ; | ||
| } | ||
| } | ||
| return RET_ILSEQ; | ||
| } | ||
|
|
||
| static int | ||
| ces_big5_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) | ||
| { | ||
| unsigned char buf[2]; | ||
| int ret; | ||
|
|
||
| /* Code set 0 (ASCII) */ | ||
| ret = ascii_wctomb(conv,r,wc,n); | ||
| if (ret != RET_ILUNI) | ||
| return ret; | ||
|
|
||
| /* Code set 1 (BIG5) */ | ||
| ret = big5_wctomb(conv,buf,wc,2); | ||
| if (ret != RET_ILUNI) { | ||
| if (ret != 2) abort(); | ||
| if (n < 2) | ||
| return RET_TOOSMALL; | ||
| r[0] = buf[0]; | ||
| r[1] = buf[1]; | ||
| return 2; | ||
| } | ||
|
|
||
| return RET_ILUNI; | ||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,65 @@ | ||
| /* | ||
| * Copyright (C) 1999-2001, 2005 Free Software Foundation, Inc. | ||
| * This file is part of the GNU LIBICONV Library. | ||
| * | ||
| * The GNU LIBICONV Library is free software; you can redistribute it | ||
| * and/or modify it under the terms of the GNU Library General Public | ||
| * License as published by the Free Software Foundation; either version 2 | ||
| * of the License, or (at your option) any later version. | ||
| * | ||
| * The GNU LIBICONV Library 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 | ||
| * Library General Public License for more details. | ||
| * | ||
| * You should have received a copy of the GNU Library General Public | ||
| * License along with the GNU LIBICONV Library; see the file COPYING.LIB. | ||
| * If not, write to the Free Software Foundation, Inc., 51 Franklin Street, | ||
| * Fifth Floor, Boston, MA 02110-1301, USA. | ||
| */ | ||
|
|
||
| /* | ||
| * GBK | ||
| */ | ||
|
|
||
| static int | ||
| ces_gbk_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) | ||
| { | ||
| unsigned char c = *s; | ||
|
|
||
| /* Code set 0 (ASCII or GB 1988-89) */ | ||
| if (c < 0x80) | ||
| return ascii_mbtowc(conv,pwc,s,n); | ||
| /* Code set 1 (GBK) */ | ||
| if (c >= 0x81 && c < 0xff) { | ||
| if (n < 2) | ||
| return RET_TOOFEW(0); | ||
| return gbk_mbtowc(conv,pwc,s,2); | ||
| } | ||
| return RET_ILSEQ; | ||
| } | ||
|
|
||
| static int | ||
| ces_gbk_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) | ||
| { | ||
| unsigned char buf[2]; | ||
| int ret; | ||
|
|
||
| /* Code set 0 (ASCII or GB 1988-89) */ | ||
| ret = ascii_wctomb(conv,r,wc,n); | ||
| if (ret != RET_ILUNI) | ||
| return ret; | ||
|
|
||
| /* Code set 1 (GBK) */ | ||
| ret = gbk_wctomb(conv,buf,wc,2); | ||
| if (ret != RET_ILUNI) { | ||
| if (ret != 2) abort(); | ||
| if (n < 2) | ||
| return RET_TOOSMALL; | ||
| r[0] = buf[0]; | ||
| r[1] = buf[1]; | ||
| return 2; | ||
| } | ||
|
|
||
| return RET_ILUNI; | ||
| } |