From 39f15a6b0b8e5bb3b723ce4cf1ca48baf3e42a58 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Uwe=20St=C3=B6hr?= Date: Sun, 10 Sep 2017 15:05:28 +0200 Subject: [PATCH] libiconv/1.15: add some files new in the llibiconv sources --- 3rdparty/libiconv/1.15/lib/Makefile.in | 372 +++++++++++++++ 3rdparty/libiconv/1.15/lib/config.h.in | 82 ++++ 3rdparty/libiconv/1.15/lib/cp50221_0208_ext.h | 149 ++++++ 3rdparty/libiconv/1.15/lib/cp50221_0212_ext.h | 212 +++++++++ 3rdparty/libiconv/1.15/lib/iso2022_jpms.h | 445 ++++++++++++++++++ .../libiconv/1.15/libcharset/lib/Makefile.in | 177 +++++++ 6 files changed, 1437 insertions(+) create mode 100644 3rdparty/libiconv/1.15/lib/Makefile.in create mode 100644 3rdparty/libiconv/1.15/lib/config.h.in create mode 100644 3rdparty/libiconv/1.15/lib/cp50221_0208_ext.h create mode 100644 3rdparty/libiconv/1.15/lib/cp50221_0212_ext.h create mode 100644 3rdparty/libiconv/1.15/lib/iso2022_jpms.h create mode 100644 3rdparty/libiconv/1.15/libcharset/lib/Makefile.in diff --git a/3rdparty/libiconv/1.15/lib/Makefile.in b/3rdparty/libiconv/1.15/lib/Makefile.in new file mode 100644 index 0000000000..9871a3c0b1 --- /dev/null +++ b/3rdparty/libiconv/1.15/lib/Makefile.in @@ -0,0 +1,372 @@ +# Makefile for libiconv/lib + +#### Start of system configuration section. #### + +# Directories used by "make": +srcdir = @srcdir@ + +# Directories used by "make install": +prefix = @prefix@ +local_prefix = /usr/local +exec_prefix = @exec_prefix@ +libdir = @libdir@ + +# Programs used by "make": +CC = @CC@ +CFLAGS = @CFLAGS@ @CFLAG_VISIBILITY@ +CPPFLAGS = @CPPFLAGS@ +LDFLAGS = @LDFLAGS@ $(LDFLAGS_@WOE32DLL@) +LDFLAGS_yes = -Wl,--export-all-symbols +LDFLAGS_no = +INCLUDES = -I. -I$(srcdir) -I../include -I$(srcdir)/../include -I.. -I$(srcdir)/.. +# -DBUILDING_LIBICONV: Change expansion of LIBICONV_DLL_EXPORTED macro. +# -DBUILDING_DLL: Change expansion of RELOCATABLE_DLL_EXPORTED macro. +DEFS = -DLIBDIR=\"$(libdir)\" -DBUILDING_LIBICONV -DBUILDING_DLL \ +-DENABLE_RELOCATABLE=1 -DIN_LIBRARY -DINSTALLDIR=\"$(libdir)\" -DNO_XMALLOC \ +-Dset_relocation_prefix=libiconv_set_relocation_prefix \ +-Drelocate=libiconv_relocate @DEFS@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_COMPILE = $(LIBTOOL) --mode=compile +LIBTOOL_LINK = $(LIBTOOL) --mode=link +LIBTOOL_INSTALL = $(LIBTOOL) --mode=install +LIBTOOL_UNINSTALL = $(LIBTOOL) --mode=uninstall +# Windows resource compiler (windres). Used via libtool. +RC = @RC@ +CP = cp +MV = mv +LN = @LN@ +LN_S = @LN_S@ +RM = rm -f + +# Programs used by "make install": +INSTALL = @INSTALL@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_DATA = @INSTALL_DATA@ +mkinstalldirs = $(SHELL) @top_srcdir@/build-aux/mkinstalldirs + +#### End of system configuration section. #### + +SHELL = /bin/sh + +# Before making a release, change this according to the libtool documentation, +# section "Library interface versions". +LIBICONV_VERSION_INFO = 8:0:6 + +PACKAGE_VERSION = @VERSION@ + +# Needed by $(LIBTOOL). +top_builddir = .. + +SOURCES = $(srcdir)/iconv.c $(srcdir)/../libcharset/lib/localcharset.c $(srcdir)/relocatable.c + +OBJECTS = iconv.lo localcharset.lo relocatable.lo $(OBJECTS_EXP_@WOE32DLL@) $(OBJECTS_RES_@WOE32@) +OBJECTS_EXP_yes = iconv-exports.lo +OBJECTS_EXP_no = +OBJECTS_RES_yes = libiconv.res.lo +OBJECTS_RES_no = + +all : libiconv.la + +libiconv.la : $(OBJECTS) + $(LIBTOOL_LINK) $(CC) $(LDFLAGS) $(CFLAGS) -o libiconv.la -rpath $(libdir) -version-info $(LIBICONV_VERSION_INFO) -no-undefined $(OBJECTS) + +iconv.lo : $(srcdir)/iconv.c $(srcdir)/converters.h \ + $(srcdir)/encodings.def $(srcdir)/encodings_aix.def $(srcdir)/encodings_osf1.def $(srcdir)/encodings_dos.def $(srcdir)/encodings_local.def \ + $(srcdir)/aliases.h $(srcdir)/aliases_sysaix.h $(srcdir)/aliases_syshpux.h $(srcdir)/aliases_sysosf1.h $(srcdir)/aliases_syssolaris.h \ + $(srcdir)/aliases_aix.h $(srcdir)/aliases_aix_sysaix.h \ + $(srcdir)/aliases_osf1.h $(srcdir)/aliases_osf1_sysosf1.h \ + $(srcdir)/aliases_dos.h \ + $(srcdir)/aliases_extra.h \ + $(srcdir)/flags.h $(srcdir)/translit.h + $(LIBTOOL_COMPILE) $(CC) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(DEFS) -c $(srcdir)/iconv.c + +localcharset.lo : $(srcdir)/../libcharset/lib/localcharset.c $(srcdir)/relocatable.h + $(LIBTOOL_COMPILE) $(CC) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(DEFS) -c $(srcdir)/../libcharset/lib/localcharset.c + +relocatable.lo : $(srcdir)/relocatable.c $(srcdir)/relocatable.h + $(LIBTOOL_COMPILE) $(CC) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(DEFS) -c $(srcdir)/relocatable.c + +iconv-exports.lo : $(srcdir)/../woe32dll/iconv-exports.c + $(LIBTOOL_COMPILE) $(CC) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(DEFS) -c $(srcdir)/../woe32dll/iconv-exports.c + +libiconv.res.lo : $(srcdir)/../windows/libiconv.rc + $(LIBTOOL_COMPILE) --tag=RC $(RC) `$(SHELL) $(srcdir)/../windows/windres-options --escape $(PACKAGE_VERSION)` -i $(srcdir)/../windows/libiconv.rc -o libiconv.res.lo --output-format=coff + +# Installs the library and include files only. Typically called with only +# $(libdir) and $(includedir) - don't use $(prefix) and $(exec_prefix) here. +install-lib : all force + if [ ! -d $(libdir) ] ; then $(mkinstalldirs) $(libdir) ; fi + $(LIBTOOL_INSTALL) $(INSTALL) libiconv.la $(libdir)/libiconv.la + +# On AIX, libiconv.a must include the object files of /lib/libiconv.a, +# otherwise the setlocale() call fails when invoked from executables linked +# with -rpath $(libdir), even if linked without -liconv. +install : all force + if [ ! -d $(DESTDIR)$(libdir) ] ; then $(mkinstalldirs) $(DESTDIR)$(libdir) ; fi + $(LIBTOOL_INSTALL) $(INSTALL) libiconv.la $(DESTDIR)$(libdir)/libiconv.la + case "@host_os@" in \ + aix*) (cd $(DESTDIR)$(libdir) && \ + objects=`ar t libiconv.a`" "`ar t /lib/libiconv.a` && \ + ar x libiconv.a && ar x /lib/libiconv.a && \ + ar q libiconv.new.a $$objects && \ + rm -f $$objects && \ + mv -f libiconv.new.a libiconv.a) ;; \ + esac + +install-strip : install + +installdirs : force + if [ ! -d $(DESTDIR)$(libdir) ] ; then $(mkinstalldirs) $(DESTDIR)$(libdir) ; fi + +uninstall : force + $(LIBTOOL_UNINSTALL) $(RM) $(DESTDIR)$(libdir)/libiconv.la + +check : all + +mostlyclean : clean + +clean : force + $(RM) *.o *.lo *.a *.la core *.stackdump so_locations + $(RM) -r .libs _libs + +distclean : clean + $(RM) Makefile config.h + +maintainer-clean : distclean + +# List of source files. +SOURCE_FILES = \ + Makefile.in config.h.in \ + encodings.def \ + encodings_aix.def \ + encodings_osf1.def \ + encodings_dos.def \ + encodings_extra.def \ + encodings_local.def \ + translit.def \ + genaliases.c \ + genaliases2.c \ + genflags.c \ + gentranslit.c \ + iconv.c \ + converters.h \ + ascii.h \ + utf8.h \ + ucs2.h \ + ucs2be.h \ + ucs2le.h \ + ucs4.h \ + ucs4be.h \ + ucs4le.h \ + utf16.h \ + utf16be.h \ + utf16le.h \ + utf32.h \ + utf32be.h \ + utf32le.h \ + utf7.h \ + ucs2internal.h \ + ucs2swapped.h \ + ucs4internal.h \ + ucs4swapped.h \ + c99.h \ + java.h \ + iso8859_1.h \ + iso8859_2.h \ + iso8859_3.h \ + iso8859_4.h \ + iso8859_5.h \ + iso8859_6.h \ + iso8859_7.h \ + iso8859_8.h \ + iso8859_9.h \ + iso8859_10.h \ + iso8859_11.h \ + iso8859_13.h \ + iso8859_14.h \ + iso8859_15.h \ + iso8859_16.h \ + koi8_r.h \ + koi8_u.h \ + koi8_ru.h \ + cp1250.h \ + cp1251.h \ + cp1252.h \ + cp1253.h \ + cp1254.h \ + cp1255.h \ + cp1256.h \ + cp1257.h \ + cp1258.h \ + vietcomb.h \ + cp850.h \ + cp862.h \ + cp866.h \ + cp1131.h \ + mac_roman.h \ + mac_centraleurope.h \ + mac_iceland.h \ + mac_croatian.h \ + mac_romania.h \ + mac_cyrillic.h \ + mac_ukraine.h \ + mac_greek.h \ + mac_turkish.h \ + mac_hebrew.h \ + mac_arabic.h \ + mac_thai.h \ + hp_roman8.h \ + nextstep.h \ + armscii_8.h \ + georgian_academy.h \ + georgian_ps.h \ + koi8_t.h \ + pt154.h \ + rk1048.h \ + mulelao.h \ + cp1133.h \ + tis620.h \ + cp874.h \ + viscii.h \ + tcvn.h \ + iso646_jp.h \ + jisx0201.h \ + jisx0208.h \ + jisx0212.h \ + iso646_cn.h \ + gb2312.h \ + isoir165.h \ + isoir165ext.h \ + gb12345.h \ + gb12345ext.h \ + gbk.h \ + gbkext1.h \ + gbkext2.h \ + gbkext_inv.h \ + cp936ext.h \ + cns11643.h \ + cns11643_1.h \ + cns11643_2.h \ + cns11643_3.h \ + cns11643_4.h \ + cns11643_4a.h \ + cns11643_4b.h \ + cns11643_5.h \ + cns11643_6.h \ + cns11643_7.h \ + cns11643_15.h \ + cns11643_inv.h \ + big5.h \ + ksc5601.h \ + johab_hangul.h \ + euc_jp.h \ + sjis.h \ + cp932.h \ + cp932ext.h \ + iso2022_jp.h \ + iso2022_jp1.h \ + iso2022_jp2.h \ + iso2022_jpms.h \ + cp50221_0208_ext.h \ + cp50221_0212_ext.h \ + euc_cn.h \ + ces_gbk.h \ + cp936.h \ + gb18030.h \ + gb18030ext.h \ + gb18030uni.h \ + iso2022_cn.h \ + iso2022_cnext.h \ + hz.h \ + euc_tw.h \ + ces_big5.h \ + cp950.h \ + cp950ext.h \ + big5hkscs1999.h \ + hkscs1999.h \ + big5hkscs2001.h \ + hkscs2001.h \ + big5hkscs2004.h \ + hkscs2004.h \ + big5hkscs2008.h \ + hkscs2008.h \ + euc_kr.h \ + cp949.h \ + uhc_1.h \ + uhc_2.h \ + johab.h \ + iso2022_kr.h \ + cp856.h \ + cp922.h \ + cp943.h \ + cp1046.h \ + cp1124.h \ + cp1129.h \ + cp1161.h \ + cp1162.h \ + cp1163.h \ + dec_kanji.h \ + dec_hanyu.h \ + cp437.h \ + cp737.h \ + cp775.h \ + cp852.h \ + cp853.h \ + cp855.h \ + cp857.h \ + cp858.h \ + cp860.h \ + cp861.h \ + cp863.h \ + cp864.h \ + cp865.h \ + cp869.h \ + cp1125.h \ + euc_jisx0213.h \ + jisx0213.h \ + shift_jisx0213.h \ + iso2022_jp3.h \ + big5_2003.h \ + tds565.h \ + atarist.h \ + riscos1.h \ + flushwc.h \ + cjk_variants.h \ + loops.h \ + loop_unicode.h \ + loop_wchar.h \ + aliases2.h \ + iconv_open1.h \ + iconv_open2.h \ + relocatable.h relocatable.c +# List of distributed files imported from other packages. +IMPORTED_FILES = +# List of distributed files generated by autotools or Makefile.devel. +GENERATED_FILES = \ + aliases.gperf aliases_sysaix.gperf aliases_syshpux.gperf aliases_sysosf1.gperf aliases_syssolaris.gperf \ + aliases.h aliases_sysaix.h aliases_syshpux.h aliases_sysosf1.h aliases_syssolaris.h \ + aliases_aix.h aliases_aix_sysaix.h \ + aliases_osf1.h aliases_osf1_sysosf1.h \ + aliases_dos.h \ + aliases_extra.h \ + canonical.h canonical_sysaix.h canonical_syshpux.h canonical_sysosf1.h canonical_syssolaris.h \ + canonical_aix.h canonical_aix_sysaix.h \ + canonical_osf1.h canonical_osf1_sysosf1.h \ + canonical_dos.h \ + canonical_extra.h \ + canonical_local.h canonical_local_sysaix.h canonical_local_syshpux.h canonical_local_sysosf1.h canonical_local_syssolaris.h \ + flags.h \ + translit.h +# List of distributed files generated by "make". +DISTRIBUTED_BUILT_FILES = +# List of distributed files. +DISTFILES = $(SOURCE_FILES) $(IMPORTED_FILES) $(GENERATED_FILES) $(DISTRIBUTED_BUILT_FILES) + +distdir : $(DISTFILES) + for file in $(DISTFILES); do \ + if test -f $$file; then dir='.'; else dir='$(srcdir)'; fi; \ + cp -p "$$dir/$$file" '$(distdir)'/$$file || exit 1; \ + done + +force : + diff --git a/3rdparty/libiconv/1.15/lib/config.h.in b/3rdparty/libiconv/1.15/lib/config.h.in new file mode 100644 index 0000000000..89abce2fed --- /dev/null +++ b/3rdparty/libiconv/1.15/lib/config.h.in @@ -0,0 +1,82 @@ +/* Copyright (C) 1999-2003, 2005, 2007, 2010, 2012 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, see . */ + + +/* Define to 1 to enable a few rarely used encodings. */ +#undef ENABLE_EXTRA + +/* Define to 1 if the package shall run at any location in the filesystem. */ +#undef ENABLE_RELOCATABLE + +/* Define to a type if does not define. */ +#undef mbstate_t + +/* Define if you have , the iconv_t type, and the + iconv_open, iconv, iconv_close functions. */ +#undef HAVE_ICONV +/* Define as const if the declaration of iconv() needs const. */ +#define ICONV_CONST /* empty by default */ + +/* Define to 1 if you have the getc_unlocked() function. */ +#undef HAVE_GETC_UNLOCKED + +/* Define if you have and nl_langinfo(CODESET). */ +#undef HAVE_LANGINFO_CODESET + +/* Define if you have the mbrtowc() function. */ +#undef HAVE_MBRTOWC + +/* Define to 1 if you have the setlocale() function. */ +#undef HAVE_SETLOCALE + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDDEF_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDLIB_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRING_H + +/* Define to 1 or 0, depending whether the compiler supports simple visibility + declarations. */ +#undef HAVE_VISIBILITY + +/* Define if you have the wcrtomb() function. */ +#undef HAVE_WCRTOMB + +/* Define to 1 if O_NOFOLLOW works. */ +#undef HAVE_WORKING_O_NOFOLLOW + +/* Define if the machine's byte ordering is little endian. */ +#undef WORDS_LITTLEENDIAN + +/* Define to the value of ${prefix}, as a string. */ +#undef INSTALLPREFIX + +/* Define to '__inline__' or '__inline' if that's what the C compiler + calls it, or to nothing if 'inline' is not supported under any name. */ +#ifndef __cplusplus +#undef inline +#endif + +/* Define to 'int' if does not define. */ +#undef mode_t + +/* Define as a signed type of the same size as size_t. */ +#undef ssize_t + diff --git a/3rdparty/libiconv/1.15/lib/cp50221_0208_ext.h b/3rdparty/libiconv/1.15/lib/cp50221_0208_ext.h new file mode 100644 index 0000000000..d2c7edb69f --- /dev/null +++ b/3rdparty/libiconv/1.15/lib/cp50221_0208_ext.h @@ -0,0 +1,149 @@ +/* + * Copyright (C) 1999-2012, 2016 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, see . + */ + +/* + * CP50221 JISX0208 extensions + */ + +static const unsigned short cp50221_0208_ext_2uni[96] = { + /* 0x00 */ + 0xfffd, 0x2460, 0x2461, 0x2462, 0x2463, 0x2464, 0x2465, 0x2466, + 0x2467, 0x2468, 0x2469, 0x246a, 0x246b, 0x246c, 0x246d, 0x246e, + /* 0x10 */ + 0x246f, 0x2470, 0x2471, 0x2472, 0x2473, 0x2160, 0x2161, 0x2162, + 0x2163, 0x2164, 0x2165, 0x2166, 0x2167, 0x2168, 0x2169, 0xfffd, + /* 0x20 */ + 0x3349, 0x3314, 0x3322, 0x334d, 0x3318, 0x3327, 0x3303, 0x3336, + 0x3351, 0x3357, 0x330d, 0x3326, 0x3323, 0x332b, 0x334a, 0x333b, + /* 0x30 */ + 0x339c, 0x339d, 0x339e, 0x338e, 0x338f, 0x33c4, 0x33a1, 0xfffd, + 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x337b, + /* 0x40 */ + 0x301e, 0x301f, 0x2116, 0x33cd, 0x2121, 0x32a4, 0x32a5, 0x32a6, + 0x32a7, 0x32a8, 0x3231, 0x3232, 0x3239, 0x337e, 0x337d, 0x337c, + /* 0x50 */ + 0xfffd, 0xfffd, 0xfffd, 0x222e, 0x2211, 0xfffd, 0xfffd, 0xfffd, + 0x221f, 0x22bf, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, +}; + +static int +cp50221_0208_ext_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +{ + unsigned char c = *s; + if (c < 0x60) { + unsigned short wc = cp50221_0208_ext_2uni[c]; + if (wc != 0xfffd) { + *pwc = (ucs4_t) wc; + return 1; + } + } + return RET_ILSEQ; +} + +static const unsigned char cp50221_0208_ext_page21[96] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, /* 0x10-0x17 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */ + 0x00, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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 */ + 0x00, 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 */ + 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, /* 0x60-0x67 */ + 0x1d, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */ +}; +static const unsigned char cp50221_0208_ext_page22[32] = { + 0x00, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, /* 0x18-0x1f */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x53, 0x00, /* 0x28-0x2f */ +}; +static const unsigned char cp50221_0208_ext_page24[24] = { + 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, /* 0x60-0x67 */ + 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, /* 0x68-0x6f */ + 0x11, 0x12, 0x13, 0x14, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */ +}; +static const unsigned char cp50221_0208_ext_page30[8] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x41, /* 0x18-0x1f */ +}; +static const unsigned char cp50221_0208_ext_page32[16] = { + 0x00, 0x4a, 0x4b, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */ + 0x00, 0x4c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */ +}; +static const unsigned char cp50221_0208_ext_page32_1[16] = { + 0x00, 0x00, 0x00, 0x00, 0x45, 0x46, 0x47, 0x48, /* 0xa0-0xa7 */ + 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa8-0xaf */ +}; +static const unsigned char cp50221_0208_ext_page33[208] = { + 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x00, /* 0x00-0x07 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, /* 0x08-0x0f */ + 0x00, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, /* 0x10-0x17 */ + 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */ + 0x00, 0x00, 0x22, 0x2c, 0x00, 0x00, 0x2b, 0x25, /* 0x20-0x27 */ + 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0x00, /* 0x30-0x37 */ + 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */ + 0x00, 0x20, 0x2e, 0x00, 0x00, 0x23, 0x00, 0x00, /* 0x48-0x4f */ + 0x00, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x29, /* 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, 0x3f, 0x4f, 0x4e, 0x4d, 0x00, /* 0x78-0x7f */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x34, /* 0x88-0x8f */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */ + 0x00, 0x00, 0x00, 0x00, 0x30, 0x31, 0x32, 0x00, /* 0x98-0x9f */ + 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa8-0xaf */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb0-0xb7 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */ + 0x00, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, /* 0xc0-0xc7 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, /* 0xc8-0xcf */ +}; + +static int +cp50221_0208_ext_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +{ + unsigned char c = 0; + if (wc >= 0x2110 && wc < 0x2170) + c = cp50221_0208_ext_page21[wc-0x2110]; + else if (wc >= 0x2210 && wc < 0x2230) + c = cp50221_0208_ext_page22[wc-0x2210]; + else if (wc == 0x22bf) + c = 0x59; + else if (wc >= 0x2460 && wc < 0x2478) + c = cp50221_0208_ext_page24[wc-0x2460]; + else if (wc >= 0x3018 && wc < 0x3020) + c = cp50221_0208_ext_page30[wc-0x3018]; + else if (wc >= 0x3230 && wc < 0x3240) + c = cp50221_0208_ext_page32[wc-0x3230]; + else if (wc >= 0x32a0 && wc < 0x32b0) + c = cp50221_0208_ext_page32_1[wc-0x32a0]; + else if (wc >= 0x3300 && wc < 0x33d0) + c = cp50221_0208_ext_page33[wc-0x3300]; + if (c != 0) { + *r = c; + return 1; + } + return RET_ILUNI; +} diff --git a/3rdparty/libiconv/1.15/lib/cp50221_0212_ext.h b/3rdparty/libiconv/1.15/lib/cp50221_0212_ext.h new file mode 100644 index 0000000000..d07808d3a6 --- /dev/null +++ b/3rdparty/libiconv/1.15/lib/cp50221_0212_ext.h @@ -0,0 +1,212 @@ +/* + * Copyright (C) 1999-2011, 2016 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, see . + */ + +/* + * CP50221 JISX0212 extensions + */ + +static const unsigned short cp50221_0212_ext_2uni[112] = { + /* 0x00 */ + 0xfffd, 0x2170, 0x2171, 0x2172, 0x2173, 0x2174, 0x2175, 0x2176, + 0x2177, 0x2178, 0x2179, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, + /* 0x10 */ + 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xff07, 0xff02, 0xfffd, + 0xfffd, 0xfffd, 0x70bb, 0x4efc, 0x50f4, 0x51ec, 0x5307, 0x5324, + /* 0x20 */ + 0xfa0e, 0x548a, 0x5759, 0xfa0f, 0xfa10, 0x589e, 0x5bec, 0x5cf5, + 0x5d53, 0xfa11, 0x5fb7, 0x6085, 0x6120, 0x654e, 0xfffd, 0x6665, + /* 0x30 */ + 0xfa12, 0xf929, 0x6801, 0xfa13, 0xfa14, 0x6a6b, 0x6ae2, 0x6df8, + 0x6df2, 0x7028, 0xfa15, 0xfa16, 0x7501, 0x7682, 0x769e, 0xfa17, + /* 0x40 */ + 0x7930, 0xfa18, 0xfa19, 0xfa1a, 0xfa1b, 0x7ae7, 0xfa1c, 0xfa1d, + 0x7da0, 0x7dd6, 0xfa1e, 0x8362, 0xfa1f, 0x85b0, 0xfa20, 0xfa21, + /* 0x50 */ + 0x8807, 0xfa22, 0x8b7f, 0x8cf4, 0x8d76, 0xfa23, 0xfa24, 0xfa25, + 0x90de, 0xfa26, 0x9115, 0xfa27, 0xfa28, 0x9592, 0xf9dc, 0xfa29, + /* 0x60 */ + 0x973b, 0xfffd, 0x9751, 0xfa2a, 0xfa2b, 0xfa2c, 0x999e, 0x9ad9, + 0x9b72, 0xfa2d, 0x9ed1, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, +}; + +static int +cp50221_0212_ext_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +{ + unsigned char c = *s; + if (c < 0x70) { + unsigned short wc = cp50221_0212_ext_2uni[c]; + if (wc != 0xfffd) { + *pwc = (ucs4_t) wc; + return 1; + } + } + else if (c == 0xa1) { + *pwc = 0x974d; + return 1; + } + return RET_ILSEQ; +} + +static const unsigned char cp50221_0212_ext_page21[16] = { + 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, /* 0x70-0x77 */ + 0x09, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */ +}; +static const unsigned char cp50221_0212_ext_page53[40] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, /* 0x00-0x07 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x08-0x0f */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */ + 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, /* 0x20-0x27 */ +}; +static const unsigned char cp50221_0212_ext_page6d[16] = { + 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xf0-0xf7 */ + 0x37, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xf8-0xff */ +}; +static const unsigned char cp50221_0212_ext_page76[32] = { + 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, /* 0x98-0x9f */ +}; +static const unsigned char cp50221_0212_ext_page7d[56] = { + 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa8-0xaf */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb0-0xb7 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc0-0xc7 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x00, /* 0xd0-0xd7 */ +}; +static const unsigned char cp50221_0212_ext_page97[32] = { + 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, /* 0x48-0x4f */ + 0x00, 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */ +}; +static const unsigned char cp50221_0212_ext_pagefa[40] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x23, /* 0x08-0x0f */ + 0x24, 0x29, 0x30, 0x33, 0x34, 0x3a, 0x3b, 0x3f, /* 0x10-0x17 */ + 0x41, 0x42, 0x43, 0x44, 0x46, 0x47, 0x4a, 0x4c, /* 0x18-0x1f */ + 0x4e, 0x4f, 0x51, 0x55, 0x56, 0x57, 0x59, 0x5b, /* 0x20-0x27 */ + 0x5c, 0x5f, 0x63, 0x64, 0x65, 0x69, 0x00, 0x00, /* 0x28-0x2f */ +}; +static const unsigned char cp50221_0212_ext_pageff[8] = { + 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x15, /* 0x00-0x07 */ +}; + +static int +cp50221_0212_ext_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +{ + unsigned char c = 0; + if (wc >= 0x2170 && wc < 0x2180) + c = cp50221_0212_ext_page21[wc-0x2170]; + else if (wc == 0x4efc) + c = 0x1b; + else if (wc == 0x50f4) + c = 0x1c; + else if (wc == 0x51ec) + c = 0x1d; + else if (wc >= 0x5300 && wc < 0x5328) + c = cp50221_0212_ext_page53[wc-0x5300]; + else if (wc == 0x548a) + c = 0x21; + else if (wc == 0x5759) + c = 0x22; + else if (wc == 0x589e) + c = 0x25; + else if (wc == 0x5bec) + c = 0x26; + else if (wc == 0x5cf5) + c = 0x27; + else if (wc == 0x5d53) + c = 0x28; + else if (wc == 0x5fb7) + c = 0x2a; + else if (wc == 0x6085) + c = 0x2b; + else if (wc == 0x6120) + c = 0x2c; + else if (wc == 0x654e) + c = 0x2d; + else if (wc == 0x6665) + c = 0x2f; + else if (wc == 0x6801) + c = 0x32; + else if (wc == 0x6a6b) + c = 0x35; + else if (wc == 0x6ae2) + c = 0x36; + else if (wc >= 0x6df0 && wc < 0x6e00) + c = cp50221_0212_ext_page6d[wc-0x6df0]; + else if (wc == 0x7028) + c = 0x39; + else if (wc == 0x70bb) + c = 0x1a; + else if (wc == 0x7501) + c = 0x3c; + else if (wc >= 0x7680 && wc < 0x76a0) + c = cp50221_0212_ext_page76[wc-0x7680]; + else if (wc == 0x7930) + c = 0x40; + else if (wc == 0x7ae7) + c = 0x45; + else if (wc >= 0x7da0 && wc < 0x7dd8) + c = cp50221_0212_ext_page7d[wc-0x7da0]; + else if (wc == 0x8362) + c = 0x4b; + else if (wc == 0x85b0) + c = 0x4d; + else if (wc == 0x8807) + c = 0x50; + else if (wc == 0x8b7f) + c = 0x52; + else if (wc == 0x8cf4) + c = 0x53; + else if (wc == 0x8d76) + c = 0x54; + else if (wc == 0x90de) + c = 0x58; + else if (wc == 0x9115) + c = 0x5a; + else if (wc == 0x9592) + c = 0x5d; + else if (wc >= 0x9738 && wc < 0x9758) + c = cp50221_0212_ext_page97[wc-0x9738]; + else if (wc == 0x999e) + c = 0x66; + else if (wc == 0x9ad9) + c = 0x67; + else if (wc == 0x9b72) + c = 0x68; + else if (wc == 0x9ed1) + c = 0x6a; + else if (wc == 0xf929) + c = 0x31; + else if (wc == 0xf9dc) + c = 0x5e; + else if (wc >= 0xfa08 && wc < 0xfa30) + c = cp50221_0212_ext_pagefa[wc-0xfa08]; + else if (wc >= 0xff00 && wc < 0xff08) + c = cp50221_0212_ext_pageff[wc-0xff00]; + if (c != 0) { + *r = c; + return 1; + } + return RET_ILUNI; +} diff --git a/3rdparty/libiconv/1.15/lib/iso2022_jpms.h b/3rdparty/libiconv/1.15/lib/iso2022_jpms.h new file mode 100644 index 0000000000..64d88bd63f --- /dev/null +++ b/3rdparty/libiconv/1.15/lib/iso2022_jpms.h @@ -0,0 +1,445 @@ +/* + * Copyright (C) 1999-2001, 2008, 2011-2012, 2016 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, see . + */ + +/* + * ISO-2022-JP-MS + * alias CP50221 + * + * This is an extension of ISO-2022-JP-1 with larger character sets. + * It uses ESC $ B and ESC $ ( D to denote *extensions* of JIS X 0208 and + * JIS X 0212, respectively. This violates the principles of ISO 2022, + * where + * 1. character sets to be used by ISO 2022 have to be registered at the + * ISO IR registry , + * 2. different character sets are designated by different escape + * sequences. + * It's a typical instance of the "embrace and extend" strategy by Microsoft + * . + */ + +/* + * Windows has three encodings CP50220, CP50221, CP50222. + * The common parts are: + * - US-ASCII (0x00..0x7F) + * - JIS X 0208 extended by + * - one row (0x2D), + * - a private use area (rows 0x75..0x7E = U+E000..U+E3AB), + * enabled with ESC $ B, disabled with ESC ( B. + * - JIS X 0212 extended by + * - two rows (0x73..0x74), + * - a private use area (rows 0x75..0x7E = U+E3AC..U+E757), + * enabled with ESC $ ( D, disabled with ESC ( B. + * They differ in the handling of JIS X 0201 characters (halfwidth Katakana) + * in the conversion direction Unicode -> CP5022x: + * * CP50220 maps the halfwidth Katakana to fullwidth Katakana characters. + * * CP50221 contains the JIS X 0201 halfwidth Katakana characters, + * enabled with ESC ( I, disabled with ESC ( B. + * * CP50222 contains the JIS X 0201 halfwidth Katakana characters, + * enabled with ESC ( J 0x0E, disabled with ESC ( B. + * In the conversion direction CP5022x -> Unicode, all three operate the same: + * - ESC ( I is supported and understood. + * - ESC ( J 0x0E is not accepted. (Tested on Windows XP SP3.) + * Conclusion: + * - CP50222 should not be used, because the multibyte sequence that it + * produces cannot be parsed by either of the three encodings. + * - CP50221 is preferrable to CP50220, because it can faithfully represent + * the halfwidth Katakana characters. + * We therefore implement CP50221. As an extension, in the mbtowc conversion + * direction, we support also ESC ( J 0x0E, just in case. + */ + +#include "cp50221_0208_ext.h" +#include "cp50221_0212_ext.h" + +#define ESC 0x1b +#define SO 0x0e +#define SI 0x0f + +/* + * The state can be one of the following values. + */ +#define STATE_ASCII 0 /* Esc ( B */ +#define STATE_JISX0201ROMAN 1 /* Esc ( J */ /* only in mbtowc direction */ +#define STATE_JISX0201KATAKANA 2 /* Esc ( I */ +#define STATE_JISX0208MS 3 /* Esc $ @ or Esc $ B */ +#define STATE_JISX0212MS 4 /* Esc $ ( D */ + +static int +iso2022_jpms_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n) +{ + state_t state = conv->istate; + int count = 0; + unsigned char c; + for (;;) { + c = *s; + if (c == ESC) { + if (n < count+3) + goto none; + if (s[1] == '(') { + if (s[2] == 'B') { + state = STATE_ASCII; + s += 3; count += 3; + if (n < count+1) + goto none; + continue; + } + if (s[2] == 'I') { + state = STATE_JISX0201KATAKANA; + s += 3; count += 3; + if (n < count+1) + goto none; + continue; + } + if (s[2] == 'J') { + state = STATE_JISX0201ROMAN; + s += 3; count += 3; + if (n < count+1) + goto none; + continue; + } + goto ilseq; + } + if (s[1] == '$') { + if (s[2] == '@' || s[2] == 'B') { + /* We don't distinguish JIS X 0208-1978 and JIS X 0208-1983. */ + state = STATE_JISX0208MS; + s += 3; count += 3; + if (n < count+1) + goto none; + continue; + } + if (s[2] == '(') { + if (n < count+4) + goto none; + if (s[3] == 'D') { + state = STATE_JISX0212MS; + s += 4; count += 4; + if (n < count+1) + goto none; + continue; + } + } + goto ilseq; + } + goto ilseq; + } + if (c == SO) { + if (state == STATE_JISX0201ROMAN) + state = STATE_JISX0201KATAKANA; + s += 1; count += 1; + if (n < count+1) + goto none; + continue; + } + if (c == SI) { + if (state == STATE_JISX0201KATAKANA) + state = STATE_JISX0201ROMAN; + s += 1; count += 1; + if (n < count+1) + goto none; + continue; + } + break; + } + switch (state) { + case STATE_ASCII: + if (c < 0x80) { + int ret = ascii_mbtowc(conv,pwc,s,1); + if (ret == RET_ILSEQ) + goto ilseq; + if (ret != 1) abort(); + conv->istate = state; + return count+1; + } else + goto ilseq; + case STATE_JISX0201ROMAN: + if (c < 0x80) { + int ret = jisx0201_mbtowc(conv,pwc,s,1); + if (ret == RET_ILSEQ) + goto ilseq; + if (ret != 1) abort(); + conv->istate = state; + return count+1; + } else + goto ilseq; + case STATE_JISX0201KATAKANA: + if (c < 0x80) { + unsigned char buf = c+0x80; + int ret = jisx0201_mbtowc(conv,pwc,&buf,1); + if (ret == RET_ILSEQ) + goto ilseq; + if (ret != 1) abort(); + conv->istate = state; + return count+1; + } else + goto ilseq; + case STATE_JISX0208MS: + if (n < count+2) + goto none; + if (s[0] < 0x80 && s[1] < 0x80) { + int ret; + if (s[0] < 0x75) { + if (s[0] == 0x2d) { + /* Extension of JIS X 0208. */ + if (s[1] >= 0x21 && s[1] <= 0x79) { + unsigned char i = (s[1] - 0x21) + 1; + ret = cp50221_0208_ext_mbtowc(conv,pwc,&i,1); + if (ret == 1) + ret = 2; + } else + ret = RET_ILSEQ; + } else { + /* JIS X 0208. */ + ret = jisx0208_mbtowc(conv,pwc,s,2); + } + } else { + /* Extension of JIS X 0208. + 0x{75..7E}{21..8E} maps to U+E000..U+E3AB. + But some rows maps to characters present in CP932. */ + if (s[0] <= 0x7e && (s[1] >= 0x21 && s[1] <= 0x7e)) { + unsigned short wc = 0xfffd; + if (s[0] >= 0x79 && s[0] <= 0x7c) + wc = cp932ext_2uni_pageed[(s[0] - 0x79) * 94 + (s[1] - 0x21)]; + if (wc == 0xfffd) + wc = (s[0] - 0x75) * 94 + (s[1] - 0x21) + 0xe000; + *pwc = wc; + ret = 2; + } else + ret = RET_ILSEQ; + } + if (ret == RET_ILSEQ) + goto ilseq; + if (ret != 2) abort(); + conv->istate = state; + return count+2; + } else + goto ilseq; + case STATE_JISX0212MS: + if (n < count+2) + goto none; + if (s[0] < 0x80 && s[1] < 0x80) { + int ret; + if (s[0] < 0x73) { + /* JIS X 0212. */ + ret = jisx0212_mbtowc(conv,pwc,s,2); + } else { + if (s[0] < 0x75) { + /* Extension of JIS X 0212. */ + if (s[1] >= 0x21 && s[1] <= 0x7e) { + unsigned char i = (s[0] - 0x73) * 94 + (s[1] - 0x21) + 1; + ret = cp50221_0212_ext_mbtowc(conv,pwc,&i,1); + if (ret == 1) + ret = 2; + } else + ret = RET_ILSEQ; + } else { + /* Extension of JIS X 0208. + 0x{75..7E}{21..8E} maps to U+E3AC..U+E757. */ + if (s[0] <= 0x7e && (s[1] >= 0x21 && s[1] <= 0x7e)) { + *pwc = (s[0] - 0x75) * 94 + (s[1] - 0x21) + 0xe3ac; + ret = 2; + } else + ret = RET_ILSEQ; + } + } + if (ret == RET_ILSEQ) + goto ilseq; + if (ret != 2) abort(); + conv->istate = state; + return count+2; + } else + goto ilseq; + default: abort(); + } + +none: + conv->istate = state; + return RET_TOOFEW(count); + +ilseq: + conv->istate = state; + return RET_SHIFT_ILSEQ(count); +} + +static int +iso2022_jpms_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n) +{ + state_t state = conv->ostate; + unsigned char buf[2]; + int ret; + + /* Try ASCII. */ + ret = ascii_wctomb(conv,buf,wc,1); + if (ret != RET_ILUNI) { + if (ret != 1) abort(); + if (buf[0] < 0x80) { + int count = (state == STATE_ASCII ? 1 : 4); + if (n < count) + return RET_TOOSMALL; + if (state != STATE_ASCII) { + r[0] = ESC; + r[1] = '('; + r[2] = 'B'; + r += 3; + state = STATE_ASCII; + } + r[0] = buf[0]; + conv->ostate = state; + return count; + } + } + + /* Try JIS X 0201-1976 Katakana. */ + ret = jisx0201_wctomb(conv,buf,wc,1); + if (ret != RET_ILUNI) { + if (ret != 1) abort(); + if (buf[0] >= 0x80) { + int count = (state == STATE_JISX0201KATAKANA ? 1 : 4); + if (n < count) + return RET_TOOSMALL; + if (state != STATE_JISX0201KATAKANA) { + r[0] = ESC; + r[1] = '('; + r[2] = 'I'; + r += 3; + state = STATE_JISX0201KATAKANA; + } + r[0] = buf[0]-0x80; + conv->ostate = state; + return count; + } + } + + /* Try JIS X 0208-1990, in place of JIS X 0208-1978 and JIS X 0208-1983, + and the extensions mentioned above. */ + if (wc >= 0xe000 && wc < 0xe3ac) { + unsigned short i = wc - 0xe000; + buf[0] = (i / 94) + 0x75; + buf[1] = (i % 94) + 0x21; + ret = 2; + } else { + ret = jisx0208_wctomb(conv,buf,wc,2); + if (ret == RET_ILUNI) { + /* Extension of JIS X 0208. */ + unsigned char i; + ret = cp50221_0208_ext_wctomb(conv,&i,wc,1); + if (ret == 1) { + buf[0] = 0x2d; + buf[1] = i-1 + 0x21; + ret = 2; + } else if (wc == 0x663B) { + buf[0] = 0x7a; + buf[1] = 0x36; + ret = 2; + } else if (wc == 0xffe2) { + buf[0] = 0x7c; + buf[1] = 0x7b; + ret = 2; + } else if (wc == 0xffe4) { + buf[0] = 0x7c; + buf[1] = 0x7c; + ret = 2; + } + } + } + if (ret != RET_ILUNI) { + if (ret != 2) abort(); + if (buf[0] < 0x80 && buf[1] < 0x80) { + int count = (state == STATE_JISX0208MS ? 2 : 5); + if (n < count) + return RET_TOOSMALL; + if (state != STATE_JISX0208MS) { + r[0] = ESC; + r[1] = '$'; + r[2] = 'B'; + r += 3; + state = STATE_JISX0208MS; + } + r[0] = buf[0]; + r[1] = buf[1]; + conv->ostate = state; + return count; + } + } + + /* Try JIS X 0212-1990 and the extensions mentioned above. */ + if (wc >= 0xe3ac && wc < 0xe758) { + unsigned short i = wc - 0xe3ac; + buf[0] = (i / 94) + 0x75; + buf[1] = (i % 94) + 0x21; + ret = 2; + } else { + ret = jisx0212_wctomb(conv,buf,wc,2); + if (ret == RET_ILUNI) { + /* Extension of JIS X 0212. */ + unsigned char i; + ret = cp50221_0212_ext_wctomb(conv,&i,wc,1); + if (ret == 1) { + i -= 1; + buf[0] = (i / 94) + 0x73; + buf[1] = (i % 94) + 0x21; + ret = 2; + } + } + } + if (ret != RET_ILUNI) { + if (ret != 2) abort(); + if (buf[0] < 0x80 && buf[1] < 0x80) { + int count = (state == STATE_JISX0212MS ? 2 : 6); + if (n < count) + return RET_TOOSMALL; + if (state != STATE_JISX0212MS) { + r[0] = ESC; + r[1] = '$'; + r[2] = '('; + r[3] = 'D'; + r += 4; + state = STATE_JISX0212MS; + } + r[0] = buf[0]; + r[1] = buf[1]; + conv->ostate = state; + return count; + } + } + + return RET_ILUNI; +} + +static int +iso2022_jpms_reset (conv_t conv, unsigned char *r, size_t n) +{ + state_t state = conv->ostate; + if (state != STATE_ASCII) { + if (n < 3) + return RET_TOOSMALL; + r[0] = ESC; + r[1] = '('; + r[2] = 'B'; + /* conv->ostate = 0; will be done by the caller */ + return 3; + } else + return 0; +} + +#undef STATE_JISX0212MS +#undef STATE_JISX0208MS +#undef STATE_JISX0201KATAKANA +#undef STATE_JISX0201ROMAN +#undef STATE_ASCII diff --git a/3rdparty/libiconv/1.15/libcharset/lib/Makefile.in b/3rdparty/libiconv/1.15/libcharset/lib/Makefile.in new file mode 100644 index 0000000000..569b23fd96 --- /dev/null +++ b/3rdparty/libiconv/1.15/libcharset/lib/Makefile.in @@ -0,0 +1,177 @@ +# Makefile for libcharset/lib + +#### Start of system configuration section. #### + +# Directories used by "make": +srcdir = @srcdir@ + +# Directories used by "make install": +prefix = @prefix@ +local_prefix = /usr/local +exec_prefix = @exec_prefix@ +libdir = @libdir@ + +# Programs used by "make": +CC = @CC@ +CFLAGS = @CFLAGS@ @CFLAG_VISIBILITY@ +CPPFLAGS = @CPPFLAGS@ +LDFLAGS = @LDFLAGS@ +INCLUDES = -I. -I$(srcdir) -I.. -I$(srcdir)/.. -I../include +# -DBUILDING_LIBCHARSET: Change expansion of LIBCHARSET_DLL_EXPORTED macro. +# -DBUILDING_DLL: Change expansion of RELOCATABLE_DLL_EXPORTED macro. +DEFS = -DLIBDIR=\"$(libdir)\" -DBUILDING_LIBCHARSET -DBUILDING_DLL \ +-DENABLE_RELOCATABLE=1 -DIN_LIBRARY -DINSTALLDIR=\"$(libdir)\" -DNO_XMALLOC \ +-Dset_relocation_prefix=libcharset_set_relocation_prefix \ +-Drelocate=libcharset_relocate @DEFS@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_COMPILE = $(LIBTOOL) --mode=compile +LIBTOOL_LINK = $(LIBTOOL) --mode=link +LIBTOOL_INSTALL = $(LIBTOOL) --mode=install +LIBTOOL_UNINSTALL = $(LIBTOOL) --mode=uninstall +RM = rm -f + +# Programs used by "make install": +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +mkinstalldirs = $(SHELL) @top_srcdir@/build-aux/mkinstalldirs + +#### End of system configuration section. #### + +PACKAGE = @PACKAGE@ +VERSION = @VERSION@ + +SHELL = /bin/sh + +# Before making a release, change this according to the libtool documentation, +# section "Library interface versions". +LIBCHARSET_VERSION_INFO = 1:0:0 + +# Needed by $(LIBTOOL). +top_builddir = .. + +SOURCES = $(srcdir)/localcharset.c $(srcdir)/relocatable.c + +OBJECTS = localcharset.lo relocatable.lo + +all : libcharset.la charset.alias ref-add.sed ref-del.sed + +libcharset.la : $(OBJECTS) + $(LIBTOOL_LINK) $(CC) $(LDFLAGS) $(CFLAGS) -o libcharset.la -rpath $(libdir) -version-info $(LIBCHARSET_VERSION_INFO) -no-undefined $(OBJECTS) + +localcharset.lo : $(srcdir)/localcharset.c + $(LIBTOOL_COMPILE) $(CC) $(INCLUDES) $(CFLAGS) $(CPPFLAGS) $(DEFS) -c $(srcdir)/localcharset.c + +relocatable.lo : $(srcdir)/relocatable.c $(srcdir)/relocatable.h + $(LIBTOOL_COMPILE) $(CC) $(INCLUDES) $(CFLAGS) $(CPPFLAGS) $(DEFS) -c $(srcdir)/relocatable.c + +charset.alias: $(srcdir)/config.charset + $(SHELL) $(srcdir)/config.charset '@host@' > t-$@ + mv t-$@ $@ + +ref-add.sed : $(srcdir)/ref-add.sin + sed -e '/^#/d' -e 's/@''PACKAGE''@/@PACKAGE@/g' $(srcdir)/ref-add.sin > t-$@ + mv t-$@ $@ + +ref-del.sed : $(srcdir)/ref-del.sin + sed -e '/^#/d' -e 's/@''PACKAGE''@/@PACKAGE@/g' $(srcdir)/ref-del.sin > t-$@ + mv t-$@ $@ + +# Installs the library and include files only. Typically called with only +# $(libdir) and $(includedir) - don't use $(prefix) and $(exec_prefix) here. +install-lib : all force + $(mkinstalldirs) $(libdir) + $(LIBTOOL_INSTALL) $(INSTALL) libcharset.la $(libdir)/libcharset.la + test -f $(libdir)/charset.alias && orig=$(libdir)/charset.alias \ + || orig=charset.alias; \ + sed -f ref-add.sed $$orig > $(libdir)/t-charset.alias; \ + $(INSTALL_DATA) $(libdir)/t-charset.alias $(libdir)/charset.alias; \ + rm -f $(libdir)/t-charset.alias + +# The following is needed in order to install a simple file in $(libdir) +# which is shared with other installed packages. We use a list of referencing +# packages so that "make uninstall" will remove the file if and only if it +# is not used by another installed package. +# On systems with glibc-2.1 or newer, the file is redundant, therefore we +# avoid installing it. + +install : all force + if test @GLIBC21@ = no; then \ + case '@host_os@' in \ + darwin[56]*) \ + need_charset_alias=true ;; \ + darwin* | cygwin* | mingw* | pw32* | cegcc*) \ + need_charset_alias=false ;; \ + *) \ + need_charset_alias=true ;; \ + esac ; \ + else \ + need_charset_alias=false ; \ + fi ; \ + $(mkinstalldirs) $(DESTDIR)$(libdir) ; \ + $(LIBTOOL_INSTALL) $(INSTALL) libcharset.la $(DESTDIR)$(libdir)/libcharset.la + if test -f $(DESTDIR)$(libdir)/charset.alias; then \ + sed -f ref-add.sed $(DESTDIR)$(libdir)/charset.alias > $(DESTDIR)$(libdir)/t-charset.alias; \ + $(INSTALL_DATA) $(DESTDIR)$(libdir)/t-charset.alias $(DESTDIR)$(libdir)/charset.alias; \ + rm -f $(DESTDIR)$(libdir)/t-charset.alias; \ + else \ + if $$need_charset_alias; then \ + sed -f ref-add.sed charset.alias > $(DESTDIR)$(libdir)/t-charset.alias; \ + $(INSTALL_DATA) $(DESTDIR)$(libdir)/t-charset.alias $(DESTDIR)$(libdir)/charset.alias; \ + rm -f $(DESTDIR)$(libdir)/t-charset.alias; \ + fi ; \ + fi + +install-strip : install + +installdirs : force + $(mkinstalldirs) $(DESTDIR)$(libdir) + +uninstall : force + $(LIBTOOL_UNINSTALL) $(RM) $(DESTDIR)$(libdir)/libcharset.la + if test -f $(DESTDIR)$(libdir)/charset.alias; then \ + sed -f ref-del.sed $(DESTDIR)$(libdir)/charset.alias > $(DESTDIR)$(libdir)/t-charset.alias; \ + if grep '^# Packages using this file: $$' $(DESTDIR)$(libdir)/t-charset.alias > /dev/null; then \ + rm -f $(DESTDIR)$(libdir)/charset.alias; \ + else \ + $(INSTALL_DATA) $(DESTDIR)$(libdir)/t-charset.alias $(DESTDIR)$(libdir)/charset.alias; \ + fi; \ + rm -f $(DESTDIR)$(libdir)/t-charset.alias; \ + fi + +check : all + +mostlyclean : clean + +clean : force + $(RM) *.o *.lo *.a *.la *.o.lock core *.stackdump charset.alias ref-add.sed ref-del.sed + $(RM) -r .libs _libs + +distclean : clean + $(RM) Makefile + +maintainer-clean : distclean + +# List of source files. +SOURCE_FILES = \ + ChangeLog Makefile.in +# List of files bidirectionally synced with gnulib. +GNULIB_SYNCED_FILES = \ + config.charset localcharset.c ref-add.sin ref-del.sin \ + relocatable.h relocatable.c +# List of distributed files imported from other packages. +IMPORTED_FILES = +# List of distributed files generated by autotools or Makefile.devel. +GENERATED_FILES = +# List of distributed files generated by "make". +DISTRIBUTED_BUILT_FILES = +# List of distributed files. +DISTFILES = $(SOURCE_FILES) $(GNULIB_SYNCED_FILES) $(IMPORTED_FILES) $(GENERATED_FILES) $(DISTRIBUTED_BUILT_FILES) + +distdir : $(DISTFILES) + for file in $(DISTFILES); do \ + if test -f $$file; then dir='.'; else dir='$(srcdir)'; fi; \ + cp -p "$$dir/$$file" '$(distdir)'/$$file || exit 1; \ + done + +force : +