From: Mark Andrews Date: Fri, 8 Feb 2002 05:42:24 +0000 (+0000) Subject: 1196. [contrib] update mdnkit to 2.2.3. X-Git-Tag: v9.2.0^2^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=caa8797a00ccb1a02f1690dda5b4aeda9a1db5a7;p=thirdparty%2Fbind9.git 1196. [contrib] update mdnkit to 2.2.3. --- diff --git a/CHANGES b/CHANGES index a04dd1312af..2186003dbcc 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,5 @@ +1196. [contrib] update mdnkit to 2.2.3. + 1195. [bug] Attempts to redefine builtin acls should be caught. [RT #2403] diff --git a/contrib/idn/mdnkit/ChangeLog b/contrib/idn/mdnkit/ChangeLog index 2c7f660bb18..da26f2b48f7 100644 --- a/contrib/idn/mdnkit/ChangeLog +++ b/contrib/idn/mdnkit/ChangeLog @@ -1,3 +1,421 @@ +2001-12-06 + * 2.2.3 release. + + * lib/uticode.c: fix a bug in mdn__unicode_decompose() that assumes + sizeof(size_t) equals to sizeof(int). + * lib/converter.c: always include . + +2001-12-03 + * DISTFILES: add patch/bind9/bind-9.2.0.patch. + + * lib/checker.c, lib/mapper.c, lib/nameprep.c, lib/nameprepdata.c, + lib/normalizer.c: recognize "nameprep-06". + * lib/mdn.conf.sample.in, man/mdn.conf.5.in, tools/mdnconv/mdnconv.1: + add description about "nameprep-06". + +2001-11-28 + + * lib/Makefile.in, tools/runmdn/Makefile.in: Change LIB_REVISION + from 2 to 3. + + * include/mdn/version.h: set MDNKIT_VERSION to "2.2.3". + +2001-11-21 + * tools/runmdn/stub.c: fix type mismatch bug of `fp'. + * lib/converter.c: always include . + +2001-10-31 + * 2.2.2 release. + + * include/mdn/version.h: set MDNKIT_VERSION to "2.2.3". + + * configure.in: on NetBSD, use `:' as a separator of LD_PRELOAD + if /usr/bin/grep is ELF binary, use ` ' otherwise. + * wsock/config/mdnconf.tcl: update version number to 2.2.2. + + * README, README.ja: update the list of supported systems. + +2001-10-30 + * wsock/config/mdnconf.tcl: update version number to 2.2.1. + +2001-10-29 + * 2.2.1 release. + + * include/mdn/version.h: set MDNKIT_VERSION to "2.2.1". + + * lib/Makefile.in, tools/runmdn/Makefile.in: Change LIB_REVISION + from 1 to 2. + +2001-10-17 + * lib/checker.c (mdn_checker_lookup): Fix a serious bug that the + function overlooks a prohibited character. + +2001-09-19 + * 2.2 release. + +2001-09-17 + * NEWS: add description about deletion of `allow-utf8' to "Major + changes in version 2.1". + + * README, README.ja: add some platforms to the list of supported + systems. + + * include/mdn/version.h: set MDNKIT_VERSION to "2.2". + +2001-09-14 + * lib/amcacez.c, include/mdn/amcacez.h: update draft version. + +2001-09-12 + * wsock/config/mdnconf.tcl: update version number. + +2001-09-11 + * INSTALL.ja: The title is fixed. + +2001-09-10 + * Makefile.in: add dummy target 'force' to work around a problem + in cygwin, where the existance of "INSTALL" file disturbs + "make install". + * lib/make.wnt: add rules for amcace[vwz].o and mace.o. + * util/SparseMap.pm, util/generate_nameprep_data.pl, + util/generate_normalize_data.pl: add 'const' qualification to + the generated (large) constant tables, for better data sharing. + * lib/nameprepdata.c, lib/unicodedata_301.c, lib/unicodedata_310.c: + regenerated using above scripts. + * lib/nameprep.c, lib/nameprep_template.c, lib/unicode.c, + lib/unicode_template.c: accommodate declarations to the above + changes. + +2001-08-28 + * 2.2rc1 release. + + * DISTFILES: delete patch/bind9/bind-9.1.2-patch. + + * include/mdn/version.h: set MDNKIT_VERSION to 2.2rc1. + +2001-08-27 + * include/mdn/amcacez.h, lib/amcacez.c: update to conform to + version 0.3.0 (draft-ietf-idn-amc-ace-z-00.txt). + + * configure.in, lib/amcacez.c, INSTALL, INSTALL.ja: define "zq--" + as new default ACE prefix for AMC-ACE-Z. + +2001-08-21 + * lib/mdn.conf.sample.in, man/mdn.conf.5.in, tools/mdnconv/mdnconv.1: + undocument unicode-form-{c,d,kd}, unicode-{upper,lower,fold}case, + ascii-{upper,lower}case and nameprep-{02,04}. + +2001-08-20 + * tools/runmdn/runmdn.1: Use the term "codeset" rather than + "encoding". + +2001-08-17 + * INSTALL: fix typo. + +2001-08-15 + * README, README.ja: show a list of supported systems as a table. + + * tools/runmdn/runmdn.in: parse command line options, and recognize + option `-e' which sets local encoding. + * tools/runmdn/runmdn.1: add description about `-e' option. + * tools/runmdn/Makefile.in: update `runmdn' if it is older than + `runmdn.in'. + + * INSTALL and INSTALL.ja: new files. + * README, README.ja: `Compilation and Intallation' section is moved + to INSTALL and INSTALL.ja. + * DISTFILES: add INSTALL and INSTALL.ja. + + * lib/converter.c, README, README.ja: unless --enable-extra-ace + option to configure is specified, support only three ACEs: + AMC-ACE-Z, RACE and DUDE. + + * lib/namrprep.c, lib/converter.c, lib/checker.c, lib/mapper.c: + delete `nameprep-02' and `nameprep-04' supports. + + * lib/mdn.conf.sample.in, man/mdn.conf.5.in, tools/mdnconv/mdnconv.1: + delete description about `nameprep-02', `nameprep-04' and extra ACEs. + +2001-08-14 + * README, README.ja: update information about compilation problem + of libiconv-1.6.1 on NetBSD. + +2001-08-13 + * README, README.ja: revise description of compilation and + installation process. + * tools/mdnconv/mdnconv.c: revise error messages displayed + when default input/output codeset is wrong. + +2001-08-06 + * 2.2beta3 release. + + * include/mdn/version.h: set MDNKIT_VERSION to "2.2beta3". + + * README, README.ja: describe CPU architure of FreeBSD on which + we have tested. + +2001-08-01 + * util/generate_nameprep_data.pl: add pragma 'use bytes;' to + avoid outputing incorrect map data when perl 5.6.1 is used. + * lib/nameprepdata.c: add data for nameprep-04 and -05. + * lib/nameprep.c: add support for 'nameprep-04' and 'nameprep-05'. + current version is now nameprep-05. + * lib/checker.c, lib/mapper.c: add 'nameprep-04' and 'nameprep-05'. + * lib/unicodedata.c: removed. + * lib/unicodedata_301.c, lib/unicodedata_310.c: created. + both contains various Unicode table of version 3.0.1 and 3.1.0. + * lib/unicode_template.c: created. contains helper functions for + each Unicode versions. + * include/mdn/unicode.h, lib/unicode.c: add new interface + functions 'mdn__unicode_create' and 'mdn__unicode_destroy'. + now all existing functions take an extra argument which specifies + the version of Unicode standard. + * include/mdn/unicode.h, lib/unicode.c + * include/mdn/unormalize.h, lib/unormalize.c: change interface + so that the version of Unicode standard can be specified. + * lib/normalizer.c: add bunch of normalization schemes, + unicode-from-{c,d,kc,kd}/{3.0.1,3.1.0}, nameprep-{04,05}. + use new unormalize module interface. + * DISTFILES, lib/Makefile.in: add unicode_template.c, + unicodedata_301.c and unicodedata_310.c. remove unicodedata.c. + * util/generate_normalize_data.pl: add -prefix option. + * man/mdn.conf.5.in, tools/mdnconv/mdnconv.1: add description of + newly added schemes. + * lib/mdn.conf.sample.in: likewise. + +2001-07-31 + * include/mdn/res.h, lib/res.c: add new functions and macros + mdn_res_nameprep() and mdn_res_nameprepcheck(). + * include/mdn/api.h: add new macro mdn_nameprepcheck(). + +2001-07-27 + * README, README.ja: describe `--with-utf-6-prefix'. + +2001-07-26 + * tools/mdnconv/mdnconv.1: add a description on the nameprep check + performed in reverse conversion mode. + * tools/mdnconv/util.c: fix typo in comment. + + * tools/mdnconv/mdnconv.c: don't perform selective-decode or + selective-decode if both `-whole' and `-reverse' options are specified. + * tools/mdnconv/mdnconv.c: perform NAMEPREP unassigned check if both + `-reverse' and `-unassigncheck' options are specified + + * tools/mdnconv/mdnslookup.in: add missing quotation. + + * DISTFILES: add patch/bind9/bind-9.1.3-patch. + +2001-07-25 + * tools/mdnconv/mdnslookup.in: new file. + * tools/mdnconv/Makefile.in: `all' target also depends on `mdnslookup'. + generate `mdnslookup' from `mdnslookup.in'. + * README, README.ja: add the ``Check your configuration'' section. + * DISTFILES: add tools/mdnconv/mdnslookup.in. + + * tools/mdnconv/Makefile.in: honor LDFLAGS. + * lib/amcacez.c: do some optimization. + +2001-07-24 + * README, README.ja: add TOC, ``Supported systems'' section and + ``Other configure options'' subsection. + +2001-07-23 + * tools/mdnconv/mdnconv.1, tools/runmdn/runmdn.1: add the ``LOCAL + CODESET'' section. + +2001-07-18 + * 2.2beta2 release. + + * README, README.ja: update version number in the title. + +2001-07-17 + * include/mdn/version.h: set MDNKIT_VERSION to "2.2beta2". + + * configure.in: fix result messages of cheking gethostbyaddr() + and getnameinfo() flavors. display "none" if the function is + not found. + +2001-07-16 + * include/mdn/amcacez.h, lib/amcacez.c: update to conform to + version 0.2.1, which is the version of -00 draft. + +2001-07-12 + * README, README.ja: explain `--enable-debug' option. + +2001-07-11 + * configure.in: add `--enable-debug' option. + if this option is specified, add "-DDEBUG" to CFLAGS. + +2001-07-10 + * configure.in: check flavor of getnameinfo(). + * configure.in: test program for checking flavor of gethostbyaddr() + includes and , since some system defines + `socklen_t' in either file. + * configure.in: define GNI_SALEN_T, GNI_HOSTLEN_T, GNI_SERVLEN_T + and GNI_FLAGS_T. + * tools/runmdn/resolver.c, tools/runmdn/stub.c, tools/runmdn/stub.h: + use GNI_SALEN_T, GNI_HOSTLEN_T, GNI_SERVLEN_T and GNI_FLAGS_T to + represent types of arguments to getnameinfo(). + + * include/mdn/logmacro.h: enable trace-level log even if compiled + without DEBUG option. + * lib/log.c: slightly optimize mdn_log_getlevel(), as it is called + number of times from everywhere. + +2001-07-09 + * lib/res.c: in mdn_res_nameconv(), procedures of insn `!m', `!n' + and `!N' converted an input string into a result of NAMEPREP, but + it must do NAMEPREP check only. fixed. + +2001-07-06 + * lib/msgtrans.c: perform NAMEPREP check at decoding a name. + * lib/api.c, include/mdn/api.h: mdn_decodename() accepts + MDN_UNASCHECK action. + + * mdnsproxy/translate.c: fix typo in a warning message. + + * include/mdn/res.h, lib/mdn/res.c: conversion to alternate encoding + is no longer supported. + * include/mdn/resconf.h, lib/resconf.c: no longer support + alternate encoding, though functions related to alternate encoding + such as mdn_resconf_setalternateconverter() are still remained. + ignore `alternate-encoding' entry in a configuration file. + * lib/mdn.conf.sample.in: delete `alternate-encoding' entry. + * man/mdn.conf.5.in: delete "ALTERNATE-ENCODING ENTRY" section. + delete `alternate-encoding' entry in the sample configuration. + * man/libmdn.3.in: delete description about alternate encoding. + + * lib/res.c: mdn_res_nameconv() doesn't support insn `a' or `A' + any longer. nameconv_A() and nameconv_a() are removed. + +2001-07-05 + * include/mdn/version.h: set MDNKIT_VERSION to "2.2snap0705". + +2001-07-04 + * include/mdn/amcacez.h, lib/amcacez.c: created. + * include/mdn/Makefile.in, lib/Makefile.in, tools/runmdn/Makefile.in: + add above new files. + * DISTFILES: add above new files. + * lib/converter.c: add AMC-ACE-Z. + * configure.in: add prefix configuration option + (--with-amc-ace-z-prefix) for this ACE. + * configure: rebuilt. + * lib/amcacew.c: correct a bug in input range check. + + * include/mdn/api.h: add MDN_NAMEPREP to MDN_DECODE_APP. + * lib/mdn/api.c: mdn_decodename() recognizes MDN_NAMEPREP action. + + * include/mdn/converter.h: define encoding types: MDN_NONACE, + MDN_ACE_STRICTCASE and MDN_ACE_LOOSECASE. + * include/mdn/converter.h, lib/converter.c: add new function + mdn_converter_encodingtype(). + * include/mdn/converter.h, lib/converter.c: 3rd argument of + mdn_converter_register() is now `encoding_type'. + + * include/mdn/res.h, lib/mdn/res.c: add new insn `!m', `!n', `!p', + `!N' and `!u' to mdn_res_nameconv(). + * include/mdn/res.h, lib/mdn/res.c: mdn_res_dnstoucs(...) is + equivalent to mdn_res_nameconv("i!N", ...). + + * lib/checker.c, lib/mapper.c: fix a bug that allocated memory is + not disposed if input name is too long. + + * lib/checker.c: mdn_checker_lookup() returns `mdn_success' if + registered character is found in an input string. + +2001-07-03 + * configure.in: check if the codeset name for UTF-8 encoding (`UTF-8', + which is default, or the one specified with --with-utf8 option) is + valid, and give a warning message if it doesn't seem so. + * configure: rebuilt. + +2001-07-02 + * configure.in: check if `iconv.h' exists in the directory specified + by --with-iconv-include=DIR, or in the `PREFIX/include' directory + specified by --with-libiconv=PREFIX. + * configure.in: check if C compiler can find `iconv.h'. + +2001-06-25 + * 2.2beta1 release. + + * include/mdn/version.h: set MDNKIT_VERSION to "2.2beta1", and set + MDNKIT_MINOR_VERSION to 2. + * lib/Makefile.in, tools/runmdn/Makefile.in: Set library version + (LIB_CURRENT:LIB_REVISION:LIB_AGE) to 7:1:0. + +2001-06-19 + * configure.in: add missing double quotation mark (") in + AC_OUTPUT_COMMANDS. + * include/mdn/dude.h, lib/dude.c: update to conform to -02 spec. + * include/mdn/amcacev.h, lib/amcacev.c: created. + * include/mdn/amcacew.h, lib/amcacew.c: created. + * include/mdn/mace.h, lib/mace.c: created. + * include/mdn/Makefile.in, lib/Makefile.in, tools/runmdn/Makefile.in: + add above new files. + * DISTFILES: add above new files. + * lib/converter.c: add AMC-ACE-V, AMC-ACE-W and MACE. + * configure.in: add prefix configuration options (--with-*-prefix) + for these new ACEs. + * configure: rebuilt. + * include/mdn/version.h: set MDNKIT_VERSION to "2.2snap0619". + + * configure.in: add `--with-iconv-include' and `--with-libiconv' + options. + * lib/Makefile.in, mdnsproxy/Makefile.in, tools/mdnconv/Makefile.in, + tools/runmnd/Makefile.in: define ICONVINC and append its value to + INCS. + +2001-06-18 + * mdnsproxy/logging.c: fix a bug that whether libmdn message is + logged or not is determined by `log-level', not `libmdn-log-level'. + + * configure.in: also check glib-2.2 flavor of gethostbyaddr(). + * configure.in, include/config.h: define GHBA_ADDR_T which is + type of 1st argument to gethostbyaddr() and gethostbyaddr_r(). + * configure.in, tools/Makefile.in: if parameter type list of + gethostbyaddr() is unknown, nothing will be built in `tools/runmdn' + directory. + * tools/runmdn/resolver.c, tools/runmdn/stub.c, tools/runmdn/stub.h: + use GHBA_ADD_T as type of 1st parameter to gethostbyaddr() and + gethostbyaddr_r(). + * acconfig.h: delete GETHOST_R_GLIBC_FLAVOR and GHBA_ADDRLEN_T. + +2001-06-14 + * mdnsproxy/logging.c: shorten a program. use vfprintf() rather + than vsprintf()+fputs(). + +2001-06-12 + * lib/converter.c: output warning message if iconv() or iconv_open() + fails. + * lib/api.c, lib/res.c: output 256 characters maximum, when they + output a string to be translated and its result as trace message. + * lib/msgtrans.c: log a string to be translated and its result with + the priority INFO. + + * lib/res.c, include/mdn/res.h: use the term `insn' rather than + `action', for the 2nd argument to mdn_res_nameconv(). + +2001-06-07 + * include/mdn/amcacer.h, lib/amcacer.c: update to meet -01 spec. + +2001-06-04 + * mdnsproxy/mdnsproxy.h: define LOGMODE_STDERR. + * mdnsproxy/logging.c: output messages to standard error if the + configuration entry `log-file' is set to `stderr'. + * mdsproxy/logging.c: merge libmdn_logproc_syslog() and + libmdn_logproc_file() into libmdn_logproc(). + * mdsproxy/logging.c: insert date string to log messages if + mdnsproxy logs events to regular file. + * mdnsproxy/logging.c: fix a bug that mdnsproxy doesn't turn over + a log file correctly. + * mdnsproxy/unxmain.c: do not close file descriptor 2. + + * lib/resconf.c: 2nd arguemnt to the following functions can be NULL: + mdn_resconf_setalternateconverter(), mdn_resconf_setdelimitermap(), + mdn_resconf_setidnconverter(), mdn_resconf_setlocalconverter(), + mdn_resconf_setlocalmapselector(), mdn_resconf_setmapper(), + mdn_resconf_setnormalizer(), mdn_resconf_setprohibitchecker(), + mdn_resconf_setunassignedchecker(). + 2001-06-01 * 2.1 release. diff --git a/contrib/idn/mdnkit/DISTFILES b/contrib/idn/mdnkit/DISTFILES new file mode 100644 index 00000000000..8a6a4c2eb07 --- /dev/null +++ b/contrib/idn/mdnkit/DISTFILES @@ -0,0 +1,200 @@ +# $Id: DISTFILES,v 1.1 2002/02/08 05:38:30 marka Exp $ +README +README.ja +INSTALL +INSTALL.ja +ChangeLog +DISTFILES +LICENSE.txt +Makefile.in +NEWS +make.wnt +acconfig.h +aclocal.m4 +config.guess +config.sub +ltconfig +ltmain.sh +configure.in +configure +install-sh +mkinstalldirs +include/Makefile.in +include/config.h.in +include/config.h.win +include/mdn/Makefile.in +include/mdn/ace.h +include/mdn/altdude.h +include/mdn/amcacem.h +include/mdn/amcaceo.h +include/mdn/amcacer.h +include/mdn/amcacev.h +include/mdn/amcacew.h +include/mdn/amcacez.h +include/mdn/api.h +include/mdn/assert.h +include/mdn/brace.h +include/mdn/checker.h +include/mdn/converter.h +include/mdn/debug.h +include/mdn/delimitermap.h +include/mdn/dn.h +include/mdn/dude.h +include/mdn/filechecker.h +include/mdn/filemapper.h +include/mdn/lace.h +include/mdn/localencoding.h +include/mdn/log.h +include/mdn/logmacro.h +include/mdn/mace.h +include/mdn/mapper.h +include/mdn/mapselector.h +include/mdn/msgheader.h +include/mdn/msgtrans.h +include/mdn/nameprep.h +include/mdn/normalizer.h +include/mdn/race.h +include/mdn/res.h +include/mdn/resconf.h +include/mdn/result.h +include/mdn/selectiveencode.h +include/mdn/strhash.h +include/mdn/ucsmap.h +include/mdn/ucsset.h +include/mdn/unicode.h +include/mdn/unormalize.h +include/mdn/utf5.h +include/mdn/utf6.h +include/mdn/utf8.h +include/mdn/util.h +include/mdn/version.h +lib/Makefile.in +lib/ace.c +lib/altdude.c +lib/amcacem.c +lib/amcaceo.c +lib/amcacer.c +lib/amcacev.c +lib/amcacew.c +lib/amcacez.c +lib/api.c +lib/brace.c +lib/checker.c +lib/converter.c +lib/debug.c +lib/delimitermap.c +lib/dn.c +lib/dude.c +lib/filechecker.c +lib/filemapper.c +lib/lace.c +lib/localencoding.c +lib/log.c +lib/make.wnt +lib/mace.c +lib/mapper.c +lib/mapselector.c +lib/msgheader.c +lib/msgtrans.c +lib/nameprep.c +lib/nameprep_template.c +lib/nameprepdata.c +lib/normalizer.c +lib/race.c +lib/res.c +lib/resconf.c +lib/result.c +lib/selectiveencode.c +lib/strhash.c +lib/ucsmap.c +lib/ucsset.c +lib/unicode.c +lib/unicode_template.c +lib/unicodedata_301.c +lib/unicodedata_310.c +lib/unormalize.c +lib/utf5.c +lib/utf6.c +lib/utf8.c +lib/util.c +lib/version.c +lib/mdn.conf.sample.in +mdnsproxy/Makefile.in +mdnsproxy/acl.c +mdnsproxy/logging.c +mdnsproxy/make.wnt +mdnsproxy/mdnsproxy.8.in +mdnsproxy/mdnsproxy.conf.sample +mdnsproxy/mdnsproxy.def +mdnsproxy/mdnsproxy.h +mdnsproxy/message.c +mdnsproxy/os2main.c +mdnsproxy/proxycnf.c +mdnsproxy/proxycnf.h +mdnsproxy/server.c +mdnsproxy/translate.c +mdnsproxy/unxmain.c +mdnsproxy/winmain.c +mdnsproxy/winserv.c +mdnsproxy/winserv.h +tools/Makefile.in +tools/mdnconv/Makefile.in +tools/mdnconv/mdnconv.c +tools/mdnconv/util.c +tools/mdnconv/util.h +tools/mdnconv/mdnconv.1 +tools/mdnconv/mdnslookup.in +tools/rpm/mdnsproxy.init +tools/rpm/mdnkit.spec +tools/runmdn/Makefile.in +tools/runmdn/resolver.c +tools/runmdn/stub.c +tools/runmdn/stub.h +tools/runmdn/runmdn.1 +tools/runmdn/runmdn.in +man/Makefile.in +man/libmdn.3.in +man/mdn.conf.5.in +patch/bind8/bind-8.2.3-patch +patch/bind9/bind-9.1.3-patch +patch/bind9/bind-9.2.0-patch +patch/libiconv/libiconv-1.6.1.patch +patch/squid/squid-2.4.STABLE1-patch +win/README.WIN +wsock/README.txt +wsock/README_j.txt +wsock/make.wnt +wsock/common/checkdll.c +wsock/common/convert.c +wsock/common/dllmain.c +wsock/common/dump.c +wsock/common/encoding.c +wsock/common/hook.c +wsock/common/jpnicmdn.def +wsock/common/jpnicmdn.h +wsock/common/make.wnt +wsock/common/printf.c +wsock/config/make.wnt +wsock/config/mdnconf.tcl +wsock/wsock11/dlldef.h +wsock/wsock11/dllfunc.c +wsock/wsock11/dllload.c +wsock/wsock11/dllmain.c +wsock/wsock11/dllstub.c +wsock/wsock11/make.wnt +wsock/wsock11/wsock32.def +wsock/wsock11/wsock32o.def +wsock/wsock20/dlldef.h +wsock/wsock20/dllfunc.c +wsock/wsock20/dllload.c +wsock/wsock20/dllmain.c +wsock/wsock20/dllstub.c +wsock/wsock20/make.wnt +wsock/wsock20/ws2_32.def +wsock/wsock20/ws2_32o.def +util/SparseMap.pm +util/UCD.pm +util/generate_nameprep_data.pl +util/generate_normalize_data.pl +map/Makefile.in +map/jp.map diff --git a/contrib/idn/mdnkit/INSTALL b/contrib/idn/mdnkit/INSTALL new file mode 100644 index 00000000000..1a047e4ec65 --- /dev/null +++ b/contrib/idn/mdnkit/INSTALL @@ -0,0 +1,248 @@ + + mDNkit + Compilation and Installation + Japan Network Information Center (JPNIC) + + +This file explains how to compile and install the source package. +These procedures take the following steps: + + + Prerequisite: making iconv() available + + System Configuration: running `configure' script + + Compilation: running `make' + + Installation: running `make install' + + Site Configuration: tailoring `mdn.conf' + + Configuration Check (optional) + + +0. Prerequisite + +If your system's library does not have iconv() function, which is a +general codeset conversion utility, install it as an external library. +You also need external library if the system's implementation cannot +handle UTF-8 encoding, or it doesn't support some encodings which your +client applications uses. + +You can get a free version of iconv() implementation (under LGPL +license, aka GNU libiconv) from: + + http://clisp.cons.org/~haible/packages-libiconv.html + +*Note* + GNU libiconv-1.6.1 have a compilation problem on NetBSD 1.5. There + is a patch file for the bug under patch/libiconv directory. If you + are a NetBSD 1.5 user and found a problem in compiling libiconv, + apply the patch and try again. The patch file contains brief + instructions on how to apply it at the beginning. + + +1. Running configure script + +Run `configure' script in the top directory. This checks various +characteristics of your system and it will create Makefiles and +config.h appropriate for your system. + + % ./configure + +`configure' accepts many options. Here is a list of some important +options. + + --prefix=PREFIX + Specifies the prefix of install directories of mDNkit. The + default is /usr/local. + + --with-libiconv=LIBICONV_PREFIX + If you have installed GNU libiconv and would like to link it + to mDNkit, specify this option. The argument LIBICONV_PREFIX + is install prefix of GNU libiconv. If the argument is omitted, + PREFIX (derived from --prefix=PREFIX option) is assumed. + + --with-libiconv is shorthand option for GNU libiconv. + + --with-libiconv=/usr/local + + This is equivalent to: + + --with-iconv-include='-I/usr/local/include' + --with-iconv='-L/usr/local/lib -R/usr/local/lib -liconv' + + If both the shorthand option (--with-libiconv) and longhand + options (--with-iconv-include and/or --with-iconv) are specified, + the longhand options have priority. + + --with-iconv-include=ICONV_INCDIR + If the header file "iconv.h" resides in a directory where your + C compiler doesn't search by default, specify the directory as + DIR like this: + + --with-iconv-include=/usr/local/include + + --with-iconv=ICONV_LIB + If your libc doesn't contain iconv(), specify the library + that contains iconv(). For example, if iconv() is libiconv + in /usr/local/lib, you should specify: + + --with-iconv="-L/usr/local/lib -liconv" + + Note that if the library is a shared one, you might also want + to specify -R option, like: + + --with-iconv="-L/usr/local/lib -R/usr/local/lib -liconv" + + --with-iconv-sofile=SOFILE_PATH + ``runmdn'' command in this kit needs to know the pathname of + shared library file that contains iconv(), if iconv() is not + part of libc. mDNkit tries to find out the pathname from the + informaiton provided by ``--with-iconv'' option described + above. But when it fails, you have to specify it with this + option, like: + + --with-iconv-sofile=/usr/local/lib/libiconv.so.2.0 + + --with-utf8=UTF8_NAME + If your iconv() (precisely, iconv_open()) does not accept + "UTF-8" as the name of UTF-8 encoding, specify the name for + it. For example if your iconv() uses "utf8" instead, you + should specify: + + --with-utf8=utf8 + + +2. Other configure options + +The configure script has many other options though they are not widely +used: + + --with-preference=PREFERENCE + This option sets the preference for the sample mDNkit + configuration file (mdn.conf.sample). Also this option + enables to install default configuration file (mdn.conf) + if the file didn't exist. + The only preference supported by this version is "jp". + + --with-amc-ace-z-prefix=AMCZ_PREFIX + AMC-ACE-Z is a proposed encoding for multilingual domain name + in DNS protocol data. It requires a specific prefix string + to distinguish domain names encoded by them from normal ASCII + domain names, but the current Internet draft of AMC-ACE-Z + doesn't define prefix. You can specify the prefix with this + option. Otherwise mDNkit defines "zq--" as the prefix. + + --with-race-prefix=RACE_PREFIX + --with-dude-prefix=DUDE_PREFIX + Also RACE and DUDE are encodings for multilingual domain name, + but they are obsolete. Since Internet drafts for these + encodings defines ACE prefixes, mDNkit uses them by default, + but you can specify prefix with these options. + + --exec-prefix=EXEC_PREFIX + Specifies the prefix of install directories for machine-specific + files. The default is PREFIX (derived from ``--prefix=PREFIX'' + and its default is /usr/local). + + --sbindir=SBINDIR + Specifies the install directory for mdnsproxy. The default is + EXEC_PREFIX/sbin. + + --bindir=BINDIR + Specifies the install directory for mdnconv and runmdn. + The default is EXEC_PREFIX/bin. + + --libdir=LIBDIR + Specifies the install directory for the MDN library (libmdn). + The default is EXEC_PREFIX/lib. + + --includedir=INCDIR + Specifies the install directory for the header files of the MDN + library. The default is PREFIX/include. + + --sysconfdir=SYSCONFDIR + Specifies the install directory for sample configuration files + of the MDN Library and mdnsproxy. The default is PREFIX/etc. + + --mandir=MANDIR + Specifies the base install directory for online manuals. + The default is PREFIX/man. + + --datadir=DATADIR + Specifies the base install directory for machine independent + data files. The default is PREFIX/share. Some data files for + mDNkit will be put under the DATADIR/mdnkit directory. + + --localstatedir=LOCALSTATEDIR + --with-logdir=LOGDIR + LOGDIR specifies the directory where mdnsproxy outputs log + files by default. Its default value is LOCALSTATEDIR/mdnsproxy, + and the default value of LOCALSTATEDIR is PREFIX/var. + + --enable-debug + Enable debugging codes. The fault is "no". + + --enable-shared + Build shared library. The fault is "yes". + + --enable-static + Build static library. The fault is "yes". + +To see the list of available options, you should run it with --help +option. + + % ./configure --help + + +3. Compiling + +Run `make' for compilation. + + % make + + +4. Installation + +Run `make install' to install binaries and manuals. Don't forget to +become a super-user before the installation. + + % su + # make install + + +5. Configuration and usage + +mDNkit needs a configuration file `mdn.conf' to work properly. Unless +you specified --with-preference option to the `configure' script, you +have to create the file. Please refer the manual for `mdn.conf' for +details. A sample configuration (`mdn.conf.sample') is also provided +for your convenience. + +Also online manuals for `mdnsproxy', `mdnconv' and `runmdn' commands +are available. Please refer them for the usage and configuration of +these commands. + + % man mdn.conf + % man mdnsproxy + % man mdnconv + % man runmdn + + +6. Check your configuration + +A simple shell script `mdnslookup' is available in the directory +`tools/mdnconv', with which you can make queries for multilingual +domain names. It may help you check your configuration. + +The usage of `mdnslookup' is: + + % tools/mdnconv/mdnslookup + +Suppose that is an internationalized domain name written +in the local codeset (see ``LOCAL CODESET'' in the `mdn.conf' man page +for details), and is a hostname or IP address of DNS +server. + +`mdnslookup' inquires from , using +`mdnconv' and `nslookup' commands. If something is wrong, you will +see an error message output by `mdnconv', `nslookup' or `mdnslookup' +itself. + + +; $Id: INSTALL,v 1.1 2002/02/08 05:38:30 marka Exp $ diff --git a/contrib/idn/mdnkit/INSTALL.ja b/contrib/idn/mdnkit/INSTALL.ja new file mode 100644 index 00000000000..0edec71e32a --- /dev/null +++ b/contrib/idn/mdnkit/INSTALL.ja @@ -0,0 +1,253 @@ + + mDNkit + $B%3%s%Q%$%k$H%$%s%9%H!<%k$NJ}K!(B + ($BJN,2D(B) + + +0. $BA0=`Hw(B + +$B$b$7$"$J$?$N;HMQ$7$F$$$k%7%9%F%`$N%i%$%V%i%j$K(B iconv() $B$,$J$$>l9g!"$"(B +$B$k$$$O$"$C$F$b(B UTF-8 $B$r07$&$3$H$,$G$-$J$$>l9g$K$O$"$i$+$8$a(B iconv() $B$r(B +$B%$%s%9%H!<%k$7$F$*$$$F$/$@$5$$!#(Biconv() $B$O!"Nc$($P(B GNU libiconv $B$H8F$P(B +$B$l$k%U%j!<(B (LGPL) $B$Nl9g$K$O(B libiconv $B$K%Q%C%A$rEv$F$F:F%$%s%9%H!<%k$7$F$/$@$5$$!#(B + $B$J$*!"%Q%C%A$NEv$FJ}$O%Q%C%A%U%!%$%k$N@hF,$K=q$+$l$F$$$^$9!#(B + + +1. configure $B%9%/%j%W%H$Nl9g$O!"$3$N%*%W%7%g%s$r;XDj$7$F2<$5$$!#0z?t(B LIBICONV_PREFIX + $B$K$O!"(BGNU libiconv $B$,%$%s%9%H!<%k$5$l$F$$$k0LCV$r;XDj$7$^$9!#(B + $B0z?t$r>JN,$9$k$H!"(BPREFIX (PREFIX $B$NCM$O(B --prefix=PREFIX $B$+$i(B + $BF3=P$5$l$^$9(B) $B$r;XDj$7$?$b$N$H8+$J$5$l$^$9!#(B + + --with-libiconv $B$O(B GNU libiconv $BMQ$NC;=L7A$N%*%W%7%g%s$G(B + + --with-libiconv=/usr/local + + $B$3$l$OoMQ$N%*%W%7%g%s(B + (--with-iconv-include, --with-iconv) $B$rN>J}$H$b;XDj$7$?>l9g$O!"(B + $BDL>oMQ$N%*%W%7%g%s$[$&$,M%@h$5$l$^$9!#(B + + --with-iconv-include=ICONV_INCDIR + C $B%3%s%Q%$%i$,DL>o$G$O8!:w$7$J$$%G%#%l%/%H%j$K(B "iconv.h" $B$,CV(B + $B$+$l$F$$$k>l9g!"l9g(B ($B>e5-$N%Q%C%1!<%8$rF~$l$?(B + $B>l9g$J$I(B) $B$K!"(Biconv $B$N%i%$%V%i%j$r;XDj$7$^$9!#Nc$($P(B + + --with-iconv="-L/usr/local/lib -liconv" + + $B$N$h$&$K;XDj$7$^$9!#$b$7(B iconv $B$,6&M-%i%$%V%i%j$K$J$C$F$$$k(B + $B>l9g$K$O!"(B-R $B%*%W%7%g%s$b;XDj$7$F(B + + --with-iconv="-L/usr/local/lib -R/usr/local/lib -liconv" + + $B$H$9$kI,MW$,$"$k$+$b$7$l$^$;$s!#(B + + --with-iconv-sofile=SOFILE_PATH + mDNkit $B$K4^$^$l$F$$$k(B runmdn $B%3%^%s%I$O!"(Biconv() $B$,(B libc $B$N0l(B + $BIt$H$7$FDs6!$5$l$J$$$H$-$K!"(Biconv() $B$r4^$`6&M-%i%$%V%i%j$X$N%Q(B + $B%9L>$rCN$kI,MW$,$"$j$^$9!#(BmDNkit $B$O!"(B--with-iconv $B%*%W%7%g%s$N(B + $B5-=R$r4p$K%Q%9L>$r8!:w$7$^$9$,!"$3$l$K<:GT$7$?$H$-$K!"0J2<$N$h(B + $B$&$K6&M-%i%$%V%i%j$r;XDj$9$k$3$H$,$G$-$^$9!#(B + + --with-iconv-sofile=/usr/local/lib/libiconvv.so.2.0 + + --with-utf8=UTF8_NAME + iconv $B$K(B utf-8 $B%(%s%3!<%G%#%s%0$r;XDj$9$k>l9g!"K\%i%$%V%i%j$O(B + $B%G%U%)%k%H$G$O(B "UTF-8" $B$H$$$&L>A0$r;XDj$7$^$9!#$b$7$"$J$?$N(B + $B%7%9%F%`$N(B iconv $B$,(B "UTF-8" $B$H$$$&L>A0$rl9g$K$O!"(B + $BBe$j$NL>A0$r;XDj$7$^$9!#Nc$($P(B "UTF-8" $B$G$O$J$/(B "utf8" $B$N(B + $B>l9g$K$O$N(B configure $B$N%*%W%7%g%s(B + +$B$=$l$[$I$h$/;H$&$o$1$G$O$"$j$^$;$s$,!"(Bconfigure $B$K$OA09`$N$b$N0J30$K(B +$B$bMM!9$J%*%W%7%g%s$,MQ0U$5$l$F$$$^$9!#(B + + --with-preference=PREFERENCE + mDNkit $B$N%5%s%W%k%3%s%U%#%.%e%l!<%7%g%s%U%!%$%k(B (mdn.conf.sample) + $B$N@_Dj$r(B PREFERENCE $B8~$1$N$b$N$K$7$^$9!#$^$?$3$N%*%W%7%g%s$r;XDj(B + $B$9$k$H%G%U%)%k%H$N%3%s%U%#%.%e%l!<%7%g%s%U%!%$%k(B (mdn.conf) $B$,(B + $B%$%s%9%H!<%k$5$l$^$9!#$?$@$7%U%!%$%k$,$9$G$KB8:_$7$F$$$k>l9g$K$O(B + $B%$%s%9%H!<%k$7$^$;$s!#(B + $B8=:_$N$H$3$m!";XDj$G$-$k(B PREFERENCE $B$O(B "jp" $B$N$_$G$9!#(B + + --with-amc-ace-z-prefix=AMCZ_PREFIX + AMC-ACE-Z $B$O(B DNS $B%W%m%H%3%k>e$G;HMQ$5$l$kB?8@8l%I%a%$%sL>$K4X$7(B + $B$FDs0F$5$l$F$$$k%(%s%3!<%G%#%s%0J}<0$G$9!#$3$N%(%s%3!<%G%#%s%0(B + $B$G%3%s%3!<%I$5$l$?%I%a%$%sL>$H=>Mh$N(B ASCII $B%I%a%$%sL>$H6hJL$9(B + $B$k$?$a$K$O!"8GDj$N@\F,<-$rMQ0U$9$kI,MW$,$"$j$^$9!#$7$+$7$J$,$i!"(B + $B8=:_$N(B AMCE-ACE-Z $B$N%$%s%?!<%M%C%H%I%i%U%H$G$O@\F,<-$rDj5A$7$F(B + $B$$$^$;$s!#$3$N%*%W%7%g%s$rMQ$$$k$3$H$G!"@\F,<-$r;XDj$9$k$3$H$,(B + $B$G$-$^$9!#;XDj$7$J$1$l$P!"(B"zq--" $B$,@\F,<-$H$7$FDj5A$5$l$^$9!#(B + + --with-race-prefix=RACE_PREFIX + --with-dude-prefix=DUDE_PREFIX + RACE $B$b(B DUDE $B$b(B DNS $B%W%m%H%3%k>e$G;HMQ$5$l$kB?8@8l%I%a%$%sL>$K(B + $B4X$7$FDs0F$5$l$F$$$k%(%s%3!<%G%#%s%0J}<0$G$9$,!"$9$G$KGQ$l$?$b(B + $B$N$H$J$C$F$$$^$9!#%(%s%3!<%G%#%s%0J}<0$K$D$$$F5-=R$7$?%$%s%?!<(B + $B%M%C%H%I%i%U%H$K$O@\F,<-$,Dj5A$5$l$F$$$^$9$,!"$3$l$i$N%*%W%7%g(B + $B%s$rMQ$$$F@\F,<-$rJQ99$9$k$3$H$b2DG=$G$9!#(B + + --exec-prefix=EXEC_PREFIX + $B%^%7%s8GM-$N%U%!%$%k$r%$%s%9%H!<%k$9$k%G%#%l%/%H%j$N%Q%9$r;XDj(B + $B$7$^$9!#%G%U%)%k%H$O(B PREFIX (``--prefix=PREFIX'' $B$K$h$C$F;XDj(B + $B2DG=!"(BPREFIX $B$N%G%U%)%k%H$O(B /usr/local) $B$K$J$j$^$9!#(B + + --sbindir=SBINDIR + mdnsproxy $B$r%$%s%9%H!<%k$9$k%G%#%l%/%H%j$r;XDj$7$^$9!#%G%U%)%k(B + $B%H$G$O(B EXEC_PREFIX/sbin $B$G$9!#(B + + --bindir=BINDIR + mdnconv $B$H(B runmdn $B$r%$%s%9%H!<%k$9$k%G%#%l%/%H%j$r;XDj$7$^$9!#(B + $B%G%U%)%k%H$G$O(B EXEC_PREFIX/bin $B$G$9!#(B + + --libdir=LIBDIR + MDN $B%i%$%V%i%j(B (libmdn) $B$r%$%s%9%H!<%k$9$k%G%#%l%/%H%j$r;XDj$7(B + $B$^$9!#%G%U%)%k%H$G$O(B EXEC_PREFIX/lib $B$G$9!#(B + + --includedir=INCDIR + MDN $B%i%$%V%i%j$N%X%C%@%U%!%$%k$r%$%s%9%H!<%k$9$k%G%#%l%/%H%j$r(B + $B;XDj$7$^$9!#%G%U%)%k%H$G$O(B PREFIX/include $B$G$9!#(B + + --sysconfdir=SYSCONFDIR + MDN $B%i%$%V%i%j$*$h$S(B mdnsproxy $B$N@_Dj%U%!%$%k$N%5%s%W%k$r%$%s(B + $B%9%H!<%k$9$k%G%#%l%/%H%j$r;XDj$7$^$9!#%G%U%)%k%H$G$O(B PREFIX/etc + $B$G$9!#(B + + --mandir=MANDIR + $B%*%s%i%$%s%^%K%e%"%k$N%$%s%9%H!<%k%G%#%l%/%H%j$r;XDj$7$^$9!#(B + $B%G%U%)%k%H$G$O(B PREFIX/man $B$G$9!#(B + + --datadir=DATADIR + $B0[$J$k%^%7%s$G6&M-2DG=$J%U%!%$%k$r%$%s%9%H!<%k$9$k%G%#%l%/%H%j(B + $B$r;XDj$7$^$9!#%G%U%)%k%H$O(B PREFIX/share $B$G$9!#(BDATADIR/mdnkit + $B$N2<$K!"(BmDNkit $B$G;HMQ$9$k4v$D$+$N%G!<%?%U%!%$%k$,%$%s%9%H!<%k(B + $B$5$l$^$9!#(B + + --localstatedir=LOCALSTATEDIR + --with-logdir=LOGDIR + LOGDIR $B$O(B mdnsproxy $B$N%m%0%U%!%$%k$r=PNO$9$kI8=`$N%G%#%l%/%H%j(B + $B$r;XDj$7$^$9!#(BLOGDIR $B$N%G%U%)%k%H$O(B LOLOCALSTATEDIR/mdnsproxy + $B$G!"(BLOLOCALSTATEDIR $B$N%G%U%)%k%H$O(B PREFIX/var $B$G$9!#(B + + --enable-debug + $B%G%P%C%0MQ$N%3!<%I$rM-8z$K$7$^$9!#%G%U%)%k%H$O(B "no" ($BL58z(B) $B$G$9!#(B + + --enable-shared + $B6&M-%i%$%V%i%j$r:n@.$7$^$9!#%G%U%)%k%H$O(B "yes" ($B:n@.$9$k(B) $B$G$9!#(B + + --enable-static + $B@EE*%i%$%V%i%j$r:n@.$7$^$9!#%G%U%)%k%H$O(B "yes" ($B:n@.$9$k(B) $B$G$9!#(B + +configure $B$K$OB>$K$bB?$/$N%*%W%7%g%s$,$"$j$^$9$,!";D$j$O0lHLE*$J%*%W%7%g(B +$B%s$J$N$G@bL@$O>J$-$^$9!#(B + + % ./configure --help + +$B$rl(B +$B9g$K$O$3$N%U%!%$%k$r:n@.$9$kI,MW$,$"$j$^$9!#$3$N@_Dj%U%!%$%k$N>\:Y$K$D(B +$B$$$F$O(Bmdn.conf $B$N%*%s%i%$%s%^%K%e%"%k$r$4Mw$/$@$5$$!#$^$?@_DjNc$,=q$+(B +$B$l$?%5%s%W%k%U%!%$%k(B (mdn.conf.sample) $B$b%$%s%9%H!<%k$5$l$^$9$N$G$4Mx(B +$BMQ$/$@$5$$!#(B + +$B$^$?!"(Bmdnsproxy$B!"(Bmdnconv$B!"(Brunmdn $B$H$$$C$?%D!<%k$N%*%s%i%$%s%^%K%e%"%k(B +$B$bDs6!$5$l$F$$$^$9!#$3$l$i$N%3%^%s%I$N;H$$J}!"@_DjJ}K!$K4X$7$F$O$=$A$i(B +$B$r;2>H$7$F$/$@$5$$!#(B + + % man mdn.conf + % man mdnsproxy + % man mdnconv + % man runmdn + + +6. $B@_Dj$N3NG'(B + +`mdnsproxy' $B$H$$$&4JC1$J%7%'%k%9%/%j%W%H$,(B tools/mdnconv $B%G%#%l%/%H%j(B +$B$KMQ0U$5$l$F$$$^$9!#$3$N%9%/%j%W%H$r;H$&$H(B DNS $B%5!<%P$KBP$7$FB?8@8l%I(B +$B%a%$%sL>$rLd$$9g$o$;$k$3$H$,$G$-$^$9!#@_Dj%U%!%$%k$N3NG'$KLrN)$D$+$bCN(B +$B$l$^$;$s!#(B + +`mdnslookup' $B$N;HMQJ}K!$O!" + +$B$3$3$G(B $B$O%m!<%+%k%3!<%I%;%C%H(B ($B>\$7$/$O(B mdn.conf $B$N%^%K%e(B +$B%"%k$N(B ``LOCAL CODESET'' $B$r;2>H$N$3$H(B) $B$G=q$+$l$?B?8@8l%I%a%$%sL>$G!"(B + $B$O(B DNS $B%5!<%P$N%[%9%HL>$b$7$/$O(B IP $B%"%I%l%9$G$9!#(B + +`mdnslookup' $B$O(B `mdnconv' $B$*$h$S(B `nslookup' $B%3%^%s%I$rMQ$$$F!"(B + $B$KBP$7$F(B $B$r0z$-$K9T$-$^$9!#@_Dj$K2?$+4V0c$$(B +$B$,$"$l$P!"(B`mdnconv', `nslookup', $B$"$k$$$O(B `mdnslookup' $B<+?H$K$h$k%(%i!<(B +$B%a%C%;!<%8$,=PNO$5$l$^$9!#(B + + +; $Id: INSTALL.ja,v 1.1 2002/02/08 05:38:30 marka Exp $ diff --git a/contrib/idn/mdnkit/LICENSE.txt b/contrib/idn/mdnkit/LICENSE.txt index 0e333813382..e2e0b79fae8 100644 --- a/contrib/idn/mdnkit/LICENSE.txt +++ b/contrib/idn/mdnkit/LICENSE.txt @@ -1,4 +1,5 @@ -Copyright (c) 2000 Japan Network Information Center. All rights reserved. +Copyright (c) 2000, 2001 Japan Network Information Center. + All rights reserved. By using this file, you agree to the terms and conditions set forth bellow. @@ -6,8 +7,8 @@ By using this file, you agree to the terms and conditions set forth bellow. The following License Terms and Conditions apply, unless a different license is obtained from Japan Network Information Center ("JPNIC"), -a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, -Tokyo, Japan. +a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, +Chiyoda-ku, Tokyo 101-0047, Japan. 1. Use, Modification and Redistribution (including distribution of any modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/Makefile.in b/contrib/idn/mdnkit/Makefile.in index 602e22caf76..f005bbefa0f 100644 --- a/contrib/idn/mdnkit/Makefile.in +++ b/contrib/idn/mdnkit/Makefile.in @@ -1,4 +1,4 @@ -# $Id: Makefile.in,v 1.44 2001/04/17 03:24:09 m-kasahr Exp $ +# $Id: Makefile.in,v 1.1 2002/01/02 02:46:20 marka Exp $ # Copyright (c) 2000 Japan Network Information Center. All rights reserved. # # By using this file, you agree to the terms and conditions set forth bellow. @@ -7,8 +7,8 @@ # # The following License Terms and Conditions apply, unless a different # license is obtained from Japan Network Information Center ("JPNIC"), -# a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, -# Tokyo, Japan. +# a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, +# Chiyoda-ku, Tokyo 101-0047, Japan. # # 1. Use, Modification and Redistribution (including distribution of any # modified or derived work) in source and/or binary forms is permitted @@ -67,18 +67,20 @@ SHELL = @SHELL@ SUBDIRS = include lib mdnsproxy man tools map -all: +all: force for d in $(SUBDIRS); do (cd $$d; $(MAKE) all); done -install: +install: force for d in $(SUBDIRS); do (cd $$d; $(MAKE) install); done -clean: +clean: force for d in $(SUBDIRS); do (cd $$d; $(MAKE) clean); done -dist: +dist: force @v=`sed -ne '/^# *define *MDNKIT_VERSION/s/^.*"\([^"]*\)".*$$/\1/p' \ $(srcdir)/include/mdn/version.h`; \ echo generate mdnkit-$$v-src.tar.gz; \ cd $(srcdir); \ $(PERL) $(MKTARPKG) --gzip=9 mdnkit-$$v-src + +force: diff --git a/contrib/idn/mdnkit/NEWS b/contrib/idn/mdnkit/NEWS index 165fad440f0..ce287bb69e0 100644 --- a/contrib/idn/mdnkit/NEWS +++ b/contrib/idn/mdnkit/NEWS @@ -1,13 +1,70 @@ -; $Id: NEWS,v 1.22 2001/06/01 01:20:39 ishisone Exp $ +; $Id: NEWS,v 1.1 2002/01/02 02:46:20 marka Exp $ + +Major changes in version 2.2.3: + +* BIND-9 patch for BIND-9.2.0 is available. + +* NAMEPREP draft -06 is supported. + +* Problems on Tru64 are fixed. + +Major changes in version 2.2.2: + +* Now runmdn can work on NetBSD-1.5 or later. + +Major changes in version 2.2.1: + +* Fix a bug that the MDN library misses prohibited characters. + +Major changes in version 2.2: + +* Alternate encoding is no longer supported. + mDNkit now follows IDNA-03 which says in the section 2.1.2 that An + IDNA-aware application MUST NOT do any preparation or conversion to + ACE on any non-internationalized name part. `alternate-encoding' + entry in configuration file is simply ignored. + +* The MDN library (libmdn) performs NAMEPREP check at decoding an ACE + name. If the name is not NAMEPREPed, libmdn returns a name with ACE + encoding instead of local encoding. + +* Supported ACEs are now AMC-ACE-Z, RACE and DUDE only. + Since the IDN working group has chosen AMC-ACE-Z, most of other ACEs + are no longer supported by default. If you wanted to use those + ACEs, specify `--enable-extra-ace' option of configure. + +* mdnsproxy can output log messages to standard error. + +* mdnsproxy adds date and time string to a message logged to a regular + file. + +* `--with-iconv-include', `--with-libiconv' and `--enable-debug' + options are added to `configure'. + +* `--with-libiconv' option is also added to `configure' in BIND-9 patch. + +* A build problem on Linux with glibc-2.2 is fixed. + +* The base version of BIND-9 patch is now 9.1.3. + +* Supported NAMEPREP drafts are -03 and -05. + -02 and -04 are not supported. + +* `-e' option is added to runmdn to set local encoding. + +* `dig', `host' and `nslookup' of BIND-9 with MDN support patch + recognize the MDN_DISABLE environment variable. Those commands turn + off MDN support if the variable is defined. Major changes in version 2.1: * BIND-9 patch is back. The patch adds encoding conversion and NAMEPREP capability to `dig', `host' and `nslookup'. - Since version 2 adopts IDNA, in which all the MDN processing are - performed in the application layer before calling the resolver - layer, patch to the BIND-9's light-weight resolver found in version - 1.x are removed. + Since mDNkit version 2 adopts IDNA, in which all the MDN processing + are performed in the application layer before calling the resolver + layer, the patch no longer contains modification of the light-weight + resolver or `allow-utf8' extension of `named' configuration syntax + found in mDNkit version 1.x. * Runmdn is back. The strategy for making resolver MDN-aware has been changed from replacing low-level resolver functions to wrapping diff --git a/contrib/idn/mdnkit/README b/contrib/idn/mdnkit/README index 74f946a3352..398005775d6 100644 --- a/contrib/idn/mdnkit/README +++ b/contrib/idn/mdnkit/README @@ -1,11 +1,23 @@ mDNkit -- multilingual domain name toolkit -- - version 2.1 + version 2.2.3 Japan Network Information Center (JPNIC) -* Overview +Table of contents of this file: + + 1. Overview + 2. Directory structure of this distribution + 3. Applying patches + 4. Supported systems + 5. Contact information + +See the file INSTALL for compilation and installation instructions. +See the file NEWS for a list of major changes in the current release. + + +1. Overview mDNkit is a toolkit for handling multilingualized/internationalized domain names. To handle such names, the following features are required: @@ -147,13 +159,16 @@ using above components. |application| +---------+---------+ +----------+ +-----------+ -* Directory structure of this distribution + +2. Directory structure of this distribution Below is a directory structure of this distribution with some important files and their brief description. +README this file +README.ja .. in Japanese + +INSTALL compilation and installation instructions. + +INSTALL.ja .. in Japanese +DISTFILES list of files in this distribution +NEWS what's new in this version +ChangeLog list of changes @@ -176,184 +191,72 @@ important files and their brief description. +wsock/ source directory for mDN wrapper -* Compilation and installation - -0. Prerequisite - -If your system's library does not have iconv() function, which is a -general codeset conversion utility, install it as an external library. -You also need external library if the system's implementation cannot -handle UTF-8 encoding, or it doesn't support some encodings which your -client applications uses. - -You can get a free version of iconv() implementation (under LGPL -license), from: - - http://clisp.cons.org/~haible/packages-libiconv.html - -*Note* - The current version of the above implementation (libiconv-1.6.1) is - known to have a compilation problem on NetBSD 1.5. There is a patch - file for the bug under patch/libiconv directory. If you are a - NetBSD 1.5 user and found a problem in compiling libiconv, apply the - patch and try again. The patch file contains brief instructions on - how to apply it at the beginning. - -1. Running configure script - -Run `configure' script in the top directory. This checks various -characteristics of your system and it will create Makefiles and -config.h appropriate for your system. - - % ./configure - -`configure' accepts many options. Here is a list of some important -options. - - --with-iconv=LIB - If your libc doesn't contain iconv(), specify the library - that contains iconv(). For example, if iconv() is libiconv - in /usr/local/lib, you should specify: - - --with-iconv="-L/usr/local/lib -liconv" - - Note that if the library is a shared one, you might also want to - specify -R option, like: - - --with-iconv="-L/usr/local/lib -R/usr/local/lib -liconv" - - If the header file "iconv.h" has installed in a non-standard - directory like /usr/local/include, you should specify CFLAGS - environment variable. See below. - - --with-iconv-sofile=PATH - ``runmdn'' command in this kit needs to know the pathname of - shared library file that contains iconv(), if iconv() is not - part of libc. mDNkit tries to find out the pathname from the - informaiton provided by ``--with-iconv'' option described - above. But when it fails, you have to specify it with this - option, like: - - --with-iconv-sofile=/usr/local/lib/libiconv.so.2.0 - - --with-utf8=NAME - If your iconv() (precisely, iconv_open()) does not accept - "UTF-8" as the name of UTF-8 encoding, specify the name for - it. For example if your iconv() uses "utf8" instead, you - should specify: - - --with-utf8=utf8 - - --with-preference=PREFERENCE - This option sets the preference for the sample mDNkit - configuration file (mdn.conf.sample). Also this option - enables to install default configuration file (mdn.conf) - if the file didn't exist. - The only preference supported by this version is "jp". - - --with-race-prefix=PREFIX - --with-brace-suffix=SUFFIX - --with-lace-prefix=PREFIX - --with-dude-prefix=PREFIX - RACE (Row-based ASCII-Compatible Encoding), BRACE (Bi-mode - Row-based ASCII-Compatible Encoding), LACE (Length-based ASCII - Compatible Encoding) and DUDE (Differential Unicode Domain - Encoding) are proposed encodings for multilingual domain name - in DNS protocol data. They uses a fixed prefix (or suffix) - string to distinguish names encoded by them from normal ASCII - domain names. These prefix/suffix are defined by the current - Internet Drafts and mDNkit uses them by default, but later - version of the drafts may change them. In that case you can - specify the prefix/suffix with these options. - - --with-altdude-prefix=PREFIX - --with-altdude-suffix=SUFFIX - --with-amc-ace-m-prefix=PREFIX - --with-amc-ace-m-suffix=SUFFIX - --with-amc-ace-o-prefix=PREFIX - --with-amc-ace-o-suffix=SUFFIX - --with-amc-ace-r-prefix=PREFIX - AltDUDE, AMC-ACE-M, AMC-ACE-O and AMC-ACE-R are also proposed - encodings for multilingual domain names. Unlike encodings - mentioned above, the Internet Drafts for these do not define - specific prefixes nor suffixes. mDNkit provides default for - them, but you can override them with these options. - You can specify either prefix or suffix for AltDUDE, AMC-ACE-M - and AMC-ACE-O. In case both are specified, prefix is - preferred. - - --sbindir=DIR - Specifies the install directory for mdnsproxy. Default is - /usr/local/sbin. +3. Applying patches - --bindir=DIR - Specifies the install directory for mdnconv and runmdn. - Default is /usr/local/bin. +This distribution also contains patches for BIND 9.1.3, BIND 8.2.3 and +Squid 2.4.STABLE1. The top of these patch files describe how to apply +the patch and (re)install. - --sysconfdir=DIR - Specifies the install directory for sample files of mdnsproxy - configuration and mDNkit's resolver configuration. Default is - /usr/local/etc. +Note that on Solaris, "patch" command that comes with the system +sometimes doesn't work correctly. You may want to install the GNU +version of the command (http://www.gnu.org/software/patch/) and use +it. - --mandir=DIR - Specifies the base install directory for online manuals. - Default is /usr/local/man. -`configure' has many more options. To see the list of available -options, you should run it with --help option. +4. Supported systems - % ./configure --help +We've had successful builds on the following systems: -If you want to specify extra compiler options, like adding non-standard -directory to include file search path, use environment variable CFLAGS. + ------------------------------------------------------------------- + OS iconv library configure options + =================================================================== + FreeBSD 4.4-RELEASE GNU libiconv --with-libiconv + for Intel 1.6.1 + ------------------------------------------------------------------- + FreeBSD 3.5.1-RELEASE GNU libiconv --with-libiconv + for Intel 1.7 + ------------------------------------------------------------------- + NetBSD 1.5.2 GNU libiconv --with-libiconv + for Intel 1.7 + ------------------------------------------------------------------- + Red Hat Linux 7.1 standard library none + for Intel (glibc) + ------------------------------------------------------------------- + Red Hat Linux 7.0 standard library none + for Intel (glibc) + ------------------------------------------------------------------- + Debian/GNU Linux 2.2r3 standard library none + for Intel (glibc) + ------------------------------------------------------------------- + Solaris 2.6 standard library none + for Sparc (libc) + ------------------------------------------------------------------- + Windows2000 GNU libiconv --with-libiconv + (cygwin-1.3.2) *1 1.7 + ------------------------------------------------------------------- - % CFLAGS="-I/usr/local/include -O2" ./configure ... (for sh) - % setenv CFLAGS "-I/usr/local/include -g"; ./configure ... (for csh) + *1: Only mdnconv can work on that system. -2. Compiling +The latest information about supported/unsupported systems will be +found at the mDNkit FAQ page linked from: -Run `make' for compilation. + http://www.nic.ad.jp/jp/research/idn/ - % make -3. Installation - -Run `make install' to install binaries and manuals. Don't forget to -become a super-user before the installation. - - % su - # make install - -4. Configuration and usage - -Please consult online manuals for configuration and usage of `mdnsproxy' -`mdnconv', and `runmdn'. Also for `mdnconv' and `runmdn', please refer -the manual of mDNkit's resolver configuration file `mdn.conf'. - - % man mdnsproxy - % man mdnconv - % man mdn.conf +5. Contact information +Please see -* Applying patches - -This distribution also contains patches for BIND 9.1.1, BIND 8.2.3 and -Squid 2.4.STABLE1. The top of these patch files describe how to apply -the patch and (re)install. - -Note that on Solaris, "patch" command that comes with the system -sometimes doesn't work correctly. You may want to install the GNU -version of the command (http://www.gnu.org/software/patch/) and use -it. + http://www.nic.ad.jp/jp/research/idn/ +for the latest news about this kit. +Bug reports and comments on this kit should be sent to -* Contact information - -Please see http://www.nic.ad.jp/jp/research/idn/ for the latest news -about this kit. + mdnkit-bugs@nic.ad.jp +and + idn-cmt@nic.ad.jp -Bug reports and comments on this kit should be sent to -mdnkit-bugs@nic.ad.jp and idn-cmt@nic.ad.jp, respectively. +respectively. -; $Id: README,v 1.29 2001/06/01 01:13:46 ishisone Exp $ +; $Id: README,v 1.1 2002/01/02 02:46:21 marka Exp $ diff --git a/contrib/idn/mdnkit/README.ja b/contrib/idn/mdnkit/README.ja index 456e9f82015..0effa902de5 100644 --- a/contrib/idn/mdnkit/README.ja +++ b/contrib/idn/mdnkit/README.ja @@ -1,11 +1,24 @@ mDNkit -- ¿¸À¸ì¥É¥á¥¤¥ó̾¥Ä¡¼¥ë¥­¥Ã¥È -- - ¥Ð¡¼¥¸¥ç¥ó 2.1 + ¥Ð¡¼¥¸¥ç¥ó 2.2.3 (¼Ò) ÆüËܥͥåȥ¥¯¥¤¥ó¥Õ¥©¥á¡¼¥·¥ç¥ó¥»¥ó¥¿¡¼ (JPNIC) -* ³µÍ× +¤³¤Î¥Õ¥¡¥¤¥ë¤ÎÌܼ¡: + + 1. ³µÍ× + 2. ¥Ç¥£¥ì¥¯¥È¥ê¹½À® + 3. ¥Ñ¥Ã¥Á¤ÎÅö¤ÆÊý + 4. ËÜ¥­¥Ã¥È¤¬Âбþ¤·¤Æ¤¤¤ë¥·¥¹¥Æ¥à + 5. ËÜ¥­¥Ã¥È¤Ë´Ø¤¹¤ëºÇ¿·¾ðÊó¡¢Ì䤤¹ç¤ï¤»¤Ë¤Ä¤¤¤Æ + +¥³¥ó¥Ñ¥¤¥ë¤ª¤è¤Ó¥¤¥ó¥¹¥È¡¼¥ëÊýË¡¤Ë¤Ä¤¤¤Æ¤Ï¡¢INSTALL.ja ¤È¤¤¤¦¥Õ¥¡¥¤¥ë¤ò +¤´Í÷²¼¤µ¤¤¡£¤³¤Î¥Ð¡¼¥¸¥ç¥ó¤Ç¤Î¼ç¤ÊÊѹ¹ÅÀ¤ËÉÕ¤¤¤Æ¤Ï¡¢(±Ñʸ¤Ç¤¹¤¬) NEWS +¤È¤¤¤¦¥Õ¥¡¥¤¥ë¤ò¤´Í÷²¼¤µ¤¤¡£ + + +1. ³µÍ× mDNkit ¤È¤Ï¿¸À¸ì¥É¥á¥¤¥ó̾¤ò°·¤¦¤¿¤á¤Î¥Ä¡¼¥ë¥­¥Ã¥È¤Ç¤¹¡£Â¿¸À¸ì¥É¥á¥¤ ¥ó̾¤ò°·¤¦¤¿¤á¤Ë¤Ï¡¢¼¡¤Î¤è¤¦¤Êµ¡Ç½¤¬Í׵ᤵ¤ì¤Þ¤¹¡£ @@ -140,12 +153,14 @@ mDNkit +----------------+ +---------+------------+ +------+ -* ¥Ç¥£¥ì¥¯¥È¥ê¹½À® +2. ¥Ç¥£¥ì¥¯¥È¥ê¹½À® ÇÛÉÛ¥­¥Ã¥È¤Î¥Ç¥£¥ì¥¯¥È¥ê¹½À®¤È¡¢¼çÍפʥե¡¥¤¥ë¤ò¼¨¤·¤Þ¤¹¡£ README ±Ñ¸ìÈǤΠREADME README.ja ¤³¤Î¥Õ¥¡¥¤¥ë + INSTALL ±Ñ¸ìÈǤΠINSTALL + INSTALL.ja ¥³¥ó¥Ñ¥¤¥ë¤È¥¤¥ó¥¹¥È¡¼¥ëÊýË¡ DISTFILES ÇÛÉÛ¤µ¤ì¤ë¥Õ¥¡¥¤¥ë°ìÍ÷ NEWS ¼ç¤ÊÊѹ¹ ChangeLog Êѹ¹¾ÜºÙ @@ -168,173 +183,9 @@ mDNkit wsock/ mDN ¥é¥Ã¥Ñ¡¼¥½¡¼¥¹ -* ¥³¥ó¥Ñ¥¤¥ë¤ª¤è¤Ó¥¤¥ó¥¹¥È¡¼¥ë - -0. Á°½àÈ÷ - -¤â¤·¤¢¤Ê¤¿¤Î»ÈÍѤ·¤Æ¤¤¤ë¥·¥¹¥Æ¥à¤Î¥é¥¤¥Ö¥é¥ê¤Ë iconv() ¤¬¤Ê¤¤¾ì¹ç¡¢¤¢ -¤ë¤¤¤Ï¤¢¤Ã¤Æ¤â UTF-8 ¤ò°·¤¦¤³¤È¤¬¤Ç¤­¤Ê¤¤¾ì¹ç¤Ë¤Ï¤¢¤é¤«¤¸¤á iconv() ¤ò -¥¤¥ó¥¹¥È¡¼¥ë¤·¤Æ¤ª¤¤¤Æ¤¯¤À¤µ¤¤¡£iconv() ¤Î¼ÂÁõ¤Ï¡¢Î㤨¤Ð LGPL ¤Î¤â¤Î¤¬ - - http://clisp.cons.org/~haible/packages-libiconv.html - -¤«¤éÆþ¼ê²Äǽ¤Ç¤¹¡£ - -*Ãí°Õ* - ¾åµ­¼ÂÁõ¤ÎºÇ¿·ÈÇ (libiconv-1.6.1) ¤Ï NetBSD 1.5 ¤È¤ÎÁȹç¤ï¤»¤ÇÌäÂ꤬ - ¤¢¤ê¡¢¥³¥ó¥Ñ¥¤¥ë»þ¤Ë¥¨¥é¡¼¤¬È¯À¸¤·¤Þ¤¹¡£¤³¤Î¥Ð¥°¤ò½¤Àµ¤¹¤ë¤¿¤á¤Î¥Ñ¥Ã - ¥Á¤¬ patch/libiconv ¥Ç¥£¥ì¥¯¥È¥ê¤Î²¼¤ËÍѰդµ¤ì¤Æ¤¤¤Þ¤¹¤Î¤Ç¡¢¤³¤ÎÌäÂê - ¤ËÁø¶ø¤·¤¿¾ì¹ç¤Ë¤Ï¥Ñ¥Ã¥Á¤òÅö¤Æ¤Æ¤«¤éºÆ¥¤¥ó¥¹¥È¡¼¥ë¤·¤Æ¤¯¤À¤µ¤¤¡£¤Ê¤ª¡¢ - ¥Ñ¥Ã¥Á¤ÎÅö¤ÆÊý¤Ï¥Ñ¥Ã¥Á¥Õ¥¡¥¤¥ë¤ÎÀèÆ¬¤Ë½ñ¤«¤ì¤Æ¤¤¤Þ¤¹¡£ - -1. configure ¥¹¥¯¥ê¥×¥È¤Î¼Â¹Ô - -¥È¥Ã¥×¥Ç¥£¥ì¥¯¥È¥ê¤Ë¤¢¤ë configure ¥¹¥¯¥ê¥×¥È¤ò¼Â¹Ô¤·¤Æ¤¯¤À¤µ¤¤¡£ - - % ./configure - -configure ¥¹¥¯¥ê¥×¥È¤Ë¤Ï¤¤¤¯¤Ä¤«¤Î¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ -mdn ¤ËľÀÜ´Ø·¸¤¹¤ë¤â¤Î¤Ï¼¡¤ÎÄ̤ê¤Ç¤¹¡£ - - --with-iconv=LIB - libc ¤Ë iconv ¤¬Æþ¤Ã¤Æ¤¤¤Ê¤¤¾ì¹ç (¾åµ­¤Î¥Ñ¥Ã¥±¡¼¥¸¤òÆþ¤ì¤¿ - ¾ì¹ç¤Ê¤É) ¤Ë¡¢iconv ¤Î¥é¥¤¥Ö¥é¥ê¤ò»ØÄꤷ¤Þ¤¹¡£Î㤨¤Ð - - --with-iconv="-L/usr/local/lib -liconv" - - ¤Î¤è¤¦¤Ë»ØÄꤷ¤Þ¤¹¡£¤â¤· iconv ¤¬¶¦Í­¥é¥¤¥Ö¥é¥ê¤Ë¤Ê¤Ã¤Æ¤¤¤ë - ¾ì¹ç¤Ë¤Ï¡¢-R ¥ª¥×¥·¥ç¥ó¤â»ØÄꤷ¤Æ - - --with-iconv="-L/usr/local/lib -R/usr/local/lib -liconv" - - ¤È¤¹¤ëɬÍפ¬¤¢¤ë¤«¤â¤·¤ì¤Þ¤»¤ó¡£ - - --with-iconv-sofile=PATH - mDNkit ¤Ë´Þ¤Þ¤ì¤Æ¤¤¤ë runmdn ¥³¥Þ¥ó¥É¤Ï¡¢iconv() ¤¬ libc ¤Î°ì - Éô¤È¤·¤ÆÄ󶡤µ¤ì¤Ê¤¤¤È¤­¤Ë¡¢iconv() ¤ò´Þ¤à¶¦Í­¥é¥¤¥Ö¥é¥ê¤Ø¤Î¥Ñ - ¥¹Ì¾¤òÃΤëɬÍפ¬¤¢¤ê¤Þ¤¹¡£mDNkit ¤Ï¡¢--with-iconv ¥ª¥×¥·¥ç¥ó¤Î - µ­½Ò¤ò´ð¤Ë¥Ñ¥¹Ì¾¤ò¸¡º÷¤·¤Þ¤¹¤¬¡¢¤³¤ì¤Ë¼ºÇÔ¤·¤¿¤È¤­¤Ë¡¢°Ê²¼¤Î¤è - ¤¦¤Ë¶¦Í­¥é¥¤¥Ö¥é¥ê¤ò»ØÄꤹ¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ - - --with-iconv-sofile=/usr/local/lib/libiconvv.so.2.0 - - --with-utf8=NAME - iconv ¤Ë utf-8 ¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¤ò»ØÄꤹ¤ë¾ì¹ç¡¢Ëܥ饤¥Ö¥é¥ê¤Ï - ¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï "UTF-8" ¤È¤¤¤¦Ì¾Á°¤ò»ØÄꤷ¤Þ¤¹¡£¤â¤·¤¢¤Ê¤¿¤Î - ¥·¥¹¥Æ¥à¤Î iconv ¤¬ "UTF-8" ¤È¤¤¤¦Ì¾Á°¤ò¼õ¤±ÉÕ¤±¤Ê¤¤¾ì¹ç¤Ë¤Ï¡¢ - Âå¤ê¤Î̾Á°¤ò»ØÄꤷ¤Þ¤¹¡£Î㤨¤Ð "UTF-8" ¤Ç¤Ï¤Ê¤¯ "utf8" ¤Î - ¾ì¹ç¤Ë¤Ï¼¡¤Î¤è¤¦¤Ë»ØÄꤷ¤Þ¤¹¡£ - - --with-utf8=utf8 - - --with-preference=PREFERENCE - mDNkit ¤Î¥µ¥ó¥×¥ë¥³¥ó¥Õ¥£¥®¥å¥ì¡¼¥·¥ç¥ó¥Õ¥¡¥¤¥ë (mdn.conf.sample) - ¤ÎÀßÄê¤ò PREFERENCE ¸þ¤±¤Î¤â¤Î¤Ë¤·¤Þ¤¹¡£¤Þ¤¿¤³¤Î¥ª¥×¥·¥ç¥ó¤ò»ØÄê - ¤¹¤ë¤È¥Ç¥Õ¥©¥ë¥È¤Î¥³¥ó¥Õ¥£¥®¥å¥ì¡¼¥·¥ç¥ó¥Õ¥¡¥¤¥ë (mdn.conf) ¤¬ - ¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤Þ¤¹¡£¤¿¤À¤·¥Õ¥¡¥¤¥ë¤¬¤¹¤Ç¤Ë¸ºß¤·¤Æ¤¤¤ë¾ì¹ç¤Ë¤Ï - ¥¤¥ó¥¹¥È¡¼¥ë¤·¤Þ¤»¤ó¡£ - ¸½ºß¤Î¤È¤³¤í¡¢»ØÄê¤Ç¤­¤ë PREFERENCE ¤Ï "jp" ¤Î¤ß¤Ç¤¹¡£ - - --with-race-prefix=PREFIX - --with-brace-suffix=SUFFIX - --with-lace-prefix=PREFIX - --with-dude-prefix=PREFIX - RACE (Row-based ASCII-Compatible Encoding)¡¢BRACE (Bi-mode - Row-based ASCII-Compatible Encoding)¡¢ LACE (Length-based - ASCII Compatible Encoding) ¤ª¤è¤Ó DUDE (Differential Unicode - Domain Encoding) ¤Ï¤¤¤º¤ì¤â DNS ¥×¥í¥È¥³¥ë¾å¤Ç»ÈÍѤµ¤ì¤ë¿¸À¸ì - ¥É¥á¥¤¥ó̾¤Ë´Ø¤·¤ÆÄ󰯤µ¤ì¤Æ¤¤¤ë¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°Êý¼°¤Ç¤¹¡£Ä̾ï - ¤Î ASCII ¥É¥á¥¤¥ó̾¤È¤³¤ì¤é¤Ë¤è¤Ã¤Æ¥¨¥ó¥³¡¼¥É¤µ¤ì¤¿¥É¥á¥¤¥ó̾ - ¤ò¶èÊ̤¹¤ë¤¿¤á¤Ë¡¢¸ÇÄê¤ÎÀÜÆ¬¼­ (BRACE ¤Î¾ì¹ç¤Ë¤ÏÀÜÈø¼­) ¤¬ÍѤ¤ - ¤é¤ì¤Þ¤¹¡£ - mDNkit ¤Ç¤Ï¸½ºß¤Î¥¤¥ó¥¿¡¼¥Í¥Ã¥È¥É¥é¥Õ¥È¤ÇÄêµÁ¤µ¤ì¤Æ¤¤¤ëÀÜÆ¬¼­ - ¤¢¤ë¤¤¤ÏÀÜÈø¼­¤ò»ÈÍѤ¹¤ë¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¤¬¡¢º£¸å¤Î¥É¥é¥Õ¥È¤Ç - ÊѤï¤ë¤«¤â¤·¤ì¤Þ¤»¤ó¡£¤½¤³¤Ç¡¢¤³¤ì¤é¤Î¥ª¥×¥·¥ç¥ó¤òÍѤ¤¤Æ»ØÄê¤Ç - ¤­¤ë¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£ - - --with-altdude-prefix=PREFIX - --with-altdude-suffix=SUFFIX - --with-amc-ace-m-prefix=PREFIX - --with-amc-ace-m-suffix=SUFFIX - --with-amc-ace-o-prefix=PREFIX - --with-amc-ace-o-suffix=SUFFIX - --with-amc-ace-r-prefix=PREFIX - AltDUDE¡¢AMC-ACE-M¡¢AMC-ACE-O ¤ª¤è¤Ó AMC-ACE-R ¤â RACE ¤Ê¤É¤È - ƱÍͤË¿¸À¸ì¥É¥á¥¤¥ó¤Î¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¤È¤·¤ÆÄ󰯤µ¤ì¤Æ¤¤¤ë¤â¤Î - ¤Ç¤¹¡£¤¿¤À¤·¤³¤ì¤é¤Î¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¤Ï RACE ¤Ê¤É¾å¤Ë¤¢¤²¤¿¤â¤Î - ¤È°Û¤Ê¤ê¡¢¥¤¥ó¥¿¡¼¥Í¥Ã¥È¥É¥é¥Õ¥È¤Ç¤ÏÆÃÄê¤ÎÀÜÆ¬¼­¡¢ÀÜÈø¼­¤¬ÄêµÁ - ¤µ¤ì¤Æ¤¤¤Þ¤»¤ó¡£mDNkit ¤Ç¤Ï¥Ç¥Õ¥©¥ë¥È¤ÎÀÜÆ¬¼­/ÀÜÈø¼­¤òÀßÄꤷ¤Æ - ¤¢¤ê¤Þ¤¹¤¬¡¢¤³¤³¤Ë¤¢¤²¤¿¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ¹¤ì¤ÐÊ̤Τâ¤Î¤ËÊѹ¹¤¹ - ¤ë¤³¤È¤¬²Äǽ¤Ç¤¹¡£ - AltDUDE¡¢AMC-ACE-M ¤ª¤è¤Ó AMC-ACE-O ¤Ë¤Ä¤¤¤Æ¤Ï¡¢ÀÜÆ¬¼­¡¢ÀÜÈø¼­ - ¤Î¤É¤Á¤é¤ò»ØÄꤹ¤ë¤³¤È¤â²Äǽ¤Ç¤¹¡£¤â¤·ÀÜÆ¬¼­¤ÈÀÜÈø¼­¤ÎξÊý¤¬»Ø - Äꤵ¤ì¤¿¾ì¹ç¤Ë¤Ï¡¢ÀÜÆ¬¼­¤Î»ØÄ꤬ͥÀ褵¤ì¤Þ¤¹¡£ +4. ¥Ñ¥Ã¥Á¤ÎÅö¤ÆÊý - --sbindir=DIR - DNS ¥×¥í¥­¥·¥µ¡¼¥Ð¤ò¥¤¥ó¥¹¥È¡¼¥ë¤¹¤ë¥Ç¥£¥ì¥¯¥È¥ê¤ò»ØÄꤷ¤Þ¤¹¡£ - ¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï /usr/local/sbin ¤Ç¤¹¡£ - - --bindir=DIR - ¥³¡¼¥É¥»¥Ã¥È¥³¥ó¥Ð¡¼¥¿ mdnconv ¤ò¥¤¥ó¥¹¥È¡¼¥ë¤¹¤ë¥Ç¥£¥ì¥¯¥È¥ê¤ò - »ØÄꤷ¤Þ¤¹¡£¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï /usr/local/bin ¤Ç¤¹¡£ - - --sysconfdir=DIR - DNS ¥×¥í¥­¥·¥µ¡¼¥Ð¤ÎÀßÄê¥Õ¥¡¥¤¥ë¤ò¥¤¥ó¥¹¥È¡¼¥ë¤¹¤ë¥Ç¥£¥ì¥¯¥È¥ê¤ò - »ØÄꤷ¤Þ¤¹¡£¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï /usr/local/etc ¤Ç¤¹¡£ - - --mandir=DIR - ¥ª¥ó¥é¥¤¥ó¥Þ¥Ë¥å¥¢¥ë¤Î¥¤¥ó¥¹¥È¡¼¥ë¥Ç¥£¥ì¥¯¥È¥ê¤ò»ØÄꤷ¤Þ¤¹¡£ - ¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï /usr/local/man ¤Ç¤¹¡£ - ---with-iconv ¥ª¥×¥·¥ç¥ó¤Ç¤Ï¥é¥¤¥Ö¥é¥ê¤À¤±¤ò»ØÄꤷ¤Þ¤¹¡£¤â¤·¥¤¥ó¥¯¥ë¡¼ -¥É¥Õ¥¡¥¤¥ë iconv.h ¤¬¥Ç¥Õ¥©¥ë¥È¤Î¥¤¥ó¥¯¥ë¡¼¥É¥Õ¥¡¥¤¥ë¤Î¥Ñ¥¹¤Ë¥¤¥ó¥¹¥È¡¼ -¥ë¤µ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¡¢¤¢¤ë¤¤¤Ï¾¤Ë C ¥³¥ó¥Ñ¥¤¥é¤Ø¤Î¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤¿ -¤¤¾ì¹ç¤Ë¤Ï´Ä¶­ÊÑ¿ô CFLAGS ¤ò»ÈÍѤ·¤Æ¤¯¤À¤µ¤¤¡£Î㤨¤Ð - - % CFLAGS=-I/usr/local/include ./configure ... - (sh ·Ï¤Î¥·¥§¥ë¤Î¾ì¹ç) - % setenv CFLAGS -I/usr/local/include; ./configure ... - (csh ·Ï¤Î¥·¥§¥ë¤Î¾ì¹ç) - -¤È¤·¤Þ¤¹¡£ - -configure ¤Ë¤Ï¾¤Ë¤â¿¤¯¤Î¥ª¥×¥·¥ç¥ó¤¬¤¢¤ê¤Þ¤¹¤¬¡¢»Ä¤ê¤Ï°ìÈÌŪ¤Ê¥ª¥×¥·¥ç -¥ó¤Ê¤Î¤ÇÀâÌÀ¤Ï¾Ê¤­¤Þ¤¹¡£ - - % ./configure --help - -¤ò¼Â¹Ô¤¹¤ë¤È¥ª¥×¥·¥ç¥ó¤Î°ìÍ÷¤¬É½¼¨¤µ¤ì¤Þ¤¹¡£ - -2. ¥³¥ó¥Ñ¥¤¥ë - -configure ¤ò¼Â¹Ô¤¹¤ë¤È Makefile ¤Ê¤É¤¬À¸À®¤µ¤ì¤Þ¤¹¤Î¤Ç¡¢Â³¤±¤Æ make¤ò -¼Â¹Ô¤·¤Æ¥³¥ó¥Ñ¥¤¥ë¤·¤Þ¤¹¡£ - - % make - -3. ¥¤¥ó¥¹¥È¡¼¥ë - -¥¹¡¼¥Ñ¥æ¡¼¥¶¤Ë¤Ê¤Ã¤Æ¥¤¥ó¥¹¥È¡¼¥ë¤·¤Þ¤¹¡£ - - % su - # make install - -4. Configuration and usage - -¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤ë¥Ä¡¼¥ë (mdnsproxy¡¢mdnconv¡¢runmdn) ¤Î»È¤¤Êý¡¢ÀßÄêÊý -Ë¡¤Ë´Ø¤·¤Æ¤Ï¥ª¥ó¥é¥¤¥ó¥Þ¥Ë¥å¥¢¥ë¤ò¤´Í÷¤¯¤À¤µ¤¤¡£mdnconv ¤È runmdn ¤Ë¤Ä -¤¤¤Æ¤Ï¡¢mDNkit ¤Î¥ê¥¾¥ë¥ÐÀßÄê¥Õ¥¡¥¤¥ë mdn.conf ¤Î¥Þ¥Ë¥å¥¢¥ë¤â»²¾È¤·¤Æ -¤¯¤À¤µ¤¤¡£ - - % man mdnsproxy - % man mdnconv - % man runmdn - % man mdn.conf - - -* ¥Ñ¥Ã¥Á¤ÎÅö¤ÆÊý - -¤³¤ÎÇÛÉÛ¥­¥Ã¥È¤Ë¤Ï¡¢bind-9.1.1¡¢bind-8.2.3 ¤ª¤è¤Ó squid-2.4-STABLE1 ¤Ë +¤³¤ÎÇÛÉÛ¥­¥Ã¥È¤Ë¤Ï¡¢bind-9.1.3¡¢bind-8.2.3 ¤ª¤è¤Ó squid-2.4-STABLE1 ¤Ë ÂФ¹¤ë¥Ñ¥Ã¥Á¤¬´Þ¤Þ¤ì¤Æ¤¤¤Þ¤¹¡£¥Ñ¥Ã¥Á¤ÎÅö¤ÆÊý¤Ï¡¢¥Ñ¥Ã¥Á¥Õ¥¡¥¤¥ë¤ÎÀèÆ¬¤Ë ½ñ¤«¤ì¤Æ¤¤¤Þ¤¹¤Î¤Ç¤½¤Á¤é¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ @@ -344,13 +195,60 @@ Solaris ¤Æ¤¯¤À¤µ¤¤¡£ -* ËÜ¥­¥Ã¥È¤Ë´Ø¤¹¤ëºÇ¿·¾ðÊó¡¢Ì䤤¹ç¤ï¤»¤Ë¤Ä¤¤¤Æ +5. ËÜ¥­¥Ã¥È¤¬Âбþ¤·¤Æ¤¤¤ë¥·¥¹¥Æ¥à + +Àµ¾ï¤Ë¥¤¥ó¥¹¥È¡¼¥ë¤Ç¤­¤ë¤³¤È¤¬³Îǧ¤Ç¤­¤Æ¤¤¤ë¤Î¤Ï¡¢¼¡¤Î¥·¥¹¥Æ¥à¤Ç¤¹¡£ + + ------------------------------------------------------------------ + OS iconv configure ¤Î¥ª¥×¥·¥ç¥ó + ================================================================== + FreeBSD 4.4-RELEASE GNU libiconv --with-libiconv + Intel 1.6.1 + ------------------------------------------------------------------- + FreeBSD 3.5.1-RELEASE GNU libiconv --with-libiconv + Intel 1.7 + ------------------------------------------------------------------- + NetBSD 1.5.2 GNU libiconv --with-libiconv + Intel 1.7 + ------------------------------------------------------------------ + Red Hat Linux 7.1 ɸ½à¥é¥¤¥Ö¥é¥ê ¤Ê¤· + Intel (glibc) + ------------------------------------------------------------------ + Red Hat Linux 7.0 ɸ½à¥é¥¤¥Ö¥é¥ê ¤Ê¤· + Intel (glibc) + ------------------------------------------------------------------- + Debian/GNU Linux 2.2r3 ɸ½à¥é¥¤¥Ö¥é¥ê ¤Ê¤· + Intel (glibc) + ------------------------------------------------------------------ + Solaris 2.6 ɸ½à¥é¥¤¥Ö¥é¥ê ¤Ê¤· + Sparc (libc) + ------------------------------------------------------------------ + Windows 2000 GNU libiconv --with-libiconv + (cygwin-1.3.2) *1 1.7 + ------------------------------------------------------------------- + + *1: ưºî¤¹¤ë¤Î¤Ï mdnconv ¤À¤±¤Ç¤¹¡£ + +ËÜ¥­¥Ã¥È¤¬Âбþ¤·¤Æ¤¤¤ë/¤·¤Æ¤¤¤Ê¤¤¥·¥¹¥Æ¥à¤Ë´Ø¤¹¤ëºÇ¿·¤Î¾ðÊó¤Ï¡¢¼¡¤Î¤È +¤³¤í¤«¤éé¤ì¤ë mDNkit FAQ ¤Î¥Ú¡¼¥¸¤Ëµ­¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ + + http://www.nic.ad.jp/jp/research/idn/ + + +6. ËÜ¥­¥Ã¥È¤Ë´Ø¤¹¤ëºÇ¿·¾ðÊó¡¢Ì䤤¹ç¤ï¤»¤Ë¤Ä¤¤¤Æ ËÜ¥­¥Ã¥È¤Ë´Ø¤¹¤ëºÇ¿·¾ðÊó¤Ë¤Ä¤¤¤Æ¤Ï¡¢ -http://www.nic.ad.jp/jp/research/idn/ ¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤ + http://www.nic.ad.jp/jp/research/idn/ + +¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤ ËÜ¥­¥Ã¥È¤Ë´Ø¤¹¤ë¥Ð¥°¥ì¥Ý¡¼¥È¤ª¤è¤Ó¥³¥á¥ó¥È¤Ï¡¢¤½¤ì¤¾¤ì -mdnkit-bugs@nic.ad.jp ¤ª¤è¤Ó idn-cmt@nic.ad.jp ¤Ø¤ª´ê¤¤¤·¤Þ¤¹¡£ + + mdnkit-bugs@nic.ad.jp +¤ª¤è¤Ó + idn-cmt@nic.ad.jp + +¤Ø¤ª´ê¤¤¤·¤Þ¤¹¡£ -; $Id: README.ja,v 1.29 2001/06/01 01:13:46 ishisone Exp $ +; $Id: README.ja,v 1.1 2002/01/02 02:46:21 marka Exp $ diff --git a/contrib/idn/mdnkit/acconfig.h b/contrib/idn/mdnkit/acconfig.h index 6915f20aa01..d0b1671fef8 100644 --- a/contrib/idn/mdnkit/acconfig.h +++ b/contrib/idn/mdnkit/acconfig.h @@ -1,4 +1,4 @@ -/* $Id: acconfig.h,v 1.8 2001/04/18 02:07:32 ishisone Exp $ */ +/* $Id: acconfig.h,v 1.1 2002/01/02 02:46:21 marka Exp $ */ /* * Copyright (c) 2000 Japan Network Information Center. All rights reserved. * @@ -8,8 +8,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted @@ -61,12 +61,6 @@ /* Define as an appropriate type (ex. int) if your system doesn't have. */ #undef BOOL -/* Define if the prototype of gethost*_r is glibc flavor. */ -#undef GETHOST_R_GLIBC_FLAVOR - -/* Define as the type of the 2nd argument of gethostbyaddr. */ -#undef GHBA_ADDRLEN_T - @BOTTOM@ /* Define as the pathname of the shared libc object if your system has one. */ #undef SOPATH_LIBC diff --git a/contrib/idn/mdnkit/aclocal.m4 b/contrib/idn/mdnkit/aclocal.m4 index 1ddc51a9735..7e35578c1fe 100644 --- a/contrib/idn/mdnkit/aclocal.m4 +++ b/contrib/idn/mdnkit/aclocal.m4 @@ -1,5 +1,5 @@ ## -## $Id: aclocal.m4,v 1.5 2001/04/19 07:20:51 ishisone Exp $ +## $Id: aclocal.m4,v 1.1 2002/01/02 02:46:21 marka Exp $ ## dnl dnl AC_ACE_PREFIX(ace-name, default) diff --git a/contrib/idn/mdnkit/config.guess b/contrib/idn/mdnkit/config.guess index 0ce538bb85c..dff9e481b70 100644 --- a/contrib/idn/mdnkit/config.guess +++ b/contrib/idn/mdnkit/config.guess @@ -1,8 +1,10 @@ #! /bin/sh # Attempt to guess a canonical system name. -# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000 +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 # Free Software Foundation, Inc. -# + +timestamp='2001-09-04' + # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or @@ -30,40 +32,97 @@ # exits with 0. Otherwise, it exits with 1. # # The plan is that this can be called by configure scripts if you -# don't specify an explicit system type (host/target name). -# -# Only a few systems have been added to this list; please add others -# (but try to keep the structure clean). -# +# don't specify an explicit build system type. -# Use $HOST_CC if defined. $CC may point to a cross-compiler -if test x"$CC_FOR_BUILD" = x; then - if test x"$HOST_CC" != x; then - CC_FOR_BUILD="$HOST_CC" - else - if test x"$CC" != x; then - CC_FOR_BUILD="$CC" - else - CC_FOR_BUILD=cc - fi - fi +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] + +Output the configuration name of the system \`$me' is run on. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.guess ($timestamp) + +Originally written by Per Bothner. +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit 0 ;; + --version | -v ) + echo "$version" ; exit 0 ;; + --help | --h* | -h ) + echo "$usage"; exit 0 ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" >&2 + exit 1 ;; + * ) + break ;; + esac +done + +if test $# != 0; then + echo "$me: too many arguments$help" >&2 + exit 1 fi +dummy=dummy-$$ +trap 'rm -f $dummy.c $dummy.o $dummy.rel $dummy; exit 1' 1 2 15 + +# CC_FOR_BUILD -- compiler used by this script. +# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still +# use `HOST_CC' if defined, but it is deprecated. + +set_cc_for_build='case $CC_FOR_BUILD,$HOST_CC,$CC in + ,,) echo "int dummy(){}" > $dummy.c ; + for c in cc gcc c89 ; do + ($c $dummy.c -c -o $dummy.o) >/dev/null 2>&1 ; + if test $? = 0 ; then + CC_FOR_BUILD="$c"; break ; + fi ; + done ; + rm -f $dummy.c $dummy.o $dummy.rel ; + if test x"$CC_FOR_BUILD" = x ; then + CC_FOR_BUILD=no_compiler_found ; + fi + ;; + ,,*) CC_FOR_BUILD=$CC ;; + ,*,*) CC_FOR_BUILD=$HOST_CC ;; +esac' + # This is needed to find uname on a Pyramid OSx when run in the BSD universe. -# (ghazi@noc.rutgers.edu 8/24/94.) +# (ghazi@noc.rutgers.edu 1994-08-24) if (test -f /.attbin/uname) >/dev/null 2>&1 ; then PATH=$PATH:/.attbin ; export PATH fi UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown -UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown +UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown -dummy=dummy-$$ -trap 'rm -f $dummy.c $dummy.o $dummy; exit 1' 1 2 15 - # Note: order is significant - the case branches are not exclusive. case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in @@ -77,7 +136,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in # object file format. # Determine the machine/vendor (is the vendor relevant). case "${UNAME_MACHINE}" in - amiga) machine=m68k-cbm ;; + amiga) machine=m68k-unknown ;; arm32) machine=arm-unknown ;; atari*) machine=m68k-atari ;; sun3*) machine=m68k-sun ;; @@ -87,16 +146,25 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in ibmrt|romp-ibm) machine=romp-ibm ;; *) machine=${UNAME_MACHINE}-unknown ;; esac - # The Operating System including object format. - if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ - | grep __ELF__ >/dev/null - then - # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). - # Return netbsd for either. FIX? - os=netbsd - else - os=netbsdelf - fi + # The Operating System including object format, if it has switched + # to ELF recently, or will in the future. + case "${UNAME_MACHINE}" in + i386|sparc|amiga|arm*|hp300|mvme68k|vax|atari|luna68k|mac68k|news68k|next68k|pc532|sun3*|x68k) + eval $set_cc_for_build + if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep __ELF__ >/dev/null + then + # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). + # Return netbsd for either. FIX? + os=netbsd + else + os=netbsdelf + fi + ;; + *) + os=netbsd + ;; + esac # The OS release release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: @@ -137,6 +205,7 @@ main: jsr \$26,exit .end main EOF + eval $set_cc_for_build $CC_FOR_BUILD $dummy.s -o $dummy 2>/dev/null if test "$?" = 0 ; then case `./$dummy` in @@ -158,6 +227,9 @@ EOF 2-307) UNAME_MACHINE="alphaev67" ;; + 2-1307) + UNAME_MACHINE="alphaev68" + ;; esac fi rm -f $dummy.s $dummy @@ -173,7 +245,7 @@ EOF echo alpha-dec-winnt3.5 exit 0 ;; Amiga*:UNIX_System_V:4.0:*) - echo m68k-cbm-sysv4 + echo m68k-unknown-sysv4 exit 0;; amiga:OpenBSD:*:*) echo m68k-unknown-openbsd${UNAME_RELEASE} @@ -205,7 +277,7 @@ EOF arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) echo arm-acorn-riscix${UNAME_RELEASE} exit 0;; - SR2?01:HI-UX/MPP:*:*) + SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) echo hppa1.1-hitachi-hiuxmpp exit 0;; Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) @@ -261,6 +333,9 @@ EOF aushp:SunOS:*:*) echo sparc-auspex-sunos${UNAME_RELEASE} exit 0 ;; + sparc*:NetBSD:*) + echo `uname -p`-unknown-netbsd${UNAME_RELEASE} + exit 0 ;; atari*:OpenBSD:*:*) echo m68k-unknown-openbsd${UNAME_RELEASE} exit 0 ;; @@ -318,6 +393,7 @@ EOF echo clipper-intergraph-clix${UNAME_RELEASE} exit 0 ;; mips:*:*:UMIPS | mips:*:*:RISCos) + eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #ifdef __cplusplus #include /* for printf() prototype */ @@ -341,10 +417,13 @@ EOF EOF $CC_FOR_BUILD $dummy.c -o $dummy \ && ./$dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \ - && rm $dummy.c $dummy && exit 0 + && rm -f $dummy.c $dummy && exit 0 rm -f $dummy.c $dummy echo mips-mips-riscos${UNAME_RELEASE} exit 0 ;; + Motorola:PowerMAX_OS:*:*) + echo powerpc-motorola-powermax + exit 0 ;; Night_Hawk:Power_UNIX:*:*) echo powerpc-harris-powerunix exit 0 ;; @@ -392,11 +471,20 @@ EOF ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id exit 0 ;; # Note that: echo "'`uname -s`'" gives 'AIX ' - i?86:AIX:*:*) + i*86:AIX:*:*) echo i386-ibm-aix exit 0 ;; + ia64:AIX:*:*) + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} + exit 0 ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then + eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include @@ -408,7 +496,7 @@ EOF exit(0); } EOF - $CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm $dummy.c $dummy && exit 0 + $CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm -f $dummy.c $dummy && exit 0 rm -f $dummy.c $dummy echo rs6000-ibm-aix3.2.5 elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then @@ -417,9 +505,9 @@ EOF echo rs6000-ibm-aix3.2 fi exit 0 ;; - *:AIX:*:4) + *:AIX:*:[45]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | head -1 | awk '{ print $1 }'` - if /usr/sbin/lsattr -EHl ${IBM_CPU_ID} | grep POWER >/dev/null 2>&1; then + if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000 else IBM_ARCH=powerpc @@ -427,7 +515,7 @@ EOF if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else - IBM_REV=4.${UNAME_RELEASE} + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${IBM_ARCH}-ibm-aix${IBM_REV} exit 0 ;; @@ -453,10 +541,29 @@ EOF echo m68k-hp-bsd4.4 exit 0 ;; 9000/[34678]??:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` case "${UNAME_MACHINE}" in 9000/31? ) HP_ARCH=m68000 ;; 9000/[34]?? ) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) + case "${HPUX_REV}" in + 11.[0-9][0-9]) + if [ -x /usr/bin/getconf ]; then + sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` + sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` + case "${sc_cpu_version}" in + 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 + 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 + 532) # CPU_PA_RISC2_0 + case "${sc_kernel_bits}" in + 32) HP_ARCH="hppa2.0n" ;; + 64) HP_ARCH="hppa2.0w" ;; + esac ;; + esac + fi ;; + esac + if [ "${HP_ARCH}" = "" ]; then + eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #define _HPUX_SOURCE @@ -490,13 +597,19 @@ EOF exit (0); } EOF - (CCOPTS= $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null ) && HP_ARCH=`./$dummy` - rm -f $dummy.c $dummy + (CCOPTS= $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null ) && HP_ARCH=`./$dummy` + if test -z "$HP_ARCH"; then HP_ARCH=hppa; fi + rm -f $dummy.c $dummy + fi ;; esac - HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` echo ${HP_ARCH}-hp-hpux${HPUX_REV} exit 0 ;; + ia64:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + echo ia64-hp-hpux${HPUX_REV} + exit 0 ;; 3050*:HI-UX:*:*) + eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include int @@ -522,7 +635,7 @@ EOF exit (0); } EOF - $CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm $dummy.c $dummy && exit 0 + $CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm -f $dummy.c $dummy && exit 0 rm -f $dummy.c $dummy echo unknown-hitachi-hiuxwe2 exit 0 ;; @@ -532,7 +645,7 @@ EOF 9000/8??:4.3bsd:*:*) echo hppa1.0-hp-bsd exit 0 ;; - *9??*:MPE/iX:*:*) + *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) echo hppa1.0-hp-mpeix exit 0 ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) @@ -541,7 +654,7 @@ EOF hp8??:OSF1:*:*) echo hppa1.0-hp-osf exit 0 ;; - i?86:OSF1:*:*) + i*86:OSF1:*:*) if [ -x /usr/sbin/sysversion ] ; then echo ${UNAME_MACHINE}-unknown-osf1mk else @@ -576,37 +689,39 @@ EOF echo xmp-cray-unicos exit 0 ;; CRAY*Y-MP:*:*:*) - echo ymp-cray-unicos${UNAME_RELEASE} + echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit 0 ;; CRAY*[A-Z]90:*:*:*) echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ - -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ + -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ + -e 's/\.[^.]*$/.X/' exit 0 ;; CRAY*TS:*:*:*) echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit 0 ;; - CRAY*T3E:*:*:*) + CRAY*T3D:*:*:*) echo alpha-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit 0 ;; + CRAY*T3E:*:*:*) + echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; CRAY*SV1:*:*:*) echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit 0 ;; CRAY-2:*:*:*) echo cray2-cray-unicos exit 0 ;; - F300:UNIX_System_V:*:*) + F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) + FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` - echo "f300-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit 0 ;; - F301:UNIX_System_V:*:*) - echo f301-fujitsu-uxpv`echo $UNAME_RELEASE | sed 's/ .*//'` - exit 0 ;; hp300:OpenBSD:*:*) echo m68k-unknown-openbsd${UNAME_RELEASE} exit 0 ;; - i?86:BSD/386:*:* | i?86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) + i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} exit 0 ;; sparc*:BSD/OS:*:*) @@ -627,6 +742,9 @@ EOF i*:MINGW*:*) echo ${UNAME_MACHINE}-pc-mingw32 exit 0 ;; + i*:PW*:*) + echo ${UNAME_MACHINE}-pc-pw32 + exit 0 ;; i*:Windows_NT*:* | Pentium*:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we @@ -645,187 +763,96 @@ EOF *:GNU:*:*) echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` exit 0 ;; - *:Linux:*:*) - + i*86:Minix:*:*) + echo ${UNAME_MACHINE}-pc-minix + exit 0 ;; + arm*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + ia64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux + exit 0 ;; + m68*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + mips:Linux:*:*) + case `sed -n '/^byte/s/^.*: \(.*\) endian/\1/p' < /proc/cpuinfo` in + big) echo mips-unknown-linux-gnu && exit 0 ;; + little) echo mipsel-unknown-linux-gnu && exit 0 ;; + esac + ;; + ppc:Linux:*:*) + echo powerpc-unknown-linux-gnu + exit 0 ;; + ppc64:Linux:*:*) + echo powerpc64-unknown-linux-gnu + exit 0 ;; + alpha:Linux:*:*) + case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in + EV5) UNAME_MACHINE=alphaev5 ;; + EV56) UNAME_MACHINE=alphaev56 ;; + PCA56) UNAME_MACHINE=alphapca56 ;; + PCA57) UNAME_MACHINE=alphapca56 ;; + EV6) UNAME_MACHINE=alphaev6 ;; + EV67) UNAME_MACHINE=alphaev67 ;; + EV68*) UNAME_MACHINE=alphaev68 ;; + esac + objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null + if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi + echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} + exit 0 ;; + parisc:Linux:*:* | hppa:Linux:*:*) + # Look for CPU level + case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in + PA7*) echo hppa1.1-unknown-linux-gnu ;; + PA8*) echo hppa2.0-unknown-linux-gnu ;; + *) echo hppa-unknown-linux-gnu ;; + esac + exit 0 ;; + parisc64:Linux:*:* | hppa64:Linux:*:*) + echo hppa64-unknown-linux-gnu + exit 0 ;; + s390:Linux:*:* | s390x:Linux:*:*) + echo ${UNAME_MACHINE}-ibm-linux + exit 0 ;; + sh*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + sparc:Linux:*:* | sparc64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + x86_64:Linux:*:*) + echo x86_64-unknown-linux-gnu + exit 0 ;; + i*86:Linux:*:*) # The BFD linker knows what the default object file format is, so # first see if it will tell us. cd to the root directory to prevent # problems with other programs or directories called `ld' in the path. - ld_help_string=`cd /; ld --help 2>&1` - ld_supported_emulations=`echo $ld_help_string \ - | sed -ne '/supported emulations:/!d + ld_supported_targets=`cd /; ld --help 2>&1 \ + | sed -ne '/supported targets:/!d s/[ ][ ]*/ /g - s/.*supported emulations: *// + s/.*supported targets: *// s/ .*// p'` - case "$ld_supported_emulations" in - *ia64) - echo "${UNAME_MACHINE}-unknown-linux" - exit 0 + case "$ld_supported_targets" in + elf32-i386) + TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu" ;; - i?86linux) + a.out-i386-linux) echo "${UNAME_MACHINE}-pc-linux-gnuaout" - exit 0 - ;; - elf_i?86) - echo "${UNAME_MACHINE}-pc-linux" - exit 0 - ;; - i?86coff) + exit 0 ;; + coff-i386) echo "${UNAME_MACHINE}-pc-linux-gnucoff" - exit 0 - ;; - sparclinux) - echo "${UNAME_MACHINE}-unknown-linux-gnuaout" - exit 0 - ;; - armlinux) - echo "${UNAME_MACHINE}-unknown-linux-gnuaout" - exit 0 - ;; - elf32arm*) - echo "${UNAME_MACHINE}-unknown-linux-gnuoldld" - exit 0 - ;; - armelf_linux*) - echo "${UNAME_MACHINE}-unknown-linux-gnu" - exit 0 - ;; - m68klinux) - echo "${UNAME_MACHINE}-unknown-linux-gnuaout" - exit 0 - ;; - elf32ppc | elf32ppclinux) - # Determine Lib Version - cat >$dummy.c < -#if defined(__GLIBC__) -extern char __libc_version[]; -extern char __libc_release[]; -#endif -main(argc, argv) - int argc; - char *argv[]; -{ -#if defined(__GLIBC__) - printf("%s %s\n", __libc_version, __libc_release); -#else - printf("unkown\n"); -#endif - return 0; -} -EOF - LIBC="" - $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null - if test "$?" = 0 ; then - ./$dummy | grep 1\.99 > /dev/null - if test "$?" = 0 ; then - LIBC="libc1" - fi - fi - rm -f $dummy.c $dummy - echo powerpc-unknown-linux-gnu${LIBC} - exit 0 - ;; + exit 0 ;; + "") + # Either a pre-BFD a.out linker (linux-gnuoldld) or + # one that does not give us useful --help. + echo "${UNAME_MACHINE}-pc-linux-gnuoldld" + exit 0 ;; esac - - if test "${UNAME_MACHINE}" = "alpha" ; then - cat <$dummy.s - .data - \$Lformat: - .byte 37,100,45,37,120,10,0 # "%d-%x\n" - - .text - .globl main - .align 4 - .ent main - main: - .frame \$30,16,\$26,0 - ldgp \$29,0(\$27) - .prologue 1 - .long 0x47e03d80 # implver \$0 - lda \$2,-1 - .long 0x47e20c21 # amask \$2,\$1 - lda \$16,\$Lformat - mov \$0,\$17 - not \$1,\$18 - jsr \$26,printf - ldgp \$29,0(\$26) - mov 0,\$16 - jsr \$26,exit - .end main -EOF - LIBC="" - $CC_FOR_BUILD $dummy.s -o $dummy 2>/dev/null - if test "$?" = 0 ; then - case `./$dummy` in - 0-0) - UNAME_MACHINE="alpha" - ;; - 1-0) - UNAME_MACHINE="alphaev5" - ;; - 1-1) - UNAME_MACHINE="alphaev56" - ;; - 1-101) - UNAME_MACHINE="alphapca56" - ;; - 2-303) - UNAME_MACHINE="alphaev6" - ;; - 2-307) - UNAME_MACHINE="alphaev67" - ;; - esac - - objdump --private-headers $dummy | \ - grep ld.so.1 > /dev/null - if test "$?" = 0 ; then - LIBC="libc1" - fi - fi - rm -f $dummy.s $dummy - echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} ; exit 0 - elif test "${UNAME_MACHINE}" = "mips" ; then - cat >$dummy.c < /* for printf() prototype */ - int main (int argc, char *argv[]) { -#else - int main (argc, argv) int argc; char *argv[]; { -#endif -#ifdef __MIPSEB__ - printf ("%s-unknown-linux-gnu\n", argv[1]); -#endif -#ifdef __MIPSEL__ - printf ("%sel-unknown-linux-gnu\n", argv[1]); -#endif - return 0; -} -EOF - $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy "${UNAME_MACHINE}" && rm $dummy.c $dummy && exit 0 - rm -f $dummy.c $dummy - elif test "${UNAME_MACHINE}" = "s390"; then - echo s390-ibm-linux && exit 0 - else - # Either a pre-BFD a.out linker (linux-gnuoldld) - # or one that does not give us useful --help. - # GCC wants to distinguish between linux-gnuoldld and linux-gnuaout. - # If ld does not provide *any* "supported emulations:" - # that means it is gnuoldld. - echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations:" - test $? != 0 && echo "${UNAME_MACHINE}-pc-linux-gnuoldld" && exit 0 - - case "${UNAME_MACHINE}" in - i?86) - VENDOR=pc; - ;; - *) - VENDOR=unknown; - ;; - esac - # Determine whether the default compiler is a.out or elf - cat >$dummy.c <$dummy.c < #ifdef __cplusplus #include /* for printf() prototype */ @@ -836,28 +863,30 @@ EOF #ifdef __ELF__ # ifdef __GLIBC__ # if __GLIBC__ >= 2 - printf ("%s-${VENDOR}-linux-gnu\n", argv[1]); + printf ("%s-pc-linux-gnu\n", argv[1]); # else - printf ("%s-${VENDOR}-linux-gnulibc1\n", argv[1]); + printf ("%s-pc-linux-gnulibc1\n", argv[1]); # endif # else - printf ("%s-${VENDOR}-linux-gnulibc1\n", argv[1]); + printf ("%s-pc-linux-gnulibc1\n", argv[1]); # endif #else - printf ("%s-${VENDOR}-linux-gnuaout\n", argv[1]); + printf ("%s-pc-linux-gnuaout\n", argv[1]); #endif return 0; } EOF - $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy "${UNAME_MACHINE}" && rm $dummy.c $dummy && exit 0 - rm -f $dummy.c $dummy - fi ;; -# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. earlier versions -# are messed up and put the nodename in both sysname and nodename. - i?86:DYNIX/ptx:4*:*) + $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy "${UNAME_MACHINE}" && rm -f $dummy.c $dummy && exit 0 + rm -f $dummy.c $dummy + test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0 + ;; + i*86:DYNIX/ptx:4*:*) + # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. + # earlier versions are messed up and put the nodename in both + # sysname and nodename. echo i386-sequent-sysv4 exit 0 ;; - i?86:UNIX_SV:4.2MP:2.*) + i*86:UNIX_SV:4.2MP:2.*) # Unixware is an offshoot of SVR4, but it has its own version # number series starting with 2... # I am not positive that other SVR4 systems won't match this, @@ -865,7 +894,7 @@ EOF # Use sysv4.2uw... so that sysv4* matches it. echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} exit 0 ;; - i?86:*:4.*:* | i?86:SYSTEM_V:4.*:*) + i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} @@ -873,16 +902,15 @@ EOF echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} fi exit 0 ;; - i?86:*:5:7*) - # Fixed at (any) Pentium or better - UNAME_MACHINE=i586 - if [ ${UNAME_SYSTEM} = "UnixWare" ] ; then - echo ${UNAME_MACHINE}-sco-sysv${UNAME_RELEASE}uw${UNAME_VERSION} - else - echo ${UNAME_MACHINE}-pc-sysv${UNAME_RELEASE} - fi + i*86:*:5:[78]*) + case `/bin/uname -X | grep "^Machine"` in + *486*) UNAME_MACHINE=i486 ;; + *Pentium) UNAME_MACHINE=i586 ;; + *Pent*|*Celeron) UNAME_MACHINE=i686 ;; + esac + echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} exit 0 ;; - i?86:*:3.2:*) + i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' /dev/null | grep 86 >/dev/null \ && echo i486-ncr-sysv4 && exit 0 ;; - m68*:LynxOS:2.*:*) + m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) echo m68k-unknown-lynxos${UNAME_RELEASE} exit 0 ;; mc68030:UNIX_System_V:4.*:*) echo m68k-atari-sysv4 exit 0 ;; - i?86:LynxOS:2.*:* | i?86:LynxOS:3.[01]*:*) + i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) echo i386-unknown-lynxos${UNAME_RELEASE} exit 0 ;; TSUNAMI:LynxOS:2.*:*) echo sparc-unknown-lynxos${UNAME_RELEASE} exit 0 ;; - rs6000:LynxOS:2.*:* | PowerPC:LynxOS:2.*:*) + rs6000:LynxOS:2.*:*) echo rs6000-unknown-lynxos${UNAME_RELEASE} exit 0 ;; + PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*) + echo powerpc-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; SM[BE]S:UNIX_SV:*:*) echo mips-dde-sysv${UNAME_RELEASE} exit 0 ;; @@ -971,8 +1002,8 @@ EOF echo ns32k-sni-sysv fi exit 0 ;; - PENTIUM:CPunix:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort - # says + PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort + # says echo i586-unisys-sysv4 exit 0 ;; *:UNIX_System_V:4*:FTX*) @@ -984,10 +1015,14 @@ EOF # From seanf@swdc.stratus.com. echo i860-stratus-sysv4 exit 0 ;; + *:VOS:*:*) + # From Paul.Green@stratus.com. + echo hppa1.1-stratus-vos + exit 0 ;; mc68*:A/UX:*:*) echo m68k-apple-aux${UNAME_RELEASE} exit 0 ;; - news*:NEWS-OS:*:6*) + news*:NEWS-OS:6*:*) echo mips-sony-newsos6 exit 0 ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) @@ -1030,20 +1065,64 @@ EOF *:QNX:*:4*) echo i386-pc-qnx exit 0 ;; - NSR-W:NONSTOP_KERNEL:*:*) + NSR-[KW]:NONSTOP_KERNEL:*:*) echo nsr-tandem-nsk${UNAME_RELEASE} exit 0 ;; + *:NonStop-UX:*:*) + echo mips-compaq-nonstopux + exit 0 ;; BS2000:POSIX*:*:*) echo bs2000-siemens-sysv exit 0 ;; DS/*:UNIX_System_V:*:*) echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} exit 0 ;; + *:Plan9:*:*) + # "uname -m" is not consistent, so use $cputype instead. 386 + # is converted to i386 for consistency with other x86 + # operating systems. + if test "$cputype" = "386"; then + UNAME_MACHINE=i386 + else + UNAME_MACHINE="$cputype" + fi + echo ${UNAME_MACHINE}-unknown-plan9 + exit 0 ;; + i*86:OS/2:*:*) + # If we were able to find `uname', then EMX Unix compatibility + # is probably installed. + echo ${UNAME_MACHINE}-pc-os2-emx + exit 0 ;; + *:TOPS-10:*:*) + echo pdp10-unknown-tops10 + exit 0 ;; + *:TENEX:*:*) + echo pdp10-unknown-tenex + exit 0 ;; + KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) + echo pdp10-dec-tops20 + exit 0 ;; + XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) + echo pdp10-xkl-tops20 + exit 0 ;; + *:TOPS-20:*:*) + echo pdp10-unknown-tops20 + exit 0 ;; + *:ITS:*:*) + echo pdp10-unknown-its + exit 0 ;; + i*86:XTS-300:*:STOP) + echo ${UNAME_MACHINE}-unknown-stop + exit 0 ;; + i*86:atheos:*:*) + echo ${UNAME_MACHINE}-unknown-atheos + exit 0 ;; esac #echo '(No uname command or uname output not recognized.)' 1>&2 #echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 +eval $set_cc_for_build cat >$dummy.c < @@ -1130,11 +1209,24 @@ main () #endif #if defined (vax) -#if !defined (ultrix) - printf ("vax-dec-bsd\n"); exit (0); -#else - printf ("vax-dec-ultrix\n"); exit (0); -#endif +# if !defined (ultrix) +# include +# if defined (BSD) +# if BSD == 43 + printf ("vax-dec-bsd4.3\n"); exit (0); +# else +# if BSD == 199006 + printf ("vax-dec-bsd4.3reno\n"); exit (0); +# else + printf ("vax-dec-bsd\n"); exit (0); +# endif +# endif +# else + printf ("vax-dec-bsd\n"); exit (0); +# endif +# else + printf ("vax-dec-ultrix\n"); exit (0); +# endif #endif #if defined (alliant) && defined (i860) @@ -1145,7 +1237,7 @@ main () } EOF -$CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy && rm $dummy.c $dummy && exit 0 +$CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy && rm -f $dummy.c $dummy && exit 0 rm -f $dummy.c $dummy # Apollos put the system type in the environment. @@ -1178,6 +1270,48 @@ then esac fi -#echo '(Unable to guess system type)' 1>&2 +cat >&2 < in order to provide the needed +information to handle your system. + +config.guess timestamp = $timestamp + +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null` + +hostinfo = `(hostinfo) 2>/dev/null` +/bin/universe = `(/bin/universe) 2>/dev/null` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` +/bin/arch = `(/bin/arch) 2>/dev/null` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` + +UNAME_MACHINE = ${UNAME_MACHINE} +UNAME_RELEASE = ${UNAME_RELEASE} +UNAME_SYSTEM = ${UNAME_SYSTEM} +UNAME_VERSION = ${UNAME_VERSION} +EOF exit 1 + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/contrib/idn/mdnkit/config.sub b/contrib/idn/mdnkit/config.sub index c8e77851e69..393f13d373d 100644 --- a/contrib/idn/mdnkit/config.sub +++ b/contrib/idn/mdnkit/config.sub @@ -1,8 +1,10 @@ #! /bin/sh -# Configuration validation subroutine script, version 1.1. -# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000 +# Configuration validation subroutine script. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 # Free Software Foundation, Inc. -# + +timestamp='2001-09-07' + # This file is (in principle) common to ALL GNU software. # The presence of a machine in this file suggests that SOME GNU software # can handle that machine. It does not imply ALL GNU software can. @@ -27,7 +29,6 @@ # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. -# Written by Per Bothner . # Please send patches to . # # Configuration subroutine to validate and canonicalize a configuration type. @@ -50,30 +51,73 @@ # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # It is wrong to echo any other type of specification. -if [ x$1 = x ] -then - echo Configuration name missing. 1>&2 - echo "Usage: $0 CPU-MFR-OPSYS" 1>&2 - echo "or $0 ALIAS" 1>&2 - echo where ALIAS is a recognized configuration type. 1>&2 - exit 1 -fi +me=`echo "$0" | sed -e 's,.*/,,'` -# First pass through any local machine types. -case $1 in - *local*) - echo $1 - exit 0 - ;; - *) - ;; +usage="\ +Usage: $0 [OPTION] CPU-MFR-OPSYS + $0 [OPTION] ALIAS + +Canonicalize a configuration name. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.sub ($timestamp) + +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit 0 ;; + --version | -v ) + echo "$version" ; exit 0 ;; + --help | --h* | -h ) + echo "$usage"; exit 0 ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" + exit 1 ;; + + *local*) + # First pass through any local machine types. + echo $1 + exit 0;; + + * ) + break ;; + esac +done + +case $# in + 0) echo "$me: missing argument$help" >&2 + exit 1;; + 1) ;; + *) echo "$me: too many arguments$help" >&2 + exit 1;; esac # Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). # Here we must recognize all the valid KERNEL-OS combinations. maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` case $maybe_os in - nto-qnx* | linux-gnu*) + nto-qnx* | linux-gnu* | storm-chaos* | os2-emx* | windows32-*) os=-$maybe_os basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` ;; @@ -99,7 +143,7 @@ case $os in -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ - -apple) + -apple | -axis) os= basic_machine=$1 ;; @@ -113,6 +157,14 @@ case $os in os=-vxworks basic_machine=$1 ;; + -chorusos*) + os=-chorusos + basic_machine=$1 + ;; + -chorusrdb) + os=-chorusrdb + basic_machine=$1 + ;; -hiux*) os=-hiuxwe2 ;; @@ -171,30 +223,50 @@ esac case $basic_machine in # Recognize the basic CPU types without company name. # Some are omitted here because they have special meanings below. - tahoe | i860 | ia64 | m32r | m68k | m68000 | m88k | ns32k | arc | arm \ - | arme[lb] | pyramid | mn10200 | mn10300 | tron | a29k \ - | 580 | i960 | h8300 \ - | x86 | ppcbe | mipsbe | mipsle | shbe | shle | armbe | armle \ - | hppa | hppa1.0 | hppa1.1 | hppa2.0 | hppa2.0w | hppa2.0n \ - | hppa64 \ - | alpha | alphaev[4-8] | alphaev56 | alphapca5[67] \ - | alphaev6[78] \ - | we32k | ns16k | clipper | i370 | sh | powerpc | powerpcle \ - | 1750a | dsp16xx | pdp11 | mips16 | mips64 | mipsel | mips64el \ - | mips64orion | mips64orionel | mipstx39 | mipstx39el \ - | mips64vr4300 | mips64vr4300el | mips64vr4100 | mips64vr4100el \ - | mips64vr5000 | miprs64vr5000el | mcore \ - | sparc | sparclet | sparclite | sparc64 | sparcv9 | v850 | c4x \ - | thumb | d10v | fr30 | avr) + 1750a | 580 \ + | a29k \ + | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ + | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \ + | c4x | clipper \ + | d10v | d30v | dsp16xx \ + | fr30 \ + | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ + | i370 | i860 | i960 | ia64 \ + | m32r | m68000 | m68k | m88k | mcore \ + | mips16 | mips64 | mips64el | mips64orion | mips64orionel \ + | mips64vr4100 | mips64vr4100el | mips64vr4300 \ + | mips64vr4300el | mips64vr5000 | mips64vr5000el \ + | mipsbe | mipseb | mipsel | mipsle | mipstx39 | mipstx39el \ + | mipsisa32 \ + | mn10200 | mn10300 \ + | ns16k | ns32k \ + | openrisc \ + | pdp10 | pdp11 | pj | pjl \ + | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ + | pyramid \ + | s390 | s390x \ + | sh | sh[34] | sh[34]eb | shbe | shle \ + | sparc | sparc64 | sparclet | sparclite | sparcv9 | sparcv9b \ + | stormy16 | strongarm \ + | tahoe | thumb | tic80 | tron \ + | v850 \ + | we32k \ + | x86 | xscale \ + | z8k) basic_machine=$basic_machine-unknown ;; - m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | z8k | v70 | h8500 | w65 | pj | pjl) + m6811 | m68hc11 | m6812 | m68hc12) + # Motorola 68HC11/12. + basic_machine=$basic_machine-unknown + os=-none + ;; + m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) ;; # We use `pc' rather than `unknown' # because (1) that's what they normally are, and # (2) the word "unknown" tends to confuse beginning users. - i[34567]86) + i*86 | x86_64) basic_machine=$basic_machine-pc ;; # Object if more than one company name word. @@ -203,28 +275,43 @@ case $basic_machine in exit 1 ;; # Recognize the basic CPU types with company name. - # FIXME: clean up the formatting here. - vax-* | tahoe-* | i[34567]86-* | i860-* | ia64-* | m32r-* | m68k-* | m68000-* \ - | m88k-* | sparc-* | ns32k-* | fx80-* | arc-* | arm-* | c[123]* \ - | mips-* | pyramid-* | tron-* | a29k-* | romp-* | rs6000-* \ - | power-* | none-* | 580-* | cray2-* | h8300-* | h8500-* | i960-* \ - | xmp-* | ymp-* \ - | x86-* | ppcbe-* | mipsbe-* | mipsle-* | shbe-* | shle-* | armbe-* | armle-* \ - | hppa-* | hppa1.0-* | hppa1.1-* | hppa2.0-* | hppa2.0w-* \ - | hppa2.0n-* | hppa64-* \ - | alpha-* | alphaev[4-8]-* | alphaev56-* | alphapca5[67]-* \ - | alphaev6[78]-* \ - | we32k-* | cydra-* | ns16k-* | pn-* | np1-* | xps100-* \ - | clipper-* | orion-* \ - | sparclite-* | pdp11-* | sh-* | powerpc-* | powerpcle-* \ - | sparc64-* | sparcv9-* | sparc86x-* | mips16-* | mips64-* | mipsel-* \ - | mips64el-* | mips64orion-* | mips64orionel-* \ - | mips64vr4100-* | mips64vr4100el-* | mips64vr4300-* | mips64vr4300el-* \ - | mipstx39-* | mipstx39el-* | mcore-* \ - | f301-* | armv*-* | s390-* | sv1-* | t3e-* \ - | m88110-* | m680[01234]0-* | m683?2-* | m68360-* | z8k-* | d10v-* \ - | thumb-* | v850-* | d30v-* | tic30-* | c30-* | fr30-* \ - | bs2000-*) + 580-* \ + | a29k-* \ + | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ + | alphapca5[67]-* | arc-* \ + | arm-* | armbe-* | armle-* | armv*-* \ + | bs2000-* \ + | c[123]* | c30-* | [cjt]90-* | c54x-* \ + | clipper-* | cray2-* | cydra-* \ + | d10v-* | d30v-* \ + | elxsi-* \ + | f30[01]-* | f700-* | fr30-* | fx80-* \ + | h8300-* | h8500-* \ + | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ + | i*86-* | i860-* | i960-* | ia64-* \ + | m32r-* \ + | m68000-* | m680[01234]0-* | m68360-* | m683?2-* | m68k-* \ + | m88110-* | m88k-* | mcore-* \ + | mips-* | mips16-* | mips64-* | mips64el-* | mips64orion-* \ + | mips64orionel-* | mips64vr4100-* | mips64vr4100el-* \ + | mips64vr4300-* | mips64vr4300el-* | mipsbe-* | mipseb-* \ + | mipsle-* | mipsel-* | mipstx39-* | mipstx39el-* \ + | none-* | np1-* | ns16k-* | ns32k-* \ + | orion-* \ + | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ + | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ + | pyramid-* \ + | romp-* | rs6000-* \ + | s390-* | s390x-* \ + | sh-* | sh[34]-* | sh[34]eb-* | shbe-* | shle-* \ + | sparc-* | sparc64-* | sparc86x-* | sparclite-* \ + | sparcv9-* | sparcv9b-* | stormy16-* | strongarm-* | sv1-* \ + | t3e-* | tahoe-* | thumb-* | tic30-* | tic54x-* | tic80-* | tron-* \ + | v850-* | vax-* \ + | we32k-* \ + | x86-* | x86_64-* | xmp-* | xps100-* | xscale-* \ + | ymp-* \ + | z8k-*) ;; # Recognize the various machine names and aliases which stand # for a CPU type and a company and sometimes even an OS. @@ -261,14 +348,14 @@ case $basic_machine in os=-sysv ;; amiga | amiga-*) - basic_machine=m68k-cbm + basic_machine=m68k-unknown ;; amigaos | amigados) - basic_machine=m68k-cbm + basic_machine=m68k-unknown os=-amigaos ;; amigaunix | amix) - basic_machine=m68k-cbm + basic_machine=m68k-unknown os=-sysv4 ;; apollo68) @@ -315,13 +402,16 @@ case $basic_machine in basic_machine=cray2-cray os=-unicos ;; - [ctj]90-cray) - basic_machine=c90-cray + [cjt]90) + basic_machine=${basic_machine}-cray os=-unicos ;; crds | unos) basic_machine=m68k-crds ;; + cris | cris-* | etrax*) + basic_machine=cris-axis + ;; da30 | da30-*) basic_machine=m68k-da30 ;; @@ -369,6 +459,10 @@ case $basic_machine in basic_machine=tron-gmicro os=-sysv ;; + go32) + basic_machine=i386-pc + os=-go32 + ;; h3050r* | hiux*) basic_machine=hppa1.1-hitachi os=-hiuxwe2 @@ -444,19 +538,19 @@ case $basic_machine in basic_machine=i370-ibm ;; # I'm not sure what "Sysv32" means. Should this be sysv3.2? - i[34567]86v32) + i*86v32) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv32 ;; - i[34567]86v4*) + i*86v4*) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv4 ;; - i[34567]86v) + i*86v) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv ;; - i[34567]86sol2) + i*86sol2) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-solaris2 ;; @@ -468,14 +562,6 @@ case $basic_machine in basic_machine=i386-unknown os=-vsta ;; - i386-go32 | go32) - basic_machine=i386-unknown - os=-go32 - ;; - i386-mingw32 | mingw32) - basic_machine=i386-unknown - os=-mingw32 - ;; iris | iris4d) basic_machine=mips-sgi case $os in @@ -501,6 +587,10 @@ case $basic_machine in basic_machine=ns32k-utek os=-sysv ;; + mingw32) + basic_machine=i386-pc + os=-mingw32 + ;; miniframe) basic_machine=m68000-convergent ;; @@ -531,7 +621,7 @@ case $basic_machine in os=-coff ;; msdos) - basic_machine=i386-unknown + basic_machine=i386-pc os=-msdos ;; mvs) @@ -595,6 +685,10 @@ case $basic_machine in basic_machine=i960-intel os=-mon960 ;; + nonstopux) + basic_machine=mips-compaq + os=-nonstopux + ;; np1) basic_machine=np1-gould ;; @@ -630,28 +724,28 @@ case $basic_machine in pc532 | pc532-*) basic_machine=ns32k-pc532 ;; - pentium | p5 | k5 | k6 | nexen) + pentium | p5 | k5 | k6 | nexgen) basic_machine=i586-pc ;; - pentiumpro | p6 | 6x86) + pentiumpro | p6 | 6x86 | athlon) basic_machine=i686-pc ;; pentiumii | pentium2) - basic_machine=i786-pc + basic_machine=i686-pc ;; - pentium-* | p5-* | k5-* | k6-* | nexen-*) + pentium-* | p5-* | k5-* | k6-* | nexgen-*) basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` ;; - pentiumpro-* | p6-* | 6x86-*) + pentiumpro-* | p6-* | 6x86-* | athlon-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumii-* | pentium2-*) - basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pn) basic_machine=pn-gould ;; - power) basic_machine=rs6000-ibm + power) basic_machine=power-ibm ;; ppc) basic_machine=powerpc-unknown ;; @@ -663,9 +757,23 @@ case $basic_machine in ppcle-* | powerpclittle-*) basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` ;; + ppc64) basic_machine=powerpc64-unknown + ;; + ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppc64le | powerpc64little | ppc64-le | powerpc64-little) + basic_machine=powerpc64le-unknown + ;; + ppc64le-* | powerpc64little-*) + basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; ps2) basic_machine=i386-ibm ;; + pw32) + basic_machine=i586-unknown + os=-pw32 + ;; rom68k) basic_machine=m68k-rom68k os=-coff @@ -757,6 +865,10 @@ case $basic_machine in basic_machine=t3e-cray os=-unicos ;; + tic54x | c54x*) + basic_machine=tic54x-unknown + os=-coff + ;; tx39) basic_machine=mipstx39-unknown ;; @@ -809,6 +921,10 @@ case $basic_machine in basic_machine=hppa1.1-winbond os=-proelf ;; + windows32) + basic_machine=i386-pc + os=-windows32-msvcrt + ;; xmp) basic_machine=xmp-cray os=-unicos @@ -852,13 +968,20 @@ case $basic_machine in vax) basic_machine=vax-dec ;; + pdp10) + # there are many clones, so DEC is not a safe bet + basic_machine=pdp10-unknown + ;; pdp11) basic_machine=pdp11-dec ;; we32k) basic_machine=we32k-att ;; - sparc | sparcv9) + sh3 | sh4 | sh3eb | sh4eb) + basic_machine=sh-unknown + ;; + sparc | sparcv9 | sparcv9b) basic_machine=sparc-sun ;; cydra) @@ -880,6 +1003,9 @@ case $basic_machine in basic_machine=c4x-none os=-coff ;; + *-unknown) + # Make sure to match an already-canonicalized machine name. + ;; *) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 @@ -936,15 +1062,18 @@ case $os in | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ + | -chorusos* | -chorusrdb* \ | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ | -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \ | -interix* | -uwin* | -rhapsody* | -darwin* | -opened* \ - | -openstep* | -oskit*) + | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ + | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ + | -os2* | -vos*) # Remember, each alternative MUST END IN *, to match a version number. ;; -qnx*) case $basic_machine in - x86-* | i[34567]86-*) + x86-* | i*86-*) ;; *) os=-nto$os @@ -1000,7 +1129,7 @@ case $os in -ns2 ) os=-nextstep2 ;; - -nsk) + -nsk*) os=-nsk ;; # Preserve the version number of sinix5. @@ -1037,7 +1166,7 @@ case $os in -xenix) os=-xenix ;; - -*mint | -*MiNT) + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) os=-mint ;; -none) @@ -1071,6 +1200,9 @@ case $basic_machine in arm*-semi) os=-aout ;; + pdp10-*) + os=-tops20 + ;; pdp11-*) os=-none ;; @@ -1179,7 +1311,7 @@ case $basic_machine in *-masscomp) os=-rtu ;; - f301-fujitsu) + f30[01]-fujitsu | f700-fujitsu) os=-uxpv ;; *-rom68k) @@ -1257,12 +1389,23 @@ case $basic_machine in -mpw* | -macos*) vendor=apple ;; - -*mint | -*MiNT) + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) vendor=atari ;; + -vos*) + vendor=stratus + ;; esac basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` ;; esac echo $basic_machine$os +exit 0 + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/contrib/idn/mdnkit/configure b/contrib/idn/mdnkit/configure index f462b5bb912..3f51ec916f2 100644 --- a/contrib/idn/mdnkit/configure +++ b/contrib/idn/mdnkit/configure @@ -11,6 +11,8 @@ ac_help= ac_default_prefix=/usr/local # Any additions from configure.in: +ac_help="$ac_help + --enable-debug enable debug codes [default=no]" ac_help="$ac_help --with-logdir=DIR mdnsproxy's log files are in DIR. [default=LOCALSTATEDIR/mdnsproxy]" @@ -42,10 +44,22 @@ ac_help="$ac_help --with-amc-ace-o-suffix=SUFFIX suffix for AMC-ACE-O encoding [-amc2]" ac_help="$ac_help --with-amc-ace-r-prefix=PREFIX prefix for AMC-ACE-R encoding [amc3-]" +ac_help="$ac_help + --with-amc-ace-v-prefix=PREFIX prefix for AMC-ACE-V encoding [amc4-]" +ac_help="$ac_help + --with-amc-ace-w-prefix=PREFIX prefix for AMC-ACE-W encoding [amc5-]" +ac_help="$ac_help + --with-amc-ace-z-prefix=PREFIX prefix for AMC-ACE-Z encoding [zq--]" +ac_help="$ac_help + --with-mace-prefix=PREFIX prefix for MACE encoding [mq--]" +ac_help="$ac_help + --with-libiconv=IPREFIX GNU libiconv are installed in IPREFIX [PREFIX]" +ac_help="$ac_help + --with-iconv-include=DIR iconv include files are in DIR []" ac_help="$ac_help --with-iconv=LIB special library for iconv []" ac_help="$ac_help - --with-iconv-sofile=PATH shared library file for libiconv []" + --with-iconv-sofile=PATH shared library file for libiconv []" ac_help="$ac_help --with-preference=ARG change the default configuration to the one suitable for ARG." @@ -596,7 +610,7 @@ else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; } fi echo $ac_n "checking host system type""... $ac_c" 1>&6 -echo "configure:600: checking host system type" >&5 +echo "configure:614: checking host system type" >&5 host_alias=$host case "$host_alias" in @@ -617,6 +631,19 @@ host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` echo "$ac_t""$host" 1>&6 +debug=no +# Check whether --enable-debug or --disable-debug was given. +if test "${enable_debug+set}" = set; then + enableval="$enable_debug" + debug=$enableval +fi + +case "$enableval" in +yes) + CFLAGS="$CFLAGS -DDEBUG" + ;; +esac + logdir=no # Check whether --with-logdir or --without-logdir was given. if test "${with_logdir+set}" = set; then @@ -664,6 +691,7 @@ fi case "$utf8name" in no) + utf8name=UTF-8 ;; yes) { echo "configure: error: You must specify NAME to --with-utf8 option." 1>&2; exit 1; } @@ -946,8 +974,160 @@ EOF fi +ace_prefix=no +# Check whether --with-amc-ace-v-prefix or --without-amc-ace-v-prefix was given. +if test "${with_amc_ace_v_prefix+set}" = set; then + withval="$with_amc_ace_v_prefix" + ace_prefix=$withval +fi + +case "${ace_prefix}" in +no) + ace_prefix="amc4-" + ;; +yes) + { echo "configure: error: You must specify PREFIX to --with-amc-ace-v-prefix option." 1>&2; exit 1; } + ;; +esac +if test "${ace_prefix}" != ""; then + cat >> confdefs.h <&2; exit 1; } + ;; +esac +if test "${ace_prefix}" != ""; then + cat >> confdefs.h <&2; exit 1; } + ;; +esac +if test "${ace_prefix}" != ""; then + cat >> confdefs.h <&2; exit 1; } + ;; +esac +if test "${ace_prefix}" != ""; then + cat >> confdefs.h <&2 + ICONVINC= + ;; +*) + ICONVINC="-I$iconv_include" + ;; +esac + +if test "X$ICONVINC" != X ; then + iconv_include="`echo X$ICONVINC | sed -e 's/^X-I//'`" + if test ! -f "$iconv_include/iconv.h" ; then + { echo "configure: error: iconv.h doesn't exist in $iconv_include" 1>&2; exit 1; } + fi +fi + -iconv=no + +iconv=unspec # Check whether --with-iconv or --without-iconv was given. if test "${with_iconv+set}" = set; then withval="$with_iconv" @@ -955,6 +1135,8 @@ if test "${with_iconv+set}" = set; then fi case "$iconv" in +unspec) + ;; no) ICONVLIB= ;; @@ -990,7 +1172,7 @@ guess) ICONVSOFILE=none else echo $ac_n "checking pathname of iconv shared library""... $ac_c" 1>&6 -echo "configure:994: checking pathname of iconv shared library" >&5 +echo "configure:1176: checking pathname of iconv shared library" >&5 ic_libdir= ic_libname= case "$host" in @@ -1081,15 +1263,25 @@ case "$host" in PRELOAD_VAR="_RLD_LIST" PRELOAD_LAST=":DEFAULT" ;; +*-netbsd*) + if test -x /usr/bin/file -a -x /usr/bin/grep ; then + case "`/usr/bin/file /usr/bin/grep`" in + *ELF*) + PRELOAD_SEP=" " + ;; + esac + fi + ;; esac + # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1093: checking for $ac_word" >&5 +echo "configure:1285: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1119,7 +1311,7 @@ if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1123: checking for $ac_word" >&5 +echo "configure:1315: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1170,7 +1362,7 @@ fi # Extract the first word of "cl", so it can be a program name with args. set dummy cl; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1174: checking for $ac_word" >&5 +echo "configure:1366: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1202,7 +1394,7 @@ fi fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 -echo "configure:1206: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 +echo "configure:1398: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 ac_ext=c # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. @@ -1213,12 +1405,12 @@ cross_compiling=$ac_cv_prog_cc_cross cat > conftest.$ac_ext << EOF -#line 1217 "configure" +#line 1409 "configure" #include "confdefs.h" main(){return(0);} EOF -if { (eval echo configure:1222: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1414: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ac_cv_prog_cc_works=yes # If we can't run a trivial program, we are probably using a cross compiler. if (./conftest; exit) 2>/dev/null; then @@ -1244,12 +1436,12 @@ if test $ac_cv_prog_cc_works = no; then { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; } fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 -echo "configure:1248: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 +echo "configure:1440: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6 cross_compiling=$ac_cv_prog_cc_cross echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6 -echo "configure:1253: checking whether we are using GNU C" >&5 +echo "configure:1445: checking whether we are using GNU C" >&5 if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1258,7 +1450,7 @@ else yes; #endif EOF -if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1262: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then +if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1454: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then ac_cv_prog_gcc=yes else ac_cv_prog_gcc=no @@ -1277,7 +1469,7 @@ ac_test_CFLAGS="${CFLAGS+set}" ac_save_CFLAGS="$CFLAGS" CFLAGS= echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 -echo "configure:1281: checking whether ${CC-cc} accepts -g" >&5 +echo "configure:1473: checking whether ${CC-cc} accepts -g" >&5 if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1320,7 +1512,7 @@ fi # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # ./install, which can be erroneously created by make from ./install.sh. echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6 -echo "configure:1324: checking for a BSD compatible install" >&5 +echo "configure:1516: checking for a BSD compatible install" >&5 if test -z "$INSTALL"; then if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1442,7 +1634,7 @@ else fi echo $ac_n "checking build system type""... $ac_c" 1>&6 -echo "configure:1446: checking build system type" >&5 +echo "configure:1638: checking build system type" >&5 build_alias=$build case "$build_alias" in @@ -1462,7 +1654,7 @@ echo "$ac_t""$build" 1>&6 # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1466: checking for $ac_word" >&5 +echo "configure:1658: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1501,7 +1693,7 @@ ac_prog=ld if test "$ac_cv_prog_gcc" = yes; then # Check if gcc -print-prog-name=ld gives a path. echo $ac_n "checking for ld used by GCC""... $ac_c" 1>&6 -echo "configure:1505: checking for ld used by GCC" >&5 +echo "configure:1697: checking for ld used by GCC" >&5 ac_prog=`($CC -print-prog-name=ld) 2>&5` case "$ac_prog" in # Accept absolute paths. @@ -1525,10 +1717,10 @@ echo "configure:1505: checking for ld used by GCC" >&5 esac elif test "$with_gnu_ld" = yes; then echo $ac_n "checking for GNU ld""... $ac_c" 1>&6 -echo "configure:1529: checking for GNU ld" >&5 +echo "configure:1721: checking for GNU ld" >&5 else echo $ac_n "checking for non-GNU ld""... $ac_c" 1>&6 -echo "configure:1532: checking for non-GNU ld" >&5 +echo "configure:1724: checking for non-GNU ld" >&5 fi if eval "test \"`echo '$''{'ac_cv_path_LD'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1563,7 +1755,7 @@ else fi test -z "$LD" && { echo "configure: error: no acceptable ld found in \$PATH" 1>&2; exit 1; } echo $ac_n "checking if the linker ($LD) is GNU ld""... $ac_c" 1>&6 -echo "configure:1567: checking if the linker ($LD) is GNU ld" >&5 +echo "configure:1759: checking if the linker ($LD) is GNU ld" >&5 if eval "test \"`echo '$''{'ac_cv_prog_gnu_ld'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1579,7 +1771,7 @@ echo "$ac_t""$ac_cv_prog_gnu_ld" 1>&6 echo $ac_n "checking for BSD-compatible nm""... $ac_c" 1>&6 -echo "configure:1583: checking for BSD-compatible nm" >&5 +echo "configure:1775: checking for BSD-compatible nm" >&5 if eval "test \"`echo '$''{'ac_cv_path_NM'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1615,7 +1807,7 @@ NM="$ac_cv_path_NM" echo "$ac_t""$NM" 1>&6 echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6 -echo "configure:1619: checking whether ln -s works" >&5 +echo "configure:1811: checking whether ln -s works" >&5 if eval "test \"`echo '$''{'ac_cv_prog_LN_S'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1664,8 +1856,8 @@ test x"$silent" = xyes && libtool_flags="$libtool_flags --silent" case "$lt_target" in *-*-irix6*) # Find out which ABI we are using. - echo '#line 1668 "configure"' > conftest.$ac_ext - if { (eval echo configure:1669: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + echo '#line 1860 "configure"' > conftest.$ac_ext + if { (eval echo configure:1861: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then case "`/usr/bin/file conftest.o`" in *32-bit*) LD="${LD-ld} -32" @@ -1686,19 +1878,19 @@ case "$lt_target" in SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -belf" echo $ac_n "checking whether the C compiler needs -belf""... $ac_c" 1>&6 -echo "configure:1690: checking whether the C compiler needs -belf" >&5 +echo "configure:1882: checking whether the C compiler needs -belf" >&5 if eval "test \"`echo '$''{'lt_cv_cc_needs_belf'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1894: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* lt_cv_cc_needs_belf=yes else @@ -1801,7 +1993,7 @@ exec 5>>./config.log echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 -echo "configure:1805: checking how to run the C preprocessor" >&5 +echo "configure:1997: checking how to run the C preprocessor" >&5 # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= @@ -1816,13 +2008,13 @@ else # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1826: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2018: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -1833,13 +2025,13 @@ else rm -rf conftest* CPP="${CC-cc} -E -traditional-cpp" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1843: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2035: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -1850,13 +2042,13 @@ else rm -rf conftest* CPP="${CC-cc} -nologo -E" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1860: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2052: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -1884,17 +2076,17 @@ for ac_hdr in unistd.h locale.h langinfo.h resolv.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:1888: checking for $ac_hdr" >&5 +echo "configure:2080: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1898: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2090: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -1924,17 +2116,17 @@ for ac_hdr in sys/select.h arpa/nameser.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:1928: checking for $ac_hdr" >&5 +echo "configure:2120: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1938: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2130: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -1964,17 +2156,17 @@ for ac_hdr in dlfcn.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:1968: checking for $ac_hdr" >&5 +echo "configure:2160: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1978: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2170: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -2001,13 +2193,51 @@ fi done +saved_CPPFLAGS=$CPPFLAGS +CPPFLAGS="$CPPFLAGS $ICONVINC" +ac_safe=`echo "iconv.h" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for iconv.h""... $ac_c" 1>&6 +echo "configure:2201: checking for iconv.h" >&5 +if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +EOF +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:2211: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then + rm -rf conftest* + eval "ac_cv_header_$ac_safe=yes" +else + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_header_$ac_safe=no" +fi +rm -f conftest* +fi +if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then + echo "$ac_t""yes" 1>&6 + : +else + echo "$ac_t""no" 1>&6 +{ echo "configure: error: iconv.h doesn't exist" 1>&2; exit 1; } +fi + +CPPFLAGS=$saved_CPPFLAGS + echo $ac_n "checking for uid_t in sys/types.h""... $ac_c" 1>&6 -echo "configure:2006: checking for uid_t in sys/types.h" >&5 +echo "configure:2236: checking for uid_t in sys/types.h" >&5 if eval "test \"`echo '$''{'ac_cv_type_uid_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -2036,12 +2266,12 @@ EOF fi echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 -echo "configure:2040: checking for ANSI C header files" >&5 +echo "configure:2270: checking for ANSI C header files" >&5 if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -2049,7 +2279,7 @@ else #include EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2053: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2283: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -2066,7 +2296,7 @@ rm -f conftest* if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -2084,7 +2314,7 @@ fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -2105,7 +2335,7 @@ if test "$cross_compiling" = yes; then : else cat > conftest.$ac_ext < #define ISLOWER(c) ('a' <= (c) && (c) <= 'z') @@ -2116,7 +2346,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); exit (0); } EOF -if { (eval echo configure:2120: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:2350: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -2140,12 +2370,12 @@ EOF fi echo $ac_n "checking for BOOL""... $ac_c" 1>&6 -echo "configure:2144: checking for BOOL" >&5 +echo "configure:2374: checking for BOOL" >&5 if eval "test \"`echo '$''{'ac_cv_type_BOOL'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -2174,7 +2404,7 @@ fi echo $ac_n "checking for socket in -lsocket""... $ac_c" 1>&6 -echo "configure:2178: checking for socket in -lsocket" >&5 +echo "configure:2408: checking for socket in -lsocket" >&5 ac_lib_var=`echo socket'_'socket | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2182,7 +2412,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lsocket $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2427: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2221,7 +2451,7 @@ else fi echo $ac_n "checking for inet_addr in -lnsl""... $ac_c" 1>&6 -echo "configure:2225: checking for inet_addr in -lnsl" >&5 +echo "configure:2455: checking for inet_addr in -lnsl" >&5 ac_lib_var=`echo nsl'_'inet_addr | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2229,7 +2459,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lnsl $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2474: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2268,7 +2498,7 @@ else fi echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6 -echo "configure:2272: checking for dlopen in -ldl" >&5 +echo "configure:2502: checking for dlopen in -ldl" >&5 ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2276,7 +2506,7 @@ else ac_save_LIBS="$LIBS" LIBS="-ldl $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2521: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2319,12 +2549,12 @@ fi for ac_func in vsnprintf setvbuf setlocale nl_langinfo memmove bcopy syslog do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:2323: checking for $ac_func" >&5 +echo "configure:2553: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2581: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -2374,12 +2604,12 @@ done for ac_func in gethostbyname gethostbyname2 gethostbyaddr do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:2378: checking for $ac_func" >&5 +echo "configure:2608: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2636: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -2429,12 +2659,12 @@ done for ac_func in gethostbyname_r gethostbyname2_r gethostbyaddr_r do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:2433: checking for $ac_func" >&5 +echo "configure:2663: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2691: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -2484,12 +2714,12 @@ done for ac_func in getipnodebyname getipnodebyaddr freehostent do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:2488: checking for $ac_func" >&5 +echo "configure:2718: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2746: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -2539,12 +2769,12 @@ done for ac_func in getaddrinfo freeaddrinfo getnameinfo do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:2543: checking for $ac_func" >&5 +echo "configure:2773: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2801: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -2594,12 +2824,12 @@ done for ac_func in dlopen dlsym do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:2598: checking for $ac_func" >&5 +echo "configure:2828: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2856: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -2648,18 +2878,51 @@ done echo $ac_n "checking flavor of gethostbyaddr""... $ac_c" 1>&6 -echo "configure:2652: checking flavor of gethostbyaddr" >&5 +echo "configure:2882: checking flavor of gethostbyaddr" >&5 if eval "test \"`echo '$''{'ac_cv_flavor_gethostbyaddr'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - if test "$cross_compiling" = yes; then - ac_cv_flavor_gethostbyaddr=traditional + ac_cv_flavor_gethostbyaddr=unknown +if test "$cross_compiling" = yes; then + ac_cv_flavor_gethostbyaddr=unknown else cat > conftest.$ac_ext < +#include +#include +#include +struct hostent *gethostbyaddr(const void *addr, socklen_t len, int type) { + return NULL; +} +int main() { + (void)gethostbyaddr(NULL, 0, 0); + return 0; +} + +EOF +if { (eval echo configure:2907: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +then + ac_cv_flavor_gethostbyaddr=glibc2_2 +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 +fi +rm -fr conftest* +fi + +if test "$cross_compiling" = yes; then + ac_cv_flavor_gethostbyaddr=unknown +else + cat > conftest.$ac_ext < +#include +#include #include struct hostent *gethostbyaddr(const char *addr, size_t len, int type) { return NULL; @@ -2670,36 +2933,276 @@ int main() { } EOF -if { (eval echo configure:2674: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:2937: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then - ac_cv_flavor_gethostbyaddr=standard + ac_cv_flavor_gethostbyaddr=glibc else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 - rm -fr conftest* +fi +rm -fr conftest* +fi + +if test "$cross_compiling" = yes; then + ac_cv_flavor_gethostbyaddr=unknown +else + cat > conftest.$ac_ext < +#include +#include +#include +struct hostent *gethostbyaddr(const char *addr, int len, int type) { + return NULL; +} +int main() { + (void)gethostbyaddr(NULL, 0, 0); + return 0; +} + +EOF +if { (eval echo configure:2967: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +then ac_cv_flavor_gethostbyaddr=traditional +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 fi rm -fr conftest* fi +if test "$ac_cv_func_gethostbyaddr" = no ; then + ac_cv_flavor_gethostbyaddr=none +fi fi echo "$ac_t""$ac_cv_flavor_gethostbyaddr" 1>&6 -if test "$ac_cv_flavor_gethostbyaddr" = "standard"; then - cat >> confdefs.h <<\EOF -#define GHBA_ADDRLEN_T size_t + +case "$ac_cv_flavor_gethostbyaddr" in +glibc2_2) + ac_cv_type_ghba_addr_t='const void *' + ac_cv_type_ghba_addrlen_t='socklen_t' + ;; +glibc) + ac_cv_type_ghba_addr_t='const char *' + ac_cv_type_ghba_addrlen_t='size_t' + ;; +traditional | none) + ac_cv_type_ghba_addr_t='const char *' + ac_cv_type_ghba_addrlen_t='int' + ;; +*) + echo "configure: warning: runmdn command will not be built." 1>&2 + ;; +esac +cat >> confdefs.h <> confdefs.h <&6 +echo "configure:3011: checking flavor of getnameinfo" >&5 +if eval "test \"`echo '$''{'ac_cv_flavor_getnameinfo'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 else - cat >> confdefs.h <<\EOF -#define GHBA_ADDRLEN_T int + ac_cv_flavor_getnameinfo=unknown +if test "$cross_compiling" = yes; then + ac_cv_flavor_getnameinfo=unknown +else + cat > conftest.$ac_ext < +#include +#include +#include +int getnameinfo(const struct sockaddr *sa, socklen_t salen, char *host, + socklen_t hostlen, char *serv, socklen_t servlen, + unsigned int flags) { + return NULL; +} +int main() { + (void)getnameinfo(NULL, 0, NULL, 0, NULL, 0, 0); + return 0; +} + +EOF +if { (eval echo configure:3038: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +then + ac_cv_flavor_getnameinfo=glibc2_2_2 +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 +fi +rm -fr conftest* +fi + +if test "$cross_compiling" = yes; then + ac_cv_flavor_getnameinfo=unknown +else + cat > conftest.$ac_ext < +#include +#include +#include +int getnameinfo(const struct sockaddr *sa, socklen_t salen, char *host, + socklen_t hostlen, char *serv, socklen_t servlen, int flags) { + return NULL; +} +int main() { + (void)getnameinfo(NULL, 0, NULL, 0, NULL, 0, 0); + return 0; +} + +EOF +if { (eval echo configure:3069: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +then + ac_cv_flavor_getnameinfo=rfc2553bis_03 +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 +fi +rm -fr conftest* +fi + +if test "$cross_compiling" = yes; then + ac_cv_flavor_getnameinfo=unknown +else + cat > conftest.$ac_ext < +#include +#include +#include +int getnameinfo(const struct sockaddr *sa, socklen_t salen, char *host, + size_t hostlen, char *serv, size_t servlen, int flags) { + return NULL; +} +int main() { + (void)getnameinfo(NULL, 0, NULL, 0, NULL, 0, 0); + return 0; +} + +EOF +if { (eval echo configure:3100: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +then + ac_cv_flavor_getnameinfo=rfc2553 +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 +fi +rm -fr conftest* +fi + +if test "$cross_compiling" = yes; then + ac_cv_flavor_getnameinfo=unknown +else + cat > conftest.$ac_ext < +#include +#include +#include +int getnameinfo(const struct sockaddr *sa, size_t salen, char *host, + size_t hostlen, char *serv, size_t servlen, int flags) { + return NULL; +} +int main() { + (void)getnameinfo(NULL, 0, NULL, 0, NULL, 0, 0); + return 0; +} + +EOF +if { (eval echo configure:3131: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +then + ac_cv_flavor_getnameinfo=rfc2133 +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 +fi +rm -fr conftest* +fi + +if test "$ac_cv_func_getnameinfo" = no ; then + ac_cv_flavor_getnameinfo=none +fi +fi + +echo "$ac_t""$ac_cv_flavor_getnameinfo" 1>&6 + +case "$ac_cv_flavor_getnameinfo" in +glibc2_2_2) + ac_cv_type_gni_salen_t='socklen_t' + ac_cv_type_gni_hostlen_t='socklen_t' + ac_cv_type_gni_servlen_t='socklen_t' + ac_cv_type_gni_flags_t='unsigned int' + ;; +rfc2553bis_03) + ac_cv_type_gni_salen_t='socklen_t' + ac_cv_type_gni_hostlen_t='socklen_t' + ac_cv_type_gni_servlen_t='socklen_t' + ac_cv_type_gni_flags_t='int' + ;; +rfc2553) + ac_cv_type_gni_salen_t='socklen_t' + ac_cv_type_gni_hostlen_t='size_t' + ac_cv_type_gni_servlen_t='size_t' + ac_cv_type_gni_flags_t='int' + ;; +rfc2133 | none) + ac_cv_type_gni_salen_t='size_t' + ac_cv_type_gni_hostlen_t='size_t' + ac_cv_type_gni_servlen_t='size_t' + ac_cv_type_gni_flags_t='int' + ;; +*) + echo "configure: warning: runmdn command will not be built." 1>&2 + ;; +esac + +cat >> confdefs.h <> confdefs.h <> confdefs.h <> confdefs.h <&6 -echo "configure:2703: checking flavor of gethostbyname_r" >&5 +echo "configure:3206: checking flavor of gethostbyname_r" >&5 if eval "test \"`echo '$''{'ac_cv_flavor_gethost_r'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2707,11 +3210,14 @@ else ac_cv_flavor_gethost_r=sun else cat > conftest.$ac_ext < +#include +#include +#include #include +#include int main() { int err = 0; @@ -2726,7 +3232,7 @@ int main() } EOF -if { (eval echo configure:2730: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:3236: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_flavor_gethost_r=glibc else @@ -2751,7 +3257,7 @@ fi echo $ac_n "checking for libc shared object""... $ac_c" 1>&6 -echo "configure:2755: checking for libc shared object" >&5 +echo "configure:3261: checking for libc shared object" >&5 shobj_name=libc shobj_path= case "$host" in @@ -2789,7 +3295,7 @@ fi echo $ac_n "checking for libnsl shared object""... $ac_c" 1>&6 -echo "configure:2793: checking for libnsl shared object" >&5 +echo "configure:3299: checking for libnsl shared object" >&5 shobj_name=libnsl shobj_path= case "$host" in @@ -2827,11 +3333,13 @@ fi echo $ac_n "checking for iconv""... $ac_c" 1>&6 -echo "configure:2831: checking for iconv" >&5 +echo "configure:3337: checking for iconv" >&5 +saved_CPPFLAGS=$CPPFLAGS saved_LIBS=$LIBS +CPPFLAGS="$CPPFLAGS $ICONVINC" LIBS="$LIBS $ICONVLIB" cat > conftest.$ac_ext < @@ -2843,7 +3351,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:2847: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3355: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* iconv_try_link=yes else @@ -2854,11 +3362,66 @@ else fi rm -f conftest* LIBS=$saved_LIBS +CPPFLAGS=$saved_CPPFLAGS echo "$ac_t""$iconv_try_link" 1>&6 if test "$iconv_try_link" = no ; then { echo "configure: error: iconv function not available" 1>&2; exit 1; } fi +echo $ac_n "checking for codeset name $utf8name""... $ac_c" 1>&6 +echo "configure:3373: checking for codeset name $utf8name" >&5 +saved_CPPFLAGS=$CPPFLAGS +saved_LIBS=$LIBS +CPPFLAGS="$CPPFLAGS $ICONVINC" +LIBS="$LIBS $ICONVLIB" +if test "$cross_compiling" = yes; then + utf8_name_valid=unknown +else + cat > conftest.$ac_ext < +#include +#include +#define UTF8_NAME "$utf8name" +#define ICONV_FAIL ((iconv_t)(-1)) +/* Check if the codeset name UTF8_NAME is valid by performing iconv_open(). */ +int main() { + int i; + /* list of codeset names likely to exist */ + static char *codeset[] = { + "ASCII", "ISO-8859-1", "ISO8859-1", "iso8859_1", "8859-1", + "Shift_JIS", "SJIS", "sjis", NULL, + }; + + /* First try null conversion. */ + if (iconv_open(UTF8_NAME, UTF8_NAME) != ICONV_FAIL) return 0; + + /* Unfortunately, above check fails on certain systems, such as Solaris. */ + for (i = 0; codeset[i] != NULL; i++) { + if (iconv_open(UTF8_NAME, codeset[i]) != ICONV_FAIL) return 0; + } + return 1; +} + +EOF +if { (eval echo configure:3410: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +then + utf8_name_valid=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -fr conftest* + utf8_name_valid=no +fi +rm -fr conftest* +fi + +LIBS=$saved_LIBS +CPPFLAGS=$saved_CPPFLAGS +echo "$ac_t""$utf8_name_valid" 1>&6 + trap '' 1 2 15 cat > confcache <<\EOF @@ -3010,6 +3573,7 @@ s%@host_cpu@%$host_cpu%g s%@host_vendor@%$host_vendor%g s%@host_os@%$host_os%g s%@logdir@%$logdir%g +s%@ICONVINC@%$ICONVINC%g s%@ICONVLIB@%$ICONVLIB%g s%@ICONVSOFILE@%$ICONVSOFILE%g s%@CONF_PREFERENCE@%$CONF_PREFERENCE%g @@ -3031,6 +3595,7 @@ s%@LN_S@%$LN_S%g s%@LIBTOOL@%$LIBTOOL%g s%@CPP@%$CPP%g s%@LIBDL@%$LIBDL%g +s%@RUNMDN_SUBDIR@%$RUNMDN_SUBDIR%g CEOF EOF @@ -3261,3 +3826,23 @@ chmod +x $CONFIG_STATUS rm -fr confdefs* $ac_clean_files test "$no_create" = yes || ${CONFIG_SHELL-/bin/sh} $CONFIG_STATUS || exit 1 + + +if test "$ac_cv_flavor_gethostbyaddr" = unknown ; then + echo + echo "NOTICE: runmdn command will not be built, since parameter type" + echo " list of gethostbyaddr() is unknown to configure." +fi +if test "$ac_cv_flavor_getnameinfo" = unknown ; then + echo + echo "NOTICE: runmdn command will not be built, since parameter type" + echo " list of getnameinfo() is unknown to configure." +fi +if test "$utf8_name_valid" = no ; then + echo + echo "WARNING: It seems that iconv does not accept codeset name $utf8name," + echo " which is supposed to refer to UTF-8 encoding." + echo " Please make sure it is indeed correct." +fi + + diff --git a/contrib/idn/mdnkit/configure.in b/contrib/idn/mdnkit/configure.in index b767c21d0c9..ec4c02af2ff 100644 --- a/contrib/idn/mdnkit/configure.in +++ b/contrib/idn/mdnkit/configure.in @@ -1,4 +1,4 @@ -dnl $Id: configure.in,v 1.47 2001/05/18 04:02:29 ishisone Exp $ +dnl $Id: configure.in,v 1.1 2002/01/02 02:46:23 marka Exp $ dnl Process this file with autoconf to produce a configure script. dnl dnl Copyright (c) 2000 Japan Network Information Center. All rights reserved. @@ -9,8 +9,8 @@ dnl LICENSE TERMS AND CONDITIONS dnl dnl The following License Terms and Conditions apply, unless a different dnl license is obtained from Japan Network Information Center ("JPNIC"), -dnl a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, -dnl Tokyo, Japan. +dnl a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, +dnl Chiyoda-ku, Tokyo 101-0047, Japan. dnl dnl 1. Use, Modification and Redistribution (including distribution of any dnl modified or derived work) in source and/or binary forms is permitted @@ -61,6 +61,16 @@ AC_INIT(include/mdn/converter.h) AC_CANONICAL_HOST +debug=no +AC_ARG_ENABLE(debug, +[ --enable-debug enable debug codes [default=no]], + debug=$enableval) +case "$enableval" in +yes) + CFLAGS="$CFLAGS -DDEBUG" + ;; +esac + logdir=no AC_ARG_WITH(logdir, [ --with-logdir=DIR mdnsproxy's log files are in DIR. @@ -98,6 +108,7 @@ AC_ARG_WITH(utf8, utf8name=$withval) case "$utf8name" in no) + utf8name=UTF-8 ;; yes) AC_MSG_ERROR([You must specify NAME to --with-utf8 option.]) @@ -117,12 +128,76 @@ AC_ACE_SIGNATURE(AltDUDE, [a---], []) AC_ACE_SIGNATURE(AMC-ACE-M, [], [-amc1]) AC_ACE_SIGNATURE(AMC-ACE-O, [], [-amc2]) AC_ACE_PREFIX(AMC-ACE-R, [amc3-]) +AC_ACE_PREFIX(AMC-ACE-V, [amc4-]) +AC_ACE_PREFIX(AMC-ACE-W, [amc5-]) +AC_ACE_PREFIX(AMC-ACE-Z, [zq--]) +AC_ACE_PREFIX(MACE, [mq--]) -iconv=no +ICONVINC= +ICONVLIB= + +libiconv=unspec +AC_ARG_WITH(libiconv, +[ --with-libiconv=IPREFIX GNU libiconv are installed in IPREFIX [PREFIX]], + libiconv=$withval) +case "$libiconv" in +unspec) + ;; +no) + ICONVINC= + ICONVLIB= + ;; +yes) + if test X$prefix = XNONE ; then + libiconv=$ac_default_prefix + else + libiconv=$prefix + fi + ICONVINC="-I$libiconv/include" + ICONVLIB="-L$libiconv/lib -R$libiconv/lib -liconv" + ;; +*) + ICONVINC="-I$libiconv/include" + ICONVLIB="-L$libiconv/lib -R$libiconv/lib -liconv" + ;; +esac + +iconv_include=unspec +AC_ARG_WITH(iconv-include, +[ --with-iconv-include=DIR iconv include files are in DIR []], + iconv_include=$withval) +case "$iconv_include" in +unspec) + ;; +no) + ICONVINC= + ;; +yes) + AC_MSG_WARN([You must supply DIR to --with-iconv-include option. + Ignored.]) + ICONVINC= + ;; +*) + ICONVINC="-I$iconv_include" + ;; +esac + +if test "X$ICONVINC" != X ; then + iconv_include="`echo X$ICONVINC | sed -e 's/^X-I//'`" + if test ! -f "$iconv_include/iconv.h" ; then + AC_MSG_ERROR([iconv.h doesn't exist in $iconv_include]) + fi +fi + +AC_SUBST(ICONVINC) + +iconv=unspec AC_ARG_WITH(iconv, [ --with-iconv=LIB special library for iconv []], iconv=$withval) case "$iconv" in +unspec) + ;; no) ICONVLIB= ;; @@ -138,7 +213,7 @@ esac AC_SUBST(ICONVLIB) AC_ARG_WITH(iconv-sofile, -[ --with-iconv-sofile=PATH shared library file for libiconv []], +[ --with-iconv-sofile=PATH shared library file for libiconv []], iconv_file=$withval, iconv_file=guess) ICONVSOFILE= case "$iconv_file" in @@ -242,7 +317,17 @@ case "$host" in PRELOAD_VAR="_RLD_LIST" PRELOAD_LAST=":DEFAULT" ;; +*-netbsd*) + if test -x /usr/bin/file -a -x /usr/bin/grep ; then + case "`/usr/bin/file /usr/bin/grep`" in + *ELF*) + PRELOAD_SEP=" " + ;; + esac + fi + ;; esac + AC_SUBST(PRELOAD_VAR) AC_SUBST(PRELOAD_SEP) AC_SUBST(PRELOAD_LAST) @@ -257,6 +342,11 @@ AC_CHECK_HEADERS(unistd.h locale.h langinfo.h resolv.h) AC_CHECK_HEADERS(sys/select.h arpa/nameser.h) AC_CHECK_HEADERS(dlfcn.h) +saved_CPPFLAGS=$CPPFLAGS +CPPFLAGS="$CPPFLAGS $ICONVINC" +AC_CHECK_HEADER(iconv.h, , [AC_MSG_ERROR([iconv.h doesn't exist])]) +CPPFLAGS=$saved_CPPFLAGS + dnl Checks for data types. AC_TYPE_UID_T dnl for dnsproxy. @@ -268,7 +358,7 @@ AC_CHECK_LIB(nsl, inet_addr) AC_CHECK_LIB(dl, dlopen, [ LIBS="-ldl $LIBS" LIBDL="-ldl" - AC_DEFINE(HAVE_LIBDL, 1) + AC_DEFINE(HAVE_LIBDL, 1, [Define if you have the dl library (-ldl).]) AC_SUBST(LIBDL) ]) @@ -282,9 +372,27 @@ AC_CHECK_FUNCS(dlopen dlsym) dnl Checks the flavor of gethostbyaddr* functions. AC_CACHE_CHECK(flavor of gethostbyaddr, ac_cv_flavor_gethostbyaddr, -[AC_TRY_RUN( +[ac_cv_flavor_gethostbyaddr=unknown +AC_TRY_RUN( +[ +#include +#include +#include +#include +struct hostent *gethostbyaddr(const void *addr, socklen_t len, int type) { + return NULL; +} +int main() { + (void)gethostbyaddr(NULL, 0, 0); + return 0; +} +], ac_cv_flavor_gethostbyaddr=glibc2_2,, + ac_cv_flavor_gethostbyaddr=unknown) +AC_TRY_RUN( [ #include +#include +#include #include struct hostent *gethostbyaddr(const char *addr, size_t len, int type) { return NULL; @@ -293,15 +401,169 @@ int main() { (void)gethostbyaddr(NULL, 0, 0); return 0; } -], - ac_cv_flavor_gethostbyaddr=standard, - ac_cv_flavor_gethostbyaddr=traditional, - ac_cv_flavor_gethostbyaddr=traditional)]) -if test "$ac_cv_flavor_gethostbyaddr" = "standard"; then - AC_DEFINE(GHBA_ADDRLEN_T, size_t) -else - AC_DEFINE(GHBA_ADDRLEN_T, int) +], ac_cv_flavor_gethostbyaddr=glibc,, + ac_cv_flavor_gethostbyaddr=unknown) +AC_TRY_RUN( +[ +#include +#include +#include +#include +struct hostent *gethostbyaddr(const char *addr, int len, int type) { + return NULL; +} +int main() { + (void)gethostbyaddr(NULL, 0, 0); + return 0; +} +], ac_cv_flavor_gethostbyaddr=traditional,, + ac_cv_flavor_gethostbyaddr=unknown) +if test "$ac_cv_func_gethostbyaddr" = no ; then + ac_cv_flavor_gethostbyaddr=none +fi]) + +case "$ac_cv_flavor_gethostbyaddr" in +glibc2_2) + ac_cv_type_ghba_addr_t='const void *' + ac_cv_type_ghba_addrlen_t='socklen_t' + ;; +glibc) + ac_cv_type_ghba_addr_t='const char *' + ac_cv_type_ghba_addrlen_t='size_t' + ;; +traditional | none) + ac_cv_type_ghba_addr_t='const char *' + ac_cv_type_ghba_addrlen_t='int' + ;; +*) + AC_MSG_WARN([runmdn command will not be built.]) + ;; +esac +AC_DEFINE_UNQUOTED(GHBA_ADDR_T, $ac_cv_type_ghba_addr_t, + [Define as the type of the 1st argument of gethostbyaddr.]) +AC_DEFINE_UNQUOTED(GHBA_ADDRLEN_T, $ac_cv_type_ghba_addrlen_t, + [Define as the type of the 2nd argument of gethostbyaddr.]) + +dnl Checks the flavor of getnameinfo functions. +AC_CACHE_CHECK(flavor of getnameinfo, ac_cv_flavor_getnameinfo, +[ac_cv_flavor_getnameinfo=unknown +AC_TRY_RUN( +[ +#include +#include +#include +#include +int getnameinfo(const struct sockaddr *sa, socklen_t salen, char *host, + socklen_t hostlen, char *serv, socklen_t servlen, + unsigned int flags) { + return NULL; +} +int main() { + (void)getnameinfo(NULL, 0, NULL, 0, NULL, 0, 0); + return 0; +} +], ac_cv_flavor_getnameinfo=glibc2_2_2,, + ac_cv_flavor_getnameinfo=unknown) +AC_TRY_RUN( +[ +#include +#include +#include +#include +int getnameinfo(const struct sockaddr *sa, socklen_t salen, char *host, + socklen_t hostlen, char *serv, socklen_t servlen, int flags) { + return NULL; +} +int main() { + (void)getnameinfo(NULL, 0, NULL, 0, NULL, 0, 0); + return 0; +} +], ac_cv_flavor_getnameinfo=rfc2553bis_03,, + ac_cv_flavor_getnameinfo=unknown) +AC_TRY_RUN( +[ +#include +#include +#include +#include +int getnameinfo(const struct sockaddr *sa, socklen_t salen, char *host, + size_t hostlen, char *serv, size_t servlen, int flags) { + return NULL; +} +int main() { + (void)getnameinfo(NULL, 0, NULL, 0, NULL, 0, 0); + return 0; +} +], ac_cv_flavor_getnameinfo=rfc2553,, + ac_cv_flavor_getnameinfo=unknown) +AC_TRY_RUN( +[ +#include +#include +#include +#include +int getnameinfo(const struct sockaddr *sa, size_t salen, char *host, + size_t hostlen, char *serv, size_t servlen, int flags) { + return NULL; +} +int main() { + (void)getnameinfo(NULL, 0, NULL, 0, NULL, 0, 0); + return 0; +} +], ac_cv_flavor_getnameinfo=rfc2133,, + ac_cv_flavor_getnameinfo=unknown) +if test "$ac_cv_func_getnameinfo" = no ; then + ac_cv_flavor_getnameinfo=none +fi]) + +case "$ac_cv_flavor_getnameinfo" in +glibc2_2_2) + ac_cv_type_gni_salen_t='socklen_t' + ac_cv_type_gni_hostlen_t='socklen_t' + ac_cv_type_gni_servlen_t='socklen_t' + ac_cv_type_gni_flags_t='unsigned int' + ;; +rfc2553bis_03) + ac_cv_type_gni_salen_t='socklen_t' + ac_cv_type_gni_hostlen_t='socklen_t' + ac_cv_type_gni_servlen_t='socklen_t' + ac_cv_type_gni_flags_t='int' + ;; +rfc2553) + ac_cv_type_gni_salen_t='socklen_t' + ac_cv_type_gni_hostlen_t='size_t' + ac_cv_type_gni_servlen_t='size_t' + ac_cv_type_gni_flags_t='int' + ;; +rfc2133 | none) + ac_cv_type_gni_salen_t='size_t' + ac_cv_type_gni_hostlen_t='size_t' + ac_cv_type_gni_servlen_t='size_t' + ac_cv_type_gni_flags_t='int' + ;; +*) + AC_MSG_WARN([runmdn command will not be built.]) + ;; +esac +AC_SUBST(RUNMDN_SUBDIR) +AC_DEFINE_UNQUOTED(GNI_SALEN_T, $ac_cv_type_gni_salen_t, + [Define as the type of the 2nd argument of getnameinfo.]) +AC_DEFINE_UNQUOTED(GNI_HOSTLEN_T, $ac_cv_type_gni_hostlen_t, + [Define as the type of the 4th argument of getnameinfo.]) +AC_DEFINE_UNQUOTED(GNI_SERVLEN_T, $ac_cv_type_gni_servlen_t, + [Define as the type of the 6th argument of getnameinfo.]) +AC_DEFINE_UNQUOTED(GNI_FLAGS_T, $ac_cv_type_gni_flags_t, + [Define as the type of the 7th argument of getnameinfo.]) + +dnl Check whether building runmdn or not. +RUNMDN_SUBDIR=runmdn +if test "$ac_cv_flavor_gethostbyaddr" = unknown ; then + RUNMDN_SUBDIR= fi +if test "$ac_cv_flavor_getnameinfo" = unknown ; then + RUNMDN_SUBDIR= +fi +AC_SUBST(RUNMDN_SUBDIR) dnl Checks the flavor of gethost*_r functions. if test "$find_gethost_r" = yes; then @@ -309,8 +571,11 @@ if test "$find_gethost_r" = yes; then [AC_TRY_RUN( changequote(<<, >>)dnl << -#include +#include +#include +#include #include +#include int main() { int err = 0; @@ -329,7 +594,8 @@ changequote([, ])dnl ac_cv_flavor_gethost_r=sun, ac_cv_flavor_gethost_r=sun)]) if test "$ac_cv_flavor_gethost_r" = "glibc"; then - AC_DEFINE(GETHOST_R_GLIBC_FLAVOR) + AC_DEFINE(GETHOST_R_GLIBC_FLAVOR, 1, + [Define if the prototype of gethost*_r is glibc flavor.]) fi fi @@ -339,7 +605,9 @@ AC_FIND_SYSTEM_SHOBJ(libnsl) dnl Checks for iconv library. AC_MSG_CHECKING(for iconv) +saved_CPPFLAGS=$CPPFLAGS saved_LIBS=$LIBS +CPPFLAGS="$CPPFLAGS $ICONVINC" LIBS="$LIBS $ICONVLIB" AC_TRY_LINK([ #include @@ -348,11 +616,47 @@ AC_TRY_LINK([ i = iconv_open("ISO-8859-1", "UTF-8"); ], [iconv_try_link=yes], [iconv_try_link=no]) LIBS=$saved_LIBS +CPPFLAGS=$saved_CPPFLAGS AC_MSG_RESULT($iconv_try_link) if test "$iconv_try_link" = no ; then AC_MSG_ERROR(iconv function not available) fi +dnl Check for codeset name for UTF-8. +AC_MSG_CHECKING([for codeset name $utf8name]) +saved_CPPFLAGS=$CPPFLAGS +saved_LIBS=$LIBS +CPPFLAGS="$CPPFLAGS $ICONVINC" +LIBS="$LIBS $ICONVLIB" +AC_TRY_RUN([ +#include +#include +#include +#define UTF8_NAME "$utf8name" +#define ICONV_FAIL ((iconv_t)(-1)) +/* Check if the codeset name UTF8_NAME is valid by performing iconv_open(). */ +int main() { + int i; + /* list of codeset names likely to exist */ + static char *codeset[] = { + "ASCII", "ISO-8859-1", "ISO8859-1", "iso8859_1", "8859-1", + "Shift_JIS", "SJIS", "sjis", NULL, + }; + + /* First try null conversion. */ + if (iconv_open(UTF8_NAME, UTF8_NAME) != ICONV_FAIL) return 0; + + /* Unfortunately, above check fails on certain systems, such as Solaris. */ + for (i = 0; codeset[i] != NULL; i++) { + if (iconv_open(UTF8_NAME, codeset[i]) != ICONV_FAIL) return 0; + } + return 1; +} +], utf8_name_valid=yes, utf8_name_valid=no, utf8_name_valid=unknown) +LIBS=$saved_LIBS +CPPFLAGS=$saved_CPPFLAGS +AC_MSG_RESULT($utf8_name_valid) + dnl Output. AC_CONFIG_HEADER(include/config.h) AC_OUTPUT( @@ -368,3 +672,21 @@ AC_OUTPUT( tools/runmdn/runmdn map/Makefile ) +AC_OUTPUT_COMMANDS([ +if test "$ac_cv_flavor_gethostbyaddr" = unknown ; then + echo + echo "NOTICE: runmdn command will not be built, since parameter type" + echo " list of gethostbyaddr() is unknown to configure." +fi +if test "$ac_cv_flavor_getnameinfo" = unknown ; then + echo + echo "NOTICE: runmdn command will not be built, since parameter type" + echo " list of getnameinfo() is unknown to configure." +fi +if test "$utf8_name_valid" = no ; then + echo + echo "WARNING: It seems that iconv does not accept codeset name $utf8name," + echo " which is supposed to refer to UTF-8 encoding." + echo " Please make sure it is indeed correct." +fi +]) diff --git a/contrib/idn/mdnkit/include/Makefile.in b/contrib/idn/mdnkit/include/Makefile.in index b0a953af9e0..9dcf84268b7 100644 --- a/contrib/idn/mdnkit/include/Makefile.in +++ b/contrib/idn/mdnkit/include/Makefile.in @@ -1,4 +1,4 @@ -# $Id: Makefile.in,v 1.2 2001/03/28 02:12:35 m-kasahr Exp $ +# $Id: Makefile.in,v 1.1 2002/01/02 02:46:25 marka Exp $ # Copyright (c) 2000 Japan Network Information Center. All rights reserved. # # By using this file, you agree to the terms and conditions set forth bellow. @@ -7,8 +7,8 @@ # # The following License Terms and Conditions apply, unless a different # license is obtained from Japan Network Information Center ("JPNIC"), -# a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, -# Tokyo, Japan. +# a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, +# Chiyoda-ku, Tokyo 101-0047, Japan. # # 1. Use, Modification and Redistribution (including distribution of any # modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/include/config.h.in b/contrib/idn/mdnkit/include/config.h.in index 2fb964ebd2a..f8fd4795ead 100644 --- a/contrib/idn/mdnkit/include/config.h.in +++ b/contrib/idn/mdnkit/include/config.h.in @@ -1,5 +1,5 @@ /* include/config.h.in. Generated automatically from configure.in by autoheader. */ -/* $Id: config.h.in,v 1.30 2001/04/25 06:26:18 m-kasahr Exp $ */ +/* $Id: config.h.in,v 1.1 2002/01/02 02:46:25 marka Exp $ */ /* * Copyright (c) 2000 Japan Network Information Center. All rights reserved. * @@ -9,8 +9,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted @@ -70,12 +70,6 @@ /* Define as an appropriate type (ex. int) if your system doesn't have. */ #undef BOOL -/* Define if the prototype of gethost*_r is glibc flavor. */ -#undef GETHOST_R_GLIBC_FLAVOR - -/* Define as the type of the 2nd argument of gethostbyaddr. */ -#undef GHBA_ADDRLEN_T - /* Define if you have the bcopy function. */ #undef HAVE_BCOPY @@ -160,9 +154,6 @@ /* Define if you have the header file. */ #undef HAVE_UNISTD_H -/* Define if you have the dl library (-ldl). */ -#undef HAVE_LIBDL - /* Define if you have the nsl library (-lnsl). */ #undef HAVE_LIBNSL @@ -211,6 +202,42 @@ /* Define if the prefix of AMC-ACE-R encoding differs from 'amc3-'. */ #undef MDN_AMCACER_PREFIX +/* Define if the prefix of AMC-ACE-V encoding differs from 'amc4-'. */ +#undef MDN_AMCACEV_PREFIX + +/* Define if the prefix of AMC-ACE-W encoding differs from 'amc5-'. */ +#undef MDN_AMCACEW_PREFIX + +/* Define if the prefix of AMC-ACE-Z encoding differs from 'zq--'. */ +#undef MDN_AMCACEZ_PREFIX + +/* Define if the prefix of MACE encoding differs from 'mq--'. */ +#undef MDN_MACE_PREFIX + +/* Define if you have the dl library (-ldl). */ +#undef HAVE_LIBDL + +/* Define as the type of the 1st argument of gethostbyaddr. */ +#undef GHBA_ADDR_T + +/* Define as the type of the 2nd argument of gethostbyaddr. */ +#undef GHBA_ADDRLEN_T + +/* Define as the type of the 2nd argument of getnameinfo. */ +#undef GNI_SALEN_T + +/* Define as the type of the 4th argument of getnameinfo. */ +#undef GNI_HOSTLEN_T + +/* Define as the type of the 6th argument of getnameinfo. */ +#undef GNI_SERVLEN_T + +/* Define as the type of the 7th argument of getnameinfo. */ +#undef GNI_FLAGS_T + +/* Define if the prototype of gethost*_r is glibc flavor. */ +#undef GETHOST_R_GLIBC_FLAVOR + /* Define as the pathname of the shared libc object if your system has one. */ #undef SOPATH_LIBC diff --git a/contrib/idn/mdnkit/include/config.h.win b/contrib/idn/mdnkit/include/config.h.win index 1e18141540a..b1ead9e328c 100644 --- a/contrib/idn/mdnkit/include/config.h.win +++ b/contrib/idn/mdnkit/include/config.h.win @@ -1,4 +1,4 @@ -/* $Id: config.h.win,v 1.3 2000/08/07 08:20:40 ishisone Exp $ */ +/* $Id: config.h.win,v 1.1 2002/01/02 02:46:26 marka Exp $ */ /* * Copyright (c) 2000 Japan Network Information Center. All rights reserved. * @@ -8,8 +8,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/include/mdn/Makefile.in b/contrib/idn/mdnkit/include/mdn/Makefile.in index 0e1ab9f8837..588bea12f70 100644 --- a/contrib/idn/mdnkit/include/mdn/Makefile.in +++ b/contrib/idn/mdnkit/include/mdn/Makefile.in @@ -1,4 +1,4 @@ -# $Id: Makefile.in,v 1.21 2001/04/16 06:20:25 m-kasahr Exp $ +# $Id: Makefile.in,v 1.1 2002/01/02 02:46:26 marka Exp $ # Copyright (c) 2000 Japan Network Information Center. All rights reserved. # # By using this file, you agree to the terms and conditions set forth bellow. @@ -7,8 +7,8 @@ # # The following License Terms and Conditions apply, unless a different # license is obtained from Japan Network Information Center ("JPNIC"), -# a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, -# Tokyo, Japan. +# a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, +# Chiyoda-ku, Tokyo 101-0047, Japan. # # 1. Use, Modification and Redistribution (including distribution of any # modified or derived work) in source and/or binary forms is permitted @@ -76,6 +76,9 @@ HDRS = \ amcacem.h \ amcaceo.h \ amcacer.h \ + amcacev.h \ + amcacew.h \ + amcacez.h \ api.h \ assert.h \ brace.h \ @@ -91,6 +94,7 @@ HDRS = \ localencoding.h \ log.h \ logmacro.h \ + mace.h \ mapper.h \ mapselector.h \ msgheader.h \ diff --git a/contrib/idn/mdnkit/include/mdn/ace.h b/contrib/idn/mdnkit/include/mdn/ace.h index 9d18e8c9279..7c542217283 100644 --- a/contrib/idn/mdnkit/include/mdn/ace.h +++ b/contrib/idn/mdnkit/include/mdn/ace.h @@ -1,4 +1,4 @@ -/* $Id: ace.h,v 1.1 2001/06/09 00:29:55 tale Exp $ */ +/* $Id: ace.h,v 1.2 2002/02/08 05:38:53 marka Exp $ */ /* * Copyright (c) 2001 Japan Network Information Center. All rights reserved. * @@ -8,8 +8,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/include/mdn/altdude.h b/contrib/idn/mdnkit/include/mdn/altdude.h index 9dd523a7add..12fe9444b93 100644 --- a/contrib/idn/mdnkit/include/mdn/altdude.h +++ b/contrib/idn/mdnkit/include/mdn/altdude.h @@ -1,4 +1,4 @@ -/* $Id: altdude.h,v 1.1 2001/06/09 00:29:55 tale Exp $ */ +/* $Id: altdude.h,v 1.2 2002/02/08 05:38:55 marka Exp $ */ /* * Copyright (c) 2000,2001 Japan Network Information Center. * All rights reserved. @@ -9,8 +9,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/include/mdn/amcacem.h b/contrib/idn/mdnkit/include/mdn/amcacem.h index 828c41d15c2..cb54ab8ca29 100644 --- a/contrib/idn/mdnkit/include/mdn/amcacem.h +++ b/contrib/idn/mdnkit/include/mdn/amcacem.h @@ -1,4 +1,4 @@ -/* $Id: amcacem.h,v 1.1 2001/06/09 00:29:55 tale Exp $ */ +/* $Id: amcacem.h,v 1.2 2002/02/08 05:38:56 marka Exp $ */ /* * Copyright (c) 2001 Japan Network Information Center. All rights reserved. * @@ -8,8 +8,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/include/mdn/amcaceo.h b/contrib/idn/mdnkit/include/mdn/amcaceo.h index 157888ecd53..b4703945e07 100644 --- a/contrib/idn/mdnkit/include/mdn/amcaceo.h +++ b/contrib/idn/mdnkit/include/mdn/amcaceo.h @@ -1,4 +1,4 @@ -/* $Id: amcaceo.h,v 1.1 2001/06/09 00:29:55 tale Exp $ */ +/* $Id: amcaceo.h,v 1.2 2002/02/08 05:38:57 marka Exp $ */ /* * Copyright (c) 2001 Japan Network Information Center. All rights reserved. * @@ -8,8 +8,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/include/mdn/amcacer.h b/contrib/idn/mdnkit/include/mdn/amcacer.h index b42b2965c29..ffd5f899fa3 100644 --- a/contrib/idn/mdnkit/include/mdn/amcacer.h +++ b/contrib/idn/mdnkit/include/mdn/amcacer.h @@ -1,4 +1,4 @@ -/* $Id: amcacer.h,v 1.1 2001/06/09 00:29:55 tale Exp $ */ +/* $Id: amcacer.h,v 1.2 2002/02/08 05:38:58 marka Exp $ */ /* * Copyright (c) 2001 Japan Network Information Center. All rights reserved. * @@ -8,8 +8,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted @@ -63,8 +63,8 @@ /* * AMC-ACE-R Converter. * - * See Internet Draft draft-ietf-idn-amc-ace-r-00.txt (but not yet - * published at the time of this writing) for details. + * See Internet Draft draft-ietf-idn-amc-ace-r-01.txt for details. + * Note that -01 has some imcompatible changes over -00 spec. */ #include diff --git a/contrib/idn/mdnkit/include/mdn/amcacev.h b/contrib/idn/mdnkit/include/mdn/amcacev.h new file mode 100644 index 00000000000..569dd2e9c53 --- /dev/null +++ b/contrib/idn/mdnkit/include/mdn/amcacev.h @@ -0,0 +1,85 @@ +/* $Id: amcacev.h,v 1.1 2002/02/08 05:38:59 marka Exp $ */ +/* + * Copyright (c) 2001 Japan Network Information Center. All rights reserved. + * + * By using this file, you agree to the terms and conditions set forth bellow. + * + * LICENSE TERMS AND CONDITIONS + * + * The following License Terms and Conditions apply, unless a different + * license is obtained from Japan Network Information Center ("JPNIC"), + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. + * + * 1. Use, Modification and Redistribution (including distribution of any + * modified or derived work) in source and/or binary forms is permitted + * under this License Terms and Conditions. + * + * 2. Redistribution of source code must retain the copyright notices as they + * appear in each source code file, this License Terms and Conditions. + * + * 3. Redistribution in binary form must reproduce the Copyright Notice, + * this License Terms and Conditions, in the documentation and/or other + * materials provided with the distribution. For the purposes of binary + * distribution the "Copyright Notice" refers to the following language: + * "Copyright (c) Japan Network Information Center. All rights reserved." + * + * 4. Neither the name of JPNIC may be used to endorse or promote products + * derived from this Software without specific prior written approval of + * JPNIC. + * + * 5. Disclaimer/Limitation of Liability: THIS SOFTWARE IS PROVIDED BY JPNIC + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A + * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JPNIC BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + * + * 6. Indemnification by Licensee + * Any person or entities using and/or redistributing this Software under + * this License Terms and Conditions shall defend indemnify and hold + * harmless JPNIC from and against any and all judgements damages, + * expenses, settlement liabilities, cost and other liabilities of any + * kind as a result of use and redistribution of this Software or any + * claim, suite, action, litigation or proceeding by any third party + * arising out of or relates to this License Terms and Conditions. + * + * 7. Governing Law, Jurisdiction and Venue + * This License Terms and Conditions shall be governed by and and + * construed in accordance with the law of Japan. Any person or entities + * using and/or redistributing this Software under this License Terms and + * Conditions hereby agrees and consent to the personal and exclusive + * jurisdiction and venue of Tokyo District Court of Japan. + */ + +#ifndef MDN_AMCACEV_H +#define MDN_AMCACEV_H 1 + +/* + * AMC-ACE-V Converter. + * + * See Internet Draft draft-ietf-idn-amc-ace-v-00.txt for details. + */ + +#include +#include + +extern mdn_result_t +mdn__amcacev_open(mdn_converter_t ctx, mdn_converter_dir_t dir, + void **privdata); + +extern mdn_result_t +mdn__amcacev_close(mdn_converter_t ctx, void *privdata, + mdn_converter_dir_t dir); + +extern mdn_result_t +mdn__amcacev_convert(mdn_converter_t ctx, void *privdata, + mdn_converter_dir_t dir, const char *from, char *to, + size_t tolen); + +#endif /* MDN_AMCACEV_H */ diff --git a/contrib/idn/mdnkit/include/mdn/amcacew.h b/contrib/idn/mdnkit/include/mdn/amcacew.h new file mode 100644 index 00000000000..9d25c323331 --- /dev/null +++ b/contrib/idn/mdnkit/include/mdn/amcacew.h @@ -0,0 +1,85 @@ +/* $Id: amcacew.h,v 1.1 2002/02/08 05:39:00 marka Exp $ */ +/* + * Copyright (c) 2001 Japan Network Information Center. All rights reserved. + * + * By using this file, you agree to the terms and conditions set forth bellow. + * + * LICENSE TERMS AND CONDITIONS + * + * The following License Terms and Conditions apply, unless a different + * license is obtained from Japan Network Information Center ("JPNIC"), + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. + * + * 1. Use, Modification and Redistribution (including distribution of any + * modified or derived work) in source and/or binary forms is permitted + * under this License Terms and Conditions. + * + * 2. Redistribution of source code must retain the copyright notices as they + * appear in each source code file, this License Terms and Conditions. + * + * 3. Redistribution in binary form must reproduce the Copyright Notice, + * this License Terms and Conditions, in the documentation and/or other + * materials provided with the distribution. For the purposes of binary + * distribution the "Copyright Notice" refers to the following language: + * "Copyright (c) Japan Network Information Center. All rights reserved." + * + * 4. Neither the name of JPNIC may be used to endorse or promote products + * derived from this Software without specific prior written approval of + * JPNIC. + * + * 5. Disclaimer/Limitation of Liability: THIS SOFTWARE IS PROVIDED BY JPNIC + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A + * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JPNIC BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + * + * 6. Indemnification by Licensee + * Any person or entities using and/or redistributing this Software under + * this License Terms and Conditions shall defend indemnify and hold + * harmless JPNIC from and against any and all judgements damages, + * expenses, settlement liabilities, cost and other liabilities of any + * kind as a result of use and redistribution of this Software or any + * claim, suite, action, litigation or proceeding by any third party + * arising out of or relates to this License Terms and Conditions. + * + * 7. Governing Law, Jurisdiction and Venue + * This License Terms and Conditions shall be governed by and and + * construed in accordance with the law of Japan. Any person or entities + * using and/or redistributing this Software under this License Terms and + * Conditions hereby agrees and consent to the personal and exclusive + * jurisdiction and venue of Tokyo District Court of Japan. + */ + +#ifndef MDN_AMCACEW_H +#define MDN_AMCACEW_H 1 + +/* + * AMC-ACE-W Converter. + * + * See Internet Draft draft-ietf-idn-amc-ace-w-00.txt for details. + */ + +#include +#include + +extern mdn_result_t +mdn__amcacew_open(mdn_converter_t ctx, mdn_converter_dir_t dir, + void **privdata); + +extern mdn_result_t +mdn__amcacew_close(mdn_converter_t ctx, void *privdata, + mdn_converter_dir_t dir); + +extern mdn_result_t +mdn__amcacew_convert(mdn_converter_t ctx, void *privdata, + mdn_converter_dir_t dir, const char *from, char *to, + size_t tolen); + +#endif /* MDN_AMCACEW_H */ diff --git a/contrib/idn/mdnkit/include/mdn/amcacez.h b/contrib/idn/mdnkit/include/mdn/amcacez.h new file mode 100644 index 00000000000..6c8e10a578b --- /dev/null +++ b/contrib/idn/mdnkit/include/mdn/amcacez.h @@ -0,0 +1,86 @@ +/* $Id: amcacez.h,v 1.1 2002/02/08 05:39:00 marka Exp $ */ +/* + * Copyright (c) 2001 Japan Network Information Center. All rights reserved. + * + * By using this file, you agree to the terms and conditions set forth bellow. + * + * LICENSE TERMS AND CONDITIONS + * + * The following License Terms and Conditions apply, unless a different + * license is obtained from Japan Network Information Center ("JPNIC"), + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. + * + * 1. Use, Modification and Redistribution (including distribution of any + * modified or derived work) in source and/or binary forms is permitted + * under this License Terms and Conditions. + * + * 2. Redistribution of source code must retain the copyright notices as they + * appear in each source code file, this License Terms and Conditions. + * + * 3. Redistribution in binary form must reproduce the Copyright Notice, + * this License Terms and Conditions, in the documentation and/or other + * materials provided with the distribution. For the purposes of binary + * distribution the "Copyright Notice" refers to the following language: + * "Copyright (c) Japan Network Information Center. All rights reserved." + * + * 4. Neither the name of JPNIC may be used to endorse or promote products + * derived from this Software without specific prior written approval of + * JPNIC. + * + * 5. Disclaimer/Limitation of Liability: THIS SOFTWARE IS PROVIDED BY JPNIC + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A + * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JPNIC BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + * + * 6. Indemnification by Licensee + * Any person or entities using and/or redistributing this Software under + * this License Terms and Conditions shall defend indemnify and hold + * harmless JPNIC from and against any and all judgements damages, + * expenses, settlement liabilities, cost and other liabilities of any + * kind as a result of use and redistribution of this Software or any + * claim, suite, action, litigation or proceeding by any third party + * arising out of or relates to this License Terms and Conditions. + * + * 7. Governing Law, Jurisdiction and Venue + * This License Terms and Conditions shall be governed by and and + * construed in accordance with the law of Japan. Any person or entities + * using and/or redistributing this Software under this License Terms and + * Conditions hereby agrees and consent to the personal and exclusive + * jurisdiction and venue of Tokyo District Court of Japan. + */ + +#ifndef MDN_AMCACEZ_H +#define MDN_AMCACEZ_H 1 + +/* + * AMC-ACE-Z (version 0.3.1) Converter. + * + * See Internet Draft draft-ietf-idn-amc-ace-z-01.txt + * for details. + */ + +#include +#include + +extern mdn_result_t +mdn__amcacez_open(mdn_converter_t ctx, mdn_converter_dir_t dir, + void **privdata); + +extern mdn_result_t +mdn__amcacez_close(mdn_converter_t ctx, void *privdata, + mdn_converter_dir_t dir); + +extern mdn_result_t +mdn__amcacez_convert(mdn_converter_t ctx, void *privdata, + mdn_converter_dir_t dir, const char *from, char *to, + size_t tolen); + +#endif /* MDN_AMCACEZ_H */ diff --git a/contrib/idn/mdnkit/include/mdn/api.h b/contrib/idn/mdnkit/include/mdn/api.h index 4a6ee276a46..e9b0e9a62a1 100644 --- a/contrib/idn/mdnkit/include/mdn/api.h +++ b/contrib/idn/mdnkit/include/mdn/api.h @@ -1,4 +1,4 @@ -/* $Id: api.h,v 1.1 2001/06/09 00:29:55 tale Exp $ */ +/* $Id: api.h,v 1.2 2002/02/08 05:39:00 marka Exp $ */ /* * Copyright (c) 2001 Japan Network Information Center. All rights reserved. * @@ -8,8 +8,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted @@ -83,7 +83,7 @@ */ #define MDN_ENCODE_APP \ (MDN_LOCALCONV|MDN_DELIMMAP|MDN_LOCALMAP|MDN_NAMEPREP|MDN_IDNCONV) -#define MDN_DECODE_APP (MDN_IDNCONV|MDN_LOCALCONV) +#define MDN_DECODE_APP (MDN_IDNCONV|MDN_NAMEPREP|MDN_LOCALCONV) /* * Initialize the whole library, and load configuration from the default @@ -175,7 +175,10 @@ mdn_encodename(int actions, const char *from, char *to, size_t tolen); * a bitwise-or of the following flags: * * MDN_IDNCONV -- perform IDN encoding to UTF-8 conversion (step 1) - * MDN_LOCALCONV -- perform UTF-8 to local encoding conversion (step 2) + * MDN_NAMEPREP -- perform NAMEPREP for verification (step 2) + * MDN_UNASCHECK -- perform optional unassigned codepoint check for + * verification (also step 2) + * MDN_LOCALCONV -- perform UTF-8 to local encoding conversion (step 3) * * Note that if no flags are specified, 'mdn_decodename' does nothing * but copying the given name verbatim. @@ -215,6 +218,8 @@ mdn_decodename(int actions, const char *from, char *to, size_t tolen); mdn_decodename(MDN_IDNCONV, from, to, tolen) #define mdn_utf8tolocal(from, to, tolen) \ mdn_decodename(MDN_LOCALCONV, from, to, tolen) +#define mdn_nameprepcheck(from, to, tolen) \ + mdn_decodename(MDN_NAMEPREP, from, to, tolen) #define mdn_localtoidn(from, to, tolen) \ mdn_encodename(MDN_ENCODE_APP, from, to, tolen) diff --git a/contrib/idn/mdnkit/include/mdn/assert.h b/contrib/idn/mdnkit/include/mdn/assert.h index 6463f1664b3..656643e2548 100644 --- a/contrib/idn/mdnkit/include/mdn/assert.h +++ b/contrib/idn/mdnkit/include/mdn/assert.h @@ -1,4 +1,4 @@ -/* $Id: assert.h,v 1.5 2000/07/04 03:52:31 ishisone Exp $ */ +/* $Id: assert.h,v 1.1 2002/01/02 02:46:29 marka Exp $ */ /* * Copyright (c) 2000 Japan Network Information Center. All rights reserved. * @@ -8,8 +8,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/include/mdn/brace.h b/contrib/idn/mdnkit/include/mdn/brace.h index f562e8e1dcc..dac7a7f86a4 100644 --- a/contrib/idn/mdnkit/include/mdn/brace.h +++ b/contrib/idn/mdnkit/include/mdn/brace.h @@ -1,4 +1,4 @@ -/* $Id: brace.h,v 1.2 2001/02/26 09:32:25 m-kasahr Exp $ */ +/* $Id: brace.h,v 1.1 2002/01/02 02:46:29 marka Exp $ */ /* * Copyright (c) 2000 Japan Network Information Center. All rights reserved. * @@ -8,8 +8,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/include/mdn/checker.h b/contrib/idn/mdnkit/include/mdn/checker.h index 0efb436100c..070e9a6378c 100644 --- a/contrib/idn/mdnkit/include/mdn/checker.h +++ b/contrib/idn/mdnkit/include/mdn/checker.h @@ -1,4 +1,4 @@ -/* $Id: checker.h,v 1.1 2001/06/09 00:29:56 tale Exp $ */ +/* $Id: checker.h,v 1.2 2002/02/08 05:39:04 marka Exp $ */ /* * Copyright (c) 2001 Japan Network Information Center. All rights reserved. * @@ -8,8 +8,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/include/mdn/converter.h b/contrib/idn/mdnkit/include/mdn/converter.h index 6d62924524a..9d777de332e 100644 --- a/contrib/idn/mdnkit/include/mdn/converter.h +++ b/contrib/idn/mdnkit/include/mdn/converter.h @@ -1,4 +1,4 @@ -/* $Id: converter.h,v 1.15 2001/02/26 09:32:25 m-kasahr Exp $ */ +/* $Id: converter.h,v 1.1 2002/01/02 02:46:30 marka Exp $ */ /* * Copyright (c) 2000 Japan Network Information Center. All rights reserved. * @@ -8,8 +8,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted @@ -88,6 +88,13 @@ typedef enum { #define MDN_CONVERTER_DELAYEDOPEN 1 #define MDN_CONVERTER_RTCHECK 2 +/* + * Encoding types. + */ +#define MDN_NONACE 0 +#define MDN_ACE_STRICTCASE 1 +#define MDN_ACE_LOOSECASE 2 + /* * Initialize module. Must be called before any other calls of * the functions of this module. @@ -167,13 +174,23 @@ extern char * mdn_converter_localencoding(mdn_converter_t ctx); /* - * Return if this local encoding is a special one that a string in this - * encoding just looks like an ordinary ASCII string. - * A few types of encoding designed specially for domain name conversion - * (such as UTF-5) fall into this category. + * Return the encoding type of this local encoding. + * + * Returns: + * MDN_NOACE -- encoding is not ACE. + * MDN_ACE_STRICTCASE -- encoding is ACE. + * decoder of this ACE preserve letter case. + * MDN_ACE_LOOSECASE -- encoding type is ACE. + * decoder cannot preserve letter case. + */ +extern int +mdn_converter_encodingtype(mdn_converter_t ctx); + +/* + * Return if this local encoding is ACE (Ascii Compatible Encoding). * * Returns: - * 1 -- yes, it is special. + * 1 -- yes, it is ACE. * 0 -- no. */ extern int @@ -229,8 +246,7 @@ typedef mdn_result_t (*mdn_converter_convertproc_t)(mdn_converter_t ctx, /* * Register a new converter. - * 'ascii_compatible' is a boolean flag indicating this encoding is - * an `ascii-compatible encoding'. + * 'encoding_type' is a value which mdn_converter_encodingtype() returns. * * Returns: * mdn_success -- ok. @@ -241,6 +257,6 @@ mdn_converter_register(const char *name, mdn_converter_openproc_t open, mdn_converter_closeproc_t close, mdn_converter_convertproc_t convert, - int ascii_compatible); + int encoding_type); #endif /* MDN_CONVERTER_H */ diff --git a/contrib/idn/mdnkit/include/mdn/debug.h b/contrib/idn/mdnkit/include/mdn/debug.h index e043179be06..27469bc1188 100644 --- a/contrib/idn/mdnkit/include/mdn/debug.h +++ b/contrib/idn/mdnkit/include/mdn/debug.h @@ -1,4 +1,4 @@ -/* $Id: debug.h,v 1.7 2000/07/04 03:52:32 ishisone Exp $ */ +/* $Id: debug.h,v 1.1 2002/01/02 02:46:30 marka Exp $ */ /* * Copyright (c) 2000 Japan Network Information Center. All rights reserved. * @@ -8,8 +8,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/include/mdn/delimitermap.h b/contrib/idn/mdnkit/include/mdn/delimitermap.h index 9fef7611177..5a5719259f8 100644 --- a/contrib/idn/mdnkit/include/mdn/delimitermap.h +++ b/contrib/idn/mdnkit/include/mdn/delimitermap.h @@ -1,4 +1,4 @@ -/* $Id: delimitermap.h,v 1.1 2001/06/09 00:29:58 tale Exp $ */ +/* $Id: delimitermap.h,v 1.2 2002/02/08 05:39:07 marka Exp $ */ /* * Copyright (c) 2001 Japan Network Information Center. All rights reserved. * @@ -8,8 +8,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/include/mdn/dn.h b/contrib/idn/mdnkit/include/mdn/dn.h index b275b50b659..1b3df48a3c5 100644 --- a/contrib/idn/mdnkit/include/mdn/dn.h +++ b/contrib/idn/mdnkit/include/mdn/dn.h @@ -1,4 +1,4 @@ -/* $Id: dn.h,v 1.7 2000/08/02 02:06:40 ishisone Exp $ */ +/* $Id: dn.h,v 1.1 2002/01/02 02:46:30 marka Exp $ */ /* * Copyright (c) 2000 Japan Network Information Center. All rights reserved. * @@ -8,8 +8,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/include/mdn/dude.h b/contrib/idn/mdnkit/include/mdn/dude.h index aaa4aeb5fda..efba60a2040 100644 --- a/contrib/idn/mdnkit/include/mdn/dude.h +++ b/contrib/idn/mdnkit/include/mdn/dude.h @@ -1,4 +1,4 @@ -/* $Id: dude.h,v 1.1 2001/06/09 00:29:58 tale Exp $ */ +/* $Id: dude.h,v 1.2 2002/02/08 05:39:10 marka Exp $ */ /* * Copyright (c) 2000,2001 Japan Network Information Center. * All rights reserved. @@ -9,8 +9,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted @@ -64,9 +64,9 @@ /* * DUDE Converter. * - * See Internet Draft draft-ietf-idn-dude-01.txt for details. Note + * See Internet Draft draft-ietf-idn-dude-02.txt for details. Note * that this implementation does not support the optional feature of - * DUDE, which is "case preservation". Implementing this feature + * DUDE, which is "Mixed-case annotation". Implementing this feature * requires reimplementation of NAMEPREP process of libmdn. */ diff --git a/contrib/idn/mdnkit/include/mdn/filechecker.h b/contrib/idn/mdnkit/include/mdn/filechecker.h index 653c6aa7b57..cde4d1796cf 100644 --- a/contrib/idn/mdnkit/include/mdn/filechecker.h +++ b/contrib/idn/mdnkit/include/mdn/filechecker.h @@ -1,4 +1,4 @@ -/* $Id: filechecker.h,v 1.1 2001/06/09 00:29:58 tale Exp $ */ +/* $Id: filechecker.h,v 1.2 2002/02/08 05:39:11 marka Exp $ */ /* * Copyright (c) 2001 Japan Network Information Center. All rights reserved. * @@ -8,8 +8,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/include/mdn/filemapper.h b/contrib/idn/mdnkit/include/mdn/filemapper.h index 045d19181af..cc19be046b5 100644 --- a/contrib/idn/mdnkit/include/mdn/filemapper.h +++ b/contrib/idn/mdnkit/include/mdn/filemapper.h @@ -1,4 +1,4 @@ -/* $Id: filemapper.h,v 1.1 2001/06/09 00:29:58 tale Exp $ */ +/* $Id: filemapper.h,v 1.2 2002/02/08 05:39:12 marka Exp $ */ /* * Copyright (c) 2001 Japan Network Information Center. All rights reserved. * @@ -8,8 +8,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/include/mdn/lace.h b/contrib/idn/mdnkit/include/mdn/lace.h index 8f2a561439b..29f0e6ec029 100644 --- a/contrib/idn/mdnkit/include/mdn/lace.h +++ b/contrib/idn/mdnkit/include/mdn/lace.h @@ -1,4 +1,4 @@ -/* $Id: lace.h,v 1.2 2001/02/26 09:32:25 m-kasahr Exp $ */ +/* $Id: lace.h,v 1.1 2002/01/02 02:46:31 marka Exp $ */ /* * Copyright (c) 2000 Japan Network Information Center. All rights reserved. * @@ -8,8 +8,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/include/mdn/localencoding.h b/contrib/idn/mdnkit/include/mdn/localencoding.h index 3cefe4818a5..5e3d50a76c4 100644 --- a/contrib/idn/mdnkit/include/mdn/localencoding.h +++ b/contrib/idn/mdnkit/include/mdn/localencoding.h @@ -1,4 +1,4 @@ -/* $Id: localencoding.h,v 1.7 2000/08/02 02:06:40 ishisone Exp $ */ +/* $Id: localencoding.h,v 1.1 2002/01/02 02:46:31 marka Exp $ */ /* * Copyright (c) 2000 Japan Network Information Center. All rights reserved. * @@ -8,8 +8,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/include/mdn/log.h b/contrib/idn/mdnkit/include/mdn/log.h index 2360fcc94f4..53f232e9aa4 100644 --- a/contrib/idn/mdnkit/include/mdn/log.h +++ b/contrib/idn/mdnkit/include/mdn/log.h @@ -1,4 +1,4 @@ -/* $Id: log.h,v 1.9 2000/10/16 05:00:17 ishisone Exp $ */ +/* $Id: log.h,v 1.1 2002/01/02 02:46:31 marka Exp $ */ /* * Copyright (c) 2000 Japan Network Information Center. All rights reserved. * @@ -8,8 +8,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/include/mdn/logmacro.h b/contrib/idn/mdnkit/include/mdn/logmacro.h index df4385effca..9d862afd083 100644 --- a/contrib/idn/mdnkit/include/mdn/logmacro.h +++ b/contrib/idn/mdnkit/include/mdn/logmacro.h @@ -1,4 +1,4 @@ -/* $Id: logmacro.h,v 1.9 2000/09/20 02:47:29 ishisone Exp $ */ +/* $Id: logmacro.h,v 1.1 2002/01/02 02:46:32 marka Exp $ */ /* * Copyright (c) 2000 Japan Network Information Center. All rights reserved. * @@ -8,8 +8,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted @@ -65,16 +65,16 @@ #define FATAL(x) mdn_log_fatal x #define ERROR(x) mdn_log_error x #define WARNING(x) mdn_log_warning x -#define INFO(x) mdn_log_info x +#define INFO(x) LOG_AT_LEVEL(mdn_log_level_info, mdn_log_info, x) +#define TRACE(x) LOG_AT_LEVEL(mdn_log_level_trace, mdn_log_trace, x) #ifdef DEBUG -#define TRACE(x) mdn_log_trace x -#define DUMP(x) mdn_log_dump x +#define DUMP(x) LOG_AT_LEVEL(mdn_log_level_dump, mdn_log_dump, x) #else -#define TRACE(x) #define DUMP(x) #endif /* DEBUG */ +#define LOG_AT_LEVEL(lv, fun, x) do {if (LOGLEVEL >= (lv)) fun x; } while (0) #define LOGLEVEL mdn_log_getlevel() #endif /* MDN_LOGMACRO_H */ diff --git a/contrib/idn/mdnkit/include/mdn/mace.h b/contrib/idn/mdnkit/include/mdn/mace.h new file mode 100644 index 00000000000..f79d16a7d3f --- /dev/null +++ b/contrib/idn/mdnkit/include/mdn/mace.h @@ -0,0 +1,86 @@ +/* $Id: mace.h,v 1.1 2002/02/08 05:39:19 marka Exp $ */ +/* + * Copyright (c) 2001 Japan Network Information Center. All rights reserved. + * + * By using this file, you agree to the terms and conditions set forth bellow. + * + * LICENSE TERMS AND CONDITIONS + * + * The following License Terms and Conditions apply, unless a different + * license is obtained from Japan Network Information Center ("JPNIC"), + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. + * + * 1. Use, Modification and Redistribution (including distribution of any + * modified or derived work) in source and/or binary forms is permitted + * under this License Terms and Conditions. + * + * 2. Redistribution of source code must retain the copyright notices as they + * appear in each source code file, this License Terms and Conditions. + * + * 3. Redistribution in binary form must reproduce the Copyright Notice, + * this License Terms and Conditions, in the documentation and/or other + * materials provided with the distribution. For the purposes of binary + * distribution the "Copyright Notice" refers to the following language: + * "Copyright (c) Japan Network Information Center. All rights reserved." + * + * 4. Neither the name of JPNIC may be used to endorse or promote products + * derived from this Software without specific prior written approval of + * JPNIC. + * + * 5. Disclaimer/Limitation of Liability: THIS SOFTWARE IS PROVIDED BY JPNIC + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A + * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JPNIC BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + * + * 6. Indemnification by Licensee + * Any person or entities using and/or redistributing this Software under + * this License Terms and Conditions shall defend indemnify and hold + * harmless JPNIC from and against any and all judgements damages, + * expenses, settlement liabilities, cost and other liabilities of any + * kind as a result of use and redistribution of this Software or any + * claim, suite, action, litigation or proceeding by any third party + * arising out of or relates to this License Terms and Conditions. + * + * 7. Governing Law, Jurisdiction and Venue + * This License Terms and Conditions shall be governed by and and + * construed in accordance with the law of Japan. Any person or entities + * using and/or redistributing this Software under this License Terms and + * Conditions hereby agrees and consent to the personal and exclusive + * jurisdiction and venue of Tokyo District Court of Japan. + */ + +#ifndef MDN_MACE_H +#define MDN_MACE_H 1 + +/* + * MACE Converter. + * + * See Internet Draft draft-ietf-idn-mace-00.txt (but not yet + * published at the time of this writing) for details. + */ + +#include +#include + +extern mdn_result_t +mdn__mace_open(mdn_converter_t ctx, mdn_converter_dir_t dir, + void **privdata); + +extern mdn_result_t +mdn__mace_close(mdn_converter_t ctx, void *privdata, + mdn_converter_dir_t dir); + +extern mdn_result_t +mdn__mace_convert(mdn_converter_t ctx, void *privdata, + mdn_converter_dir_t dir, const char *from, char *to, + size_t tolen); + +#endif /* MDN_MACE_H */ diff --git a/contrib/idn/mdnkit/include/mdn/mapper.h b/contrib/idn/mdnkit/include/mdn/mapper.h index 16506b4d301..6e9e08f3196 100644 --- a/contrib/idn/mdnkit/include/mdn/mapper.h +++ b/contrib/idn/mdnkit/include/mdn/mapper.h @@ -1,4 +1,4 @@ -/* $Id: mapper.h,v 1.1 2001/06/09 00:29:59 tale Exp $ */ +/* $Id: mapper.h,v 1.2 2002/02/08 05:39:19 marka Exp $ */ /* * Copyright (c) 2001 Japan Network Information Center. All rights reserved. * @@ -8,8 +8,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/include/mdn/mapselector.h b/contrib/idn/mdnkit/include/mdn/mapselector.h index fc3e032befd..73701542300 100644 --- a/contrib/idn/mdnkit/include/mdn/mapselector.h +++ b/contrib/idn/mdnkit/include/mdn/mapselector.h @@ -1,4 +1,4 @@ -/* $Id: mapselector.h,v 1.1 2001/06/09 00:29:59 tale Exp $ */ +/* $Id: mapselector.h,v 1.2 2002/02/08 05:39:21 marka Exp $ */ /* * Copyright (c) 2001 Japan Network Information Center. All rights reserved. * @@ -8,8 +8,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/include/mdn/msgheader.h b/contrib/idn/mdnkit/include/mdn/msgheader.h index 1135970026b..8b6c8cab1f3 100644 --- a/contrib/idn/mdnkit/include/mdn/msgheader.h +++ b/contrib/idn/mdnkit/include/mdn/msgheader.h @@ -1,4 +1,4 @@ -/* $Id: msgheader.h,v 1.7 2000/08/02 02:06:40 ishisone Exp $ */ +/* $Id: msgheader.h,v 1.1 2002/01/02 02:46:33 marka Exp $ */ /* * Copyright (c) 2000 Japan Network Information Center. All rights reserved. * @@ -8,8 +8,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/include/mdn/msgtrans.h b/contrib/idn/mdnkit/include/mdn/msgtrans.h index 7f5167e7ee5..76370715824 100644 --- a/contrib/idn/mdnkit/include/mdn/msgtrans.h +++ b/contrib/idn/mdnkit/include/mdn/msgtrans.h @@ -1,4 +1,4 @@ -/* $Id: msgtrans.h,v 1.12 2001/02/15 01:15:25 ishisone Exp $ */ +/* $Id: msgtrans.h,v 1.1 2002/01/02 02:46:33 marka Exp $ */ /* * Copyright (c) 2000,2001 Japan Network Information Center. * All rights reserved. @@ -9,8 +9,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/include/mdn/nameprep.h b/contrib/idn/mdnkit/include/mdn/nameprep.h index 53f3961f360..1929dc25a02 100644 --- a/contrib/idn/mdnkit/include/mdn/nameprep.h +++ b/contrib/idn/mdnkit/include/mdn/nameprep.h @@ -1,4 +1,4 @@ -/* $Id: nameprep.h,v 1.1 2001/06/09 00:30:00 tale Exp $ */ +/* $Id: nameprep.h,v 1.2 2002/02/08 05:39:24 marka Exp $ */ /* * Copyright (c) 2001 Japan Network Information Center. All rights reserved. * @@ -8,8 +8,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/include/mdn/normalizer.h b/contrib/idn/mdnkit/include/mdn/normalizer.h index c1b7f80c487..6ac8c36a43a 100644 --- a/contrib/idn/mdnkit/include/mdn/normalizer.h +++ b/contrib/idn/mdnkit/include/mdn/normalizer.h @@ -1,4 +1,4 @@ -/* $Id: normalizer.h,v 1.13 2001/02/23 10:36:51 m-kasahr Exp $ */ +/* $Id: normalizer.h,v 1.1 2002/01/02 02:46:33 marka Exp $ */ /* * Copyright (c) 2000 Japan Network Information Center. All rights reserved. * @@ -8,8 +8,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/include/mdn/race.h b/contrib/idn/mdnkit/include/mdn/race.h index cb885ff69a8..2fa679a7c45 100644 --- a/contrib/idn/mdnkit/include/mdn/race.h +++ b/contrib/idn/mdnkit/include/mdn/race.h @@ -1,4 +1,4 @@ -/* $Id: race.h,v 1.9 2001/02/26 09:32:25 m-kasahr Exp $ */ +/* $Id: race.h,v 1.1 2002/01/02 02:46:33 marka Exp $ */ /* * Copyright (c) 2000 Japan Network Information Center. All rights reserved. * @@ -8,8 +8,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/include/mdn/res.h b/contrib/idn/mdnkit/include/mdn/res.h index 4d47505aca6..986def00eb8 100644 --- a/contrib/idn/mdnkit/include/mdn/res.h +++ b/contrib/idn/mdnkit/include/mdn/res.h @@ -1,4 +1,4 @@ -/* $Id: res.h,v 1.7 2001/04/11 08:16:07 m-kasahr Exp $ */ +/* $Id: res.h,v 1.1 2002/01/02 02:46:34 marka Exp $ */ /* * Copyright (c) 2000 Japan Network Information Center. All rights reserved. * @@ -8,8 +8,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted @@ -80,9 +80,9 @@ * Convert and check the string. * * This function converts the string `from' to `to', checks `from' or - * combination of them, using `actions'. + * combination of them, using `insn'. * - * `actions' is a sequence of characters as follows: + * `insn' is a sequence of characters as follows: * * l convert the local codeset string to UTF-8. * L convert the UTF-8 string to the local codeset. @@ -97,28 +97,33 @@ * codepoint. * I convert the UTF-8 string to ACE. * i convert the ACE string to UTF-8. - * a convert the alternative encoded ACE sting to UTF-8. - * A convert the UTF-8 string to alternative ACE encoding. + * !m inspect if nameprep mapping has been performed to the + * string. If hasn't, convert the string to ACE. + * !n inspect if nameprep normalizaion has been performed + * to the string. If hasn't, convert the string to ACE. + * !p search the string for nameprep prohibited character. + * If found, convert the string to ACE. + * !N equivalent to "!m!n!p". + * !u search the string for nameprep unassigned codepoint. + * If found, convert the string to ACE. * * Returns: * mdn_success -- ok. * mdn_buffer_overflow -- output buffer is too small. * mdn_invalid_encoding -- input string has invalid byte sequence. * mdn_invalid_name -- local encoding (codeset) name is invalid. - * mdn_invalid_action -- `actions' contains invalid action. + * mdn_invalid_action -- `insn' contains invalid action. * mdn_invalid_nomemory -- out of memory. * mdn_invalid_nomapping -- no mapping to output codeset. * mdn_prohibited -- input string has a prohibited character. - * mdn_failuer -- other failure. + * mdn_failure -- other failure. */ extern mdn_result_t -mdn_res_nameconv(mdn_resconf_t ctx, const char *actions, const char *from, +mdn_res_nameconv(mdn_resconf_t ctx, const char *insn, const char *from, char *to, size_t tolen); /* * Convert the local codeset string to UTF-8. - * equivalent to: - * mdn_res_nameconv(ctx, "l", from, to, tolen); */ extern mdn_result_t mdn_res_localtoucs(mdn_resconf_t ctx, const char *from, char *to, @@ -129,8 +134,6 @@ mdn_res_localtoucs(mdn_resconf_t ctx, const char *from, char *to, /* * Convert the UTF-8 string to the local codeset. - * equivalent to: - * mdn_res_nameconv(ctx, "L", from, to, tolen); */ extern mdn_result_t mdn_res_ucstolocal(mdn_resconf_t ctx, const char *from, char *to, @@ -141,8 +144,6 @@ mdn_res_ucstolocal(mdn_resconf_t ctx, const char *from, char *to, /* * Perform the nameprep mapping. - * equivalent to: - * mdn_res_nameconv(ctx, "m", from, to, tolen); */ extern mdn_result_t mdn_res_map(mdn_resconf_t ctx, const char *from, char *to, size_t tolen); @@ -152,8 +153,6 @@ mdn_res_map(mdn_resconf_t ctx, const char *from, char *to, size_t tolen); /* * Perform nameprep normalization. - * equivalent to: - * mdn_res_nameconv(ctx, "n", from, to, tolen); */ extern mdn_result_t mdn_res_normalize(mdn_resconf_t ctx, const char *from, char *to, size_t tolen); @@ -163,8 +162,6 @@ mdn_res_normalize(mdn_resconf_t ctx, const char *from, char *to, size_t tolen); /* * Check whether the string contains nameprep prohibited character. - * equivalent to: - * mdn_res_nameconv(ctx, "p", from, to, tolen); */ extern mdn_result_t mdn_res_prohibitcheck(mdn_resconf_t ctx, const char *from, char *to, @@ -173,10 +170,28 @@ mdn_res_prohibitcheck(mdn_resconf_t ctx, const char *from, char *to, #define mdn_res_prohibitcheck(ctx, from, to, tolen) \ mdn_res_nameconv(ctx, "p", from, to, tolen) +/* + * NAMEPREP. + */ +extern mdn_result_t +mdn_res_nameprep(mdn_resconf_t ctx, const char *from, char *to, + size_t tolen); + +#define mdn_res_nameprep(ctx, from, to, tolen) \ + mdn_res_nameconv(ctx, "N", from, to, tolen) + +/* + * NAMEPREP check. + */ +extern mdn_result_t +mdn_res_nameprepcheck(mdn_resconf_t ctx, const char *from, char *to, + size_t tolen); + +#define mdn_res_nameprepcheck(ctx, from, to, tolen) \ + mdn_res_nameconv(ctx, "!N", from, to, tolen) + /* * Check whether the string contains nameprep unassigned character. - * equivalent to: - * mdn_res_nameconv(ctx, "u", from, to, tolen); */ extern mdn_result_t mdn_res_unassignedcheck(mdn_resconf_t ctx, const char *from, char *to, @@ -187,8 +202,6 @@ mdn_res_unassignedcheck(mdn_resconf_t ctx, const char *from, char *to, /* * Perform local delimiter mapping. - * equivalent to: - * mdn_res_nameconv(ctx, "d", from, to, tolen); */ extern mdn_result_t mdn_res_delimitermap(mdn_resconf_t ctx, const char *from, char *to, @@ -199,8 +212,6 @@ mdn_res_delimitermap(mdn_resconf_t ctx, const char *from, char *to, /* * Perfrom TLD based local mapping. - * equivalent to: - * mdn_res_nameconv(ctx, "M", from, to, tolen); */ extern mdn_result_t mdn_res_localmap(mdn_resconf_t ctx, const char *from, char *to, size_t tolen); @@ -210,8 +221,6 @@ mdn_res_localmap(mdn_resconf_t ctx, const char *from, char *to, size_t tolen); /* * Convert the UTF-8 string to ACE. - * equivalent to: - * mdn_res_nameconv(ctx, "I", from, to, tolen); */ extern mdn_result_t mdn_res_ucstodns(mdn_resconf_t ctx, const char *from, char *to, size_t tolen); @@ -221,8 +230,6 @@ mdn_res_ucstodns(mdn_resconf_t ctx, const char *from, char *to, size_t tolen); /* * Convert the ACE string to UTF-8. - * equivalent to: - * mdn_res_nameconv(ctx, "i", from, to, tolen); */ extern mdn_result_t mdn_res_dnstoucs(mdn_resconf_t ctx, const char *from, char *to, size_t tolen); diff --git a/contrib/idn/mdnkit/include/mdn/resconf.h b/contrib/idn/mdnkit/include/mdn/resconf.h index c737c43523a..9a2c2f3317c 100644 --- a/contrib/idn/mdnkit/include/mdn/resconf.h +++ b/contrib/idn/mdnkit/include/mdn/resconf.h @@ -1,4 +1,4 @@ -/* $Id: resconf.h,v 1.12 2001/04/16 02:25:17 m-kasahr Exp $ */ +/* $Id: resconf.h,v 1.1 2002/01/02 02:46:34 marka Exp $ */ /* * Copyright (c) 2000 Japan Network Information Center. All rights reserved. * @@ -8,8 +8,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted @@ -145,87 +145,56 @@ extern char * mdn_resconf_defaultfile(void); /* - * Get/Set codeset converters. - * - * + for local encoding, - * + for IDN encoding, - * + for alternate encoding (which is used when the string to be converterd - * to the local encoding has some characters having no mapping to the - * local encoding) - * In case of error, NULL will be returned. + * Get an object of lower module that `ctx' holds. */ - -extern mdn_converter_t -mdn_resconf_getlocalconverter(mdn_resconf_t ctx); +extern mdn_delimitermap_t +mdn_resconf_getdelimitermap(mdn_resconf_t ctx); extern mdn_converter_t mdn_resconf_getidnconverter(mdn_resconf_t ctx); extern mdn_converter_t -mdn_resconf_getalternateconverter(mdn_resconf_t ctx); +mdn_resconf_getlocalconverter(mdn_resconf_t ctx); -extern void -mdn_resconf_setlocalconverter(mdn_resconf_t ctx, - mdn_converter_t local_converter); -extern void -mdn_resconf_setidnconverter(mdn_resconf_t ctx, - mdn_converter_t idn_coverter); +extern mdn_mapselector_t +mdn_resconf_getlocalmapselector(mdn_resconf_t ctx); -extern void -mdn_resconf_setalternateconverter(mdn_resconf_t ctx, - mdn_converter_t alternate_converter); +extern mdn_mapper_t +mdn_resconf_getmapper(mdn_resconf_t ctx); -/* - * Get/Set domain name normalizer. - * - * In case of error, NULL will be returned. - */ extern mdn_normalizer_t mdn_resconf_getnormalizer(mdn_resconf_t ctx); -extern void -mdn_resconf_setnormalizer(mdn_resconf_t ctx, mdn_normalizer_t normalizer); +extern mdn_checker_t +mdn_resconf_getprohibitchecker(mdn_resconf_t ctx); + +extern mdn_checker_t +mdn_resconf_getunassignedchecker(mdn_resconf_t ctx); /* - * Get/Set domain name mapper. - * - * + for nameprep mapping. - * + for TLD based local mapping. - * + for local delimiter mapping. - * In case of error, NULL will be returned. + * Set an object of lower module to `ctx'. */ -extern mdn_mapper_t -mdn_resconf_getmapper(mdn_resconf_t ctx); - -extern mdn_delimitermap_t -mdn_resconf_getdelimitermap(mdn_resconf_t ctx); - -extern mdn_mapselector_t -mdn_resconf_getlocalmapselector(mdn_resconf_t ctx); +extern void +mdn_resconf_setdelimitermap(mdn_resconf_t ctx, + mdn_delimitermap_t delimiter_mapper); extern void -mdn_resconf_setmapper(mdn_resconf_t ctx, mdn_mapper_t mapper); +mdn_resconf_setidnconverter(mdn_resconf_t ctx, + mdn_converter_t idn_coverter); extern void -mdn_resconf_setdelimitermap(mdn_resconf_t ctx, - mdn_delimitermap_t delimiter_mapper); +mdn_resconf_setlocalconverter(mdn_resconf_t ctx, + mdn_converter_t local_converter); extern void mdn_resconf_setlocalmapselector(mdn_resconf_t ctx, mdn_mapselector_t map_selector); -/* - * Get domain name checker. - * - * + for prohibited character checking. - * + for unassigned character checking. - * In case of error, NULL will be returned. - */ -extern mdn_checker_t -mdn_resconf_getprohibitchecker(mdn_resconf_t ctx); +extern void +mdn_resconf_setmapper(mdn_resconf_t ctx, mdn_mapper_t mapper); -extern mdn_checker_t -mdn_resconf_getunassignedchecker(mdn_resconf_t ctx); +extern void +mdn_resconf_setnormalizer(mdn_resconf_t ctx, mdn_normalizer_t normalizer); extern void mdn_resconf_setprohibitchecker(mdn_resconf_t ctx, @@ -236,27 +205,18 @@ mdn_resconf_setunassignedchecker(mdn_resconf_t ctx, mdn_checker_t unassigned_checker); /* - * Set mapper, normalizer, prohibit checker and unassigned checker in - * the resconf context to the specified NAMEPREP version. - */ -extern mdn_result_t -mdn_resconf_setalternateconvertername(mdn_resconf_t ctx, const char *name, - int flags); - -/* - * Set converter, delimitermap, mapper, mapselector, normalizer, checker - * by name. + * Set name or add names to an object of lower module that `ctx' holds. */ extern mdn_result_t mdn_resconf_setidnconvertername(mdn_resconf_t ctx, const char *name, int flags); extern mdn_result_t -mdn_resconf_setlocalconvertername(mdn_resconf_t ctx, const char *name, - int flags); +mdn_resconf_addalldelimitermapucs(mdn_resconf_t ctx, unsigned long *v, int nv); extern mdn_result_t -mdn_resconf_addalldelimitermapucs(mdn_resconf_t ctx, unsigned long *v, int nv); +mdn_resconf_setlocalconvertername(mdn_resconf_t ctx, const char *name, + int flags); extern mdn_result_t mdn_resconf_addalllocalmapselectornames(mdn_resconf_t ctx, const char *tld, @@ -281,6 +241,22 @@ mdn_resconf_addallunassignedcheckernames(mdn_resconf_t ctx, const char **names, extern mdn_result_t mdn_resconf_setnameprepversion(mdn_resconf_t ctx, const char *version); +/* + * These macros are provided for backward compatibility to mDNkit 2.1 + * and older. + */ +extern void +mdn_resconf_setalternateconverter(mdn_resconf_t ctx, + mdn_converter_t alternate_converter); + +extern mdn_result_t +mdn_resconf_setalternateconvertername(mdn_resconf_t ctx, const char *name, + int flags); + +extern mdn_converter_t +mdn_resconf_getalternateconverter(mdn_resconf_t ctx); + + /* * These macros are provided for backward compatibility to mDNkit 1.x. */ diff --git a/contrib/idn/mdnkit/include/mdn/result.h b/contrib/idn/mdnkit/include/mdn/result.h index 9015199d2bb..036512f8665 100644 --- a/contrib/idn/mdnkit/include/mdn/result.h +++ b/contrib/idn/mdnkit/include/mdn/result.h @@ -1,4 +1,4 @@ -/* $Id: result.h,v 1.11 2001/02/05 09:10:56 ishisone Exp $ */ +/* $Id: result.h,v 1.1 2002/01/02 02:46:34 marka Exp $ */ /* * Copyright (c) 2000 Japan Network Information Center. All rights reserved. * @@ -8,8 +8,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/include/mdn/selectiveencode.h b/contrib/idn/mdnkit/include/mdn/selectiveencode.h index 47b4efd5221..784ebfa708d 100644 --- a/contrib/idn/mdnkit/include/mdn/selectiveencode.h +++ b/contrib/idn/mdnkit/include/mdn/selectiveencode.h @@ -1,4 +1,4 @@ -/* $Id: selectiveencode.h,v 1.8 2000/08/02 02:06:40 ishisone Exp $ */ +/* $Id: selectiveencode.h,v 1.1 2002/01/02 02:46:35 marka Exp $ */ /* * Copyright (c) 2000 Japan Network Information Center. All rights reserved. * @@ -8,8 +8,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/include/mdn/strhash.h b/contrib/idn/mdnkit/include/mdn/strhash.h index 3fd7ef8ede0..2c7ad08a752 100644 --- a/contrib/idn/mdnkit/include/mdn/strhash.h +++ b/contrib/idn/mdnkit/include/mdn/strhash.h @@ -1,4 +1,4 @@ -/* $Id: strhash.h,v 1.9 2000/08/02 02:06:40 ishisone Exp $ */ +/* $Id: strhash.h,v 1.1 2002/01/02 02:46:35 marka Exp $ */ /* * Copyright (c) 2000 Japan Network Information Center. All rights reserved. * @@ -8,8 +8,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/include/mdn/ucsmap.h b/contrib/idn/mdnkit/include/mdn/ucsmap.h index 6927a8dd29b..4c2ca2cecce 100644 --- a/contrib/idn/mdnkit/include/mdn/ucsmap.h +++ b/contrib/idn/mdnkit/include/mdn/ucsmap.h @@ -1,4 +1,4 @@ -/* $Id: ucsmap.h,v 1.1 2001/06/09 00:30:06 tale Exp $ */ +/* $Id: ucsmap.h,v 1.2 2002/02/08 05:39:36 marka Exp $ */ /* * Copyright (c) 2001 Japan Network Information Center. All rights reserved. * @@ -8,8 +8,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/include/mdn/ucsset.h b/contrib/idn/mdnkit/include/mdn/ucsset.h index 548b66c09ba..f1642a11a43 100644 --- a/contrib/idn/mdnkit/include/mdn/ucsset.h +++ b/contrib/idn/mdnkit/include/mdn/ucsset.h @@ -1,4 +1,4 @@ -/* $Id: ucsset.h,v 1.1 2001/06/09 00:30:06 tale Exp $ */ +/* $Id: ucsset.h,v 1.2 2002/02/08 05:39:37 marka Exp $ */ /* * Copyright (c) 2001 Japan Network Information Center. All rights reserved. * @@ -8,8 +8,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/include/mdn/unicode.h b/contrib/idn/mdnkit/include/mdn/unicode.h index 7d7cc88dae8..b3a2b040199 100644 --- a/contrib/idn/mdnkit/include/mdn/unicode.h +++ b/contrib/idn/mdnkit/include/mdn/unicode.h @@ -1,6 +1,7 @@ -/* $Id: unicode.h,v 1.10 2001/02/13 08:26:22 ishisone Exp $ */ +/* $Id: unicode.h,v 1.1 2002/01/02 02:46:35 marka Exp $ */ /* - * Copyright (c) 2000 Japan Network Information Center. All rights reserved. + * Copyright (c) 2000,2001 Japan Network Information Center. + * All rights reserved. * * By using this file, you agree to the terms and conditions set forth bellow. * @@ -8,8 +9,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted @@ -72,6 +73,11 @@ #include +/* + * A Handle for Unicode versions. + */ +typedef struct mdn__unicode_ops *mdn__unicode_version_t; + /* * Context information for case conversion. */ @@ -81,6 +87,26 @@ typedef enum { mdn__unicode_context_nonfinal } mdn__unicode_context_t; +/* + * Create a handle for a specific Unicode version. + * The version number (such as "3.0.1") is specified by 'version' parameter. + * If it is NULL, the latest version is used. + * The handle is stored in '*versionp', which is used various functions + * in this and unormalize modules. + * + * Returns: + * mdn_success -- ok. + * mdn_notfound -- specified version not found. + */ +extern mdn_result_t +mdn__unicode_create(const char *version, mdn__unicode_version_t *versionp); + +/* + * Close a handle which was created by 'mdn__unicode_create'. + */ +extern void +mdn__unicode_destroy(mdn__unicode_version_t version); + /* * Get canonical class. * @@ -88,7 +114,7 @@ typedef enum { * be returned. */ extern int -mdn__unicode_canonicalclass(unsigned long c); +mdn__unicode_canonicalclass(mdn__unicode_version_t version, unsigned long c); /* * Decompose a character. @@ -109,7 +135,8 @@ mdn__unicode_canonicalclass(unsigned long c); * mdn_buffer_overflow -- 'vlen' is too small. */ extern mdn_result_t -mdn__unicode_decompose(int compat, unsigned long *v, size_t vlen, +mdn__unicode_decompose(mdn__unicode_version_t version, + int compat, unsigned long *v, size_t vlen, unsigned long c, int *decomp_lenp); /* @@ -126,7 +153,8 @@ mdn__unicode_decompose(int compat, unsigned long *v, size_t vlen, * mdn_notfound -- no composition possible. */ extern mdn_result_t -mdn__unicode_compose(unsigned long c1, unsigned long c2, unsigned long *compp); +mdn__unicode_compose(mdn__unicode_version_t version, + unsigned long c1, unsigned long c2, unsigned long *compp); /* * Returns if there may be a canonical composition sequence which starts @@ -138,7 +166,8 @@ mdn__unicode_compose(unsigned long c1, unsigned long c2, unsigned long *compp); * 0 -- no, there is definitely no such sequences. */ extern int -mdn__unicode_iscompositecandidate(unsigned long c); +mdn__unicode_iscompositecandidate(mdn__unicode_version_t version, + unsigned long c); /* * Translate lowercase character to uppercase, and vice versa, according @@ -166,10 +195,12 @@ mdn__unicode_iscompositecandidate(unsigned long c); * mdn_buffer_overflow -- 'vlen' is too small. */ extern mdn_result_t -mdn__unicode_toupper(unsigned long c, mdn__unicode_context_t ctx, +mdn__unicode_toupper(mdn__unicode_version_t version, + unsigned long c, mdn__unicode_context_t ctx, unsigned long *v, size_t vlen, int *convlenp); extern mdn_result_t -mdn__unicode_tolower(unsigned long c, mdn__unicode_context_t ctx, +mdn__unicode_tolower(mdn__unicode_version_t version, + unsigned long c, mdn__unicode_context_t ctx, unsigned long *v, size_t vlen, int *convlenp); /* @@ -188,7 +219,7 @@ mdn__unicode_tolower(unsigned long c, mdn__unicode_context_t ctx, * try the next character. */ extern mdn__unicode_context_t -mdn__unicode_getcontext(unsigned long c); +mdn__unicode_getcontext(mdn__unicode_version_t version, unsigned long c); /* * Perform case-folding for caseless matching, defined by Unicode @@ -205,7 +236,8 @@ mdn__unicode_getcontext(unsigned long c); * mdn_buffer_overflow -- 'vlen' is too small. */ extern mdn_result_t -mdn__unicode_casefold(unsigned long c, unsigned long *v, size_t vlen, +mdn__unicode_casefold(mdn__unicode_version_t version, + unsigned long c, unsigned long *v, size_t vlen, int *foldlenp); #endif /* MDN_UNICODE_H */ diff --git a/contrib/idn/mdnkit/include/mdn/unormalize.h b/contrib/idn/mdnkit/include/mdn/unormalize.h index c5d2f393702..c67c629f062 100644 --- a/contrib/idn/mdnkit/include/mdn/unormalize.h +++ b/contrib/idn/mdnkit/include/mdn/unormalize.h @@ -1,6 +1,7 @@ -/* $Id: unormalize.h,v 1.9 2000/08/02 02:06:41 ishisone Exp $ */ +/* $Id: unormalize.h,v 1.1 2002/01/02 02:46:36 marka Exp $ */ /* - * Copyright (c) 2000 Japan Network Information Center. All rights reserved. + * Copyright (c) 2000,2001 Japan Network Information Center. + * All rights reserved. * * By using this file, you agree to the terms and conditions set forth bellow. * @@ -8,8 +9,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted @@ -70,14 +71,15 @@ */ #include +#include /* * Perform Unicode Normalication Form C, D, KC and KD. * * They take NUL-terminated UTF-8 encoded string 'from', perform - * the normalization, put the result (also a NUL-terminated UTF-8 - * encoded string) to 'to', which must be able to hold at least - * 'tolen' bytes. + * the normalization specified by 'version', put the result + * (also a NUL-terminated UTF-8 encoded string) to 'to', which must be + * able to hold at least 'tolen' bytes. * * Returns: * mdn_success -- ok. @@ -86,15 +88,19 @@ * mdn_buffer_overflow -- 'tolen' is too small. */ extern mdn_result_t -mdn__unormalize_formc(const char *from, char *to, size_t tolen); +mdn__unormalize_formc(mdn__unicode_version_t version, + const char *from, char *to, size_t tolen); extern mdn_result_t -mdn__unormalize_formd(const char *from, char *to, size_t tolen); +mdn__unormalize_formd(mdn__unicode_version_t version, + const char *from, char *to, size_t tolen); extern mdn_result_t -mdn__unormalize_formkc(const char *from, char *to, size_t tolen); +mdn__unormalize_formkc(mdn__unicode_version_t version, + const char *from, char *to, size_t tolen); extern mdn_result_t -mdn__unormalize_formkd(const char *from, char *to, size_t tolen); +mdn__unormalize_formkd(mdn__unicode_version_t version, + const char *from, char *to, size_t tolen); #endif /* MDN_UNORMALIZE_H */ diff --git a/contrib/idn/mdnkit/include/mdn/utf5.h b/contrib/idn/mdnkit/include/mdn/utf5.h index 79974720c96..72b09961ea3 100644 --- a/contrib/idn/mdnkit/include/mdn/utf5.h +++ b/contrib/idn/mdnkit/include/mdn/utf5.h @@ -1,4 +1,4 @@ -/* $Id: utf5.h,v 1.7 2000/07/04 03:52:33 ishisone Exp $ */ +/* $Id: utf5.h,v 1.1 2002/01/02 02:46:36 marka Exp $ */ /* * Copyright (c) 2000 Japan Network Information Center. All rights reserved. * @@ -8,8 +8,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/include/mdn/utf6.h b/contrib/idn/mdnkit/include/mdn/utf6.h index 5fe17ffbcc2..1f268b1d325 100644 --- a/contrib/idn/mdnkit/include/mdn/utf6.h +++ b/contrib/idn/mdnkit/include/mdn/utf6.h @@ -1,4 +1,4 @@ -/* $Id: utf6.h,v 1.1 2001/06/09 00:30:08 tale Exp $ */ +/* $Id: utf6.h,v 1.2 2002/02/08 05:39:42 marka Exp $ */ /* * Copyright (c) 2000 Japan Network Information Center. All rights reserved. * @@ -8,8 +8,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/include/mdn/utf8.h b/contrib/idn/mdnkit/include/mdn/utf8.h index 48c090fbbac..8d12b070585 100644 --- a/contrib/idn/mdnkit/include/mdn/utf8.h +++ b/contrib/idn/mdnkit/include/mdn/utf8.h @@ -1,4 +1,4 @@ -/* $Id: utf8.h,v 1.8 2000/08/14 07:26:59 ishisone Exp $ */ +/* $Id: utf8.h,v 1.1 2002/01/02 02:46:36 marka Exp $ */ /* * Copyright (c) 2000 Japan Network Information Center. All rights reserved. * @@ -8,8 +8,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/include/mdn/util.h b/contrib/idn/mdnkit/include/mdn/util.h index b9a4f1b245b..3fdb5933bfd 100644 --- a/contrib/idn/mdnkit/include/mdn/util.h +++ b/contrib/idn/mdnkit/include/mdn/util.h @@ -1,4 +1,4 @@ -/* $Id: util.h,v 1.5 2001/04/20 00:45:06 ishisone Exp $ */ +/* $Id: util.h,v 1.1 2002/01/02 02:46:37 marka Exp $ */ /* * Copyright (c) 2000 Japan Network Information Center. All rights reserved. * @@ -8,8 +8,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/include/mdn/version.h b/contrib/idn/mdnkit/include/mdn/version.h index 1ae78451f55..f5fc3628ecd 100644 --- a/contrib/idn/mdnkit/include/mdn/version.h +++ b/contrib/idn/mdnkit/include/mdn/version.h @@ -1,4 +1,4 @@ -/* $Id: version.h,v 1.1 2001/06/09 00:30:09 tale Exp $ */ +/* $Id: version.h,v 1.2 2002/02/08 05:39:46 marka Exp $ */ /* * Copyright (c) 2001 Japan Network Information Center. All rights reserved. * @@ -8,8 +8,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted @@ -63,9 +63,9 @@ /* * Version number of this package. */ -#define MDNKIT_VERSION "2.1" +#define MDNKIT_VERSION "2.2.3" #define MDNKIT_MAJOR_VERSION 2 -#define MDNKIT_MINOR_VERSION 1 +#define MDNKIT_MINOR_VERSION 2 /* * Get the version of the library (libmdn). diff --git a/contrib/idn/mdnkit/lib/Makefile.in b/contrib/idn/mdnkit/lib/Makefile.in index c23df94861a..c19a96c58c6 100644 --- a/contrib/idn/mdnkit/lib/Makefile.in +++ b/contrib/idn/mdnkit/lib/Makefile.in @@ -1,4 +1,4 @@ -# $Id: Makefile.in,v 1.48 2001/05/22 03:00:23 m-kasahr Exp $ +# $Id: Makefile.in,v 1.1 2002/01/02 02:46:37 marka Exp $ # Copyright (c) 2000 Japan Network Information Center. All rights reserved. # # By using this file, you agree to the terms and conditions set forth bellow. @@ -7,8 +7,8 @@ # # The following License Terms and Conditions apply, unless a different # license is obtained from Japan Network Information Center ("JPNIC"), -# a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, -# Tokyo, Japan. +# a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, +# Chiyoda-ku, Tokyo 101-0047, Japan. # # 1. Use, Modification and Redistribution (including distribution of any # modified or derived work) in source and/or binary forms is permitted @@ -56,7 +56,7 @@ # jurisdiction and venue of Tokyo District Court of Japan. LIB_CURRENT = 7 -LIB_REVISION = 0 +LIB_REVISION = 3 LIB_AGE = 0 .SUFFIXES: .lo @@ -85,21 +85,25 @@ MKINSTALLDIRS = @top_srcdir@/mkinstalldirs SHELL = @SHELL@ LIBTOOL = @LIBTOOL@ +ICONVINC = @ICONVINC@ +ICONVLIB = @ICONVLIB@ + OPTS = -INCS = -I$(srcdir)/../include -I../include +INCS = -I$(srcdir)/../include -I../include $(ICONVINC) DEFS = -DMDN_RESCONF_DIR="\"$(sysconfdir)\"" CFLAGS = $(OPTS) $(INCS) $(DEFS) @CFLAGS@ LDFLAGS = @LDFLAGS@ -ICONVLIB = @ICONVLIB@ - SRCS = \ ace.c \ altdude.c \ amcacem.c \ amcaceo.c \ amcacer.c \ + amcacev.c \ + amcacew.c \ + amcacez.c \ api.c \ brace.c \ checker.c \ @@ -113,6 +117,7 @@ SRCS = \ lace.c \ localencoding.c \ log.c \ + mace.c \ mapper.c \ mapselector.c \ msgheader.c \ @@ -130,7 +135,9 @@ SRCS = \ ucsmap.c \ ucsset.c \ unicode.c \ - unicodedata.c \ + unicode_template.c \ + unicodedata_301.c \ + unicodedata_310.c \ unormalize.c \ utf5.c \ utf6.c \ @@ -144,6 +151,9 @@ OBJS = \ amcacem.lo \ amcaceo.lo \ amcacer.lo \ + amcacev.lo \ + amcacew.lo \ + amcacez.lo \ api.lo \ brace.lo \ checker.lo \ @@ -157,6 +167,7 @@ OBJS = \ lace.lo \ localencoding.lo \ log.lo \ + mace.lo \ mapper.lo \ mapselector.lo \ msgheader.lo \ diff --git a/contrib/idn/mdnkit/lib/ace.c b/contrib/idn/mdnkit/lib/ace.c index cc79390daa1..1615e03203f 100644 --- a/contrib/idn/mdnkit/lib/ace.c +++ b/contrib/idn/mdnkit/lib/ace.c @@ -1,5 +1,5 @@ #ifndef lint -static char *rcsid = "$Id: ace.c,v 1.1 2001/06/09 00:30:12 tale Exp $"; +static char *rcsid = "$Id: ace.c,v 1.2 2002/02/08 05:39:49 marka Exp $"; #endif /* @@ -12,8 +12,8 @@ static char *rcsid = "$Id: ace.c,v 1.1 2001/06/09 00:30:12 tale Exp $"; * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/lib/altdude.c b/contrib/idn/mdnkit/lib/altdude.c index dabe0c1caf8..5664d7388cf 100644 --- a/contrib/idn/mdnkit/lib/altdude.c +++ b/contrib/idn/mdnkit/lib/altdude.c @@ -1,5 +1,5 @@ #ifndef lint -static char *rcsid = "$Id: altdude.c,v 1.1 2001/06/09 00:30:12 tale Exp $"; +static char *rcsid = "$Id: altdude.c,v 1.2 2002/02/08 05:39:50 marka Exp $"; #endif /* @@ -12,8 +12,8 @@ static char *rcsid = "$Id: altdude.c,v 1.1 2001/06/09 00:30:12 tale Exp $"; * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/lib/amcacem.c b/contrib/idn/mdnkit/lib/amcacem.c index d0f1fc1090d..191c3e8a9d4 100644 --- a/contrib/idn/mdnkit/lib/amcacem.c +++ b/contrib/idn/mdnkit/lib/amcacem.c @@ -1,5 +1,5 @@ #ifndef lint -static char *rcsid = "$Id: amcacem.c,v 1.1 2001/06/09 00:30:12 tale Exp $"; +static char *rcsid = "$Id: amcacem.c,v 1.2 2002/02/08 05:39:51 marka Exp $"; #endif /* @@ -12,8 +12,8 @@ static char *rcsid = "$Id: amcacem.c,v 1.1 2001/06/09 00:30:12 tale Exp $"; * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/lib/amcaceo.c b/contrib/idn/mdnkit/lib/amcaceo.c index 1882c40ac39..1285b2c9b76 100644 --- a/contrib/idn/mdnkit/lib/amcaceo.c +++ b/contrib/idn/mdnkit/lib/amcaceo.c @@ -1,5 +1,5 @@ #ifndef lint -static char *rcsid = "$Id: amcaceo.c,v 1.1 2001/06/09 00:30:12 tale Exp $"; +static char *rcsid = "$Id: amcaceo.c,v 1.2 2002/02/08 05:39:53 marka Exp $"; #endif /* @@ -12,8 +12,8 @@ static char *rcsid = "$Id: amcaceo.c,v 1.1 2001/06/09 00:30:12 tale Exp $"; * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/lib/amcacer.c b/contrib/idn/mdnkit/lib/amcacer.c index a8cd8ebb98c..937e81b7a5e 100644 --- a/contrib/idn/mdnkit/lib/amcacer.c +++ b/contrib/idn/mdnkit/lib/amcacer.c @@ -1,5 +1,5 @@ #ifndef lint -static char *rcsid = "$Id: amcacer.c,v 1.1 2001/06/09 00:30:12 tale Exp $"; +static char *rcsid = "$Id: amcacer.c,v 1.2 2002/02/08 05:39:54 marka Exp $"; #endif /* @@ -12,8 +12,8 @@ static char *rcsid = "$Id: amcacer.c,v 1.1 2001/06/09 00:30:12 tale Exp $"; * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted @@ -78,7 +78,7 @@ static char *rcsid = "$Id: amcacer.c,v 1.1 2001/06/09 00:30:12 tale Exp $"; #include /* - * Although draft-ietf-idn-amc-ace-r-00.txt doesn't specify the ACE + * Although draft-ietf-idn-amc-ace-r-01.txt doesn't specify the ACE * signature, we have to choose one. In order to prevent the converted * name from beginning with a hyphen, we should choose a prefix rather * than a suffix. @@ -87,14 +87,16 @@ static char *rcsid = "$Id: amcacer.c,v 1.1 2001/06/09 00:30:12 tale Exp $"; #define MDN_AMCACER_PREFIX "amc3-" #endif -#define UCSBUF_LOCAL_SIZE 40 +#define MAX_UCS 0x10FFFF +#define AMCACER_BUFSIZE 64 -typedef struct ucsbuf { - unsigned long *ucs; - size_t size; - size_t len; - unsigned long local[UCSBUF_LOCAL_SIZE]; -} ucsbuf_t; +typedef struct { + unsigned long *history; + unsigned long local_buf[AMCACER_BUFSIZE]; + int history_len; + unsigned long refpoint[6]; + int updated; +} amcacer_encode_ctx; static const char *base32encode = "abcdefghijkmnpqrstuvwxyz23456789"; static const int base32decode_ascii[26] = { @@ -109,21 +111,14 @@ static mdn_result_t amcacer_decode(const char *from, size_t fromlen, char *to, size_t tolen); static mdn_result_t amcacer_encode(const char *from, size_t fromlen, char *to, size_t tolen); -static void amcacer_update_refpoints(unsigned long *refpoint, - unsigned long *history, - int n); +static mdn_result_t amcacer_init_ctx(amcacer_encode_ctx *ctx, size_t len); +static void amcacer_free_ctx(amcacer_encode_ctx *ctx); +static void amcacer_update_refpoints(amcacer_encode_ctx *ctx, + unsigned long c); static int amcacer_getwc(const char *s, size_t len, unsigned long *vp); static int amcacer_putwc(char *s, size_t len, unsigned long v, int w); - -static mdn_result_t utf8_to_ucs4(const char *utf8, size_t fromlen, - ucsbuf_t *b); -static mdn_result_t ucs4_to_utf8(ucsbuf_t *b, char *utf8, size_t ulen); -static void ucsbuf_init(ucsbuf_t *b); -static mdn_result_t ucsbuf_grow(ucsbuf_t *b); -static mdn_result_t ucsbuf_append(ucsbuf_t *b, unsigned long v); -static void ucsbuf_free(ucsbuf_t *b); static int is_ldh(unsigned long v); static mdn__ace_t amcacer_ctx = { @@ -139,7 +134,7 @@ static mdn__ace_t amcacer_ctx = { }; static const unsigned long amcacer_refpoint_initial[6] = { - 0, 0x60, 0, 0, 0, 0x10000, + 0, 0xe0, 0xa0, 0, 0, 0x10000, }; @@ -184,17 +179,18 @@ mdn__amcacer_convert(mdn_converter_t ctx, void *privdata, static mdn_result_t amcacer_decode(const char *from, size_t fromlen, char *to, size_t tolen) { - size_t len; - unsigned long refpoint[6], v; - ucsbuf_t ucsb; int literal_mode = 0; + amcacer_encode_ctx ctx; mdn_result_t r; - (void)memcpy(refpoint, amcacer_refpoint_initial, sizeof(refpoint)); - - ucsbuf_init(&ucsb); + /* Initialize context. */ + if ((r = amcacer_init_ctx(&ctx, fromlen)) != mdn_success) + return (r); while (fromlen > 0) { + size_t len; + unsigned long v; + if (from[0] == '-') { if (fromlen > 1 && from[1] == '-') { v = '-'; @@ -218,58 +214,66 @@ amcacer_decode(const char *from, size_t fromlen, char *to, size_t tolen) { } from += len; fromlen -= len; - v = refpoint[len] + v; + v = ctx.refpoint[len] + v; + amcacer_update_refpoints(&ctx, v); } - if ((r = ucsbuf_append(&ucsb, v)) != mdn_success) - goto finish; - amcacer_update_refpoints(refpoint, ucsb.ucs, ucsb.len - 1); + len = mdn_utf8_putwc(to, tolen, v); + if (len == 0) + goto overflow; + to += len; + tolen -= len; } - r = ucs4_to_utf8(&ucsb, to, tolen); - finish: - ucsbuf_free(&ucsb); + /* + * Terminate with NUL. + */ + if (tolen <= 0) + goto overflow; + *to = '\0'; + finish: + amcacer_free_ctx(&ctx); return (r); + + overflow: + r = mdn_buffer_overflow; + goto finish; } static mdn_result_t amcacer_encode(const char *from, size_t fromlen, char *to, size_t tolen) { - ucsbuf_t ucsb; - unsigned long *buf; - size_t len; int literal_mode = 0; - unsigned long refpoint[6]; + amcacer_encode_ctx ctx; mdn_result_t r; - int i; - /* Initialize refpoints. */ - (void)memcpy(refpoint, amcacer_refpoint_initial, sizeof(refpoint)); - - /* - * Convert input string to UCS-4. - */ - ucsbuf_init(&ucsb); - if ((r = utf8_to_ucs4(from, fromlen, &ucsb)) != mdn_success) + /* Initialize context. */ + if ((r = amcacer_init_ctx(&ctx, fromlen)) != mdn_success) return (r); - buf = ucsb.ucs; - len = ucsb.len; + while (fromlen > 0) { + unsigned long c; + size_t len; - /* - * Now 'buf' contains UCS-4 string consisting of 'len' characters. - */ + len = mdn_utf8_getwc(from, fromlen, &c); + from += len; + fromlen -= len; - for (i = 0; i < len; i++) { - if (buf[i] == '-') { + if (len == 0 || c >= MAX_UCS) { + /* + * Invalid Unicode code point. + */ + r = mdn_invalid_encoding; + goto ret; + } else if (c == '-') { /* * Convert "-" to "--". */ if (tolen < 2) - return (mdn_buffer_overflow); + goto overflow; to[0] = to[1] = '-'; to += 2; tolen -= 2; - } else if (is_ldh(buf[i])) { + } else if (is_ldh(c)) { /* * LDH characters. */ @@ -285,12 +289,13 @@ amcacer_encode(const char *from, size_t fromlen, char *to, size_t tolen) { } if (tolen < 1) goto overflow; - *to++ = buf[i]; + *to++ = c; tolen--; } else { /* * Non-LDH characters. */ + unsigned long *refpoint = ctx.refpoint; int k; if (literal_mode != 0) { @@ -304,17 +309,16 @@ amcacer_encode(const char *from, size_t fromlen, char *to, size_t tolen) { literal_mode = 0; } for (k = 1; k < 6; k++) { - if (buf[i] >= refpoint[k] && - buf[i] - refpoint[k] < (1 << (4 * k))) + if (c >= refpoint[k] && + c - refpoint[k] < (1 << (4 * k))) break; } - k = amcacer_putwc(to, tolen, buf[i] - refpoint[k], - k); + k = amcacer_putwc(to, tolen, c - refpoint[k], k); if (k == 0) goto overflow; to += k; tolen -= k; - amcacer_update_refpoints(refpoint, buf, i); + amcacer_update_refpoints(&ctx, c); } } @@ -322,30 +326,56 @@ amcacer_encode(const char *from, size_t fromlen, char *to, size_t tolen) { * Terminate with NUL. */ if (tolen <= 0) - return (mdn_buffer_overflow); + goto overflow; *to = '\0'; + r = mdn_success; + ret: + amcacer_free_ctx(&ctx); + return (r); + + overflow: + r = mdn_buffer_overflow; + goto ret; +} - ucsbuf_free(&ucsb); +static mdn_result_t +amcacer_init_ctx(amcacer_encode_ctx *ctx, size_t len) { + if (len > AMCACER_BUFSIZE) { + ctx->history = malloc(sizeof(ctx->history[0]) * len); + if (ctx->history == NULL) + return (mdn_nomemory); + } else { + ctx->history = ctx->local_buf; + } + ctx->history_len = 0; + (void)memcpy(ctx->refpoint, amcacer_refpoint_initial, + sizeof(ctx->refpoint)); + ctx->updated = 0; return (mdn_success); +} - overflow: - ucsbuf_free(&ucsb); - return (mdn_buffer_overflow); +static void +amcacer_free_ctx(amcacer_encode_ctx *ctx) { + if (ctx->history != ctx->local_buf) + free(ctx->history); + ctx->history = NULL; } static void -amcacer_update_refpoints(unsigned long *refpoint, - unsigned long *history, int n) -{ +amcacer_update_refpoints(amcacer_encode_ctx *ctx, unsigned long c) { + unsigned long *refpoint = ctx->refpoint; + unsigned long *history = ctx->history; int k; - unsigned long lastchar = history[n]; + + history[ctx->history_len++] = c; #define MAX_K(k) (1 << (4 * (k))) #define ROUND_K(v, k) (((v) >> (4 * (k))) << (4 * (k))) - if (n == 0) { + if (!ctx->updated) { for (k = 1; k < 4; k++) - refpoint[k] = ROUND_K(lastchar, k); + refpoint[k] = ROUND_K(c, k); + ctx->updated = 1; return; } @@ -353,13 +383,11 @@ amcacer_update_refpoints(unsigned long *refpoint, unsigned long max = MAX_K(k); int i; - for (i = n - 1; i >= 0; i--) { - if (is_ldh(history[i])) - continue; + for (i = ctx->history_len - 2; i >= 0; i--) { if ((refpoint[k] ^ history[i]) < max) break; - if ((lastchar ^ history[i]) < max) { - refpoint[k] = ROUND_K(lastchar, k); + if ((c ^ history[i]) < max) { + refpoint[k] = ROUND_K(c, k); return; } } @@ -411,88 +439,6 @@ amcacer_putwc(char *s, size_t len, unsigned long v, int w) { return (w); } -/* - * Common Utility Functions. - */ - -static mdn_result_t -utf8_to_ucs4(const char *utf8, size_t fromlen, ucsbuf_t *b) { - mdn_result_t r; - - while (fromlen > 0) { - unsigned long c; - int w; - - if ((w = mdn_utf8_getwc(utf8, fromlen, &c)) == 0) - return (mdn_invalid_encoding); - utf8 += w; - fromlen -= w; - - if ((r = ucsbuf_append(b, c)) != mdn_success) - return (r); - } - return (mdn_success); -} - -static mdn_result_t -ucs4_to_utf8(ucsbuf_t *b, char *utf8, size_t ulen) { - unsigned long *s = b->ucs; - size_t len = b->len; - int i; - - for (i = 0; i < len; i++) { - int w = mdn_utf8_putwc(utf8, ulen, s[i]); - - if (w == 0) - return (mdn_buffer_overflow); - utf8 += w; - ulen -= w; - } - if (ulen < 1) - return (mdn_buffer_overflow); - *utf8 = '\0'; - return (mdn_success); -} - -static void -ucsbuf_init(ucsbuf_t *b) { - b->ucs = b->local; - b->size = UCSBUF_LOCAL_SIZE; - b->len = 0; -} - -static mdn_result_t -ucsbuf_grow(ucsbuf_t *b) { - if (b->ucs == b->local) - b->ucs = NULL; - b->size *= 2; - b->ucs = realloc(b->ucs, sizeof(unsigned long) * b->size); - if (b->ucs == NULL) - return (mdn_nomemory); - return (mdn_success); -} - -static mdn_result_t -ucsbuf_append(ucsbuf_t *b, unsigned long v) { - mdn_result_t r; - - if (b->len + 1 > b->size) { - r = ucsbuf_grow(b); - if (r != mdn_success) - return (r); - } - b->ucs[b->len++] = v; - return (mdn_success); -} - -static void -ucsbuf_free(ucsbuf_t *b) { - if (b->ucs != b->local) { - free(b->ucs); - b->ucs = b->local; - } -} - static int is_ldh(unsigned long v) { if (('a' <= v && v <= 'z') || ('A' <= v && v <= 'Z') || diff --git a/contrib/idn/mdnkit/lib/amcacev.c b/contrib/idn/mdnkit/lib/amcacev.c new file mode 100644 index 00000000000..4bd50033aac --- /dev/null +++ b/contrib/idn/mdnkit/lib/amcacev.c @@ -0,0 +1,545 @@ +#ifndef lint +static char *rcsid = "$Id: amcacev.c,v 1.1 2002/02/08 05:39:56 marka Exp $"; +#endif + +/* + * Copyright (c) 2001 Japan Network Information Center. + * All rights reserved. + * + * By using this file, you agree to the terms and conditions set forth bellow. + * + * LICENSE TERMS AND CONDITIONS + * + * The following License Terms and Conditions apply, unless a different + * license is obtained from Japan Network Information Center ("JPNIC"), + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. + * + * 1. Use, Modification and Redistribution (including distribution of any + * modified or derived work) in source and/or binary forms is permitted + * under this License Terms and Conditions. + * + * 2. Redistribution of source code must retain the copyright notices as they + * appear in each source code file, this License Terms and Conditions. + * + * 3. Redistribution in binary form must reproduce the Copyright Notice, + * this License Terms and Conditions, in the documentation and/or other + * materials provided with the distribution. For the purposes of binary + * distribution the "Copyright Notice" refers to the following language: + * "Copyright (c) Japan Network Information Center. All rights reserved." + * + * 4. Neither the name of JPNIC may be used to endorse or promote products + * derived from this Software without specific prior written approval of + * JPNIC. + * + * 5. Disclaimer/Limitation of Liability: THIS SOFTWARE IS PROVIDED BY JPNIC + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A + * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JPNIC BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + * + * 6. Indemnification by Licensee + * Any person or entities using and/or redistributing this Software under + * this License Terms and Conditions shall defend indemnify and hold + * harmless JPNIC from and against any and all judgements damages, + * expenses, settlement liabilities, cost and other liabilities of any + * kind as a result of use and redistribution of this Software or any + * claim, suite, action, litigation or proceeding by any third party + * arising out of or relates to this License Terms and Conditions. + * + * 7. Governing Law, Jurisdiction and Venue + * This License Terms and Conditions shall be governed by and and + * construed in accordance with the law of Japan. Any person or entities + * using and/or redistributing this Software under this License Terms and + * Conditions hereby agrees and consent to the personal and exclusive + * jurisdiction and venue of Tokyo District Court of Japan. + */ + +#include + +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/* + * Although draft-ietf-idn-amc-ace-v-00.txt doesn't specify the ACE + * signature, we have to choose one. In order to prevent the converted + * name from beginning with a hyphen, we should choose a prefix rather + * than a suffix. + */ +#if !defined(MDN_AMCACEV_PREFIX) && !defined(MDN_AMCACEV_SUFFIX) +#define MDN_AMCACEV_PREFIX "amc4-" +#endif + +#define MAX_UCS 0x10FFFF +#define AMCACEV_BUFSIZE 64 + +typedef struct { + unsigned long *history; /* history of non-LDH characters */ + unsigned long local_buf[AMCACEV_BUFSIZE]; + int cur; /* current index */ + int style; /* 0 or 1 */ + unsigned long refpoint[2][6]; /* refpoint[0] is not used. */ +} amcacev_ctx; + +#define IN_WINDOW(ctx, c, st, win) \ + ((c) >= (ctx)->refpoint[st][win] && \ + ((c) - (ctx)->refpoint[st][win]) <= amcacev_winsize[st][win]) + +static const unsigned long amcacev_refpoint_initial[2][6] = { + { 0, 0xe0, 0xa0, 0, 0, 0x10000 }, + { 0, 0, 0, 0, 0, 0x10000 }, +}; +static const unsigned long amcacev_winsize[2][6] = { + { 0, 0xf, 0xff, 0xfff, 0xffff, 0xfffff }, + { 0, 0, 0xff, 0x4fff, 0xffff, 0xfffff }, +}; + +static const char *base32encode = "abcdefghijkmnpqrstuvwxyz23456789"; +static const int base32decode_ascii[26] = { + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, -1, 11, 12, -1, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, +}; +static const int base32decode_digit[10] = { + -1, -1, 24, 25, 26, 27, 28, 29, 30, 31, +}; + +static mdn_result_t amcacev_decode(const char *from, size_t fromlen, + char *to, size_t tolen); +static mdn_result_t amcacev_encode(const char *from, size_t fromlen, + char *to, size_t tolen); +static mdn_result_t init_ctx(amcacev_ctx *ctx, size_t len); +static void release_ctx(amcacev_ctx *ctx); +static void update_ctx(amcacev_ctx *ctx, unsigned long v); +static unsigned long get_refpoint(unsigned long v, int st, int win); +static int eval_compression(amcacev_ctx *ctx); +static unsigned long encode_delta(unsigned long v, + amcacev_ctx *ctx, int *szp); +static int amcacev_getwc(const char *s, size_t len, int style, + unsigned long *vp); +static int amcacev_putwc(char *s, size_t len, + unsigned long delta, int w); +static int is_ldh(unsigned long v); + +static mdn__ace_t amcacev_profile = { +#ifdef MDN_AMCACEV_PREFIX + mdn__ace_prefix, + MDN_AMCACEV_PREFIX, +#else + mdn__ace_suffix, + MDN_AMCACEV_SUFFIX, +#endif + amcacev_encode, + amcacev_decode, +}; + + + +/* ARGSUSED */ +mdn_result_t +mdn__amcacev_open(mdn_converter_t ctx, mdn_converter_dir_t dir, + void **privdata) +{ + return (mdn_success); +} + +/* ARGSUSED */ +mdn_result_t +mdn__amcacev_close(mdn_converter_t ctx, void *privdata, + mdn_converter_dir_t dir) +{ + return (mdn_success); +} + +mdn_result_t +mdn__amcacev_convert(mdn_converter_t ctx, void *privdata, + mdn_converter_dir_t dir, + const char *from, char *to, size_t tolen) +{ + mdn_result_t r; + + assert(ctx != NULL && + (dir == mdn_converter_l2u || dir == mdn_converter_u2l)); + + TRACE(("mdn__amcacev_convert(dir=%s,from=\"%s\")\n", + dir == mdn_converter_l2u ? "l2u" : "u2l", + mdn_debug_xstring(from, 20))); + + r = mdn__ace_convert(&amcacev_profile, dir, from, to, tolen); + if (r != mdn_success) + return (r); + + DUMP(("mdn__amcacev_convert: \"%s\"\n", mdn_debug_xstring(to, 70))); + + return (r); +} + +static mdn_result_t +amcacev_decode(const char *from, size_t fromlen, char *to, size_t tolen) { + int literal_mode = 0; + amcacev_ctx ctx; + mdn_result_t r; + + /* Initialize context. */ + if ((r = init_ctx(&ctx, fromlen)) != mdn_success) + return (r); + + while (fromlen > 0) { + unsigned long v; + int len; + + if (from[0] == '-') { + if (fromlen > 1 && from[1] == '-') { + v = '-'; + from += 2; + fromlen -= 2; + } else { + literal_mode = !literal_mode; + from++; + fromlen--; + continue; + } + } else if (literal_mode) { + v = from[0]; + from++; + fromlen--; + } else { + len = amcacev_getwc(from, fromlen, ctx.style, &v); + if (len == 0) + goto invalid_encoding; + from += len; + fromlen -= len; + + v += ctx.refpoint[ctx.style][len]; + + /* Update refpoints. */ + update_ctx(&ctx, v); + } + + len = mdn_utf8_putwc(to, tolen, v); + if (len == 0) + goto overflow; + to += len; + tolen -= len; + } + + /* + * Terminate with NUL. + */ + if (tolen <= 0) + goto overflow; + *to = '\0'; + + ret: + release_ctx(&ctx); + return (r); + + invalid_encoding: + r = mdn_invalid_encoding; + goto ret; + overflow: + r = mdn_buffer_overflow; + goto ret; +} + +static mdn_result_t +amcacev_encode(const char *from, size_t fromlen, char *to, size_t tolen) { + int literal_mode = 0; + amcacev_ctx ctx; + mdn_result_t r; + + /* Initialize context. */ + if ((r = init_ctx(&ctx, fromlen)) != mdn_success) + return (r); + + while (fromlen > 0) { + unsigned long c; + size_t len; + + len = mdn_utf8_getwc(from, fromlen, &c); + from += len; + fromlen -= len; + if (len == 0) + goto invalid_encoding; + + if (c >= MAX_UCS) { + /* + * Invalid Unicode code point. + */ + goto invalid_encoding; + } else if (c == '-') { + /* + * Convert "-" to "--". + */ + if (tolen < 2) + goto overflow; + to[0] = to[1] = '-'; + to += 2; + tolen -= 2; + } else if (is_ldh(c)) { + /* + * LDH characters. + */ + if (literal_mode == 0) { + /* + * Go into literal mode. + */ + if (tolen < 1) + goto overflow; + *to++ = '-'; + tolen--; + literal_mode = 1; + } + if (tolen < 1) + goto overflow; + *to++ = c; + tolen--; + } else { + /* + * Non-LDH characters. + */ + int sz; + unsigned long delta; + + if (literal_mode != 0) { + /* + * Get out of literal mode. + */ + if (tolen < 1) + goto overflow; + *to++ = '-'; + tolen--; + literal_mode = 0; + } + delta = encode_delta(c, &ctx, &sz); + sz = amcacev_putwc(to, tolen, delta, sz); + if (sz == 0) + goto overflow; + to += sz; + tolen -= sz; + + /* Add to the history, and update refpoints. */ + update_ctx(&ctx, c); + } + } + + /* + * Terminate with NUL. + */ + if (tolen <= 0) + goto overflow; + + *to = '\0'; + + ret: + release_ctx(&ctx); + return (r); + + invalid_encoding: + r = mdn_invalid_encoding; + goto ret; + overflow: + r = mdn_buffer_overflow; + goto ret; +} + +static mdn_result_t +init_ctx(amcacev_ctx *ctx, size_t len) { + if (len <= AMCACEV_BUFSIZE) { + ctx->history = ctx->local_buf; + } else { + ctx->history = malloc(sizeof(ctx->history[0]) * len); + if (ctx->history == NULL) + return (mdn_nomemory); + } + ctx->cur = 0; + ctx->style = 0; + (void)memcpy(ctx->refpoint, amcacev_refpoint_initial, + sizeof(ctx->refpoint)); + return (mdn_success); +} + +static void +release_ctx(amcacev_ctx *ctx) { + if (ctx->history != ctx->local_buf) + free(ctx->history); + ctx->history = NULL; +} + +static void +update_ctx(amcacev_ctx *ctx, unsigned long v) { + int st, win; + + /* Get style */ + if (IN_WINDOW(ctx, v, 0, 1)) + ctx->style = 0; + else if (!IN_WINDOW(ctx, v, 0, 1) && + !IN_WINDOW(ctx, v, 0, 2) && + !IN_WINDOW(ctx, v, 0, 3)) + ctx->style = 1; + + /* Add the character to the history. */ + ctx->history[ctx->cur++] = v; + + for (st = 0; st < 2; st++) { + for (win = (st == 0) ? 1 : 2; win < 4; win++) { + unsigned long oldref = ctx->refpoint[st][win]; + unsigned long newref = get_refpoint(v, st, win); + int enclen1, enclen2; + + if (newref == oldref) + continue; + + enclen1 = eval_compression(ctx); + ctx->refpoint[st][win] = newref; + enclen2 = eval_compression(ctx); + if (enclen2 > enclen1) + ctx->refpoint[st][win] = oldref; + } + } +} + +static unsigned long +get_refpoint(unsigned long v, int st, int win) { +#define ROUND_BITS(v, b) (((v) >> (b)) << (b)) + if (win == 1) { + return (ROUND_BITS(v, 3)); + } else if (win == 2) { + if (0xa0 <= v && v <= 0x17f) + return (0xa0); + else + return (ROUND_BITS(v, 8)); + } else if (win == 3) { + if (0x3000 <= v && v <= 0x9ffff) + return (0x4e00); + else if (st == 1 && 0xa000 <= v && v <= 0xd7ff) + return (0x8800); + else + return (ROUND_BITS(v, (st == 0) ? 19 : 20)); + } else { + FATAL(("get_refpoint: internal error\n")); + return (0); /* for lint */ + } +#undef ROUND_BITS +} + +static int +eval_compression(amcacev_ctx *ctx) { + int i; + int len = 0; + int cur = ctx->cur; + unsigned long *p = ctx->history; + + for (i = 0; i < cur; i++) { + if (!is_ldh(p[i])) { + int sz; + (void)encode_delta(p[i], ctx, &sz); + len += sz; + } + } + return (len); +} + +static unsigned long +encode_delta(unsigned long v, amcacev_ctx *ctx, int *szp) { + int sz; + + for (sz = (ctx->style == 0) ? 1 : 2; sz < 6; sz++) { + if (IN_WINDOW(ctx, v, ctx->style, sz)) { + *szp = sz; + return (v - ctx->refpoint[ctx->style][sz]); + } + } + FATAL(("amcacev_encode_mode: internal error\n")); + return (0); /* for lint */ +} + +static int +amcacev_getwc(const char *s, size_t len, int style, unsigned long *vp) { + size_t orglen = len; + unsigned long v = 0; + int style1_special = 0; + + while (len > 0) { + int c = *s++; + + if ('a' <= c && c <= 'z') + c = base32decode_ascii[c - 'a']; + else if ('A' <= c && c <= 'Z') + c = base32decode_ascii[c - 'A']; + else if ('0' <= c && c <= '9') + c = base32decode_digit[c - '0']; + else + c = -1; + + if (c < 0) + return (0); /* invalid character */ + + if (style == 1 && len == orglen && (c & 0x10) == 0) + style1_special = 3; + + len--; + if (style1_special != 0) { + v = (v << 5) + (c & 0x1f); + if (--style1_special == 0) { + *vp = v + 0x1000; + return (3); + } + } else { + v = (v << 4) + (c & 0xf); + + if ((c & 0x10) == 0) { + *vp = v; + return (orglen - len); + } + } + } + return (0); /* final character missing */ +} + +static int +amcacev_putwc(char *s, size_t len, unsigned long delta, int w) { + if (len < w) + return (0); + + if (w == 3 && delta >= 0x1000) { + delta -= 0x1000; + s[0] = base32encode[(delta >> 10) & 0x1f]; + s[1] = base32encode[(delta >> 5) & 0x1f]; + s[2] = base32encode[delta & 0x1f]; + } else { + int i, shift; + + for (shift = 0, i = w - 1; i >= 0; i--) { + s[i] = base32encode[(delta & 0xf) + shift]; + delta >>= 4; + shift = 16; + } + } + return (w); +} + +static int +is_ldh(unsigned long v) { + if (('a' <= v && v <= 'z') || ('A' <= v && v <= 'Z') || + ('0' <= v && v <= '9') || v == '-') + return (1); + else + return (0); +} diff --git a/contrib/idn/mdnkit/lib/amcacew.c b/contrib/idn/mdnkit/lib/amcacew.c new file mode 100644 index 00000000000..561c449f888 --- /dev/null +++ b/contrib/idn/mdnkit/lib/amcacew.c @@ -0,0 +1,459 @@ +#ifndef lint +static char *rcsid = "$Id: amcacew.c,v 1.1 2002/02/08 05:39:57 marka Exp $"; +#endif + +/* + * Copyright (c) 2001 Japan Network Information Center. + * All rights reserved. + * + * By using this file, you agree to the terms and conditions set forth bellow. + * + * LICENSE TERMS AND CONDITIONS + * + * The following License Terms and Conditions apply, unless a different + * license is obtained from Japan Network Information Center ("JPNIC"), + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. + * + * 1. Use, Modification and Redistribution (including distribution of any + * modified or derived work) in source and/or binary forms is permitted + * under this License Terms and Conditions. + * + * 2. Redistribution of source code must retain the copyright notices as they + * appear in each source code file, this License Terms and Conditions. + * + * 3. Redistribution in binary form must reproduce the Copyright Notice, + * this License Terms and Conditions, in the documentation and/or other + * materials provided with the distribution. For the purposes of binary + * distribution the "Copyright Notice" refers to the following language: + * "Copyright (c) Japan Network Information Center. All rights reserved." + * + * 4. Neither the name of JPNIC may be used to endorse or promote products + * derived from this Software without specific prior written approval of + * JPNIC. + * + * 5. Disclaimer/Limitation of Liability: THIS SOFTWARE IS PROVIDED BY JPNIC + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A + * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JPNIC BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + * + * 6. Indemnification by Licensee + * Any person or entities using and/or redistributing this Software under + * this License Terms and Conditions shall defend indemnify and hold + * harmless JPNIC from and against any and all judgements damages, + * expenses, settlement liabilities, cost and other liabilities of any + * kind as a result of use and redistribution of this Software or any + * claim, suite, action, litigation or proceeding by any third party + * arising out of or relates to this License Terms and Conditions. + * + * 7. Governing Law, Jurisdiction and Venue + * This License Terms and Conditions shall be governed by and and + * construed in accordance with the law of Japan. Any person or entities + * using and/or redistributing this Software under this License Terms and + * Conditions hereby agrees and consent to the personal and exclusive + * jurisdiction and venue of Tokyo District Court of Japan. + */ + +#include + +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/* + * Although draft-ietf-idn-amc-ace-w-00.txt doesn't specify the ACE + * signature, we have to choose one. In order to prevent the converted + * name from beginning with a hyphen, we should choose a prefix rather + * than a suffix. + */ +#if !defined(MDN_AMCACEW_PREFIX) && !defined(MDN_AMCACEW_SUFFIX) +#define MDN_AMCACEW_PREFIX "amc5-" +#endif + +#define MAX_UCS 0x10FFFF + +typedef struct { + int style; /* 0 or 1 */ + unsigned long refpoint[6]; /* refpoint[0] is not used. */ +} amcacew_ctx; + +static const unsigned long amcacew_refpoint_initial[6] = { + 0, 0xe0, 0xa0, 0, 0, 0x10000, +}; + +static const char *base32encode = "abcdefghijkmnpqrstuvwxyz23456789"; +static const int base32decode_ascii[26] = { + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, -1, 11, 12, -1, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, +}; +static const int base32decode_digit[10] = { + -1, -1, 24, 25, 26, 27, 28, 29, 30, 31, +}; + +static mdn_result_t amcacew_decode(const char *from, size_t fromlen, + char *to, size_t tolen); +static mdn_result_t amcacew_encode(const char *from, size_t fromlen, + char *to, size_t tolen); +static void amcacew_init_ctx(amcacew_ctx *ctx); +static void amcacew_update_ctx(amcacew_ctx *ctx, unsigned long v, + int sz); +static unsigned long amcacew_encode_delta(unsigned long v, + amcacew_ctx *ctx, int *szp); +static int amcacew_getwc(const char *s, size_t len, int style, + unsigned long *vp); +static int amcacew_putwc(char *s, size_t len, + unsigned long delta, int w); +static int is_ldh(unsigned long v); + +static mdn__ace_t amcacew_profile = { +#ifdef MDN_AMCACEW_PREFIX + mdn__ace_prefix, + MDN_AMCACEW_PREFIX, +#else + mdn__ace_suffix, + MDN_AMCACEW_SUFFIX, +#endif + amcacew_encode, + amcacew_decode, +}; + + + +/* ARGSUSED */ +mdn_result_t +mdn__amcacew_open(mdn_converter_t ctx, mdn_converter_dir_t dir, + void **privdata) +{ + return (mdn_success); +} + +/* ARGSUSED */ +mdn_result_t +mdn__amcacew_close(mdn_converter_t ctx, void *privdata, + mdn_converter_dir_t dir) +{ + return (mdn_success); +} + +mdn_result_t +mdn__amcacew_convert(mdn_converter_t ctx, void *privdata, + mdn_converter_dir_t dir, + const char *from, char *to, size_t tolen) +{ + mdn_result_t r; + + assert(ctx != NULL && + (dir == mdn_converter_l2u || dir == mdn_converter_u2l)); + + TRACE(("mdn__amcacew_convert(dir=%s,from=\"%s\")\n", + dir == mdn_converter_l2u ? "l2u" : "u2l", + mdn_debug_xstring(from, 20))); + + r = mdn__ace_convert(&amcacew_profile, dir, from, to, tolen); + if (r != mdn_success) + return (r); + + DUMP(("mdn__amcacew_convert: \"%s\"\n", mdn_debug_xstring(to, 70))); + + return (r); +} + +static mdn_result_t +amcacew_decode(const char *from, size_t fromlen, char *to, size_t tolen) { + int literal_mode = 0; + amcacew_ctx ctx; + + /* Initialize refpoints. */ + amcacew_init_ctx(&ctx); + + while (fromlen > 0) { + unsigned long v; + int len; + + if (from[0] == '-') { + if (fromlen > 1 && from[1] == '-') { + v = '-'; + from += 2; + fromlen -= 2; + } else { + literal_mode = !literal_mode; + from++; + fromlen--; + continue; + } + } else if (literal_mode) { + v = from[0]; + from++; + fromlen--; + } else { + len = amcacew_getwc(from, fromlen, ctx.style, &v); + if (len == 0) + return (mdn_invalid_encoding); + from += len; + fromlen -= len; + + v += ctx.refpoint[len]; + + amcacew_update_ctx(&ctx, v, len); + } + + len = mdn_utf8_putwc(to, tolen, v); + if (len == 0) + return (mdn_buffer_overflow); + to += len; + tolen -= len; + } + + /* + * Terminate with NUL. + */ + if (tolen <= 0) + return (mdn_buffer_overflow); + *to = '\0'; + + return (mdn_success); +} + +static mdn_result_t +amcacew_encode(const char *from, size_t fromlen, char *to, size_t tolen) { + int literal_mode = 0; + amcacew_ctx ctx; + + /* Initialize refpoints. */ + amcacew_init_ctx(&ctx); + + while (fromlen > 0) { + unsigned long c; + size_t len; + + len = mdn_utf8_getwc(from, fromlen, &c); + from += len; + fromlen -= len; + if (len == 0) + return (mdn_invalid_encoding); + + if (c > MAX_UCS) { + /* + * Invalid Unicode code point. + */ + return (mdn_invalid_encoding); + } else if (c == '-') { + /* + * Convert "-" to "--". + */ + if (tolen < 2) + return (mdn_buffer_overflow); + to[0] = to[1] = '-'; + to += 2; + tolen -= 2; + } else if (is_ldh(c)) { + /* + * LDH characters. + */ + if (literal_mode == 0) { + /* + * Go into literal mode. + */ + if (tolen < 1) + return (mdn_buffer_overflow); + *to++ = '-'; + tolen--; + literal_mode = 1; + } + if (tolen < 1) + return (mdn_buffer_overflow); + *to++ = c; + tolen--; + } else { + /* + * Non-LDH characters. + */ + int sz; + unsigned long delta; + + if (literal_mode != 0) { + /* + * Get out of literal mode. + */ + if (tolen < 1) + return (mdn_buffer_overflow); + *to++ = '-'; + tolen--; + literal_mode = 0; + } + delta = amcacew_encode_delta(c, &ctx, &sz); + sz = amcacew_putwc(to, tolen, delta, sz); + if (sz == 0) + return (mdn_buffer_overflow); + to += sz; + tolen -= sz; + amcacew_update_ctx(&ctx, c, sz); + } + } + + /* + * Terminate with NUL. + */ + if (tolen <= 0) + return (mdn_buffer_overflow); + + *to = '\0'; + + return (mdn_success); +} + +static void +amcacew_init_ctx(amcacew_ctx *ctx) { + ctx->style = 0; + (void)memcpy(ctx->refpoint, amcacew_refpoint_initial, + sizeof(ctx->refpoint)); +} + +static void +amcacew_update_ctx(amcacew_ctx *ctx, unsigned long v, int sz) { + if (sz != 3) + ctx->style = (sz < 3) ? 0 : 1; + +#define ROUND_BITS(v, b) (((v) >> (b)) << (b)) + /* Update refpoint[1] */ + ctx->refpoint[1] = ROUND_BITS(v, 4); + + /* Update refpoint[2] */ + if (sz > 2) { + if (0xa0 <= v && v <= 0x17f) + ctx->refpoint[2] = 0xa0; + else + ctx->refpoint[2] = ROUND_BITS(v, 8); + } + + /* Update refpoint[3] */ + if (sz > 3) { + if (0x3000 <= v && v <= 0x9fff) + ctx->refpoint[3] = 0x4e00; + else if (0xa000 <= v && v <= 0xd7ff && ctx->style == 1) + ctx->refpoint[3] = 0x8800; + else + ctx->refpoint[3] = ROUND_BITS(v, 12); + } +#undef ROUND_BITS +} + +static unsigned long +amcacew_encode_delta(unsigned long v, amcacew_ctx *ctx, int *szp) { + int sz, szinit; + unsigned long *maxdelta; + unsigned long *refpoint = ctx->refpoint; + static unsigned long maxdelta_style0[6] = { + 0, 0xf, 0xff, 0xfff, 0xffff, 0xfffff, + }; + static unsigned long maxdelta_style1[6] = { + 0, 0, 0xff, 0x4fff, 0xffff, 0xfffff, + }; + + if (ctx->style == 0) { + szinit = 1; + maxdelta = maxdelta_style0; + } else { + szinit = 2; + maxdelta = maxdelta_style1; + } + for (sz = szinit; sz < 6; sz++) { + if (v >= refpoint[sz] && v - refpoint[sz] <= maxdelta[sz]) { + *szp = sz; + return (v - refpoint[sz]); + } + } + FATAL(("amcacew_encode_mode: internal error\n")); + return (0); /* for lint */ +} + +static int +amcacew_getwc(const char *s, size_t len, int style, unsigned long *vp) { + size_t orglen = len; + unsigned long v = 0; + int style1_special = 0; + + while (len > 0) { + int c = *s++; + + if ('a' <= c && c <= 'z') + c = base32decode_ascii[c - 'a']; + else if ('A' <= c && c <= 'Z') + c = base32decode_ascii[c - 'A']; + else if ('0' <= c && c <= '9') + c = base32decode_digit[c - '0']; + else + c = -1; + + if (c < 0) + return (0); /* invalid character */ + + if (style == 1 && len == orglen && (c & 0x10) == 0) + style1_special = 3; + + len--; + if (style1_special != 0) { + v = (v << 5) + (c & 0x1f); + if (--style1_special == 0) { + *vp = v + 0x1000; + return (3); + } + } else { + v = (v << 4) + (c & 0xf); + + if ((c & 0x10) == 0) { + *vp = v; + return (orglen - len); + } + } + } + return (0); /* final character missing */ +} + +static int +amcacew_putwc(char *s, size_t len, unsigned long delta, int w) { + if (len < w) + return (0); + + if (w == 3 && delta >= 0x1000) { + delta -= 0x1000; + s[0] = base32encode[(delta >> 10) & 0x1f]; + s[1] = base32encode[(delta >> 5) & 0x1f]; + s[2] = base32encode[delta & 0x1f]; + } else { + int i, shift; + + for (shift = 0, i = w - 1; i >= 0; i--) { + s[i] = base32encode[(delta & 0xf) + shift]; + delta >>= 4; + shift = 16; + } + } + return (w); +} + +static int +is_ldh(unsigned long v) { + if (('a' <= v && v <= 'z') || ('A' <= v && v <= 'Z') || + ('0' <= v && v <= '9') || v == '-') + return (1); + else + return (0); +} diff --git a/contrib/idn/mdnkit/lib/amcacez.c b/contrib/idn/mdnkit/lib/amcacez.c new file mode 100644 index 00000000000..d1a429084dc --- /dev/null +++ b/contrib/idn/mdnkit/lib/amcacez.c @@ -0,0 +1,484 @@ +#ifndef lint +static char *rcsid = "$Id: amcacez.c,v 1.1 2002/02/08 05:39:57 marka Exp $"; +#endif + +/* + * Copyright (c) 2001 Japan Network Information Center. + * All rights reserved. + * + * By using this file, you agree to the terms and conditions set forth bellow. + * + * LICENSE TERMS AND CONDITIONS + * + * The following License Terms and Conditions apply, unless a different + * license is obtained from Japan Network Information Center ("JPNIC"), + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. + * + * 1. Use, Modification and Redistribution (including distribution of any + * modified or derived work) in source and/or binary forms is permitted + * under this License Terms and Conditions. + * + * 2. Redistribution of source code must retain the copyright notices as they + * appear in each source code file, this License Terms and Conditions. + * + * 3. Redistribution in binary form must reproduce the Copyright Notice, + * this License Terms and Conditions, in the documentation and/or other + * materials provided with the distribution. For the purposes of binary + * distribution the "Copyright Notice" refers to the following language: + * "Copyright (c) Japan Network Information Center. All rights reserved." + * + * 4. Neither the name of JPNIC may be used to endorse or promote products + * derived from this Software without specific prior written approval of + * JPNIC. + * + * 5. Disclaimer/Limitation of Liability: THIS SOFTWARE IS PROVIDED BY JPNIC + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A + * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JPNIC BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + * + * 6. Indemnification by Licensee + * Any person or entities using and/or redistributing this Software under + * this License Terms and Conditions shall defend indemnify and hold + * harmless JPNIC from and against any and all judgements damages, + * expenses, settlement liabilities, cost and other liabilities of any + * kind as a result of use and redistribution of this Software or any + * claim, suite, action, litigation or proceeding by any third party + * arising out of or relates to this License Terms and Conditions. + * + * 7. Governing Law, Jurisdiction and Venue + * This License Terms and Conditions shall be governed by and and + * construed in accordance with the law of Japan. Any person or entities + * using and/or redistributing this Software under this License Terms and + * Conditions hereby agrees and consent to the personal and exclusive + * jurisdiction and venue of Tokyo District Court of Japan. + */ + +#include + +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/* + * Although draft-ietf-idn-amc-ace-z-01.txt doesn't specify the ACE + * signature, we have to choose one. In order to prevent the converted + * name from beginning with a hyphen, we should choose a prefix rather + * than a suffix. + */ +#if !defined(MDN_AMCACEZ_PREFIX) && !defined(MDN_AMCACEZ_SUFFIX) +#define MDN_AMCACEZ_PREFIX "zq--" +#endif + +#define INVALID_UCS 0x80000000 +#define MAX_UCS 0x10FFFF + +/* + * As the draft states, it is possible that `delta' may overflow during + * the encoding. The upper bound of 'delta' is: + * <# of chars. of input string> + * + * <# of chars. of input string + 1> + * For this value not to be greater than 0xffffffff (since the calculation + * is done using unsigned long, which is at least 32bit long), the maxmum + * input string size is about 3850 characters, which is long enough for + * a domain label... + */ +#define AMCACEZ_MAXINPUT 3800 + +/* + * Parameters. + */ +#define AMCACEZ_BASE 36 +#define AMCACEZ_TMIN 1 +#define AMCACEZ_TMAX 26 +#define AMCACEZ_SKEW 38 +#define AMCACEZ_DAMP 700 +#define AMCACEZ_INITIAL_BIAS 72 +#define AMCACEZ_INITIAL_N 0x80 + +static mdn_result_t amcacez_decode(const char *from, size_t fromlen, + char *to, size_t tolen); +static mdn_result_t amcacez_encode(const char *from, size_t fromlen, + char *to, size_t tolen); +static int amcacez_getwc(const char *s, size_t len, + int bias, unsigned long *vp); +static int amcacez_putwc(char *s, size_t len, + unsigned long delta, int bias); +static int amcacez_update_bias(unsigned long delta, + size_t npoints, int first); + +static mdn__ace_t amcacez_profile = { +#ifdef MDN_AMCACEZ_PREFIX + mdn__ace_prefix, + MDN_AMCACEZ_PREFIX, +#else + mdn__ace_suffix, + MDN_AMCACEZ_SUFFIX, +#endif + amcacez_encode, + amcacez_decode, +}; + + + +/* ARGSUSED */ +mdn_result_t +mdn__amcacez_open(mdn_converter_t ctx, mdn_converter_dir_t dir, + void **privdata) +{ + return (mdn_success); +} + +/* ARGSUSED */ +mdn_result_t +mdn__amcacez_close(mdn_converter_t ctx, void *privdata, + mdn_converter_dir_t dir) +{ + return (mdn_success); +} + +mdn_result_t +mdn__amcacez_convert(mdn_converter_t ctx, void *privdata, + mdn_converter_dir_t dir, + const char *from, char *to, size_t tolen) +{ + mdn_result_t r; + + assert(ctx != NULL && + (dir == mdn_converter_l2u || dir == mdn_converter_u2l)); + + TRACE(("mdn__amcacez_convert(dir=%s,from=\"%s\")\n", + dir == mdn_converter_l2u ? "l2u" : "u2l", + mdn_debug_xstring(from, 20))); + + r = mdn__ace_convert(&amcacez_profile, dir, from, to, tolen); + if (r != mdn_success) + return (r); + + DUMP(("mdn__amcacez_convert: \"%s\"\n", mdn_debug_xstring(to, 70))); + + return (r); +} + +static mdn_result_t +amcacez_decode(const char *from, size_t fromlen, char *to, size_t tolen) { + unsigned long *ucs, ucs_tmp[64], c, idx; + size_t uidx, fidx, ucslen; + int first, bias; + mdn_result_t r; + + /* + * Allocate enough memory for UCS-4 code point array 'ucs'. + */ + if (fromlen > 64) { + ucs = malloc(fromlen * sizeof(unsigned long)); + if (ucs == NULL) + return (mdn_nomemory); + } else { + ucs = ucs_tmp; + } + ucslen = 0; + + /* + * Find the last delimiter, and copy the characters + * before it verbatim. + */ + for (fidx = fromlen; fidx > 0; fidx--) { + if (from[fidx - 1] == '-') { + for (uidx = 0; uidx < fidx - 1; uidx++) { + ucs[uidx] = from[uidx]; + } + ucslen = uidx; + break; + } + } + + first = 1; + bias = AMCACEZ_INITIAL_BIAS; + c = AMCACEZ_INITIAL_N; + idx = 0; + while (fidx < fromlen) { + int len; + unsigned long delta; + int i; + + len = amcacez_getwc(from + fidx, fromlen - fidx, bias, &delta); + if (len == 0) + return (mdn_invalid_encoding); + fidx += len; + + bias = amcacez_update_bias(delta, ucslen + 1, first); + first = 0; + idx += delta; + c += idx / (ucslen + 1); + uidx = idx % (ucslen + 1); + + /* Insert 'c' at uidx. */ + for (i = ucslen; i > uidx; i--) + ucs[i] = ucs[i - 1]; + ucs[uidx] = c; + + ucslen++; + idx = uidx + 1; + } + + /* + * Convert from UCS-4 to UTF-8. + */ + for (uidx = 0; uidx < ucslen; uidx++) { + int len = mdn_utf8_putwc(to, tolen, ucs[uidx]); + if (len == 0) + goto overflow; + to += len; + tolen -= len; + } + /* Terminate with NUL. */ + if (tolen <= 0) + goto overflow; + *to = '\0'; + + r = mdn_success; + ret: + if (ucs != ucs_tmp) + free(ucs); + return (r); + + overflow: + r = mdn_buffer_overflow; + goto ret; +} + +static mdn_result_t +amcacez_encode(const char *from, size_t fromlen, char *to, size_t tolen) { + unsigned long *ucs, ucs_tmp[64]; + unsigned long cur_code, next_code, delta; + size_t ucslen, ucsdone; + size_t toidx; + int uidx, bias, first; + mdn_result_t r; + + /* + * Convert UTF-8 string 'from' to UCS-4 code point array 'ucs'. + */ + if (fromlen > 64) { + ucs = malloc(fromlen * sizeof(unsigned long)); + if (ucs == NULL) + return (mdn_nomemory); + } else { + ucs = ucs_tmp; + } + ucslen = 0; + while (fromlen > 0) { + unsigned long c; + int len; + + len = mdn_utf8_getwc(from, fromlen, &c); + if (len == 0 || c > MAX_UCS) + goto invalid; + ucs[ucslen++] = c; + from += len; + fromlen -= len; + } + + /* + * If the input string is too long (actually too long to be sane), + * return failure in order to prevent possible overflow. + */ + if (ucslen > AMCACEZ_MAXINPUT) + return (mdn_failure); + + ucsdone = 0; /* number of characters processed */ + toidx = 0; + + /* + * First, pick up basic code points and copy them to 'to'. + */ + for (uidx = 0; uidx < ucslen; uidx++) { + if (ucs[uidx] < 0x80) { + if (toidx >= tolen) + goto overflow; + to[toidx++] = ucs[uidx]; + ucsdone++; + } + } + + /* + * If there are any basic code points, output a delimiter + * (hyphen-minus). + */ + if (toidx > 0) { + if (toidx >= tolen) + goto overflow; + to[toidx++] = '-'; + to += toidx; + tolen -= toidx; + } + + /* + * Then encode non-basic characters. + */ + first = 1; + cur_code = AMCACEZ_INITIAL_N; + bias = AMCACEZ_INITIAL_BIAS; + delta = 0; + while (ucsdone < ucslen) { + int limit = -1, rest; + + /* + * Find the smallest code point equal to or greater + * than 'cur_code'. Also remember the index of the + * last occurence of the code point. + */ + for (next_code = MAX_UCS, uidx = ucslen - 1; + uidx >= 0; uidx--) { + if (ucs[uidx] >= cur_code && ucs[uidx] < next_code) { + next_code = ucs[uidx]; + limit = uidx; + } + } + /* There must be such code point. */ + assert(limit >= 0); + + delta += (next_code - cur_code) * (ucsdone + 1); + cur_code = next_code; + + /* + * Scan the input string again, and encode characters + * whose code point is 'cur_code'. Use 'limit' to avoid + * unnecessary scan. + */ + for (uidx = 0, rest = ucsdone; uidx <= limit; uidx++) { + if (ucs[uidx] < cur_code) { + delta++; + rest--; + } else if (ucs[uidx] == cur_code) { + int sz = amcacez_putwc(to, tolen, delta, bias); + if (sz == 0) + goto overflow; + to += sz; + tolen -= sz; + ucsdone++; + bias = amcacez_update_bias(delta, ucsdone, + first); + delta = 0; + first = 0; + } + } + delta += rest + 1; + cur_code++; + } + + /* + * Terminate with NUL. + */ + if (tolen <= 0) + goto overflow; + *to = '\0'; + + r = mdn_success; + ret: + if (ucs != ucs_tmp) + free(ucs); + return (r); + + invalid: + r = mdn_invalid_encoding; + goto ret; + overflow: + r = mdn_buffer_overflow; + goto ret; +} + +static int +amcacez_getwc(const char *s, size_t len, int bias, unsigned long *vp) { + size_t orglen = len; + unsigned long v = 0, w = 1; + int k; + + for (k = AMCACEZ_BASE - bias; len > 0; k += AMCACEZ_BASE) { + int c = *s++; + int t = (k < AMCACEZ_TMIN) ? AMCACEZ_TMIN : + (k > AMCACEZ_TMAX) ? AMCACEZ_TMAX : k; + + len--; + if ('a' <= c && c <= 'z') + c = c - 'a'; + else if ('A' <= c && c <= 'Z') + c = c - 'A'; + else if ('0' <= c && c <= '9') + c = c - '0' + 26; + else + c = -1; + + if (c < 0) + return (0); /* invalid character */ + + v += c * w; + + if (c < t) { + *vp = v; + return (orglen - len); + } + + w *= (AMCACEZ_BASE - t); + } + + return (0); /* final character missing */ +} + +static int +amcacez_putwc(char *s, size_t len, unsigned long delta, int bias) { + const char *amcacez_base36 = "abcdefghijklmnopqrstuvwxyz0123456789"; + int k; + char *sorg = s; + + for (k = AMCACEZ_BASE - bias; 1; k += AMCACEZ_BASE) { + int t = (k < AMCACEZ_TMIN) ? AMCACEZ_TMIN : + (k > AMCACEZ_TMAX) ? AMCACEZ_TMAX : k; + + if (delta < t) + break; + if (len < 1) + return (0); + *s++ = amcacez_base36[t + ((delta - t) % (AMCACEZ_BASE - t))]; + len--; + delta = (delta - t) / (AMCACEZ_BASE - t); + } + if (len < 1) + return (0); + *s++ = amcacez_base36[delta]; + return (s - sorg); +} + +static int +amcacez_update_bias(unsigned long delta, size_t npoints, int first) { + int k = 0; + + delta /= first ? AMCACEZ_DAMP : 2; + delta += delta / npoints; + + while (delta > ((AMCACEZ_BASE - AMCACEZ_TMIN) * AMCACEZ_TMAX) / 2) { + delta /= AMCACEZ_BASE - AMCACEZ_TMIN; + k++; + } + return (AMCACEZ_BASE * k + + (((AMCACEZ_BASE - AMCACEZ_TMIN + 1) * delta) / + (delta + AMCACEZ_SKEW))); +} diff --git a/contrib/idn/mdnkit/lib/api.c b/contrib/idn/mdnkit/lib/api.c index cd25322be72..706076f98c4 100644 --- a/contrib/idn/mdnkit/lib/api.c +++ b/contrib/idn/mdnkit/lib/api.c @@ -1,5 +1,5 @@ #ifndef lint -static char *rcsid = "$Id: api.c,v 1.1 2001/06/09 00:30:12 tale Exp $"; +static char *rcsid = "$Id: api.c,v 1.2 2002/02/08 05:39:57 marka Exp $"; #endif /* @@ -11,8 +11,8 @@ static char *rcsid = "$Id: api.c,v 1.1 2001/06/09 00:30:12 tale Exp $"; * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted @@ -89,7 +89,7 @@ static struct actiondesc { #define ENCODE_MASK \ (MDN_LOCALCONV|MDN_IDNCONV|MDN_NAMEPREP|MDN_UNASCHECK|\ MDN_DELIMMAP|MDN_LOCALMAP) -#define DECODE_MASK (MDN_LOCALCONV|MDN_IDNCONV) +#define DECODE_MASK (MDN_LOCALCONV|MDN_NAMEPREP|MDN_UNASCHECK|MDN_IDNCONV) static int initialized; static mdn_resconf_t default_conf; @@ -128,7 +128,7 @@ mdn_encodename(int actions, const char *from, char *to, size_t tolen) { TRACE(("mdn_encodename(actions=%s, from=\"%s\")\n", actions_to_string(actions), - mdn_debug_xstring(from, 30))); + mdn_debug_xstring(from, 256))); if (actions & ~ENCODE_MASK) { WARNING(("mdn_encodename: invalid actions 0x%x\n", actions)); @@ -169,7 +169,7 @@ mdn_decodename(int actions, const char *from, char *to, size_t tolen) { TRACE(("mdn_decodename(actions=%s, from=\"%s\")\n", actions_to_string(actions), - mdn_debug_xstring(from, 30))); + mdn_debug_xstring(from, 256))); if (actions & ~DECODE_MASK) { WARNING(("mdn_decodename: invalid actions 0x%x\n", actions)); @@ -181,6 +181,14 @@ mdn_decodename(int actions, const char *from, char *to, size_t tolen) { if (actions & MDN_IDNCONV) *p++ = 'i'; + if (actions & MDN_NAMEPREP) { + *p++ = '!'; + *p++ = 'N'; + } + if (actions & MDN_UNASCHECK) { + *p++ = '!'; + *p++ = 'u'; + } if (actions & MDN_LOCALCONV) *p++ = 'L'; *p = '\0'; diff --git a/contrib/idn/mdnkit/lib/brace.c b/contrib/idn/mdnkit/lib/brace.c index d87533e472e..e0601d42846 100644 --- a/contrib/idn/mdnkit/lib/brace.c +++ b/contrib/idn/mdnkit/lib/brace.c @@ -1,5 +1,5 @@ #ifndef lint -static char *rcsid = "$Id: brace.c,v 1.16 2001/03/07 00:58:51 ishisone Exp $"; +static char *rcsid = "$Id: brace.c,v 1.1 2002/01/02 02:46:40 marka Exp $"; #endif /* @@ -11,8 +11,8 @@ static char *rcsid = "$Id: brace.c,v 1.16 2001/03/07 00:58:51 ishisone Exp $"; * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/lib/checker.c b/contrib/idn/mdnkit/lib/checker.c index 93d91354695..6c23430a40c 100644 --- a/contrib/idn/mdnkit/lib/checker.c +++ b/contrib/idn/mdnkit/lib/checker.c @@ -1,5 +1,5 @@ #ifndef lint -static char *rcsid = "$Id: checker.c,v 1.1 2001/06/09 00:30:14 tale Exp $"; +static char *rcsid = "$Id: checker.c,v 1.2 2002/02/08 05:40:00 marka Exp $"; #endif /* @@ -11,8 +11,8 @@ static char *rcsid = "$Id: checker.c,v 1.1 2001/06/09 00:30:14 tale Exp $"; * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted @@ -88,36 +88,54 @@ typedef struct { /* * Standard checking schemes. */ -static const check_scheme_t nameprep_02_prohibit_scheme = { - "prohibit#nameprep-02", - "nameprep-02", +static const check_scheme_t nameprep_03_prohibit_scheme = { + "prohibit#nameprep-03", + "nameprep-03", mdn__nameprep_createproc, mdn__nameprep_destroyproc, mdn__nameprep_prohibitproc, NULL, }; -static const check_scheme_t nameprep_02_unasigned_scheme = { - "unassigned#nameprep-02", - "nameprep-02", +static const check_scheme_t nameprep_03_unasigned_scheme = { + "unassigned#nameprep-03", + "nameprep-03", mdn__nameprep_createproc, mdn__nameprep_destroyproc, mdn__nameprep_unassignedproc, NULL, }; -static const check_scheme_t nameprep_03_prohibit_scheme = { - "prohibit#nameprep-03", - "nameprep-03", +static const check_scheme_t nameprep_05_prohibit_scheme = { + "prohibit#nameprep-05", + "nameprep-05", mdn__nameprep_createproc, mdn__nameprep_destroyproc, mdn__nameprep_prohibitproc, NULL, }; -static const check_scheme_t nameprep_03_unasigned_scheme = { - "unassigned#nameprep-03", - "nameprep-03", +static const check_scheme_t nameprep_05_unasigned_scheme = { + "unassigned#nameprep-05", + "nameprep-05", + mdn__nameprep_createproc, + mdn__nameprep_destroyproc, + mdn__nameprep_unassignedproc, + NULL, +}; + +static const check_scheme_t nameprep_06_prohibit_scheme = { + "prohibit#nameprep-06", + "nameprep-06", + mdn__nameprep_createproc, + mdn__nameprep_destroyproc, + mdn__nameprep_prohibitproc, + NULL, +}; + +static const check_scheme_t nameprep_06_unasigned_scheme = { + "unassigned#nameprep-06", + "nameprep-06", mdn__nameprep_createproc, mdn__nameprep_destroyproc, mdn__nameprep_unassignedproc, @@ -143,10 +161,12 @@ static const check_scheme_t filecheck_unassigned_scheme = { }; static const check_scheme_t *standard_check_schemes[] = { - &nameprep_02_unasigned_scheme, - &nameprep_02_prohibit_scheme, &nameprep_03_unasigned_scheme, &nameprep_03_prohibit_scheme, + &nameprep_05_unasigned_scheme, + &nameprep_05_prohibit_scheme, + &nameprep_06_unasigned_scheme, + &nameprep_06_prohibit_scheme, &filecheck_prohibit_scheme, &filecheck_unassigned_scheme, NULL, @@ -357,6 +377,9 @@ mdn_checker_add(mdn_checker_t ctx, const char *scheme_name) { ctx->schemes[ctx->nschemes].context = scheme_context; ctx->nschemes++; + if (buffer != static_buffer) + free(buffer); + return (mdn_success); failure: @@ -390,6 +413,7 @@ mdn_checker_addall(mdn_checker_t ctx, const char **scheme_names, mdn_result_t mdn_checker_lookup(mdn_checker_t ctx, const char *utf8, const char **found) { mdn_result_t r; + const char *p; int i; assert(scheme_hash != NULL); @@ -402,15 +426,16 @@ mdn_checker_lookup(mdn_checker_t ctx, const char *utf8, const char **found) { * Lookup. */ for (i = 0; i < ctx->nschemes; i++) { - r = (ctx->schemes[i].lookup)(ctx->schemes[i].context, utf8, - found); - if (r != mdn_success) - return (r); - else if (*found == NULL) - return (mdn_success); - else if (**found != '.') - return (mdn_prohibited); - utf8 = *found + 1; + for (p = utf8; *p != '\0'; p = *found + 1) { + r = (ctx->schemes[i].lookup)(ctx->schemes[i].context, + p, found); + if (r != mdn_success) + return (r); + else if (*found == NULL) + break; + else if (**found != '.') + return (mdn_success); + } } *found = NULL; diff --git a/contrib/idn/mdnkit/lib/converter.c b/contrib/idn/mdnkit/lib/converter.c index 32a558a621f..3f9e70e222f 100644 --- a/contrib/idn/mdnkit/lib/converter.c +++ b/contrib/idn/mdnkit/lib/converter.c @@ -1,5 +1,5 @@ #ifndef lint -static char *rcsid = "$Id: converter.c,v 1.35 2001/04/17 01:35:42 ishisone Exp $"; +static char *rcsid = "$Id: converter.c,v 1.1 2002/01/02 02:46:40 marka Exp $"; #endif /* @@ -11,8 +11,8 @@ static char *rcsid = "$Id: converter.c,v 1.35 2001/04/17 01:35:42 ishisone Exp $ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted @@ -75,18 +75,24 @@ static char *rcsid = "$Id: converter.c,v 1.35 2001/04/17 01:35:42 ishisone Exp $ #include #include #include -#include -#include -#include #include +#include +#include #include +#include +#ifdef MDN_EXTRA_ACE +#include +#include #include #include -#include #include #include #include #include +#include +#include +#include +#endif /* MDN_EXTRA_ACE */ #ifndef MDN_UTF8_ENCODING_NAME #define MDN_UTF8_ENCODING_NAME "UTF-8" /* by IANA */ @@ -121,6 +127,18 @@ static char *rcsid = "$Id: converter.c,v 1.35 2001/04/17 01:35:42 ishisone Exp $ #ifndef MDN_AMCACER_ENCODING_NAME #define MDN_AMCACER_ENCODING_NAME "AMC-ACE-R" #endif +#ifndef MDN_AMCACEV_ENCODING_NAME +#define MDN_AMCACEV_ENCODING_NAME "AMC-ACE-V" +#endif +#ifndef MDN_AMCACEW_ENCODING_NAME +#define MDN_AMCACEW_ENCODING_NAME "AMC-ACE-W" +#endif +#ifndef MDN_AMCACEZ_ENCODING_NAME +#define MDN_AMCACEZ_ENCODING_NAME "AMC-ACE-Z" +#endif +#ifndef MDN_MACE_ENCODING_NAME +#define MDN_MACE_ENCODING_NAME "MACE" +#endif #define MAX_RECURSE 20 @@ -128,7 +146,7 @@ typedef struct { mdn_converter_openproc_t open; mdn_converter_closeproc_t close; mdn_converter_convertproc_t convert; - int ascii_compatible; + int encoding_type; } converter_ops_t; struct mdn_converter { @@ -176,6 +194,7 @@ static mdn_result_t converter_iconv_convert(mdn_converter_t ctx, mdn_converter_dir_t dir, const char *from, char *to, size_t tolen); +#ifdef MDN_EXTRA_ACE static mdn_result_t converter_utf5_open(mdn_converter_t ctx, mdn_converter_dir_t dir, void **privdata); @@ -187,6 +206,8 @@ static mdn_result_t converter_utf5_convert(mdn_converter_t ctx, mdn_converter_dir_t dir, const char *from, char *to, size_t tolen); +#endif + #ifdef DEBUG static mdn_result_t converter_uescape_open(mdn_converter_t ctx, mdn_converter_dir_t dir, @@ -205,14 +226,14 @@ static converter_ops_t none_converter_ops = { converter_none_open, converter_none_close, converter_none_convert, - 0, + MDN_NONACE, }; static converter_ops_t iconv_converter_ops = { converter_iconv_open, converter_iconv_close, converter_iconv_convert, - 0, + MDN_NONACE, }; /* @@ -371,11 +392,18 @@ mdn_converter_localencoding(mdn_converter_t ctx) { return (ctx->local_encoding_name); } +int +mdn_converter_encodingtype(mdn_converter_t ctx) { + assert(ctx != NULL); + TRACE(("mdn_converter_encodingtype()\n")); + return (ctx->ops->encoding_type); +} + int mdn_converter_isasciicompatible(mdn_converter_t ctx) { assert(ctx != NULL); TRACE(("mdn_converter_isasciicompatible()\n")); - return (ctx->ops->ascii_compatible); + return (ctx->ops->encoding_type != MDN_NONACE); } mdn_result_t @@ -422,7 +450,7 @@ mdn_converter_register(const char *name, mdn_converter_openproc_t open, mdn_converter_closeproc_t close, mdn_converter_convertproc_t convert, - int ascii_compatible) { + int encoding_type) { converter_ops_t *ops; mdn_result_t r; @@ -438,7 +466,7 @@ mdn_converter_register(const char *name, ops->open = open; ops->close = close; ops->convert = convert; - ops->ascii_compatible = ascii_compatible; + ops->encoding_type = encoding_type; r = mdn_strhash_put(encoding_name_hash, name, ops); if (r != mdn_success) @@ -451,11 +479,11 @@ static mdn_result_t register_standard_encoding(void) { mdn_result_t r; - r = mdn_converter_register(MDN_UTF5_ENCODING_NAME, - converter_utf5_open, - converter_utf5_close, - converter_utf5_convert, - 1); + r = mdn_converter_register(MDN_AMCACEZ_ENCODING_NAME, + mdn__amcacez_open, + mdn__amcacez_close, + mdn__amcacez_convert, + MDN_ACE_STRICTCASE); if (r != mdn_success) return (r); @@ -463,7 +491,24 @@ register_standard_encoding(void) { mdn__race_open, mdn__race_close, mdn__race_convert, - 1); + MDN_ACE_LOOSECASE); + if (r != mdn_success) + return (r); + + r = mdn_converter_register(MDN_DUDE_ENCODING_NAME, + mdn__dude_open, + mdn__dude_close, + mdn__dude_convert, + MDN_ACE_LOOSECASE); + if (r != mdn_success) + return (r); + +#ifdef MDN_EXTRA_ACE + r = mdn_converter_register(MDN_UTF5_ENCODING_NAME, + converter_utf5_open, + converter_utf5_close, + converter_utf5_convert, + MDN_ACE_LOOSECASE); if (r != mdn_success) return (r); @@ -471,7 +516,7 @@ register_standard_encoding(void) { mdn__brace_open, mdn__brace_close, mdn__brace_convert, - 1); + MDN_ACE_STRICTCASE); if (r != mdn_success) return (r); @@ -479,15 +524,7 @@ register_standard_encoding(void) { mdn__lace_open, mdn__lace_close, mdn__lace_convert, - 1); - if (r != mdn_success) - return (r); - - r = mdn_converter_register(MDN_DUDE_ENCODING_NAME, - mdn__dude_open, - mdn__dude_close, - mdn__dude_convert, - 1); + MDN_ACE_LOOSECASE); if (r != mdn_success) return (r); @@ -495,7 +532,7 @@ register_standard_encoding(void) { mdn__utf6_open, mdn__utf6_close, mdn__utf6_convert, - 1); + MDN_ACE_LOOSECASE); if (r != mdn_success) return (r); @@ -503,7 +540,7 @@ register_standard_encoding(void) { mdn__altdude_open, mdn__altdude_close, mdn__altdude_convert, - 1); + MDN_ACE_LOOSECASE); if (r != mdn_success) return (r); @@ -511,7 +548,7 @@ register_standard_encoding(void) { mdn__amcacem_open, mdn__amcacem_close, mdn__amcacem_convert, - 1); + MDN_ACE_STRICTCASE); if (r != mdn_success) return (r); @@ -519,7 +556,7 @@ register_standard_encoding(void) { mdn__amcaceo_open, mdn__amcaceo_close, mdn__amcaceo_convert, - 1); + MDN_ACE_STRICTCASE); if (r != mdn_success) return (r); @@ -527,17 +564,42 @@ register_standard_encoding(void) { mdn__amcacer_open, mdn__amcacer_close, mdn__amcacer_convert, - 1); + MDN_ACE_STRICTCASE); if (r != mdn_success) return (r); + r = mdn_converter_register(MDN_AMCACEV_ENCODING_NAME, + mdn__amcacev_open, + mdn__amcacev_close, + mdn__amcacev_convert, + MDN_ACE_STRICTCASE); + if (r != mdn_success) + return (r); + + r = mdn_converter_register(MDN_AMCACEW_ENCODING_NAME, + mdn__amcacew_open, + mdn__amcacew_close, + mdn__amcacew_convert, + MDN_ACE_STRICTCASE); + if (r != mdn_success) + return (r); + + r = mdn_converter_register(MDN_MACE_ENCODING_NAME, + mdn__mace_open, + mdn__mace_close, + mdn__mace_convert, + MDN_ACE_STRICTCASE); + if (r != mdn_success) + return (r); +#endif /* MDN_EXTRA_ACE */ + #ifdef DEBUG /* This is convenient for debug. Not useful for other purposes. */ r = mdn_converter_register("U-escape", converter_uescape_open, converter_uescape_close, converter_uescape_convert, - 0); + MDN_NONACE); if (r != mdn_success) return (r); #endif /* DEBUG */ @@ -561,8 +623,11 @@ mdn_converter_addalias(const char *alias_name, const char *real_name) { if (strcmp(alias_name, real_name) == 0) return (mdn_success); - if (encoding_alias_hash == NULL) + if (encoding_alias_hash == NULL) { + WARNING(("mdn_converter_addalias: the module is not \n" + "initialized")); return (mdn_failure); + } if ((rn_copy = malloc(strlen(real_name) + 1)) == NULL) { WARNING(("mdn_converter_addalias: malloc failed\n")); @@ -905,6 +970,7 @@ converter_iconv_convert(mdn_converter_t ctx, void *privdata, case E2BIG: return (mdn_buffer_overflow); default: + WARNING(("iconv failed with errno %d\n", errno)); return (mdn_failure); } } @@ -935,6 +1001,8 @@ converter_iconv_convert(mdn_converter_t ctx, void *privdata, case E2BIG: return (mdn_buffer_overflow); default: + WARNING(("iconv failed with errno %d\n", + errno)); return (mdn_failure); } } @@ -948,6 +1016,8 @@ converter_iconv_convert(mdn_converter_t ctx, void *privdata, * Conversion to/from UTF-5. */ +#ifdef MDN_EXTRA_ACE + /* ARGSUSED */ static mdn_result_t converter_utf5_open(mdn_converter_t ctx, mdn_converter_dir_t dir, @@ -1020,6 +1090,8 @@ overflow: return (mdn_buffer_overflow); } +#endif + #ifdef DEBUG /* * Conversion to/from unicode escape string. diff --git a/contrib/idn/mdnkit/lib/debug.c b/contrib/idn/mdnkit/lib/debug.c index 967b7189512..b0928bb0df8 100644 --- a/contrib/idn/mdnkit/lib/debug.c +++ b/contrib/idn/mdnkit/lib/debug.c @@ -1,5 +1,5 @@ #ifndef lint -static char *rcsid = "$Id: debug.c,v 1.6 2000/07/04 03:52:36 ishisone Exp $"; +static char *rcsid = "$Id: debug.c,v 1.1 2002/01/02 02:46:40 marka Exp $"; #endif /* @@ -11,8 +11,8 @@ static char *rcsid = "$Id: debug.c,v 1.6 2000/07/04 03:52:36 ishisone Exp $"; * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/lib/delimitermap.c b/contrib/idn/mdnkit/lib/delimitermap.c index 4f8fa78e32b..69a9433c942 100644 --- a/contrib/idn/mdnkit/lib/delimitermap.c +++ b/contrib/idn/mdnkit/lib/delimitermap.c @@ -1,5 +1,5 @@ #ifndef lint -static char *rcsid = "$Id: delimitermap.c,v 1.1 2001/06/09 00:30:15 tale Exp $"; +static char *rcsid = "$Id: delimitermap.c,v 1.2 2002/02/08 05:40:04 marka Exp $"; #endif /* @@ -11,8 +11,8 @@ static char *rcsid = "$Id: delimitermap.c,v 1.1 2001/06/09 00:30:15 tale Exp $"; * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/lib/dn.c b/contrib/idn/mdnkit/lib/dn.c index 2ef844254f2..33b38444c49 100644 --- a/contrib/idn/mdnkit/lib/dn.c +++ b/contrib/idn/mdnkit/lib/dn.c @@ -1,5 +1,5 @@ #ifndef lint -static char *rcsid = "$Id: dn.c,v 1.8 2000/09/20 02:47:31 ishisone Exp $"; +static char *rcsid = "$Id: dn.c,v 1.1 2002/01/02 02:46:41 marka Exp $"; #endif /* @@ -11,8 +11,8 @@ static char *rcsid = "$Id: dn.c,v 1.8 2000/09/20 02:47:31 ishisone Exp $"; * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/lib/dude.c b/contrib/idn/mdnkit/lib/dude.c index b6ed0a463e5..700780345cb 100644 --- a/contrib/idn/mdnkit/lib/dude.c +++ b/contrib/idn/mdnkit/lib/dude.c @@ -1,5 +1,5 @@ #ifndef lint -static char *rcsid = "$Id: dude.c,v 1.1 2001/06/09 00:30:15 tale Exp $"; +static char *rcsid = "$Id: dude.c,v 1.2 2002/02/08 05:40:07 marka Exp $"; #endif /* @@ -12,8 +12,8 @@ static char *rcsid = "$Id: dude.c,v 1.1 2001/06/09 00:30:15 tale Exp $"; * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted @@ -77,17 +77,20 @@ static char *rcsid = "$Id: dude.c,v 1.1 2001/06/09 00:30:15 tale Exp $"; #include #include -#ifndef MDN_DUDE_PREFIX +/* + * The following prefix is recommended by IETF IDN wg for test purposes. + */ +#if !defined(MDN_DUDE_PREFIX) && !defined(MDN_DUDE_SUFFIX) #define MDN_DUDE_PREFIX "dq--" #endif -static unsigned long nibble_mask[] = { - 0, /* dummy: this element is never referenced. */ - 0xf, - 0xff, - 0xfff, - 0xffff, - 0xfffff, +static const char *base32encode = "abcdefghijkmnpqrstuvwxyz23456789"; +static const int base32decode_ascii[26] = { + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, -1, 11, 12, -1, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, +}; +static const int base32decode_digit[10] = { + -1, -1, 24, 25, 26, 27, 28, 29, 30, 31, }; static mdn_result_t dude_decode(const char *from, size_t fromlen, @@ -97,31 +100,40 @@ static mdn_result_t dude_encode(const char *from, size_t fromlen, static int get_nibblelength(unsigned long v); static int dude_getwc(const char *s, size_t len, unsigned long *vp); -static int dude_putwc(char *s, size_t len, unsigned long v, - int w); +static int dude_putwc(char *s, size_t len, unsigned long v); static mdn__ace_t dude_ctx = { +#ifdef MDN_DUDE_PREFIX mdn__ace_prefix, MDN_DUDE_PREFIX, +#else + mdn__ace_suffix, + MDN_DUDE_SUFFIX, +#endif dude_encode, dude_decode, }; /* ARGSUSED */ mdn_result_t -mdn__dude_open(mdn_converter_t ctx, mdn_converter_dir_t dir, void **privdata) { +mdn__dude_open(mdn_converter_t ctx, mdn_converter_dir_t dir, + void **privdata) +{ return (mdn_success); } /* ARGSUSED */ mdn_result_t -mdn__dude_close(mdn_converter_t ctx, void *privdata, mdn_converter_dir_t dir) { +mdn__dude_close(mdn_converter_t ctx, void *privdata, + mdn_converter_dir_t dir) +{ return (mdn_success); } mdn_result_t -mdn__dude_convert(mdn_converter_t ctx, void *privdata, mdn_converter_dir_t dir, - const char *from, char *to, size_t tolen) +mdn__dude_convert(mdn_converter_t ctx, void *privdata, + mdn_converter_dir_t dir, + const char *from, char *to, size_t tolen) { mdn_result_t r; @@ -144,9 +156,9 @@ mdn__dude_convert(mdn_converter_t ctx, void *privdata, mdn_converter_dir_t dir, static mdn_result_t dude_decode(const char *from, size_t fromlen, char *to, size_t tolen) { size_t len; - unsigned long prev, v, mask; + unsigned long prev, v; - prev = 0; + prev = 96; while (fromlen > 0) { if (from[0] == '-') { v = '-'; @@ -158,14 +170,16 @@ dude_decode(const char *from, size_t fromlen, char *to, size_t tolen) { return (mdn_invalid_encoding); from += len; fromlen -= len; - mask = nibble_mask[len]; - v = (prev & ~mask) | v; + v = prev ^ v; /* - * Perform extra sanity checks. + * Since round-trip check is performed later + * by mdn__ace_convert(), we don't need the + * following sanity checking. + * + * if (v == '-' || get_nibblelength(v) != len) + * return (mdn_invalid_encoding); */ - if (v == '-' || get_nibblelength(prev ^ v) != len) - return (mdn_invalid_encoding); prev = v; } @@ -189,14 +203,14 @@ dude_decode(const char *from, size_t fromlen, char *to, size_t tolen) { static mdn_result_t dude_encode(const char *from, size_t fromlen, char *to, size_t tolen) { size_t len; - unsigned long prev, c, v, mask; + unsigned long prev, c; - prev = 0; + prev = 96; while (fromlen > 0) { len = mdn_utf8_getwc(from, fromlen, &c); from += len; fromlen -= len; - if (len == 0 || c >= 0x100000) + if (len == 0) return (mdn_invalid_encoding); if (c == '-') { /* @@ -207,13 +221,10 @@ dude_encode(const char *from, size_t fromlen, char *to, size_t tolen) { *to++ = '-'; tolen--; } else { - int nlen = get_nibblelength(prev ^ c); - mask = nibble_mask[nlen]; - v = c & mask; - prev = c; - len = dude_putwc(to, tolen, v, nlen); + len = dude_putwc(to, tolen, prev ^ c); if (len == 0) return (mdn_buffer_overflow); + prev = c; to += len; tolen -= len; } @@ -232,82 +243,63 @@ dude_encode(const char *from, size_t fromlen, char *to, size_t tolen) { static int get_nibblelength(unsigned long v) { - assert(v < 0x100000); - - if (v <= 0xf) - return 1; - else if (v <= 0xff) - return 2; - else if (v <= 0xfff) - return 3; - else if (v <= 0xffff) - return 4; - else - return 5; + assert(v <= 0x7fffffff); + + if (v < (1<<16)) { /* v <= 16bit */ + if (v < (1<<8)) /* v <= 8bit */ + return ((v < (1<<4)) ? 1 : 2); + else /* 8bit < v <= 16bit */ + return ((v < (1<<12)) ? 3 : 4); + } else { /* 16bit < c */ + if (v < (1<<24)) /* 16bit < c <= 24bit */ + return ((v < (1<<20)) ? 5 : 6); + else /* 24bit < c <= 31bit */ + return ((v < (1<<28)) ? 7 : 8); + } } static int dude_getwc(const char *s, size_t len, unsigned long *vp) { size_t orglen = len; unsigned long v = 0; - int c; - if (len < 1) - return (0); + while (len > 0) { + int c = *s++; + + if ('a' <= c && c <= 'z') + c = base32decode_ascii[c - 'a']; + else if ('A' <= c && c <= 'Z') + c = base32decode_ascii[c - 'A']; + else if ('0' <= c && c <= '9') + c = base32decode_digit[c - '0']; + else + c = -1; - c = *s++; - len--; + if (c < 0) + return (0); /* invalid character */ - if ('G' <= c && c <= 'V') - v = c - 'G'; - else if ('g' <= c && c <= 'v') - v = c - 'g'; - else /* invalid character */ - return (0); + v = (v << 4) + (c & 0xf); - while (len > 0) { - c = *s++; - if ('0' <= c && c <= '9') - c = c - '0'; - else if ('A' <= c && c <= 'F') - c = c - 'A' + 10; - else if ('a' <= c && c <= 'f') - c = c - 'a' + 10; - else - break; - v = (v << 4) + c; len--; + if ((c & 0x10) == 0) { + *vp = v; + return (orglen - len); + } } - len = orglen - len; - - if (len > 5) - return (0); - - *vp = v; - return (len); + return (0); /* final character missing */ } static int -dude_putwc(char *s, size_t len, unsigned long v, int w) { - int i; - - assert(v < 0x100000); - assert(w > 0 && w < 6 && v <= nibble_mask[w]); +dude_putwc(char *s, size_t len, unsigned long v) { + int i, w, shift; - if (len < w) + if ((w = get_nibblelength(v)) > len) return (0); - for (i = w - 1; i >= 0; i--) { - int x = v & 0xf; - - if (i == 0) - s[i] = 'g' + x; - else if (x < 10) - s[i] = '0' + x; - else - s[i] = 'a' + x - 10; + for (shift = 0, i = w - 1; i >= 0; i--) { + s[i] = base32encode[(v & 0xf) + shift]; v >>= 4; + shift = 16; } - return (w); } diff --git a/contrib/idn/mdnkit/lib/filechecker.c b/contrib/idn/mdnkit/lib/filechecker.c index e960c4ea806..59ff8bac66c 100644 --- a/contrib/idn/mdnkit/lib/filechecker.c +++ b/contrib/idn/mdnkit/lib/filechecker.c @@ -1,5 +1,5 @@ #ifndef lint -static char *rcsid = "$Id: filechecker.c,v 1.1 2001/06/09 00:30:15 tale Exp $"; +static char *rcsid = "$Id: filechecker.c,v 1.2 2002/02/08 05:40:08 marka Exp $"; #endif /* @@ -11,8 +11,8 @@ static char *rcsid = "$Id: filechecker.c,v 1.1 2001/06/09 00:30:15 tale Exp $"; * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/lib/filemapper.c b/contrib/idn/mdnkit/lib/filemapper.c index 5669e8b4ecb..e4a6394897a 100644 --- a/contrib/idn/mdnkit/lib/filemapper.c +++ b/contrib/idn/mdnkit/lib/filemapper.c @@ -1,5 +1,5 @@ #ifndef lint -static char *rcsid = "$Id: filemapper.c,v 1.1 2001/06/09 00:30:15 tale Exp $"; +static char *rcsid = "$Id: filemapper.c,v 1.2 2002/02/08 05:40:09 marka Exp $"; #endif /* @@ -11,8 +11,8 @@ static char *rcsid = "$Id: filemapper.c,v 1.1 2001/06/09 00:30:15 tale Exp $"; * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/lib/lace.c b/contrib/idn/mdnkit/lib/lace.c index 8562e87520f..9539c4ce9ce 100644 --- a/contrib/idn/mdnkit/lib/lace.c +++ b/contrib/idn/mdnkit/lib/lace.c @@ -1,5 +1,5 @@ #ifndef lint -static char *rcsid = "$Id: lace.c,v 1.11 2001/03/28 06:37:24 m-kasahr Exp $"; +static char *rcsid = "$Id: lace.c,v 1.1 2002/01/02 02:46:42 marka Exp $"; #endif /* @@ -11,8 +11,8 @@ static char *rcsid = "$Id: lace.c,v 1.11 2001/03/28 06:37:24 m-kasahr Exp $"; * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/lib/localencoding.c b/contrib/idn/mdnkit/lib/localencoding.c index d61a898739e..cdfcbc892be 100644 --- a/contrib/idn/mdnkit/lib/localencoding.c +++ b/contrib/idn/mdnkit/lib/localencoding.c @@ -1,5 +1,5 @@ #ifndef lint -static char *rcsid = "$Id: localencoding.c,v 1.8 2000/09/20 02:47:31 ishisone Exp $"; +static char *rcsid = "$Id: localencoding.c,v 1.1 2002/01/02 02:46:42 marka Exp $"; #endif /* @@ -11,8 +11,8 @@ static char *rcsid = "$Id: localencoding.c,v 1.8 2000/09/20 02:47:31 ishisone Ex * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/lib/log.c b/contrib/idn/mdnkit/lib/log.c index badea85d1eb..a94ab5f20de 100644 --- a/contrib/idn/mdnkit/lib/log.c +++ b/contrib/idn/mdnkit/lib/log.c @@ -1,5 +1,5 @@ #ifndef lint -static char *rcsid = "$Id: log.c,v 1.12 2000/10/16 05:00:18 ishisone Exp $"; +static char *rcsid = "$Id: log.c,v 1.1 2002/01/02 02:46:43 marka Exp $"; #endif /* @@ -11,8 +11,8 @@ static char *rcsid = "$Id: log.c,v 1.12 2000/10/16 05:00:18 ishisone Exp $"; * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted @@ -149,7 +149,8 @@ mdn_log_setlevel(int level) { int mdn_log_getlevel(void) { - initialize(); + if (log_level < 0) + initialize(); return log_level; } diff --git a/contrib/idn/mdnkit/lib/mace.c b/contrib/idn/mdnkit/lib/mace.c new file mode 100644 index 00000000000..3f3e3e6518b --- /dev/null +++ b/contrib/idn/mdnkit/lib/mace.c @@ -0,0 +1,506 @@ +#ifndef lint +static char *rcsid = "$Id: mace.c,v 1.1 2002/02/08 05:40:14 marka Exp $"; +#endif + +/* + * Copyright (c) 2001 Japan Network Information Center. All rights reserved. + * + * By using this file, you agree to the terms and conditions set forth bellow. + * + * LICENSE TERMS AND CONDITIONS + * + * The following License Terms and Conditions apply, unless a different + * license is obtained from Japan Network Information Center ("JPNIC"), + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. + * + * 1. Use, Modification and Redistribution (including distribution of any + * modified or derived work) in source and/or binary forms is permitted + * under this License Terms and Conditions. + * + * 2. Redistribution of source code must retain the copyright notices as they + * appear in each source code file, this License Terms and Conditions. + * + * 3. Redistribution in binary form must reproduce the Copyright Notice, + * this License Terms and Conditions, in the documentation and/or other + * materials provided with the distribution. For the purposes of binary + * distribution the "Copyright Notice" refers to the following language: + * "Copyright (c) Japan Network Information Center. All rights reserved." + * + * 4. Neither the name of JPNIC may be used to endorse or promote products + * derived from this Software without specific prior written approval of + * JPNIC. + * + * 5. Disclaimer/Limitation of Liability: THIS SOFTWARE IS PROVIDED BY JPNIC + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A + * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JPNIC BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + * + * 6. Indemnification by Licensee + * Any person or entities using and/or redistributing this Software under + * this License Terms and Conditions shall defend indemnify and hold + * harmless JPNIC from and against any and all judgements damages, + * expenses, settlement liabilities, cost and other liabilities of any + * kind as a result of use and redistribution of this Software or any + * claim, suite, action, litigation or proceeding by any third party + * arising out of or relates to this License Terms and Conditions. + * + * 7. Governing Law, Jurisdiction and Venue + * This License Terms and Conditions shall be governed by and and + * construed in accordance with the law of Japan. Any person or entities + * using and/or redistributing this Software under this License Terms and + * Conditions hereby agrees and consent to the personal and exclusive + * jurisdiction and venue of Tokyo District Court of Japan. + */ + +#include + +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/* + * MACE + */ + +#ifndef MDN_MACE_PREFIX +#define MDN_MACE_PREFIX "mq--" +#endif + +/* Mode switcher */ +#define MACE_MODE_SWITCH '-' /* Literal/Non-Literal switching */ + +/* Submode introducer */ +#define MACE_SUBMODE_BMP_A 'w' /* U+0000-U+1FFF, U+A000-U+FFFF */ +#define MACE_SUBMODE_BMP_B 'x' /* U+2000-U+9FFF */ +#define MACE_SUBMODE_NONBMP 'y' /* U+10000-U+10FFFF */ +#define MACE_SUBMODE_COMP 'z' /* 4/9bit differential encoding */ + +/* Initial state */ +#define MACE_SUBMODE_INIT MACE_SUBMODE_BMP_A +#define MACE_PREV_INIT 0 + +#define MACE_COMP_BITS_1 4 +#define MACE_COMP_BITS_2 9 +#define MACE_COMP_MASK ((1 << MACE_COMP_BITS_2) - 1) +#define MACE_SAME_PREFIX(b, c1, c2) (((c1) ^ (c2)) < (1 << (b))) + +#define MACE_INVALID_CHAR 0x80000000 + +static mdn_result_t mace_decode(const char *from, size_t fromlen, + char *to, size_t tolen); +static mdn_result_t mace_encode(const char *from, size_t fromlen, + char *to, size_t tolen); +static int mace_get_submode(int submode, unsigned long c, + unsigned long prev, + const char *rest, size_t rlen); +static int mace_getbase32(const char *s, int w, + unsigned long *vp); +static int mace_encodelength(int submode); +static int mace_getwc(const char *s, size_t len, int mode, + unsigned long ref, unsigned long *vp); +static int mace_putwc(char *s, size_t len, int mode, + unsigned long ref, unsigned long v); +static int peek_next_nonldh(const char *rest, size_t rlen, + unsigned long *cp); +static int letter_or_digit(unsigned long v); + +static mdn__ace_t mace_ctx = { + mdn__ace_prefix, + MDN_MACE_PREFIX, + mace_encode, + mace_decode, +}; + +/* ARGSUSED */ +mdn_result_t +mdn__mace_open(mdn_converter_t ctx, mdn_converter_dir_t dir, + void **privdata) +{ + return (mdn_success); +} + +/* ARGSUSED */ +mdn_result_t +mdn__mace_close(mdn_converter_t ctx, void *privdata, + mdn_converter_dir_t dir) +{ + return (mdn_success); +} + +mdn_result_t +mdn__mace_convert(mdn_converter_t ctx, void *privdata, + mdn_converter_dir_t dir, + const char *from, char *to, size_t tolen) +{ + mdn_result_t r; + + assert(ctx != NULL && + (dir == mdn_converter_l2u || dir == mdn_converter_u2l)); + + TRACE(("mdn__mace_convert(dir=%s,from=\"%s\")\n", + dir == mdn_converter_l2u ? "l2u" : "u2l", + mdn_debug_xstring(from, 20))); + + r = mdn__ace_convert(&mace_ctx, dir, from, to, tolen); + if (r != mdn_success) + return (r); + + DUMP(("mdn__mace_convert: \"%s\"\n", mdn_debug_xstring(to, 70))); + + return (r); +} + +static mdn_result_t +mace_decode(const char *from, size_t fromlen, char *to, size_t tolen) { + int literal = 0; + int submode = MACE_SUBMODE_INIT; + unsigned long prev = MACE_PREV_INIT; + + while (fromlen > 0) { + int consume = 1; /* # of input octets consumed */ + unsigned long c = MACE_INVALID_CHAR; + + if (from[0] == MACE_MODE_SWITCH) { + /* + * LD/non-LD mode switcher or just a hyphen. + */ + if (fromlen > 1 && from[1] == MACE_MODE_SWITCH) { + c = MACE_MODE_SWITCH; + consume = 2; + } else { + literal = !literal; + } + } else if (literal) { + /* + * Now in LD mode. Just output literally. + */ + if (tolen < 1) + return (mdn_buffer_overflow); + c = from[0]; + } else if (from[0] == 'w' || from[0] == 'W') { + submode = MACE_SUBMODE_BMP_A; + } else if (from[0] == 'x' || from[0] == 'X') { + submode = MACE_SUBMODE_BMP_B; + } else if (from[0] == 'y' || from[0] == 'Y') { + submode = MACE_SUBMODE_NONBMP; + } else if (from[0] == 'z' || from[0] == 'Z') { + submode = MACE_SUBMODE_COMP; + } else { + /* + * Must be base32-format string. + */ + consume = mace_getwc(from, fromlen, submode, + prev, &c); + if (consume == 0) + return (mdn_invalid_encoding); + prev = c; + } + + /* Output decoded character. */ + if (c != MACE_INVALID_CHAR) { + size_t len = mdn_utf8_putwc(to, tolen, c); + if (len == 0) + return (mdn_buffer_overflow); + to += len; + tolen -= len; + } + + from += consume; + fromlen -= consume; + } + + /* + * Terminate with NUL. + */ + if (tolen <= 0) + return (mdn_buffer_overflow); + *to = '\0'; + + return (mdn_success); +} + +static mdn_result_t +mace_encode(const char *from, size_t fromlen, char *to, size_t tolen) { + int literal = 0; + int submode = MACE_SUBMODE_INIT; + unsigned long prev = MACE_PREV_INIT; + + while (fromlen > 0) { + unsigned long c; + size_t len; + + /* Get next character. */ + len = mdn_utf8_getwc(from, fromlen, &c); + if (len == 0 || c > 0x10ffff) + return (mdn_invalid_encoding); + from += len; + fromlen -= len; + + if (c == '-') { + /* + * Hyphen. Always encode as `--'. + */ + if (tolen < 2) + return (mdn_buffer_overflow); + to[0] = to[1] = '-'; + to += 2; + tolen -= 2; + } else if (letter_or_digit(c)) { + /* + * Letter or digit. + * Shift to Literal mode if necessary, then + * encode it as it is. + */ + if (!literal) { + if (tolen < 1) + return (mdn_buffer_overflow); + *to++ = MACE_MODE_SWITCH; + tolen--; + literal = 1; + } + if (tolen < 1) + return (mdn_buffer_overflow); + *to++ = c; + tolen--; + } else { + /* + * Non-LDH character. + */ + int new_submode; + + /* Move back from LD mode if necessary. */ + if (literal) { + if (tolen < 1) + return (mdn_buffer_overflow); + *to++ = MACE_MODE_SWITCH; + tolen--; + literal = 0; + } + + /* Determine the new submode and shift to it. */ + new_submode = mace_get_submode(submode, c, prev, + from, fromlen); + if (new_submode != submode) { + if (tolen < 1) + return (mdn_buffer_overflow); + *to++ = new_submode; /* introducer */ + tolen--; + submode = new_submode; + } + + /* Encode and output the character. */ + len = mace_putwc(to, tolen, submode, prev, c); + if (len == 0) + return (mdn_buffer_overflow); + to += len; + tolen -= len; + + prev = c; + } + } + + /* + * Terminate with NUL. + */ + if (tolen < 1) + return (mdn_buffer_overflow); + + *to = '\0'; + return (mdn_success); +} + +static int +mace_get_submode(int submode, unsigned long c, unsigned long prev, + const char *rest, size_t rlen) +{ + /* + * Determine the submode. + */ + unsigned long nxt; + + /* + * First, check if we should use Compress submode. + */ + if (MACE_SAME_PREFIX(MACE_COMP_BITS_2, prev, c) && + (submode == MACE_SUBMODE_COMP || + c > 0xffff || + MACE_SAME_PREFIX(MACE_COMP_BITS_1, prev, c) || + (peek_next_nonldh(rest, rlen, &nxt) && + MACE_SAME_PREFIX(MACE_COMP_BITS_2, c, nxt)))) + return (MACE_SUBMODE_COMP); + + /* + * Then, determine the submode based on the code point. + */ + if (c > 0xffff) + return (MACE_SUBMODE_NONBMP); + else if (0x2000 <= c && c <= 0x9fff) + return (MACE_SUBMODE_BMP_B); + else + return (MACE_SUBMODE_BMP_A); + +} + +static int +mace_encodelength(int submode) { + switch (submode) { + case MACE_SUBMODE_BMP_A: + case MACE_SUBMODE_BMP_B: + return (3); + case MACE_SUBMODE_NONBMP: + return (4); + default: /* MACE_SUBMODE_COMP */ + return (1); /* actually 1 or 2. caller must decide. */ + } +} + +static int +mace_getbase32(const char *s, int w, unsigned long *vp) { + unsigned long v = 0; + + while (w-- > 0) { + int c = *s++; + + if ('a' <= c && c <= 'v') + c = c - 'a' + 10; + else if ('A' <= c && c <= 'V') + c = c - 'A' + 10; + else if ('0' <= c && c <= '9') + c = c - '0'; + else + return (0); /* invalid character */ + v = (v << 5) + (c & 0x1f); + } + *vp = v; + return (1); +} + +static int +mace_getwc(const char *s, size_t len, int submode, + unsigned long prev, unsigned long *vp) +{ + unsigned long v = 0; + int w = mace_encodelength(submode); + + if (len < w || !mace_getbase32(s, w, &v)) + return (0); + + switch (submode) { + case MACE_SUBMODE_BMP_A: + if (v >= 0x2000) + v += 0x8000; + break; + case MACE_SUBMODE_BMP_B: + v += 0x2000; + break; + case MACE_SUBMODE_NONBMP: + v += 0x10000; + break; + case MACE_SUBMODE_COMP: + if (v > 0xf) { + w = 2; + if (len < w || !mace_getbase32(s, w, &v)) + return (0); + } + v = prev ^ (v & MACE_COMP_MASK); + break; + default: + FATAL(("mace_getwc: internal error")); + break; + } + *vp = v; + + return (w); +} + +static int +mace_putwc(char *s, size_t len, int submode, + unsigned long prev, unsigned long v) +{ + static const char *base32encode = "0123456789abcdefghijklmnopqrstuv"; + int w = mace_encodelength(submode); + int i; + + switch (submode) { + case MACE_SUBMODE_BMP_A: + if (v >= 0xa000) + v -= 0x8000; + break; + case MACE_SUBMODE_BMP_B: + v -= 0x2000; + break; + case MACE_SUBMODE_NONBMP: + v -= 0x10000; + break; + case MACE_SUBMODE_COMP: + v = (prev ^ v) & MACE_COMP_MASK; + if (v > 0xf) { + v |= 0x200; + w++; + } + break; + default: + FATAL(("mace_putwc: internal error")); + break; + } + + if (len < w) + return (0); + + for (i = w - 1; i >= 0; i--) { + s[i] = base32encode[v & 0x1f]; + v >>= 5; + } + return (w); +} + +static int +peek_next_nonldh(const char *rest, size_t rlen, unsigned long *cp) { + /* + * Get the next non-LDH character from 'rest', store its + * code point to '*cp' and return 1. If there are no + * such character, return 0. + */ + while (rlen > 0) { + unsigned long v; + size_t len; + + if ((len = mdn_utf8_getwc(rest, rlen, &v)) == 0) { + break; + } else if (v != '-' && !letter_or_digit(v)) { + *cp = v; + return (1); + } + rest += len; + rlen -= len; + } + return (0); +} + +static int +letter_or_digit(unsigned long v) { + if (('a' <= v && v <= 'z') || + ('A' <= v && v <= 'Z') || + ('0' <= v && v <= '9')) + return (1); + else + return (0); +} diff --git a/contrib/idn/mdnkit/lib/make.wnt b/contrib/idn/mdnkit/lib/make.wnt index 961316c0cab..810df5cb161 100644 --- a/contrib/idn/mdnkit/lib/make.wnt +++ b/contrib/idn/mdnkit/lib/make.wnt @@ -1,4 +1,4 @@ -# $Id: make.wnt,v 1.3 2001/06/09 00:30:16 tale Exp $ +# $Id: make.wnt,v 1.4 2002/02/08 05:40:14 marka Exp $ # Makefile for MDN library, manually configured for WIN-NT (VC5.0) # # Copyright (c) 2000 Japan Network Information Center. All rights reserved. @@ -9,8 +9,8 @@ # # The following License Terms and Conditions apply, unless a different # license is obtained from Japan Network Information Center ("JPNIC"), -# a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, -# Tokyo, Japan. +# a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, +# Chiyoda-ku, Tokyo 101-0047, Japan. # # 1. Use, Modification and Redistribution (including distribution of any # modified or derived work) in source and/or binary forms is permitted @@ -75,6 +75,9 @@ HDRS = $(ICONVDIR)\iconv.h \ $(INCDIR)\mdn\amcacem.h \ $(INCDIR)\mdn\amcaceo.h \ $(INCDIR)\mdn\amcacer.h \ + $(INCDIR)\mdn\amcacev.h \ + $(INCDIR)\mdn\amcacew.h \ + $(INCDIR)\mdn\amcacez.h \ $(INCDIR)\mdn\api.h \ $(INCDIR)\mdn\assert.h \ $(INCDIR)\mdn\brace.h \ @@ -90,6 +93,7 @@ HDRS = $(ICONVDIR)\iconv.h \ $(INCDIR)\mdn\localencoding.h \ $(INCDIR)\mdn\log.h \ $(INCDIR)\mdn\logmacro.h \ + $(INCDIR)\mdn\mace.h \ $(INCDIR)\mdn\mapper.h \ $(INCDIR)\mdn\mapselector.h \ $(INCDIR)\mdn\msgheader.h \ @@ -112,24 +116,27 @@ HDRS = $(ICONVDIR)\iconv.h \ $(INCDIR)\mdn\util.h \ $(INCDIR)\mdn\version.h -SRCS = ace.c altdude.c amcacem.c amcaceo.c amcacer.c api.c \ +SRCS = ace.c altdude.c amcacem.c amcaceo.c amcacer.c \ + amcacev.c amcacew.c amcacez.c api.c \ brace.c checker.c converter.c \ debug.c delimitermap.c dn.c dude.c \ filechecker.c filemapper.c \ lace.c localencoding.c log.c \ - mapper.c mapselector.c msgheader.c msgtrans.c \ - nameprep.c normalizer.c \ + mace.c mapper.c mapselector.c msgheader.c msgtrans.c \ + nameprep.c nameprep_template.c nameprepdata.c normalizer.c \ race.c res.c resconf.c result.c \ selectiveencode.c strhash.c \ - ucsmap.c ucsset.c unicode.c unormalize.c \ + ucsmap.c ucsset.c unicode.c unicode_template.c \ + unicodedata_301.c unicodedata_310.c unormalize.c \ utf5.c utf6.c utf8.c util.c version.c -OBJS = ace.obj altdude.obj amcacem.obj amcaceo.obj amcacer.obj api.obj \ +OBJS = ace.obj altdude.obj amcacem.obj amcaceo.obj amcacer.obj \ + amcacev.obj amcacew.obj amcacez.obj api.obj \ brace.obj checker.obj converter.obj \ debug.obj delimitermap.obj dn.obj dude.obj \ filechecker.obj filemapper.obj \ lace.obj localencoding.obj log.obj \ - mapper.obj mapselector.obj msgheader.obj msgtrans.obj \ + mace.obj mapper.obj mapselector.obj msgheader.obj msgtrans.obj \ nameprep.obj normalizer.obj \ race.obj res.obj resconf.obj result.obj \ selectiveencode.obj strhash.obj \ @@ -157,16 +164,25 @@ libmdn.lib: $(OBJS) ace.obj: ace.c $(HDRS) $(cc) $(cflags) $(cvarsdll) -I$(INCDIR) -I$(ICONVDIR) $(DBG) $*.c -altdude.obj: ace.c $(HDRS) +altdude.obj: altdude.c $(HDRS) $(cc) $(cflags) $(cvarsdll) -I$(INCDIR) -I$(ICONVDIR) $(DBG) $*.c -amcacem.obj: ace.c $(HDRS) +amcacem.obj: amcacem.c $(HDRS) $(cc) $(cflags) $(cvarsdll) -I$(INCDIR) -I$(ICONVDIR) $(DBG) $*.c -amcaceo.obj: ace.c $(HDRS) +amcaceo.obj: amcaceo.c $(HDRS) $(cc) $(cflags) $(cvarsdll) -I$(INCDIR) -I$(ICONVDIR) $(DBG) $*.c -amcacer.obj: ace.c $(HDRS) +amcacer.obj: amcacer.c $(HDRS) + $(cc) $(cflags) $(cvarsdll) -I$(INCDIR) -I$(ICONVDIR) $(DBG) $*.c + +amcacev.obj: amcacev.c $(HDRS) + $(cc) $(cflags) $(cvarsdll) -I$(INCDIR) -I$(ICONVDIR) $(DBG) $*.c + +amcacew.obj: amcacew.c $(HDRS) + $(cc) $(cflags) $(cvarsdll) -I$(INCDIR) -I$(ICONVDIR) $(DBG) $*.c + +amcacez.obj: amcacez.c $(HDRS) $(cc) $(cflags) $(cvarsdll) -I$(INCDIR) -I$(ICONVDIR) $(DBG) $*.c api.obj: api.c $(HDRS) @@ -208,6 +224,9 @@ localencoding.obj: localencoding.c $(HDRS) log.obj: log.c $(HDRS) $(cc) $(cflags) $(cvarsdll) -I$(INCDIR) -I$(ICONVDIR) $(DBG) $*.c +mace.obj: mace.c $(HDRS) + $(cc) $(cflags) $(cvarsdll) -I$(INCDIR) -I$(ICONVDIR) $(DBG) $*.c + mapper.obj: mapper.c $(HDRS) $(cc) $(cflags) $(cvarsdll) -I$(INCDIR) -I$(ICONVDIR) $(DBG) $*.c @@ -250,7 +269,7 @@ ucsmap.obj: ucsmap.c $(HDRS) ucsset.obj: ucsset.c $(HDRS) $(cc) $(cflags) $(cvarsdll) -I$(INCDIR) -I$(ICONVDIR) $(DBG) $*.c -unicode.obj: unicode.c unicodedata.c $(HDRS) +unicode.obj: unicode.c unicode_template.c unicodedata_301.c unicodedata_310.c $(HDRS) $(cc) $(cflags) $(cvarsdll) -I$(INCDIR) -I$(ICONVDIR) $(DBG) $*.c unormalize.obj: unormalize.c $(HDRS) diff --git a/contrib/idn/mdnkit/lib/mapper.c b/contrib/idn/mdnkit/lib/mapper.c index 5e926d85bd3..4b58903c783 100644 --- a/contrib/idn/mdnkit/lib/mapper.c +++ b/contrib/idn/mdnkit/lib/mapper.c @@ -1,5 +1,5 @@ #ifndef lint -static char *rcsid = "$Id: mapper.c,v 1.1 2001/06/09 00:30:17 tale Exp $"; +static char *rcsid = "$Id: mapper.c,v 1.2 2002/02/08 05:40:16 marka Exp $"; #endif /* @@ -11,8 +11,8 @@ static char *rcsid = "$Id: mapper.c,v 1.1 2001/06/09 00:30:17 tale Exp $"; * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted @@ -88,18 +88,27 @@ typedef struct { /* * Standard mapping schemes. */ -static const map_scheme_t nameprep_02_scheme = { - "nameprep-02", - "nameprep-02", +static const map_scheme_t nameprep_03_scheme = { + "nameprep-03", + "nameprep-03", mdn__nameprep_createproc, mdn__nameprep_destroyproc, mdn__nameprep_mapproc, NULL, }; -static const map_scheme_t nameprep_03_scheme = { - "nameprep-03", - "nameprep-03", +static const map_scheme_t nameprep_05_scheme = { + "nameprep-05", + "nameprep-05", + mdn__nameprep_createproc, + mdn__nameprep_destroyproc, + mdn__nameprep_mapproc, + NULL, +}; + +static const map_scheme_t nameprep_06_scheme = { + "nameprep-06", + "nameprep-06", mdn__nameprep_createproc, mdn__nameprep_destroyproc, mdn__nameprep_mapproc, @@ -116,8 +125,9 @@ static const map_scheme_t filemap_scheme = { }; static const map_scheme_t *standard_map_schemes[] = { - &nameprep_02_scheme, &nameprep_03_scheme, + &nameprep_05_scheme, + &nameprep_06_scheme, &filemap_scheme, NULL, }; @@ -327,6 +337,9 @@ mdn_mapper_add(mdn_mapper_t ctx, const char *scheme_name) { ctx->schemes[ctx->nschemes].context = scheme_context; ctx->nschemes++; + if (buffer != static_buffer) + free(buffer); + return (mdn_success); failure: @@ -465,6 +478,8 @@ mdn_mapper_map(mdn_mapper_t ctx, const char *from, char *to, size_t tolen) { i++; } + free(dynamic_buffers[0]); + free(dynamic_buffers[1]); return (mdn_success); failure: diff --git a/contrib/idn/mdnkit/lib/mapselector.c b/contrib/idn/mdnkit/lib/mapselector.c index b2df0bc18ea..9638cb65129 100644 --- a/contrib/idn/mdnkit/lib/mapselector.c +++ b/contrib/idn/mdnkit/lib/mapselector.c @@ -1,5 +1,5 @@ #ifndef lint -static char *rcsid = "$Id: mapselector.c,v 1.1 2001/06/09 00:30:17 tale Exp $"; +static char *rcsid = "$Id: mapselector.c,v 1.2 2002/02/08 05:40:17 marka Exp $"; #endif /* @@ -11,8 +11,8 @@ static char *rcsid = "$Id: mapselector.c,v 1.1 2001/06/09 00:30:17 tale Exp $"; * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/lib/mdn.conf.sample.in b/contrib/idn/mdnkit/lib/mdn.conf.sample.in index 04503d794e3..6165c3d2f48 100644 --- a/contrib/idn/mdnkit/lib/mdn.conf.sample.in +++ b/contrib/idn/mdnkit/lib/mdn.conf.sample.in @@ -1,4 +1,4 @@ -# $Id: mdn.conf.sample.in,v 1.1 2001/06/09 00:30:17 tale Exp $ +# $Id: mdn.conf.sample.in,v 1.2 2002/02/08 05:40:19 marka Exp $ # # Sample file for mDNkit version 2 resolver configuration file (mdn.conf). # @@ -10,16 +10,10 @@ # of multilingualized names by resolvers and DNS servers. Currently, the # following encodings are available: # -# RACE -# BRACE -# LACE +# AMC-ACE-Z # DUDE -# UTF-6 +# RACE # UTF-8 -# AltDUDE -# AMC-ACE-M -# AMC-ACE-O -# AMC-ACE-R # # # syntax) @@ -33,8 +27,10 @@ idn-encoding RACE # # nameprep-03 -- name preparation scheme described in the # IETF draft `idn-nameprep-03' -# nameprep-02 -- name preparation scheme described in the -# IETF draft `idn-nameprep-02' +# nameprep-05 -- name preparation scheme described in the +# IETF draft `idn-nameprep-05' +# nameprep-06 -- name preparation scheme described in the +# IETF draft `idn-nameprep-06' # # syntax) # nameprep @@ -49,7 +45,7 @@ idn-encoding RACE # If both `nameprep' and more-specific entries (i.e. `nameprep-*' entries) # are specified, more-specific ones take precedence. # -nameprep nameprep-03 +nameprep nameprep-06 # # `nameprep-map' entry specifies the mapping scheme of NAMEPREP process. @@ -63,27 +59,26 @@ nameprep nameprep-03 # # If multiple schemes are specified, they are applied in turn. # -#nameprep-map nameprep-03 +#nameprep-map nameprep-06 # # `nameprep-normalize' entry specifies the normalization scheme of NAMEPREP # process. Avaialable normalization schemes are: # # -- nameprep version -# ascii-lowercase -- ASCII uppercase letters to lowercase -# ascii-uppercase -- ASCII lowercase letters to uppercase -# unicode-lowercase -- Unicode uppercase letters to lowercase -# unicode-uppercase -- Unicode lowercase letters to uppercase -# unicode-foldcase -- Unicode case-folding. -# unicode-form-c -- Unicode normalization form C # unicode-form-kc -- Unicode normalization form KC +# defined by the latest standard. +# unicode-form-kc/3.0.1 -- Unicode normalization form KC +# defined by Unicode 3.0.1. +# unicode-form-kc/3.1.0 -- Unicode normalization form KC +# defined by Unicode 3.1. # # syntax) # nameprep-normalize ... # # If multiple schemes are specified, they are applied in turn. # -#nameprep-normalize nameprep-03 +#nameprep-normalize nameprep-06 # # `nameprep-prohibit' entry specifies the prohibited characters in the @@ -97,7 +92,7 @@ nameprep nameprep-03 # # If multiple sets are specified, they are applied in turn. # -#nameprep-prohibit nameprep-03 +#nameprep-prohibit nameprep-06 # # `nameprep-unassigned' entry specifies the unassigned characters in the @@ -111,19 +106,7 @@ nameprep nameprep-03 # # If multiple sets are specified, they are applied in turn. # -#nameprep-unassigned nameprep-03 - -# -# `alternate-encoding' entry specifies the alternative encoding to use in -# case of the conversion from IDN encoding to the application's local -# encoding fails due to the lack of certain character in the character set -# of the local encoding. The alternative encoding must be ASCII compatible -# encoding (ACE). -# -# syntax) -# alternate-encoding -# -alternate-encoding RACE +#nameprep-unassigned nameprep-06 # # `encoding-alias-file' specifies the file which defines encoding name diff --git a/contrib/idn/mdnkit/lib/msgheader.c b/contrib/idn/mdnkit/lib/msgheader.c index 9eb7dcedf72..37dab3a05b8 100644 --- a/contrib/idn/mdnkit/lib/msgheader.c +++ b/contrib/idn/mdnkit/lib/msgheader.c @@ -1,5 +1,5 @@ #ifndef lint -static char *rcsid = "$Id: msgheader.c,v 1.7 2000/09/20 02:47:31 ishisone Exp $"; +static char *rcsid = "$Id: msgheader.c,v 1.1 2002/01/02 02:46:44 marka Exp $"; #endif /* @@ -11,8 +11,8 @@ static char *rcsid = "$Id: msgheader.c,v 1.7 2000/09/20 02:47:31 ishisone Exp $" * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/lib/msgtrans.c b/contrib/idn/mdnkit/lib/msgtrans.c index e1294bdd0f5..0b587c52d57 100644 --- a/contrib/idn/mdnkit/lib/msgtrans.c +++ b/contrib/idn/mdnkit/lib/msgtrans.c @@ -1,5 +1,5 @@ #ifndef lint -static char *rcsid = "$Id: msgtrans.c,v 1.24 2001/02/21 05:54:17 m-kasahr Exp $"; +static char *rcsid = "$Id: msgtrans.c,v 1.1 2002/01/02 02:46:45 marka Exp $"; #endif /* @@ -12,8 +12,8 @@ static char *rcsid = "$Id: msgtrans.c,v 1.24 2001/02/21 05:54:17 m-kasahr Exp $" * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted @@ -92,29 +92,18 @@ static char *rcsid = "$Id: msgtrans.c,v 1.24 2001/02/21 05:54:17 m-kasahr Exp $" #include #include -/* - * Name translation instructions. - * - * For query, perform - * 1. local encoding to UTF-8 conversion - * 2. delimiter mapping - * 3. local mapping - * 4. nameprep - * 5. UTF-8 to IDN encoding conversion - * - * For reply, - * 1. IDN encoding to UTF-8 conversion - * 2. UTF-8 to local encoding conversion - * - * See mdn/res.h for the mnemonic. - */ -#define INSN_QUERY "ldMNI" -#define INSN_REPLY "iL" - #define DNS_HEADER_SIZE 12 #define DNAME_SIZE 512 #define RRFORMAT_HASH_SIZE 47 +/* + * Translation directions. + */ +enum { + transdir_query = 0, + transdir_reply = 1 +}; + /* * DNS opcodes. */ @@ -165,7 +154,7 @@ enum { }; typedef struct msgtrans_ctx { - char *insn; /* name translation instruction */ + int transdir; /* direction of translation */ const char *in; /* input message */ size_t in_len; /* length of it */ const char *in_ptr; /* current pointer */ @@ -209,6 +198,35 @@ static struct rrformat { }; static struct rrformat *rrformathash[RRFORMAT_HASH_SIZE]; +/* + * Name translation instructions. + * + * For query, perform + * 1. local encoding to UTF-8 conversion + * 2. delimiter mapping + * 3. local mapping + * 4. nameprep + * 5. UTF-8 to IDN encoding conversion + * + * For reply, + * 1. IDN encoding to UTF-8 conversion + * 2. UTF-8 to local encoding conversion + * + * See mdn/res.h for the mnemonic. + */ +static const char *trans_insn[] = { + "ldMNI", /* insn for QUERY (transdir_query) */ + "i!NL", /* insn for REPLY (transdir_reply) */ +}; + +/* + * Labels of translation directions, used for log messages. + */ +static const char *trans_labels[] = { + "QUERY", /* QUERY (transdir_query) */ + "REPLY", /* REPLY (transdir_reply) */ +}; + static mdn_result_t copy_header(msgtrans_ctx_t *ctx); static mdn_result_t translate_question(msgtrans_ctx_t *ctx); static mdn_result_t translate_rr(msgtrans_ctx_t *ctx); @@ -348,17 +366,33 @@ translate_question(msgtrans_ctx_t *ctx) { if ((r = get_domainname(ctx, qname, sizeof(qname))) != mdn_success) return (r); + INFO(("request of QNAME %s translation: name=\"%s\"\n", + trans_labels[ctx->transdir], mdn_debug_xstring(qname, 256))); + /* Translate QNAME. */ - r = mdn_res_nameconv(ctx->conf, ctx->insn, qname, + r = mdn_res_nameconv(ctx->conf, trans_insn[ctx->transdir], qname, qname_translated, sizeof(qname_translated)); if (r != mdn_success) - return (r); - - if ((r = put_domainname(ctx, qname_translated)) != mdn_success) - return (r); + goto failure; + r = put_domainname(ctx, qname_translated); + if (r != mdn_success) + goto failure; /* Copy QTYPE and QCLASS */ - return (copy_message(ctx, 4)); + r = copy_message(ctx, 4); + if (r != mdn_success) + goto failure; + + INFO(("result of QNAME %s translation: name=\"%s\"\n", + trans_labels[ctx->transdir], + mdn_debug_xstring(qname_translated, 256))); + + return (mdn_success); + +failure: + INFO(("QNAME %s translation failed, %s\n", + trans_labels[ctx->transdir], mdn_result_tostring(r))); + return (r); } static mdn_result_t @@ -373,18 +407,23 @@ translate_rr(msgtrans_ctx_t *ctx) { if ((r = get_domainname(ctx, dname, sizeof(dname))) != mdn_success) return (r); + INFO(("request of RR NAME %s translation: name=\"%s\"\n", + trans_labels[ctx->transdir], mdn_debug_xstring(dname, 256))); + /* Translate NAME. */ - r = mdn_res_nameconv(ctx->conf, ctx->insn, dname, + r = mdn_res_nameconv(ctx->conf, trans_insn[ctx->transdir], dname, dname_translated, sizeof(dname_translated)); if (r != mdn_success) - return (r); - - if ((r = put_domainname(ctx, dname_translated)) != mdn_success) - return (r); + goto failure; + r = put_domainname(ctx, dname_translated); + if (r != mdn_success) + goto failure; /* Get TYPE and CLASS */ - if (ctx->in_remain < 10) - return (mdn_invalid_message); + if (ctx->in_remain < 10) { + r = mdn_invalid_message; + goto failure; + } p = (unsigned char *)ctx->in_ptr; #define GET16(off) ((p[off]<<8)+p[(off)+1]) rr_type = GET16(0); @@ -393,23 +432,33 @@ translate_rr(msgtrans_ctx_t *ctx) { #undef GET16 /* Copy TYPE, CLASS, TTL and RDLENGTH. */ - if ((r = copy_message(ctx, 10)) != mdn_success) - return (r); + r = copy_message(ctx, 10); + if (r != mdn_success) + goto failure; /* Remember the current output length. */ length_before = output_length(ctx); /* Translate RDATA. */ r = translate_rdata(ctx, rr_type, rr_class, rr_length); + if (r != mdn_success) + goto failure; - if (r == mdn_success) { - /* Reset RDLENGTH */ - rr_length = output_length(ctx) - length_before; - ctx->out[length_before - 2] = (rr_length >> 8) & 0xff; - ctx->out[length_before - 1] = rr_length & 0xff; - } + /* Reset RDLENGTH */ + rr_length = output_length(ctx) - length_before; + ctx->out[length_before - 2] = (rr_length >> 8) & 0xff; + ctx->out[length_before - 1] = rr_length & 0xff; + + INFO(("result of RR NAME %s translation: name=\"%s\"\n", + trans_labels[ctx->transdir], + mdn_debug_xstring(dname_translated, 256))); return (r); + +failure: + INFO(("RR NAME %s translation failed, %s\n", + trans_labels[ctx->transdir], mdn_result_tostring(r))); + return (r); } static mdn_result_t @@ -510,16 +559,27 @@ translate_domain(msgtrans_ctx_t *ctx) { if ((r = get_domainname(ctx, dname, sizeof(dname))) != mdn_success) return (r); + INFO(("request of RDATA %s translation: name=\"%s\"\n", + trans_labels[ctx->transdir], mdn_debug_xstring(dname, 256))); + /* Translate NAME. */ - r = mdn_res_nameconv(ctx->conf, ctx->insn, dname, + r = mdn_res_nameconv(ctx->conf, trans_insn[ctx->transdir], dname, dname_translated, sizeof(dname_translated)); if (r != mdn_success) - return (r); - + goto failure; if ((r = put_domainname(ctx, dname_translated)) != mdn_success) - return (r); + goto failure; + + INFO(("result of RDATA %s translation: name=\"%s\"\n", + trans_labels[ctx->transdir], + mdn_debug_xstring(dname_translated, 256))); return (mdn_success); + +failure: + INFO(("RDATA %s translation failed, %s\n", + trans_labels[ctx->transdir], mdn_result_tostring(r))); + return (r); } static mdn_result_t @@ -554,7 +614,7 @@ static void ctx_init(msgtrans_ctx_t *ctx, mdn_resconf_t conf, mdn_msgheader_t *header, const char *msg, size_t msglen, char *outbuf, size_t outbufsize) { - ctx->insn = (header->qr == 0) ? INSN_QUERY : INSN_REPLY; + ctx->transdir = (header->qr == 0) ? transdir_query : transdir_reply; ctx->in = ctx->in_ptr = msg; ctx->in_len = ctx->in_remain = msglen; ctx->out = ctx->out_ptr = outbuf; diff --git a/contrib/idn/mdnkit/lib/nameprep.c b/contrib/idn/mdnkit/lib/nameprep.c index 6ef51648afc..286cff4d055 100644 --- a/contrib/idn/mdnkit/lib/nameprep.c +++ b/contrib/idn/mdnkit/lib/nameprep.c @@ -1,5 +1,5 @@ #ifndef lint -static char *rcsid = "$Id: nameprep.c,v 1.1 2001/06/09 00:30:19 tale Exp $"; +static char *rcsid = "$Id: nameprep.c,v 1.2 2002/02/08 05:40:23 marka Exp $"; #endif /* @@ -11,8 +11,8 @@ static char *rcsid = "$Id: nameprep.c,v 1.1 2001/06/09 00:30:19 tale Exp $"; * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted @@ -79,7 +79,7 @@ static char *rcsid = "$Id: nameprep.c,v 1.1 2001/06/09 00:30:19 tale Exp $"; /* * The latest version. */ -#define NAMEPREP_CURRENT "nameprep-03" +#define NAMEPREP_CURRENT "nameprep-05" /* * Load NAMEPREP compiled tables. @@ -90,16 +90,20 @@ static char *rcsid = "$Id: nameprep.c,v 1.1 2001/06/09 00:30:19 tale Exp $"; * Define mapping/checking functions for each version of the draft. */ -#define VERSION id02 +#define VERSION id03 #include "nameprep_template.c" #undef VERSION -#define VERSION id03 +#define VERSION id05 +#include "nameprep_template.c" +#undef VERSION + +#define VERSION id06 #include "nameprep_template.c" #undef VERSION -typedef char *(*nameprep_mapproc)(unsigned long v); -typedef int (*nameprep_checkproc)(unsigned long v); +typedef const char *(*nameprep_mapproc)(unsigned long v); +typedef int (*nameprep_checkproc)(unsigned long v); static struct mdn_nameprep { char *version; @@ -112,8 +116,9 @@ static struct mdn_nameprep { compose_sym2(nameprep_map_, id), \ compose_sym2(nameprep_prohibited_, id), \ compose_sym2(nameprep_unassigned_, id) } - MAKE_NAMEPREP_HANDLE("nameprep-02", id02), MAKE_NAMEPREP_HANDLE("nameprep-03", id03), + MAKE_NAMEPREP_HANDLE("nameprep-05", id05), + MAKE_NAMEPREP_HANDLE("nameprep-06", id06), { NULL, NULL, NULL }, }; @@ -170,7 +175,7 @@ mdn_nameprep_map(mdn_nameprep_t handle, const char *from, while (fromlen > 0) { unsigned long v; int w; - char *mapped; + const char *mapped; if ((w = mdn_utf8_getwc(from, fromlen, &v)) == 0) return (mdn_invalid_encoding); diff --git a/contrib/idn/mdnkit/lib/nameprep_template.c b/contrib/idn/mdnkit/lib/nameprep_template.c index 543fd782837..4b327b3f7ec 100644 --- a/contrib/idn/mdnkit/lib/nameprep_template.c +++ b/contrib/idn/mdnkit/lib/nameprep_template.c @@ -1,4 +1,4 @@ -/* $Id: nameprep_template.c,v 1.1 2001/06/09 00:30:19 tale Exp $ */ +/* $Id: nameprep_template.c,v 1.2 2002/02/08 05:40:24 marka Exp $ */ /* * Copyright (c) 2001 Japan Network Information Center. All rights reserved. @@ -9,8 +9,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted @@ -86,7 +86,7 @@ #endif /* NAMEPREP_TEMPLATE_INIT */ -static char * +static const char * compose_sym2(nameprep_map_, VERSION) (unsigned long v) { int idx0 = IDX0(MAP, v); int idx1 = IDX1(MAP, v); @@ -99,7 +99,7 @@ compose_sym2(nameprep_map_, VERSION) (unsigned long v) { offset = TABLE[IMAP[IMAP[idx0] + idx1]].tbl[idx2]; if (offset == 0) return (NULL); /* no mapping */ - return (char *)(DATA + offset); + return (const char *)(DATA + offset); #undef IMAP #undef TABLE #undef DATA @@ -110,7 +110,7 @@ compose_sym2(nameprep_prohibited_, VERSION) (unsigned long v) { int idx0 = IDX0(PROH, v); int idx1 = IDX1(PROH, v); int idx2 = IDX2(PROH, v); - unsigned char *bm; + const unsigned char *bm; #define IMAP compose_sym3(nameprep_, VERSION, _prohibited_imap) #define BITMAP compose_sym3(nameprep_, VERSION, _prohibited_bitmap) @@ -125,7 +125,7 @@ compose_sym2(nameprep_unassigned_, VERSION) (unsigned long v) { int idx0 = IDX0(UNAS, v); int idx1 = IDX1(UNAS, v); int idx2 = IDX2(UNAS, v); - unsigned char *bm; + const unsigned char *bm; #define IMAP compose_sym3(nameprep_, VERSION, _unassigned_imap) #define BITMAP compose_sym3(nameprep_, VERSION, _unassigned_bitmap) diff --git a/contrib/idn/mdnkit/lib/nameprepdata.c b/contrib/idn/mdnkit/lib/nameprepdata.c index 67b164de26f..ee46228d566 100644 --- a/contrib/idn/mdnkit/lib/nameprepdata.c +++ b/contrib/idn/mdnkit/lib/nameprepdata.c @@ -1,5 +1,5 @@ -/* $Id: nameprepdata.c,v 1.1 2001/06/09 00:30:19 tale Exp $ */ -/* $-Id: generate_nameprep_data.pl,v 1.2 2001/03/05 09:04:36 ishisone Exp -$ */ +/* $Id: nameprepdata.c,v 1.2 2002/02/08 05:40:26 marka Exp $ */ +/* $-Id: generate_nameprep_data.pl,v 1.5 2001/10/31 08:51:30 m-kasahr Exp -$ */ /* * Do not edit this file! * This file is generated from NAMEPREP specification. @@ -17,7 +17,7 @@ #define UNAS_BITS_1 7 #define UNAS_BITS_2 7 -static unsigned short nameprep_id02_map_imap[] = { +static const unsigned short nameprep_id03_map_imap[] = { 272, 400, 528, 656, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 912, 784, 784, 784, 784, 784, 784, 784, 784, @@ -150,9 +150,9 @@ static unsigned short nameprep_id02_map_imap[] = { 0, 60, 0, 0, 0, 0, 0, 0, }; -static struct { +static const struct { unsigned short tbl[32]; -} nameprep_id02_map_table[] = { +} nameprep_id03_map_table[] = { {{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -460,7 +460,7 @@ static struct { }}, }; -static unsigned char nameprep_id02_map_data[] = { +static const unsigned char nameprep_id03_map_data[] = { 0, 97, 0, 98, 0, 99, 0, 100, 0, 101, 0, 102, 0, 103, 0, 104, 0, 105, 0, 106, 0, 107, 0, 108, 0, 109, 0, 110, 0, 111, 0, 112, 0, 113, 0, 114, @@ -697,7 +697,7 @@ static unsigned char nameprep_id02_map_data[] = { 0, }; -static unsigned short nameprep_id02_prohibited_imap[] = { +static const unsigned short nameprep_id03_prohibited_imap[] = { 68, 196, 196, 324, 196, 196, 196, 452, 196, 196, 196, 452, 196, 196, 196, 452, 196, 196, 196, 452, 196, 196, 196, 452, @@ -718,7 +718,7 @@ static unsigned short nameprep_id02_prohibited_imap[] = { 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 5, 3, 2, 2, 2, + 2, 2, 2, 5, 6, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -744,17 +744,17 @@ static unsigned short nameprep_id02_prohibited_imap[] = { 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 2, 2, + 2, 2, 2, 2, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 7, 2, 2, 2, 2, + 2, 2, 2, 8, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -770,28 +770,28 @@ static unsigned short nameprep_id02_prohibited_imap[] = { 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 8, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, + 2, 2, 2, 9, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, }; -static struct { +static const struct { unsigned char bm[16]; -} nameprep_id02_prohibited_bitmap[] = { +} nameprep_id03_prohibited_bitmap[] = { {{ 255,255,255,255,255,223, 0,252, 1, 0, 0,248, 1, 0, 0,248, }}, @@ -810,6 +810,9 @@ static struct { {{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255, }}, + {{ + 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, {{ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, }}, @@ -820,7 +823,7 @@ static struct { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, }}, }; -static unsigned short nameprep_id02_unassigned_imap[] = { +static const unsigned short nameprep_id03_unassigned_imap[] = { 68, 196, 324, 452, 580, 580, 580, 708, 580, 580, 580, 708, 580, 580, 580, 708, 580, 580, 580, 708, 580, 580, 580, 708, @@ -944,9 +947,9 @@ static unsigned short nameprep_id02_unassigned_imap[] = { 0, 0, 0, 0, }; -static struct { +static const struct { unsigned char bm[16]; -} nameprep_id02_unassigned_bitmap[] = { +} nameprep_id03_unassigned_bitmap[] = { {{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }}, @@ -1173,7 +1176,7 @@ static struct { 0, 0, 0, 0, 0, 0, 0, 0,255,255, 0, 0, 0, 0, 0, 0, }}, {{ - 0, 0, 3, 0, 0, 0, 0, 0, 0,255, 0, 0, 0, 0, 0,240, + 0, 0, 3, 0, 0, 0, 0, 0, 0,255,255,255,255,255, 0,240, }}, {{ 255,255,255,255,240,255, 0, 0,224, 1, 8, 0,128,240, 40, 0, @@ -1191,165 +1194,52 @@ static struct { 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 63, }}, }; -#define nameprep_id03_map_imap nameprep_id02_map_imap -#define nameprep_id03_map_table nameprep_id02_map_table -#define nameprep_id03_map_data nameprep_id02_map_data - -static unsigned short nameprep_id03_prohibited_imap[] = { - 68, 196, 196, 324, 196, 196, 196, 452, - 196, 196, 196, 452, 196, 196, 196, 452, - 196, 196, 196, 452, 196, 196, 196, 452, - 196, 196, 196, 452, 196, 196, 196, 452, - 196, 196, 196, 452, 196, 196, 196, 452, - 196, 196, 196, 452, 196, 196, 196, 452, - 196, 196, 196, 452, 196, 196, 196, 452, - 196, 196, 196, 452, 580, 580, 580, 580, - 580, 580, 580, 580, 0, 1, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, - 2, 3, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 4, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 5, 6, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 8, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 9, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, -}; - -static struct { - unsigned char bm[16]; -} nameprep_id03_prohibited_bitmap[] = { - {{ - 255,255,255,255,255,223, 0,252, 1, 0, 0,248, 1, 0, 0,248, - }}, - {{ - 255,255,255,255, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - }}, - {{ - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - }}, - {{ - 255,207, 0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0,252, 0, 0, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255, - }}, - {{ - 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - }}, - {{ - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, - }}, - {{ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, - }}, -}; -static unsigned short nameprep_id03_unassigned_imap[] = { - 68, 196, 324, 452, 580, 580, 580, 708, - 580, 580, 580, 708, 580, 580, 580, 708, - 580, 580, 580, 708, 580, 580, 580, 708, - 580, 580, 580, 708, 580, 580, 580, 708, - 580, 580, 580, 708, 580, 580, 580, 708, - 580, 580, 580, 708, 580, 580, 580, 708, - 580, 580, 580, 708, 580, 580, 580, 708, - 580, 580, 580, 708, 836, 836, 836, 836, - 836, 836, 836, 836, 0, 0, 0, 0, - 1, 2, 3, 4, 0, 5, 6, 7, - 8, 9, 10, 11, 12, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 33, 34, 35, 0, 0, 0, - 36, 37, 12, 38, 39, 40, 12, 12, - 12, 12, 12, 12, 12, 12, 12, 12, - 0, 41, 42, 43, 44, 45, 46, 47, - 0, 48, 49, 50, 51, 52, 0, 53, - 54, 12, 55, 56, 0, 0, 12, 12, - 12, 12, 12, 12, 12, 12, 12, 12, - 12, 57, 0, 58, 59, 60, 61, 62, - 63, 64, 65, 66, 0, 0, 0, 0, +static const unsigned short nameprep_id05_map_imap[] = { + 272, 400, 528, 656, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 912, + 1040, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 1168, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 0, 0, 1, 0, 0, 2, 3, 0, + 4, 5, 6, 7, 8, 9, 10, 11, + 12, 13, 0, 0, 0, 0, 0, 0, + 0, 0, 14, 15, 16, 17, 18, 19, + 20, 21, 0, 22, 23, 24, 25, 26, + 0, 27, 28, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1363,17 +1253,19 @@ static unsigned short nameprep_id03_unassigned_imap[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, + 47, 0, 0, 0, 0, 48, 0, 0, + 49, 50, 0, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 68, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 69, 12, 12, - 12, 12, 12, 12, 12, 12, 12, 12, - 12, 12, 12, 12, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 52, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1384,39 +1276,1029 @@ static unsigned short nameprep_id03_unassigned_imap[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 54, 55, 56, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 71, 12, 72, 73, 0, 0, 74, 75, - 76, 77, 78, 79, 12, 12, 12, 12, - 12, 12, 12, 12, 12, 12, 12, 12, - 12, 12, 12, 12, 12, 12, 12, 12, - 12, 12, 12, 12, 12, 12, 12, 12, - 12, 12, 12, 12, 12, 12, 12, 12, - 12, 12, 12, 12, 12, 12, 12, 12, - 12, 12, 12, 12, 12, 12, 12, 12, - 12, 12, 12, 12, 12, 12, 12, 12, - 12, 12, 12, 12, 12, 12, 12, 12, - 12, 12, 12, 12, 12, 12, 12, 12, - 12, 12, 12, 12, 12, 12, 12, 12, - 12, 12, 12, 12, 12, 12, 12, 12, - 12, 12, 12, 12, 12, 12, 12, 12, - 12, 12, 12, 12, 12, 12, 12, 12, - 12, 12, 12, 12, 12, 12, 12, 12, - 12, 12, 12, 12, 12, 12, 12, 12, - 12, 12, 12, 12, 12, 12, 12, 12, - 12, 12, 12, 12, 12, 12, 12, 12, - 12, 12, 12, 12, 12, 12, 12, 12, - 12, 12, 12, 12, 12, 12, 12, 12, - 12, 12, 12, 12, 12, 12, 12, 12, - 12, 12, 12, 12, 12, 12, 12, 12, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 58, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 59, + 0, 60, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 61, 62, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 63, 64, 65, + 66, 76, 77, 69, 70, 78, 79, 80, + 81, 82, 83, 84, 85, 86, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, +}; + +static const struct { + unsigned short tbl[32]; +} nameprep_id05_map_table[] = { + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 1, 3, 5, 7, 9, 11, 13, 15, 17, 19, + 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, + 43, 45, 47, 49, 51, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 53, 0, 0, 0, 0, 0, 0, 0, 54, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 57, 60, 63, 66, 69, 72, 75, 78, 81, 84, 87, + 90, 93, 96, 99, 102, 105, 108, 111, 114, 117, 120, + 123, 0, 126, 129, 132, 135, 138, 141, 144, 147, + }}, + {{ + 150, 0, 153, 0, 156, 0, 159, 0, 162, 0, 165, + 0, 168, 0, 171, 0, 174, 0, 177, 0, 180, 0, + 183, 0, 186, 0, 189, 0, 192, 0, 195, 0, + }}, + {{ + 198, 0, 201, 0, 204, 0, 207, 0, 210, 0, 213, + 0, 216, 0, 219, 0, 17, 17, 222, 0, 225, 0, + 228, 0, 0, 231, 0, 234, 0, 237, 0, 240, + }}, + {{ + 0, 243, 0, 246, 0, 249, 0, 252, 0, 255, 259, + 0, 262, 0, 265, 0, 268, 0, 271, 0, 274, 0, + 277, 0, 280, 0, 283, 0, 286, 0, 289, 0, + }}, + {{ + 292, 0, 295, 0, 298, 0, 301, 0, 304, 0, 307, + 0, 310, 0, 313, 0, 316, 0, 319, 0, 322, 0, + 325, 0, 328, 331, 0, 334, 0, 337, 0, 37, + }}, + {{ + 0, 340, 343, 0, 346, 0, 349, 352, 0, 355, 358, + 361, 0, 0, 364, 367, 370, 373, 0, 376, 379, 0, + 382, 385, 388, 0, 0, 0, 391, 394, 0, 397, + }}, + {{ + 400, 0, 403, 0, 406, 0, 409, 412, 0, 415, 0, + 0, 418, 0, 421, 424, 0, 427, 430, 433, 0, 436, + 0, 439, 442, 0, 0, 0, 445, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 448, 448, 0, 451, 451, 0, 454, + 454, 0, 457, 0, 460, 0, 463, 0, 466, 0, 469, + 0, 472, 0, 475, 0, 478, 0, 0, 481, 0, + }}, + {{ + 484, 0, 487, 0, 490, 0, 493, 0, 496, 0, 499, + 0, 502, 0, 505, 0, 508, 512, 512, 0, 515, 0, + 518, 521, 524, 0, 527, 0, 530, 0, 533, 0, + }}, + {{ + 536, 0, 539, 0, 542, 0, 545, 0, 548, 0, 551, + 0, 554, 0, 557, 0, 560, 0, 563, 0, 566, 0, + 569, 0, 572, 0, 575, 0, 578, 0, 581, 0, + }}, + {{ + 0, 0, 584, 0, 587, 0, 590, 0, 593, 0, 596, + 0, 599, 0, 602, 0, 605, 0, 608, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 611, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 614, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 618, 0, 621, 624, 627, + 0, 630, 0, 633, 636, 639, 646, 649, 652, 655, 658, + 661, 664, 667, 611, 670, 673, 54, 676, 679, 682, + }}, + {{ + 685, 688, 0, 691, 694, 697, 700, 703, 706, 709, 712, + 715, 0, 0, 0, 0, 718, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 691, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 649, 667, 697, 633, 715, 700, + 685, 0, 0, 0, 725, 0, 728, 0, 731, 0, + }}, + {{ + 734, 0, 737, 0, 740, 0, 743, 0, 746, 0, 749, + 0, 752, 0, 755, 0, 670, 688, 691, 0, 667, 658, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 758, 761, 764, 767, 770, 773, 776, 779, 782, 785, 788, + 791, 794, 797, 800, 803, 806, 809, 812, 815, 818, 821, + 824, 827, 830, 833, 836, 839, 842, 845, 848, 851, + }}, + {{ + 854, 857, 860, 863, 866, 869, 872, 875, 878, 881, 884, + 887, 890, 893, 896, 899, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 902, 0, 905, 0, 908, 0, 911, 0, 914, 0, 917, + 0, 920, 0, 923, 0, 926, 0, 929, 0, 932, 0, + 935, 0, 938, 0, 941, 0, 944, 0, 947, 0, + }}, + {{ + 950, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 953, 0, 956, 0, 959, 0, 962, 0, 965, 0, + 968, 0, 971, 0, 974, 0, 977, 0, 980, 0, + }}, + {{ + 983, 0, 986, 0, 989, 0, 992, 0, 995, 0, 998, + 0, 1001, 0, 1004, 0, 1007, 0, 1010, 0, 1013, 0, + 1016, 0, 1019, 0, 1022, 0, 1025, 0, 1028, 0, + }}, + {{ + 0, 1031, 0, 1034, 0, 0, 0, 1037, 0, 0, 0, + 1040, 0, 0, 0, 0, 1043, 0, 1046, 0, 1049, 0, + 1052, 0, 1055, 0, 1058, 0, 1061, 0, 1064, 0, + }}, + {{ + 1067, 0, 1070, 0, 1073, 0, 1076, 0, 1079, 0, 1082, + 0, 1085, 0, 1088, 0, 1091, 0, 1094, 0, 1097, 0, + 0, 0, 1100, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1103, 1106, 1109, 1112, 1115, + 1118, 1121, 1124, 1127, 1130, 1133, 1136, 1139, 1142, 1145, + }}, + {{ + 1148, 1151, 1154, 1157, 1160, 1163, 1166, 1169, 1172, 1175, 1178, + 1181, 1184, 1187, 1190, 1193, 1196, 1199, 1202, 1205, 1208, 1211, + 1214, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 1217, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 53, 0, 0, 0, 0, + 53, 53, 53, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 1222, 0, 1226, 0, 1230, 0, 1234, 0, 1238, 0, 1242, + 0, 1246, 0, 1250, 0, 1254, 0, 1258, 0, 1262, 0, + 1266, 0, 1270, 0, 1274, 0, 1278, 0, 1282, 0, + }}, + {{ + 1286, 0, 1290, 0, 1294, 0, 1298, 0, 1302, 0, 1306, + 0, 1310, 0, 1314, 0, 1318, 0, 1322, 0, 1326, 0, + 1330, 0, 1334, 0, 1338, 0, 1342, 0, 1346, 0, + }}, + {{ + 1350, 0, 1354, 0, 1358, 0, 1362, 0, 1366, 0, 1370, + 0, 1374, 0, 1378, 0, 1382, 0, 1386, 0, 1390, 0, + 1394, 0, 1398, 0, 1402, 0, 1406, 0, 1410, 0, + }}, + {{ + 1414, 0, 1418, 0, 1422, 0, 1426, 0, 1430, 0, 1434, + 0, 1438, 0, 1442, 0, 1446, 0, 1450, 0, 1454, 0, + 1458, 0, 1462, 0, 1466, 0, 1470, 0, 1474, 0, + }}, + {{ + 1478, 0, 1482, 0, 1486, 0, 1490, 0, 1494, 0, 1498, + 0, 1502, 0, 1506, 0, 1510, 0, 1514, 0, 1518, 0, + 1522, 1526, 1530, 1534, 1538, 1414, 0, 0, 0, 0, + }}, + {{ + 1542, 0, 1546, 0, 1550, 0, 1554, 0, 1558, 0, 1562, + 0, 1566, 0, 1570, 0, 1574, 0, 1578, 0, 1582, 0, + 1586, 0, 1590, 0, 1594, 0, 1598, 0, 1602, 0, + }}, + {{ + 1606, 0, 1610, 0, 1614, 0, 1618, 0, 1622, 0, 1626, + 0, 1630, 0, 1634, 0, 1638, 0, 1642, 0, 1646, 0, + 1650, 0, 1654, 0, 1658, 0, 1662, 0, 1666, 0, + }}, + {{ + 1670, 0, 1674, 0, 1678, 0, 1682, 0, 1686, 0, 1690, + 0, 1694, 0, 1698, 0, 1702, 0, 1706, 0, 1710, 0, + 1714, 0, 1718, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 1722, 1726, 1730, + 1734, 1738, 1742, 1746, 1750, 0, 0, 0, 0, 0, 0, + 0, 0, 1754, 1758, 1762, 1766, 1770, 1774, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 1778, 1782, 1786, + 1790, 1794, 1798, 1802, 1806, 0, 0, 0, 0, 0, 0, + 0, 0, 1810, 1814, 1818, 1822, 1826, 1830, 1834, 1838, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 1842, 1846, 1850, + 1854, 1858, 1862, 0, 0, 1866, 0, 1871, 0, 1878, 0, + 1885, 0, 0, 1892, 0, 1896, 0, 1900, 0, 1904, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 1908, 1912, 1916, + 1920, 1924, 1928, 1932, 1936, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 1940, 1946, 1952, 1958, 1964, 1970, 1976, 1982, 1940, 1946, 1952, + 1958, 1964, 1970, 1976, 1982, 1988, 1994, 2000, 2006, 2012, 2018, + 2024, 2030, 1988, 1994, 2000, 2006, 2012, 2018, 2024, 2030, + }}, + {{ + 2036, 2042, 2048, 2054, 2060, 2066, 2072, 2078, 2036, 2042, 2048, + 2054, 2060, 2066, 2072, 2078, 0, 0, 2084, 2090, 2095, 0, + 2100, 2105, 2112, 2116, 2120, 2124, 2090, 0, 611, 0, + }}, + {{ + 0, 0, 2128, 2134, 2139, 0, 2144, 2149, 2156, 2160, 2164, + 2168, 2134, 0, 0, 0, 0, 0, 2172, 639, 0, 0, + 2179, 2184, 2191, 2195, 2199, 2203, 0, 0, 0, 0, + }}, + {{ + 0, 0, 2207, 718, 2214, 0, 2219, 2224, 2231, 2235, 2239, + 2243, 2247, 0, 0, 0, 0, 0, 2251, 2257, 2262, 0, + 2267, 2272, 2279, 2283, 2287, 2291, 2257, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 53, 53, 53, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 2295, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 5, 2298, 0, 0, 0, 370, 0, 2302, 0, + 15, 15, 15, 0, 0, 17, 17, 23, 0, 0, 27, + 2306, 0, 0, 31, 33, 35, 35, 35, 0, 0, + }}, + {{ + 2309, 2312, 2316, 0, 51, 0, 709, 0, 51, 0, 21, + 72, 3, 5, 0, 0, 9, 11, 0, 25, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 2319, 2323, 2327, 2331, 2335, 2339, 2343, 2347, 2351, 2355, 2359, + 2363, 2367, 2371, 2375, 2379, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2383, 2387, 2391, 2395, 2399, 2403, 2407, 2411, 2415, 2419, + }}, + {{ + 2423, 2427, 2431, 2435, 2439, 2443, 2447, 2451, 2455, 2459, 2463, + 2467, 2471, 2475, 2479, 2483, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 2487, 0, 2491, 0, 2494, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 2497, 2500, 2503, 2507, 2510, 2513, 2516, 2519, 0, 0, 2522, + 2525, 2528, 0, 0, 0, 2532, 2535, 2539, 2543, 2547, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 2497, 2551, + 2555, 2559, 0, 0, 0, 0, 0, 0, 0, 2563, 2566, + 2569, 2573, 2576, 2573, 2579, 2582, 2585, 2589, 2592, 2589, + }}, + {{ + 2595, 2599, 0, 2603, 0, 0, 2606, 2613, 2617, 2620, 0, + 2623, 0, 2626, 2629, 0, 0, 0, 0, 0, 0, 0, + 0, 2632, 0, 2635, 2639, 0, 2642, 2645, 0, 0, + }}, + {{ + 2648, 2651, 2654, 2657, 2661, 2665, 2665, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2668, 2673, 2678, + 2683, 2688, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, + }}, + {{ + 0, 2693, 2697, 2701, 2705, 2709, 2713, 2717, 2721, 2725, 2729, + 2733, 2737, 2741, 2745, 2749, 2753, 2757, 2761, 2765, 2769, 2773, + 2777, 2781, 2785, 2789, 2793, 0, 0, 0, 0, 0, + }}, + {{ + 2797, 2802, 2807, 2812, 2817, 2822, 2827, 2832, 2837, 2842, 2847, + 2852, 2857, 2862, 2867, 2872, 2877, 2882, 2887, 2892, 2897, 2902, + 2907, 2912, 2917, 2922, 2927, 2932, 2937, 2942, 2947, 2952, + }}, + {{ + 2957, 2962, 2967, 2972, 2977, 2982, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, + 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, 43, + 45, 47, 49, 51, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, + 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, + }}, + {{ + 25, 27, 29, 31, 33, 35, 37, 39, 41, 43, 45, + 47, 49, 51, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 5, + 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, + 29, 31, 33, 35, 37, 39, 41, 43, 45, 47, + }}, + {{ + 49, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1, 0, 5, 7, + }}, + {{ + 0, 0, 13, 0, 0, 19, 21, 0, 0, 27, 29, + 31, 33, 0, 37, 39, 41, 43, 45, 47, 49, 51, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 3, 5, 7, 9, 11, + 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, + }}, + {{ + 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 1, 3, 0, 7, 9, 11, 13, + 0, 0, 19, 21, 23, 25, 27, 29, 31, 33, 0, + 37, 39, 41, 43, 45, 47, 49, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1, 3, 0, 7, 9, 11, 13, 0, + }}, + {{ + 17, 19, 21, 23, 25, 0, 29, 0, 0, 0, 37, + 39, 41, 43, 45, 47, 49, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 3, 5, 7, 9, 11, 13, 15, 17, 19, + 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, + }}, + {{ + 41, 43, 45, 47, 49, 51, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 49, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1, 3, 5, 7, + }}, + {{ + 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, + 31, 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 646, 649, 652, + 655, 658, 661, 664, 667, 611, 670, 673, 54, 676, 679, + 682, 685, 688, 667, 691, 694, 697, 700, 703, 706, + }}, + {{ + 709, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 691, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 646, 649, 652, 655, 658, 661, 664, 667, 611, + 670, 673, 54, 676, 679, 682, 685, 688, 667, 691, 694, + 697, 700, 703, 706, 709, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 691, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 646, 649, 652, 655, + }}, + {{ + 658, 661, 664, 667, 611, 670, 673, 54, 676, 679, 682, + 685, 688, 667, 691, 694, 697, 700, 703, 706, 709, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 691, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 646, 649, 652, 655, 658, 661, 664, 667, 611, 670, + }}, + {{ + 673, 54, 676, 679, 682, 685, 688, 667, 691, 694, 697, + 700, 703, 706, 709, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 691, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 646, 649, 652, 655, 658, 661, + 664, 667, 611, 670, 673, 54, 676, 679, 682, 685, + }}, + {{ + 688, 667, 691, 694, 697, 700, 703, 706, 709, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 691, 0, 0, 0, 0, + }}, +}; + +static const unsigned char nameprep_id05_map_data[] = { + 0, 97, 0, 98, 0, 99, 0, 100, 0, 101, 0, 102, + 0, 103, 0, 104, 0, 105, 0, 106, 0, 107, 0, 108, + 0, 109, 0, 110, 0, 111, 0, 112, 0, 113, 0, 114, + 0, 115, 0, 116, 0, 117, 0, 118, 0, 119, 0, 120, + 0, 121, 0, 122, 0, 0, 206, 188, 0, 195, 160, 0, + 195, 161, 0, 195, 162, 0, 195, 163, 0, 195, 164, 0, + 195, 165, 0, 195, 166, 0, 195, 167, 0, 195, 168, 0, + 195, 169, 0, 195, 170, 0, 195, 171, 0, 195, 172, 0, + 195, 173, 0, 195, 174, 0, 195, 175, 0, 195, 176, 0, + 195, 177, 0, 195, 178, 0, 195, 179, 0, 195, 180, 0, + 195, 181, 0, 195, 182, 0, 195, 184, 0, 195, 185, 0, + 195, 186, 0, 195, 187, 0, 195, 188, 0, 195, 189, 0, + 195, 190, 0, 115, 115, 0, 196, 129, 0, 196, 131, 0, + 196, 133, 0, 196, 135, 0, 196, 137, 0, 196, 139, 0, + 196, 141, 0, 196, 143, 0, 196, 145, 0, 196, 147, 0, + 196, 149, 0, 196, 151, 0, 196, 153, 0, 196, 155, 0, + 196, 157, 0, 196, 159, 0, 196, 161, 0, 196, 163, 0, + 196, 165, 0, 196, 167, 0, 196, 169, 0, 196, 171, 0, + 196, 173, 0, 196, 175, 0, 196, 179, 0, 196, 181, 0, + 196, 183, 0, 196, 186, 0, 196, 188, 0, 196, 190, 0, + 197, 128, 0, 197, 130, 0, 197, 132, 0, 197, 134, 0, + 197, 136, 0, 202, 188, 110, 0, 197, 139, 0, 197, 141, + 0, 197, 143, 0, 197, 145, 0, 197, 147, 0, 197, 149, + 0, 197, 151, 0, 197, 153, 0, 197, 155, 0, 197, 157, + 0, 197, 159, 0, 197, 161, 0, 197, 163, 0, 197, 165, + 0, 197, 167, 0, 197, 169, 0, 197, 171, 0, 197, 173, + 0, 197, 175, 0, 197, 177, 0, 197, 179, 0, 197, 181, + 0, 197, 183, 0, 195, 191, 0, 197, 186, 0, 197, 188, + 0, 197, 190, 0, 201, 147, 0, 198, 131, 0, 198, 133, + 0, 201, 148, 0, 198, 136, 0, 201, 150, 0, 201, 151, + 0, 198, 140, 0, 199, 157, 0, 201, 153, 0, 201, 155, + 0, 198, 146, 0, 201, 160, 0, 201, 163, 0, 201, 169, + 0, 201, 168, 0, 198, 153, 0, 201, 175, 0, 201, 178, + 0, 201, 181, 0, 198, 161, 0, 198, 163, 0, 198, 165, + 0, 202, 128, 0, 198, 168, 0, 202, 131, 0, 198, 173, + 0, 202, 136, 0, 198, 176, 0, 202, 138, 0, 202, 139, + 0, 198, 180, 0, 198, 182, 0, 202, 146, 0, 198, 185, + 0, 198, 189, 0, 199, 134, 0, 199, 137, 0, 199, 140, + 0, 199, 142, 0, 199, 144, 0, 199, 146, 0, 199, 148, + 0, 199, 150, 0, 199, 152, 0, 199, 154, 0, 199, 156, + 0, 199, 159, 0, 199, 161, 0, 199, 163, 0, 199, 165, + 0, 199, 167, 0, 199, 169, 0, 199, 171, 0, 199, 173, + 0, 199, 175, 0, 106, 204, 140, 0, 199, 179, 0, 199, + 181, 0, 198, 149, 0, 198, 191, 0, 199, 185, 0, 199, + 187, 0, 199, 189, 0, 199, 191, 0, 200, 129, 0, 200, + 131, 0, 200, 133, 0, 200, 135, 0, 200, 137, 0, 200, + 139, 0, 200, 141, 0, 200, 143, 0, 200, 145, 0, 200, + 147, 0, 200, 149, 0, 200, 151, 0, 200, 153, 0, 200, + 155, 0, 200, 157, 0, 200, 159, 0, 200, 163, 0, 200, + 165, 0, 200, 167, 0, 200, 169, 0, 200, 171, 0, 200, + 173, 0, 200, 175, 0, 200, 177, 0, 200, 179, 0, 206, + 185, 0, 32, 206, 185, 0, 206, 172, 0, 206, 173, 0, + 206, 174, 0, 206, 175, 0, 207, 140, 0, 207, 141, 0, + 207, 142, 0, 206, 185, 204, 136, 204, 129, 0, 206, 177, + 0, 206, 178, 0, 206, 179, 0, 206, 180, 0, 206, 181, + 0, 206, 182, 0, 206, 183, 0, 206, 184, 0, 206, 186, + 0, 206, 187, 0, 206, 189, 0, 206, 190, 0, 206, 191, + 0, 207, 128, 0, 207, 129, 0, 207, 131, 0, 207, 132, + 0, 207, 133, 0, 207, 134, 0, 207, 135, 0, 207, 136, + 0, 207, 137, 0, 207, 138, 0, 207, 139, 0, 207, 133, + 204, 136, 204, 129, 0, 207, 155, 0, 207, 157, 0, 207, + 159, 0, 207, 161, 0, 207, 163, 0, 207, 165, 0, 207, + 167, 0, 207, 169, 0, 207, 171, 0, 207, 173, 0, 207, + 175, 0, 209, 144, 0, 209, 145, 0, 209, 146, 0, 209, + 147, 0, 209, 148, 0, 209, 149, 0, 209, 150, 0, 209, + 151, 0, 209, 152, 0, 209, 153, 0, 209, 154, 0, 209, + 155, 0, 209, 156, 0, 209, 157, 0, 209, 158, 0, 209, + 159, 0, 208, 176, 0, 208, 177, 0, 208, 178, 0, 208, + 179, 0, 208, 180, 0, 208, 181, 0, 208, 182, 0, 208, + 183, 0, 208, 184, 0, 208, 185, 0, 208, 186, 0, 208, + 187, 0, 208, 188, 0, 208, 189, 0, 208, 190, 0, 208, + 191, 0, 209, 128, 0, 209, 129, 0, 209, 130, 0, 209, + 131, 0, 209, 132, 0, 209, 133, 0, 209, 134, 0, 209, + 135, 0, 209, 136, 0, 209, 137, 0, 209, 138, 0, 209, + 139, 0, 209, 140, 0, 209, 141, 0, 209, 142, 0, 209, + 143, 0, 209, 161, 0, 209, 163, 0, 209, 165, 0, 209, + 167, 0, 209, 169, 0, 209, 171, 0, 209, 173, 0, 209, + 175, 0, 209, 177, 0, 209, 179, 0, 209, 181, 0, 209, + 183, 0, 209, 185, 0, 209, 187, 0, 209, 189, 0, 209, + 191, 0, 210, 129, 0, 210, 141, 0, 210, 143, 0, 210, + 145, 0, 210, 147, 0, 210, 149, 0, 210, 151, 0, 210, + 153, 0, 210, 155, 0, 210, 157, 0, 210, 159, 0, 210, + 161, 0, 210, 163, 0, 210, 165, 0, 210, 167, 0, 210, + 169, 0, 210, 171, 0, 210, 173, 0, 210, 175, 0, 210, + 177, 0, 210, 179, 0, 210, 181, 0, 210, 183, 0, 210, + 185, 0, 210, 187, 0, 210, 189, 0, 210, 191, 0, 211, + 130, 0, 211, 132, 0, 211, 136, 0, 211, 140, 0, 211, + 145, 0, 211, 147, 0, 211, 149, 0, 211, 151, 0, 211, + 153, 0, 211, 155, 0, 211, 157, 0, 211, 159, 0, 211, + 161, 0, 211, 163, 0, 211, 165, 0, 211, 167, 0, 211, + 169, 0, 211, 171, 0, 211, 173, 0, 211, 175, 0, 211, + 177, 0, 211, 179, 0, 211, 181, 0, 211, 185, 0, 213, + 161, 0, 213, 162, 0, 213, 163, 0, 213, 164, 0, 213, + 165, 0, 213, 166, 0, 213, 167, 0, 213, 168, 0, 213, + 169, 0, 213, 170, 0, 213, 171, 0, 213, 172, 0, 213, + 173, 0, 213, 174, 0, 213, 175, 0, 213, 176, 0, 213, + 177, 0, 213, 178, 0, 213, 179, 0, 213, 180, 0, 213, + 181, 0, 213, 182, 0, 213, 183, 0, 213, 184, 0, 213, + 185, 0, 213, 186, 0, 213, 187, 0, 213, 188, 0, 213, + 189, 0, 213, 190, 0, 213, 191, 0, 214, 128, 0, 214, + 129, 0, 214, 130, 0, 214, 131, 0, 214, 132, 0, 214, + 133, 0, 214, 134, 0, 213, 165, 214, 130, 0, 225, 184, + 129, 0, 225, 184, 131, 0, 225, 184, 133, 0, 225, 184, + 135, 0, 225, 184, 137, 0, 225, 184, 139, 0, 225, 184, + 141, 0, 225, 184, 143, 0, 225, 184, 145, 0, 225, 184, + 147, 0, 225, 184, 149, 0, 225, 184, 151, 0, 225, 184, + 153, 0, 225, 184, 155, 0, 225, 184, 157, 0, 225, 184, + 159, 0, 225, 184, 161, 0, 225, 184, 163, 0, 225, 184, + 165, 0, 225, 184, 167, 0, 225, 184, 169, 0, 225, 184, + 171, 0, 225, 184, 173, 0, 225, 184, 175, 0, 225, 184, + 177, 0, 225, 184, 179, 0, 225, 184, 181, 0, 225, 184, + 183, 0, 225, 184, 185, 0, 225, 184, 187, 0, 225, 184, + 189, 0, 225, 184, 191, 0, 225, 185, 129, 0, 225, 185, + 131, 0, 225, 185, 133, 0, 225, 185, 135, 0, 225, 185, + 137, 0, 225, 185, 139, 0, 225, 185, 141, 0, 225, 185, + 143, 0, 225, 185, 145, 0, 225, 185, 147, 0, 225, 185, + 149, 0, 225, 185, 151, 0, 225, 185, 153, 0, 225, 185, + 155, 0, 225, 185, 157, 0, 225, 185, 159, 0, 225, 185, + 161, 0, 225, 185, 163, 0, 225, 185, 165, 0, 225, 185, + 167, 0, 225, 185, 169, 0, 225, 185, 171, 0, 225, 185, + 173, 0, 225, 185, 175, 0, 225, 185, 177, 0, 225, 185, + 179, 0, 225, 185, 181, 0, 225, 185, 183, 0, 225, 185, + 185, 0, 225, 185, 187, 0, 225, 185, 189, 0, 225, 185, + 191, 0, 225, 186, 129, 0, 225, 186, 131, 0, 225, 186, + 133, 0, 225, 186, 135, 0, 225, 186, 137, 0, 225, 186, + 139, 0, 225, 186, 141, 0, 225, 186, 143, 0, 225, 186, + 145, 0, 225, 186, 147, 0, 225, 186, 149, 0, 104, 204, + 177, 0, 116, 204, 136, 0, 119, 204, 138, 0, 121, 204, + 138, 0, 97, 202, 190, 0, 225, 186, 161, 0, 225, 186, + 163, 0, 225, 186, 165, 0, 225, 186, 167, 0, 225, 186, + 169, 0, 225, 186, 171, 0, 225, 186, 173, 0, 225, 186, + 175, 0, 225, 186, 177, 0, 225, 186, 179, 0, 225, 186, + 181, 0, 225, 186, 183, 0, 225, 186, 185, 0, 225, 186, + 187, 0, 225, 186, 189, 0, 225, 186, 191, 0, 225, 187, + 129, 0, 225, 187, 131, 0, 225, 187, 133, 0, 225, 187, + 135, 0, 225, 187, 137, 0, 225, 187, 139, 0, 225, 187, + 141, 0, 225, 187, 143, 0, 225, 187, 145, 0, 225, 187, + 147, 0, 225, 187, 149, 0, 225, 187, 151, 0, 225, 187, + 153, 0, 225, 187, 155, 0, 225, 187, 157, 0, 225, 187, + 159, 0, 225, 187, 161, 0, 225, 187, 163, 0, 225, 187, + 165, 0, 225, 187, 167, 0, 225, 187, 169, 0, 225, 187, + 171, 0, 225, 187, 173, 0, 225, 187, 175, 0, 225, 187, + 177, 0, 225, 187, 179, 0, 225, 187, 181, 0, 225, 187, + 183, 0, 225, 187, 185, 0, 225, 188, 128, 0, 225, 188, + 129, 0, 225, 188, 130, 0, 225, 188, 131, 0, 225, 188, + 132, 0, 225, 188, 133, 0, 225, 188, 134, 0, 225, 188, + 135, 0, 225, 188, 144, 0, 225, 188, 145, 0, 225, 188, + 146, 0, 225, 188, 147, 0, 225, 188, 148, 0, 225, 188, + 149, 0, 225, 188, 160, 0, 225, 188, 161, 0, 225, 188, + 162, 0, 225, 188, 163, 0, 225, 188, 164, 0, 225, 188, + 165, 0, 225, 188, 166, 0, 225, 188, 167, 0, 225, 188, + 176, 0, 225, 188, 177, 0, 225, 188, 178, 0, 225, 188, + 179, 0, 225, 188, 180, 0, 225, 188, 181, 0, 225, 188, + 182, 0, 225, 188, 183, 0, 225, 189, 128, 0, 225, 189, + 129, 0, 225, 189, 130, 0, 225, 189, 131, 0, 225, 189, + 132, 0, 225, 189, 133, 0, 207, 133, 204, 147, 0, 207, + 133, 204, 147, 204, 128, 0, 207, 133, 204, 147, 204, 129, + 0, 207, 133, 204, 147, 205, 130, 0, 225, 189, 145, 0, + 225, 189, 147, 0, 225, 189, 149, 0, 225, 189, 151, 0, + 225, 189, 160, 0, 225, 189, 161, 0, 225, 189, 162, 0, + 225, 189, 163, 0, 225, 189, 164, 0, 225, 189, 165, 0, + 225, 189, 166, 0, 225, 189, 167, 0, 225, 188, 128, 206, + 185, 0, 225, 188, 129, 206, 185, 0, 225, 188, 130, 206, + 185, 0, 225, 188, 131, 206, 185, 0, 225, 188, 132, 206, + 185, 0, 225, 188, 133, 206, 185, 0, 225, 188, 134, 206, + 185, 0, 225, 188, 135, 206, 185, 0, 225, 188, 160, 206, + 185, 0, 225, 188, 161, 206, 185, 0, 225, 188, 162, 206, + 185, 0, 225, 188, 163, 206, 185, 0, 225, 188, 164, 206, + 185, 0, 225, 188, 165, 206, 185, 0, 225, 188, 166, 206, + 185, 0, 225, 188, 167, 206, 185, 0, 225, 189, 160, 206, + 185, 0, 225, 189, 161, 206, 185, 0, 225, 189, 162, 206, + 185, 0, 225, 189, 163, 206, 185, 0, 225, 189, 164, 206, + 185, 0, 225, 189, 165, 206, 185, 0, 225, 189, 166, 206, + 185, 0, 225, 189, 167, 206, 185, 0, 225, 189, 176, 206, + 185, 0, 206, 177, 206, 185, 0, 206, 172, 206, 185, 0, + 206, 177, 205, 130, 0, 206, 177, 205, 130, 206, 185, 0, + 225, 190, 176, 0, 225, 190, 177, 0, 225, 189, 176, 0, + 225, 189, 177, 0, 225, 189, 180, 206, 185, 0, 206, 183, + 206, 185, 0, 206, 174, 206, 185, 0, 206, 183, 205, 130, + 0, 206, 183, 205, 130, 206, 185, 0, 225, 189, 178, 0, + 225, 189, 179, 0, 225, 189, 180, 0, 225, 189, 181, 0, + 206, 185, 204, 136, 204, 128, 0, 206, 185, 205, 130, 0, + 206, 185, 204, 136, 205, 130, 0, 225, 191, 144, 0, 225, + 191, 145, 0, 225, 189, 182, 0, 225, 189, 183, 0, 207, + 133, 204, 136, 204, 128, 0, 207, 129, 204, 147, 0, 207, + 133, 205, 130, 0, 207, 133, 204, 136, 205, 130, 0, 225, + 191, 160, 0, 225, 191, 161, 0, 225, 189, 186, 0, 225, + 189, 187, 0, 225, 191, 165, 0, 225, 189, 188, 206, 185, + 0, 207, 137, 206, 185, 0, 207, 142, 206, 185, 0, 207, + 137, 205, 130, 0, 207, 137, 205, 130, 206, 185, 0, 225, + 189, 184, 0, 225, 189, 185, 0, 225, 189, 188, 0, 225, + 189, 189, 0, 114, 115, 0, 194, 176, 99, 0, 194, 176, + 102, 0, 110, 111, 0, 115, 109, 0, 116, 101, 108, 0, + 116, 109, 0, 226, 133, 176, 0, 226, 133, 177, 0, 226, + 133, 178, 0, 226, 133, 179, 0, 226, 133, 180, 0, 226, + 133, 181, 0, 226, 133, 182, 0, 226, 133, 183, 0, 226, + 133, 184, 0, 226, 133, 185, 0, 226, 133, 186, 0, 226, + 133, 187, 0, 226, 133, 188, 0, 226, 133, 189, 0, 226, + 133, 190, 0, 226, 133, 191, 0, 226, 147, 144, 0, 226, + 147, 145, 0, 226, 147, 146, 0, 226, 147, 147, 0, 226, + 147, 148, 0, 226, 147, 149, 0, 226, 147, 150, 0, 226, + 147, 151, 0, 226, 147, 152, 0, 226, 147, 153, 0, 226, + 147, 154, 0, 226, 147, 155, 0, 226, 147, 156, 0, 226, + 147, 157, 0, 226, 147, 158, 0, 226, 147, 159, 0, 226, + 147, 160, 0, 226, 147, 161, 0, 226, 147, 162, 0, 226, + 147, 163, 0, 226, 147, 164, 0, 226, 147, 165, 0, 226, + 147, 166, 0, 226, 147, 167, 0, 226, 147, 168, 0, 226, + 147, 169, 0, 104, 112, 97, 0, 97, 117, 0, 111, 118, + 0, 112, 97, 0, 110, 97, 0, 206, 188, 97, 0, 109, + 97, 0, 107, 97, 0, 107, 98, 0, 109, 98, 0, 103, + 98, 0, 112, 102, 0, 110, 102, 0, 206, 188, 102, 0, + 104, 122, 0, 107, 104, 122, 0, 109, 104, 122, 0, 103, + 104, 122, 0, 116, 104, 122, 0, 107, 112, 97, 0, 109, + 112, 97, 0, 103, 112, 97, 0, 112, 118, 0, 110, 118, + 0, 206, 188, 118, 0, 109, 118, 0, 107, 118, 0, 112, + 119, 0, 110, 119, 0, 206, 188, 119, 0, 109, 119, 0, + 107, 119, 0, 107, 207, 137, 0, 109, 207, 137, 0, 98, + 113, 0, 99, 226, 136, 149, 107, 103, 0, 99, 111, 46, + 0, 100, 98, 0, 103, 121, 0, 104, 112, 0, 107, 107, + 0, 107, 109, 0, 112, 104, 0, 112, 112, 109, 0, 112, + 114, 0, 115, 118, 0, 119, 98, 0, 102, 102, 0, 102, + 105, 0, 102, 108, 0, 102, 102, 105, 0, 102, 102, 108, + 0, 115, 116, 0, 213, 180, 213, 182, 0, 213, 180, 213, + 165, 0, 213, 180, 213, 171, 0, 213, 190, 213, 182, 0, + 213, 180, 213, 173, 0, 239, 189, 129, 0, 239, 189, 130, + 0, 239, 189, 131, 0, 239, 189, 132, 0, 239, 189, 133, + 0, 239, 189, 134, 0, 239, 189, 135, 0, 239, 189, 136, + 0, 239, 189, 137, 0, 239, 189, 138, 0, 239, 189, 139, + 0, 239, 189, 140, 0, 239, 189, 141, 0, 239, 189, 142, + 0, 239, 189, 143, 0, 239, 189, 144, 0, 239, 189, 145, + 0, 239, 189, 146, 0, 239, 189, 147, 0, 239, 189, 148, + 0, 239, 189, 149, 0, 239, 189, 150, 0, 239, 189, 151, + 0, 239, 189, 152, 0, 239, 189, 153, 0, 239, 189, 154, + 0, 240, 144, 144, 168, 0, 240, 144, 144, 169, 0, 240, + 144, 144, 170, 0, 240, 144, 144, 171, 0, 240, 144, 144, + 172, 0, 240, 144, 144, 173, 0, 240, 144, 144, 174, 0, + 240, 144, 144, 175, 0, 240, 144, 144, 176, 0, 240, 144, + 144, 177, 0, 240, 144, 144, 178, 0, 240, 144, 144, 179, + 0, 240, 144, 144, 180, 0, 240, 144, 144, 181, 0, 240, + 144, 144, 182, 0, 240, 144, 144, 183, 0, 240, 144, 144, + 184, 0, 240, 144, 144, 185, 0, 240, 144, 144, 186, 0, + 240, 144, 144, 187, 0, 240, 144, 144, 188, 0, 240, 144, + 144, 189, 0, 240, 144, 144, 190, 0, 240, 144, 144, 191, + 0, 240, 144, 145, 128, 0, 240, 144, 145, 129, 0, 240, + 144, 145, 130, 0, 240, 144, 145, 131, 0, 240, 144, 145, + 132, 0, 240, 144, 145, 133, 0, 240, 144, 145, 134, 0, + 240, 144, 145, 135, 0, 240, 144, 145, 136, 0, 240, 144, + 145, 137, 0, 240, 144, 145, 138, 0, 240, 144, 145, 139, + 0, 240, 144, 145, 140, 0, 240, 144, 145, 141, 0, +}; + +static const unsigned short nameprep_id05_prohibited_imap[] = { + 68, 196, 196, 324, 196, 196, 196, 452, + 196, 196, 196, 580, 196, 196, 196, 580, + 196, 196, 196, 580, 196, 196, 196, 580, + 196, 196, 196, 580, 196, 196, 196, 580, + 196, 196, 196, 580, 196, 196, 196, 580, + 196, 196, 196, 580, 196, 196, 196, 580, + 196, 196, 196, 580, 196, 196, 196, 580, + 708, 196, 196, 580, 836, 836, 836, 836, + 836, 836, 836, 836, 0, 1, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 3, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 4, 2, 2, 5, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 6, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 7, 8, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 10, + 2, 2, 2, 11, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 12, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 13, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 13, 14, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, +}; + +static const struct { + unsigned char bm[16]; +} nameprep_id05_prohibited_bitmap[] = { + {{ + 255,255,255,255,255,223, 0,252, 1, 0, 0,248, 1, 0, 0,248, + }}, + {{ + 255,255,255,255, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 255,199, 0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0,252, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 15, + }}, + {{ + 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 7, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, + }}, + {{ + 2, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255, + }}, +}; +static const unsigned short nameprep_id05_unassigned_imap[] = { + 68, 196, 324, 452, 580, 708, 708, 836, + 964, 964, 1092, 1220, 708, 708, 708, 1348, + 708, 708, 708, 1348, 708, 708, 708, 1348, + 708, 708, 708, 1348, 708, 708, 708, 1348, + 708, 708, 708, 1348, 708, 708, 708, 1348, + 708, 708, 708, 1348, 708, 708, 708, 1348, + 708, 708, 708, 1348, 708, 708, 708, 1348, + 1476, 708, 708, 1348, 964, 964, 964, 964, + 964, 964, 964, 964, 0, 0, 0, 0, + 1, 2, 3, 4, 0, 5, 6, 7, + 8, 9, 10, 11, 12, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 0, 0, 0, + 36, 37, 12, 38, 39, 40, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 0, 41, 42, 43, 44, 45, 46, 47, + 0, 48, 49, 50, 51, 52, 0, 53, + 54, 12, 55, 56, 0, 0, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 57, 0, 58, 59, 60, 61, 62, + 63, 64, 65, 66, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 67, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 68, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 69, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 70, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 71, 12, 72, 73, 0, 0, 74, 75, + 76, 77, 78, 79, 12, 12, 12, 12, + 12, 12, 80, 12, 81, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, @@ -1426,7 +2308,44 @@ static unsigned short nameprep_id03_unassigned_imap[] = { 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, - 12, 12, 12, 80, 0, 0, 0, 0, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 0, 82, 83, 84, + 12, 12, 12, 12, 85, 86, 87, 0, + 0, 88, 0, 89, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1442,12 +2361,76 @@ static unsigned short nameprep_id03_unassigned_imap[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 91, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 0, 0, 0, 0, + 92, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 90, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 90, 93, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, }; -static struct { +static const struct { unsigned char bm[16]; -} nameprep_id03_unassigned_bitmap[] = { +} nameprep_id05_unassigned_bitmap[] = { {{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }}, @@ -1461,7 +2444,7 @@ static struct { 0, 0, 0, 0, 0, 0, 0, 0, 0,128,255,255,248,255,207,187, }}, {{ - 15, 40, 0, 0, 4, 0, 0, 0, 0,128, 0, 3, 0, 0,240,255, + 15, 40, 0, 0, 4, 0, 0, 0, 0,128, 0, 3, 0, 0,192,255, }}, {{ 128, 12, 0, 0, 0, 0, 0, 0, 96,230, 0, 0, 0, 0,192,252, @@ -1674,7 +2657,7 @@ static struct { 0, 0, 0, 0, 0, 0, 0, 0,255,255, 0, 0, 0, 0, 0, 0, }}, {{ - 0, 0, 3, 0, 0, 0, 0, 0, 0,255,255,255,255,255, 0,240, + 0, 0, 3, 0, 0, 0, 0, 0, 0,255, 0, 0, 0, 0, 0,240, }}, {{ 255,255,255,255,240,255, 0, 0,224, 1, 8, 0,128,240, 40, 0, @@ -1688,7 +2671,56 @@ static struct { {{ 0, 0, 0, 0, 0, 0, 0,128, 3, 3, 3,227,128,128,255, 1, }}, + {{ + 0, 0, 0,128,240,255, 0, 0, 0,248,255,255,255,255,255,255, + }}, + {{ + 0, 0, 0, 0,192, 0, 0, 0, 0,192,255,255,255,255,255,255, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,255, + }}, + {{ + 0, 0, 0, 0,128, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,255,255,255,255, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 32,155, 33, 0, 20, 18, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 64, 24, 32, 32, 0, 0, 0,132,160, 3, 2, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0,240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 0, 0, 0, 0, 0, 0, + }}, {{ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 63, }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,255,255,255,255,255, + }}, + {{ + 0, 0, 0,192,255,255,255,255,255,255,255,255,255,255,255,255, + }}, + {{ + 253,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, }; +#define nameprep_id06_map_imap nameprep_id05_map_imap +#define nameprep_id06_map_table nameprep_id05_map_table +#define nameprep_id06_map_data nameprep_id05_map_data + +#define nameprep_id06_prohibited_imap nameprep_id05_prohibited_imap +#define nameprep_id06_prohibited_bitmap nameprep_id05_prohibited_bitmap + +#define nameprep_id06_unassigned_imap nameprep_id05_unassigned_imap +#define nameprep_id06_unassigned_bitmap nameprep_id05_unassigned_bitmap + diff --git a/contrib/idn/mdnkit/lib/normalizer.c b/contrib/idn/mdnkit/lib/normalizer.c index 7e83a584a16..b14b51095b6 100644 --- a/contrib/idn/mdnkit/lib/normalizer.c +++ b/contrib/idn/mdnkit/lib/normalizer.c @@ -1,5 +1,5 @@ #ifndef lint -static char *rcsid = "$Id: normalizer.c,v 1.25 2001/05/31 05:21:37 ishisone Exp $"; +static char *rcsid = "$Id: normalizer.c,v 1.1 2002/01/02 02:46:46 marka Exp $"; #endif /* @@ -11,8 +11,8 @@ static char *rcsid = "$Id: normalizer.c,v 1.25 2001/05/31 05:21:37 ishisone Exp * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted @@ -86,7 +86,8 @@ typedef struct { mdn_normalizer_proc_t proc; } normalize_scheme_t; -typedef mdn_result_t (*caseconv_proc_t)(unsigned long, mdn__unicode_context_t, +typedef mdn_result_t (*caseconv_proc_t)(mdn__unicode_version_t, + unsigned long, mdn__unicode_context_t, unsigned long *, size_t, int *); struct mdn_normalizer { @@ -99,6 +100,16 @@ struct mdn_normalizer { static mdn_strhash_t scheme_hash; +static mdn__unicode_version_t vcur = NULL; +static mdn__unicode_version_t v301 = NULL; +static mdn__unicode_version_t v310 = NULL; +#define INIT_VERSION(version, var) \ + if (var == NULL) { \ + mdn_result_t r = mdn__unicode_create(version, &var); \ + if (r != mdn_success) \ + return (r); \ + } + static mdn_result_t expand_schemes(mdn_normalizer_t ctx); static mdn_result_t register_standard_normalizers(void); static mdn_result_t normalizer_ascii_lowercase(const char *from, @@ -112,10 +123,35 @@ static mdn_result_t normalizer_unicode_uppercase(const char *from, static mdn_result_t normalizer_unicode_caseconv(caseconv_proc_t caseconv, const char *from, char *to, size_t tolen); -static mdn__unicode_context_t get_casemap_context(const char *from, +static mdn__unicode_context_t get_casemap_context(mdn__unicode_version_t ver, + const char *from, size_t fromlen); static mdn_result_t normalizer_unicode_casefold(const char *from, char *to, size_t tolen); +static mdn_result_t normalizer_formc(const char *from, + char *to, size_t tolen); +static mdn_result_t normalizer_formd(const char *from, + char *to, size_t tolen); +static mdn_result_t normalizer_formkc(const char *from, + char *to, size_t tolen); +static mdn_result_t normalizer_formkd(const char *from, + char *to, size_t tolen); +static mdn_result_t normalizer_formc_v301(const char *from, + char *to, size_t tolen); +static mdn_result_t normalizer_formd_v301(const char *from, + char *to, size_t tolen); +static mdn_result_t normalizer_formkc_v301(const char *from, + char *to, size_t tolen); +static mdn_result_t normalizer_formkd_v301(const char *from, + char *to, size_t tolen); +static mdn_result_t normalizer_formc_v310(const char *from, + char *to, size_t tolen); +static mdn_result_t normalizer_formd_v310(const char *from, + char *to, size_t tolen); +static mdn_result_t normalizer_formkc_v310(const char *from, + char *to, size_t tolen); +static mdn_result_t normalizer_formkd_v310(const char *from, + char *to, size_t tolen); static struct standard_normalizer { char *name; @@ -126,12 +162,21 @@ static struct standard_normalizer { { "unicode-lowercase", normalizer_unicode_lowercase }, { "unicode-uppercase", normalizer_unicode_uppercase }, { "unicode-foldcase", normalizer_unicode_casefold }, - { "unicode-form-c", mdn__unormalize_formc }, - { "unicode-form-d", mdn__unormalize_formd }, - { "unicode-form-kc", mdn__unormalize_formkc }, - { "unicode-form-kd", mdn__unormalize_formkd }, - { "nameprep-02", mdn__unormalize_formkc }, - { "nameprep-03", mdn__unormalize_formkc }, + { "unicode-form-c", normalizer_formc }, + { "unicode-form-d", normalizer_formd }, + { "unicode-form-kc", normalizer_formkc }, + { "unicode-form-kd", normalizer_formkd }, + { "unicode-form-c/3.0.1", normalizer_formc_v301 }, + { "unicode-form-d/3.0.1", normalizer_formd_v301 }, + { "unicode-form-kc/3.0.1", normalizer_formkc_v301 }, + { "unicode-form-kd/3.0.1", normalizer_formkd_v301 }, + { "unicode-form-c/3.1.0", normalizer_formc_v310 }, + { "unicode-form-d/3.1.0", normalizer_formd_v310 }, + { "unicode-form-kc/3.1.0", normalizer_formkc_v310 }, + { "unicode-form-kd/3.1.0", normalizer_formkd_v310 }, + { "nameprep-03", normalizer_formkc_v301 }, + { "nameprep-05", normalizer_formkc_v310 }, + { "nameprep-06", normalizer_formkc_v310 }, { NULL, NULL }, }; @@ -525,6 +570,8 @@ normalizer_unicode_caseconv(caseconv_proc_t caseconv, { size_t fromlen = strlen(from); + INIT_VERSION(NULL, vcur); + while (fromlen > 0 && tolen > 0) { #define CASEMAPBUFSZ 4 unsigned long c; @@ -541,12 +588,12 @@ normalizer_unicode_caseconv(caseconv_proc_t caseconv, fromlen -= w; redo: - r = (*caseconv)(c, ctx, v, CASEMAPBUFSZ, &vlen); + r = (*caseconv)(vcur, c, ctx, v, CASEMAPBUFSZ, &vlen); switch (r) { case mdn_success: break; case mdn_context_required: - ctx = get_casemap_context(from, fromlen); + ctx = get_casemap_context(vcur, from, fromlen); goto redo; case mdn_buffer_overflow: FATAL(("mdn_normalizer_normalize: " @@ -571,7 +618,8 @@ normalizer_unicode_caseconv(caseconv_proc_t caseconv, } static mdn__unicode_context_t -get_casemap_context(const char *from, size_t fromlen) { +get_casemap_context(mdn__unicode_version_t ver, + const char *from, size_t fromlen) { while (fromlen > 0) { unsigned long v; mdn__unicode_context_t ctx; @@ -581,7 +629,7 @@ get_casemap_context(const char *from, size_t fromlen) { return (mdn_invalid_encoding); from += w; fromlen -= w; - ctx = mdn__unicode_getcontext(v); + ctx = mdn__unicode_getcontext(ver, v); if (ctx == mdn__unicode_context_nonfinal || ctx == mdn__unicode_context_final) return (ctx); @@ -593,6 +641,8 @@ static mdn_result_t normalizer_unicode_casefold(const char *from, char *to, size_t tolen) { size_t fromlen = strlen(from); + INIT_VERSION(NULL, vcur); + while (fromlen > 0 && tolen > 0) { #define CASEFOLDBUFSZ 4 unsigned long c; @@ -607,7 +657,7 @@ normalizer_unicode_casefold(const char *from, char *to, size_t tolen) { from += w; fromlen -= w; - r = mdn__unicode_casefold(c, v, CASEFOLDBUFSZ, &vlen); + r = mdn__unicode_casefold(vcur, c, v, CASEFOLDBUFSZ, &vlen); switch (r) { case mdn_success: break; @@ -633,3 +683,87 @@ normalizer_unicode_casefold(const char *from, char *to, size_t tolen) { return (mdn_success); } +/* + * Unicode Normalization Forms -- latest version + */ + +static mdn_result_t +normalizer_formc(const char *from, char *to, size_t tolen) { + INIT_VERSION(NULL, vcur); + return (mdn__unormalize_formc(vcur, from, to, tolen)); +} + +static mdn_result_t +normalizer_formd(const char *from, char *to, size_t tolen) { + INIT_VERSION(NULL, vcur); + return (mdn__unormalize_formd(vcur, from, to, tolen)); +} + +static mdn_result_t +normalizer_formkc(const char *from, char *to, size_t tolen) { + INIT_VERSION(NULL, vcur); + return (mdn__unormalize_formkc(vcur, from, to, tolen)); +} + +static mdn_result_t +normalizer_formkd(const char *from, char *to, size_t tolen) { + INIT_VERSION(NULL, vcur); + return (mdn__unormalize_formkd(vcur, from, to, tolen)); +} + +/* + * Unicode Normalization Forms -- version 3.0.1 + */ + +static mdn_result_t +normalizer_formc_v301(const char *from, char *to, size_t tolen) { + INIT_VERSION("3.0.1", v301); + return (mdn__unormalize_formc(v301, from, to, tolen)); +} + +static mdn_result_t +normalizer_formd_v301(const char *from, char *to, size_t tolen) { + INIT_VERSION("3.0.1", v301); + return (mdn__unormalize_formd(v301, from, to, tolen)); +} + +static mdn_result_t +normalizer_formkc_v301(const char *from, char *to, size_t tolen) { + INIT_VERSION("3.0.1", v301); + return (mdn__unormalize_formkc(v301, from, to, tolen)); +} + +static mdn_result_t +normalizer_formkd_v301(const char *from, char *to, size_t tolen) { + INIT_VERSION("3.0.1", v301); + return (mdn__unormalize_formkd(v301, from, to, tolen)); +} + +/* + * Unicode Normalization Forms -- version 3.1.0 + */ + +static mdn_result_t +normalizer_formc_v310(const char *from, char *to, size_t tolen) { + INIT_VERSION("3.1.0", v310); + return (mdn__unormalize_formc(v310, from, to, tolen)); +} + +static mdn_result_t +normalizer_formd_v310(const char *from, char *to, size_t tolen) { + INIT_VERSION("3.1.0", v310); + return (mdn__unormalize_formd(v310, from, to, tolen)); +} + +static mdn_result_t +normalizer_formkc_v310(const char *from, char *to, size_t tolen) { + INIT_VERSION("3.1.0", v310); + return (mdn__unormalize_formkc(v310, from, to, tolen)); +} + +static mdn_result_t +normalizer_formkd_v310(const char *from, char *to, size_t tolen) { + INIT_VERSION("3.1.0", v310); + return (mdn__unormalize_formkd(v310, from, to, tolen)); +} + diff --git a/contrib/idn/mdnkit/lib/race.c b/contrib/idn/mdnkit/lib/race.c index 293c1717509..5a4216bb198 100644 --- a/contrib/idn/mdnkit/lib/race.c +++ b/contrib/idn/mdnkit/lib/race.c @@ -1,5 +1,5 @@ #ifndef lint -static char *rcsid = "$Id: race.c,v 1.23 2001/03/07 00:58:52 ishisone Exp $"; +static char *rcsid = "$Id: race.c,v 1.1 2002/01/02 02:46:46 marka Exp $"; #endif /* @@ -11,8 +11,8 @@ static char *rcsid = "$Id: race.c,v 1.23 2001/03/07 00:58:52 ishisone Exp $"; * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/lib/res.c b/contrib/idn/mdnkit/lib/res.c index 25c97c2ea43..c06dda5ab35 100644 --- a/contrib/idn/mdnkit/lib/res.c +++ b/contrib/idn/mdnkit/lib/res.c @@ -1,5 +1,5 @@ #ifndef lint -static char *rcsid = "$Id: res.c,v 1.17 2001/05/15 05:04:00 ishisone Exp $"; +static char *rcsid = "$Id: res.c,v 1.1 2002/01/02 02:46:46 marka Exp $"; #endif /* @@ -11,8 +11,8 @@ static char *rcsid = "$Id: res.c,v 1.17 2001/05/15 05:04:00 ishisone Exp $"; * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted @@ -96,45 +96,42 @@ static mdn_result_t nameconv_p(mdn_resconf_t ctx, const char *from, char *to, size_t tolen); static mdn_result_t nameconv_u(mdn_resconf_t ctx, const char *from, char *to, size_t tolen); +static mdn_result_t nameconv_N(mdn_resconf_t ctx, const char *from, + char *to, size_t tolen); static mdn_result_t nameconv_I(mdn_resconf_t ctx, const char *from, char *to, size_t tolen); static mdn_result_t nameconv_i(mdn_resconf_t ctx, const char *from, char *to, size_t tolen); -static mdn_result_t nameconv_a(mdn_resconf_t ctx, const char *from, - char *to, size_t tolen); -static mdn_result_t nameconv_A(mdn_resconf_t ctx, const char *from, - char *to, size_t tolen); +static mdn_result_t nameconv_xm(mdn_resconf_t ctx, const char *from, + char *to, size_t tolen); +static mdn_result_t nameconv_xn(mdn_resconf_t ctx, const char *from, + char *to, size_t tolen); +static mdn_result_t nameconv_xp(mdn_resconf_t ctx, const char *from, + char *to, size_t tolen); +static mdn_result_t nameconv_xu(mdn_resconf_t ctx, const char *from, + char *to, size_t tolen); +static mdn_result_t nameconv_xN(mdn_resconf_t ctx, const char *from, + char *to, size_t tolen); static mdn_result_t copy_verbatim(const char *from, char *to, size_t tolen); mdn_result_t -mdn_res_nameconv(mdn_resconf_t ctx, const char *actions, const char *from, +mdn_res_nameconv(mdn_resconf_t ctx, const char *insn, const char *from, char *to, size_t tolen) { mdn_result_t r; - size_t fromlen; char *src, *dst; char static_buffers[2][1024]; /* large enough */ char *dynamic_buffers[2]; size_t dynamic_buflen[2]; - char actions_buffer[64]; /* large enough */ - char *ap; + const char *ap; size_t dstlen; - int idx; + int dstidx; assert(ctx != NULL && from != NULL && to != NULL); - TRACE(("mdn_res_nameconv(from=\"%s\")\n", - mdn_debug_xstring(from, 20))); - - /* - * Copy `actions' to `actions_buffer' + 2. - * We make two characters space to extend the action `N'. - */ - if (strlen(actions) + 1 > sizeof(actions_buffer) - 2) - return (mdn_invalid_action); - strcpy(actions_buffer + 2, actions); - ap = actions_buffer + 2; + TRACE(("mdn_res_nameconv(insn=%s, from=\"%s\", tolen=%d)\n", + insn, mdn_debug_xstring(from, 256), tolen)); /* * Initialize the buffers to use the local @@ -145,13 +142,12 @@ mdn_res_nameconv(mdn_resconf_t ctx, const char *actions, const char *from, dynamic_buflen[0] = 0; dynamic_buflen[1] = 0; - fromlen = strlen(from); - /* * Convert. */ src = (void *)from; - dstlen = fromlen + 1; + dstlen = sizeof(static_buffers[0]) + 1; + ap = insn; while (*ap != '\0') { if (*ap == ' ' || *ap == '\t') { @@ -162,56 +158,31 @@ mdn_res_nameconv(mdn_resconf_t ctx, const char *actions, const char *from, /* * Choose destination area to restore the result of a mapping. */ - if (*ap == 'p' || *ap == 'u') { - dst = src; - } else if (dstlen <= sizeof(static_buffers[0])) { + if (dstlen <= sizeof(static_buffers[0])) { if (src == static_buffers[0]) - idx = 1; + dstidx = 1; else - idx = 0; - - dst = static_buffers[idx]; - dstlen = sizeof(static_buffers[0]); + dstidx = 0; + dst = static_buffers[dstidx]; } else { + void *newbuf; + if (src == dynamic_buffers[0]) - idx = 1; + dstidx = 1; else - idx = 0; - - if (dynamic_buflen[idx] == 0) { - dynamic_buffers[idx] = (char *) malloc(dstlen); - if (dynamic_buffers[idx] == NULL) { - r = mdn_nomemory; - goto failure; - } - dynamic_buflen[idx] = dstlen; - - } else if (dynamic_buflen[idx] < dstlen) { - char *newbuf; - - newbuf = realloc(dynamic_buffers[idx], dstlen); - if (newbuf == NULL) { - r = mdn_nomemory; - goto failure; - } - dynamic_buffers[idx] = newbuf; - dynamic_buflen[idx] = dstlen; + dstidx = 0; + + newbuf = (char *)realloc(dynamic_buffers[dstidx], + dstlen); + if (newbuf == NULL) { + r = mdn_nomemory; + goto failure; } + dynamic_buffers[dstidx] = newbuf; + dynamic_buflen[dstidx] = dstlen; - dst = dynamic_buffers[idx]; - dstlen = dynamic_buflen[idx]; - } - - /* - * Determine an action character. - * If the current action is `N', we resolve it into "mnp". - */ - if (*ap == 'N') { - *(ap - 2) = 'm'; - *(ap - 1) = 'n'; - *ap = 'p'; - ap -= 2; + dst = dynamic_buffers[dstidx]; } /* @@ -243,17 +214,37 @@ mdn_res_nameconv(mdn_resconf_t ctx, const char *actions, const char *from, case 'u': r = nameconv_u(ctx, src, dst, dstlen); break; + case 'N': + r = nameconv_N(ctx, src, dst, dstlen); + break; case 'I': r = nameconv_I(ctx, src, dst, dstlen); break; case 'i': r = nameconv_i(ctx, src, dst, dstlen); break; - case 'a': - r = nameconv_a(ctx, src, dst, dstlen); - break; - case 'A': - r = nameconv_A(ctx, src, dst, dstlen); + case '!': + ap++; + switch (*ap) { + case 'm': + r = nameconv_xm(ctx, src, dst, dstlen); + break; + case 'n': + r = nameconv_xn(ctx, src, dst, dstlen); + break; + case 'p': + r = nameconv_xp(ctx, src, dst, dstlen); + break; + case 'u': + r = nameconv_xu(ctx, src, dst, dstlen); + break; + case 'N': + r = nameconv_xN(ctx, src, dst, dstlen); + break; + default: + r = mdn_invalid_action; + break; + } break; default: r = mdn_invalid_action; @@ -274,9 +265,15 @@ mdn_res_nameconv(mdn_resconf_t ctx, const char *actions, const char *from, if (r != mdn_success) goto failure; + TRACE(("mdn_res_nameconv: to=\"%s\"\n", + mdn_debug_xstring(to, 256))); + + free(dynamic_buffers[0]); + free(dynamic_buffers[1]); return (mdn_success); failure: + TRACE(("mdn_res_nameconv() failed, %s\n", mdn_result_tostring(r))); free(dynamic_buffers[0]); free(dynamic_buffers[1]); return (r); @@ -287,16 +284,7 @@ nameconv_l(mdn_resconf_t ctx, const char *from, char *to, size_t tolen) { mdn_result_t r; mdn_converter_t local_converter; - mdn_converter_t alternate_converter; - alternate_converter = mdn_resconf_getalternateconverter(ctx); - if (alternate_converter != NULL) { - r = mdn_converter_localtoutf8(alternate_converter, from, to, - tolen); - mdn_converter_destroy(alternate_converter); - if (r == mdn_success && strcmp(from, to) != 0) - return (r); - } local_converter = mdn_resconf_getlocalconverter(ctx); if (local_converter != NULL) { r = mdn_converter_localtoutf8(local_converter, from, to, @@ -314,7 +302,6 @@ nameconv_L(mdn_resconf_t ctx, const char *from, char *to, size_t tolen) { mdn_result_t r; mdn_converter_t local_converter; - mdn_converter_t alternate_converter; local_converter = mdn_resconf_getlocalconverter(ctx); if (local_converter != NULL) { @@ -324,15 +311,8 @@ nameconv_L(mdn_resconf_t ctx, const char *from, char *to, size_t tolen) } else { r = copy_verbatim(from, to, tolen); } - if (r != mdn_nomapping) - return (r); - - alternate_converter = mdn_resconf_getalternateconverter(ctx); - if (alternate_converter != NULL) { - r = mdn_converter_utf8tolocal(alternate_converter, from, to, - tolen); - mdn_converter_destroy(alternate_converter); - } + if (r == mdn_nomapping) + r = nameconv_I(ctx, from, to, tolen); return (r); } @@ -371,46 +351,6 @@ nameconv_M(mdn_resconf_t ctx, const char *from, char *to, size_t tolen) return (r); } -static mdn_result_t -nameconv_p(mdn_resconf_t ctx, const char *from, char *to, size_t tolen) -{ - mdn_result_t r; - const char *found; - mdn_checker_t prohibit_checker; - - prohibit_checker = mdn_resconf_getprohibitchecker(ctx); - if (prohibit_checker != NULL) { - r = mdn_checker_lookup(prohibit_checker, from, &found); - if (found != NULL) - r = mdn_prohibited; - mdn_checker_destroy(prohibit_checker); - } else { - r = mdn_success; - } - - return (r); -} - -static mdn_result_t -nameconv_u(mdn_resconf_t ctx, const char *from, char *to, size_t tolen) -{ - mdn_result_t r; - mdn_checker_t unassigned_checker; - const char *found; - - unassigned_checker = mdn_resconf_getunassignedchecker(ctx); - if (unassigned_checker != NULL) { - r = mdn_checker_lookup(unassigned_checker, from, &found); - if (found != NULL) - r = mdn_prohibited; - mdn_checker_destroy(unassigned_checker); - } else { - r = mdn_success; - } - - return (r); -} - static mdn_result_t nameconv_m(mdn_resconf_t ctx, const char *from, char *to, size_t tolen) { @@ -576,6 +516,96 @@ failure: return (r); } +static mdn_result_t +nameconv_p(mdn_resconf_t ctx, const char *from, char *to, size_t tolen) +{ + mdn_result_t r; + const char *found; + mdn_checker_t prohibit_checker; + + prohibit_checker = mdn_resconf_getprohibitchecker(ctx); + if (prohibit_checker != NULL) { + r = mdn_checker_lookup(prohibit_checker, from, &found); + mdn_checker_destroy(prohibit_checker); + if (r == mdn_success && found != NULL) + r = mdn_prohibited; + if (r != mdn_success) + return (r); + } + + r = copy_verbatim(from, to, tolen); + + return (r); +} + +static mdn_result_t +nameconv_u(mdn_resconf_t ctx, const char *from, char *to, size_t tolen) +{ + mdn_result_t r; + mdn_checker_t unassigned_checker; + const char *found; + + unassigned_checker = mdn_resconf_getunassignedchecker(ctx); + if (unassigned_checker != NULL) { + r = mdn_checker_lookup(unassigned_checker, from, &found); + mdn_checker_destroy(unassigned_checker); + if (r == mdn_success && found != NULL) + r = mdn_prohibited; + if (r != mdn_success) + return (r); + } + + r = copy_verbatim(from, to, tolen); + + return (r); +} + +static mdn_result_t +nameconv_N(mdn_resconf_t ctx, const char *from, char *to, size_t tolen) +{ + mdn_result_t r; + char static_buffer1[1024]; /* large enough */ + char static_buffer2[1024]; /* large enough */ + char *dynamic_buffer1 = NULL; + char *dynamic_buffer2 = NULL; + char *work1, *work2; + + if (tolen <= sizeof(static_buffer1)) { + work1 = static_buffer1; + work2 = static_buffer2; + } else { + dynamic_buffer1 = (char *)malloc(tolen); + dynamic_buffer2 = (char *)malloc(tolen); + if (dynamic_buffer1 == NULL || dynamic_buffer2 == NULL) { + r = mdn_nomemory; + goto failure; + } + work1 = dynamic_buffer1; + work2 = dynamic_buffer2; + } + + r = nameconv_m(ctx, from, work1, tolen); + if (r != mdn_success) + goto failure; + + r = nameconv_n(ctx, work1, work2, tolen); + if (r != mdn_success) + goto failure; + + r = nameconv_p(ctx, work2, to, tolen); + if (r != mdn_success) + goto failure; + + free(dynamic_buffer1); + free(dynamic_buffer2); + return (r); + +failure: + free(dynamic_buffer1); + free(dynamic_buffer2); + return (r); +} + static mdn_result_t nameconv_I(mdn_resconf_t ctx, const char *from, char *to, size_t tolen) { @@ -611,41 +641,159 @@ nameconv_i(mdn_resconf_t ctx, const char *from, char *to, size_t tolen) } static mdn_result_t -nameconv_a(mdn_resconf_t ctx, const char *from, char *to, size_t tolen) +nameconv_xm(mdn_resconf_t ctx, const char *from, char *to, size_t tolen) { mdn_result_t r; - mdn_converter_t alternate_converter; + mdn_converter_t idn_converter; + int encoding_type; + int isvalid; - alternate_converter = mdn_resconf_getalternateconverter(ctx); - if (alternate_converter != NULL) { - r = mdn_converter_localtoutf8(alternate_converter, from, to, - tolen); - mdn_converter_destroy(alternate_converter); + idn_converter = mdn_resconf_getidnconverter(ctx); + if (idn_converter != NULL) { + encoding_type = mdn_converter_encodingtype(idn_converter); + mdn_converter_destroy(idn_converter); } else { - r = copy_verbatim(from, to, tolen); + encoding_type = MDN_NONACE; } + r = nameconv_m(ctx, from, to, tolen); + if (r != mdn_success) + return (r); + + if (encoding_type == MDN_ACE_STRICTCASE) + isvalid = mdn_util_casematch(from, to, tolen); + else + isvalid = (strcmp(from, to) == 0); + + if (isvalid || encoding_type == MDN_NONACE) + r = copy_verbatim(from, to, tolen); + else + r = nameconv_I(ctx, from, to, tolen); + return (r); } static mdn_result_t -nameconv_A(mdn_resconf_t ctx, const char *from, char *to, size_t tolen) +nameconv_xn(mdn_resconf_t ctx, const char *from, char *to, size_t tolen) { mdn_result_t r; - mdn_converter_t alternate_converter; + mdn_converter_t idn_converter; + int encoding_type; + int isvalid; - alternate_converter = mdn_resconf_getalternateconverter(ctx); - if (alternate_converter != NULL) { - r = mdn_converter_utf8tolocal(alternate_converter, from, to, - tolen); - mdn_converter_destroy(alternate_converter); + idn_converter = mdn_resconf_getidnconverter(ctx); + if (idn_converter != NULL) { + encoding_type = mdn_converter_encodingtype(idn_converter); + mdn_converter_destroy(idn_converter); } else { + encoding_type = MDN_NONACE; + } + + r = nameconv_n(ctx, from, to, tolen); + if (r != mdn_success) + return (r); + + if (encoding_type == MDN_ACE_STRICTCASE) + isvalid = mdn_util_casematch(from, to, tolen); + else + isvalid = (strcmp(from, to) == 0); + + if (isvalid || encoding_type == MDN_NONACE) r = copy_verbatim(from, to, tolen); + else + r = nameconv_I(ctx, from, to, tolen); + + return (r); +} + +static mdn_result_t +nameconv_xp(mdn_resconf_t ctx, const char *from, char *to, size_t tolen) +{ + mdn_result_t r; + mdn_converter_t idn_converter; + int encoding_type; + + idn_converter = mdn_resconf_getidnconverter(ctx); + if (idn_converter != NULL) { + encoding_type = mdn_converter_encodingtype(idn_converter); + mdn_converter_destroy(idn_converter); + } else { + encoding_type = MDN_NONACE; + } + + r = nameconv_p(ctx, from, to, tolen); + if (r == mdn_prohibited) { + if (encoding_type == MDN_NONACE) + r = copy_verbatim(from, to, tolen); + else + r = nameconv_I(ctx, from, to, tolen); } return (r); } +static mdn_result_t +nameconv_xu(mdn_resconf_t ctx, const char *from, char *to, size_t tolen) +{ + mdn_result_t r; + mdn_converter_t idn_converter; + int encoding_type; + + idn_converter = mdn_resconf_getidnconverter(ctx); + if (idn_converter != NULL) { + encoding_type = mdn_converter_encodingtype(idn_converter); + mdn_converter_destroy(idn_converter); + } else { + encoding_type = MDN_NONACE; + } + + r = nameconv_u(ctx, from, to, tolen); + if (r == mdn_prohibited) { + if (encoding_type == MDN_NONACE) + r = copy_verbatim(from, to, tolen); + else + r = nameconv_I(ctx, from, to, tolen); + } + + return (mdn_success); +} + +static mdn_result_t +nameconv_xN(mdn_resconf_t ctx, const char *from, char *to, size_t tolen) +{ + mdn_result_t r; + mdn_converter_t idn_converter; + int encoding_type; + int isvalid; + + idn_converter = mdn_resconf_getidnconverter(ctx); + if (idn_converter != NULL) { + encoding_type = mdn_converter_encodingtype(idn_converter); + mdn_converter_destroy(idn_converter); + } else { + encoding_type = MDN_NONACE; + } + + r = nameconv_N(ctx, from, to, tolen); + if (r == mdn_success) { + if (encoding_type == MDN_ACE_STRICTCASE) + isvalid = mdn_util_casematch(from, to, tolen); + else + isvalid = (strcmp(from, to) == 0); + } else if (r == mdn_prohibited) { + isvalid = 0; + } else { + return (r); + } + + if (isvalid || encoding_type == MDN_NONACE) + r = copy_verbatim(from, to, tolen); + else + r = nameconv_I(ctx, from, to, tolen); + + return (r); +} + static mdn_result_t copy_verbatim(const char *from, char *to, size_t tolen) { size_t fromlen = strlen(from); @@ -661,6 +809,8 @@ copy_verbatim(const char *from, char *to, size_t tolen) { #undef mdn_res_map #undef mdn_res_normalize #undef mdn_res_prohibitcheck +#undef mdn_res_nameprep +#undef mdn_res_nameprepcheck #undef mdn_res_unassignedcheck #undef mdn_res_delimitermap #undef mdn_res_localmap @@ -697,6 +847,18 @@ mdn_res_prohibitcheck(mdn_resconf_t ctx, const char *from, char *to, return mdn_res_nameconv(ctx, "p", from, to, tolen); } +mdn_result_t +mdn_res_nameprep(mdn_resconf_t ctx, const char *from, char *to, + size_t tolen) { + return mdn_res_nameconv(ctx, "N", from, to, tolen); +} + +mdn_result_t +mdn_res_nameprepcheck(mdn_resconf_t ctx, const char *from, char *to, + size_t tolen) { + return mdn_res_nameconv(ctx, "!N", from, to, tolen); +} + mdn_result_t mdn_res_unassignedcheck(mdn_resconf_t ctx, const char *from, char *to, size_t tolen) { diff --git a/contrib/idn/mdnkit/lib/resconf.c b/contrib/idn/mdnkit/lib/resconf.c index bf886f7ddd0..e4f27f7e4df 100644 --- a/contrib/idn/mdnkit/lib/resconf.c +++ b/contrib/idn/mdnkit/lib/resconf.c @@ -1,5 +1,5 @@ #ifndef lint -static char *rcsid = "$Id: resconf.c,v 1.25 2001/04/16 02:25:17 m-kasahr Exp $"; +static char *rcsid = "$Id: resconf.c,v 1.1 2002/01/02 02:46:46 marka Exp $"; #endif /* @@ -11,8 +11,8 @@ static char *rcsid = "$Id: resconf.c,v 1.25 2001/04/16 02:25:17 m-kasahr Exp $"; * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted @@ -95,7 +95,6 @@ struct mdn_resconf { char *local_encoding; mdn_converter_t local_converter; mdn_converter_t idn_converter; - mdn_converter_t alternate_converter; mdn_normalizer_t normalizer; mdn_checker_t prohibit_checker; mdn_checker_t unassigned_checker; @@ -106,8 +105,6 @@ struct mdn_resconf { }; static mdn_result_t parse_conf(mdn_resconf_t ctx, FILE *fp); -static mdn_result_t parse_alternate_encoding(mdn_resconf_t ctx, - char *args, int lineno); static mdn_result_t parse_delimiter_map(mdn_resconf_t ctx, char *args, int lineno); static mdn_result_t parse_encoding_alias_file(mdn_resconf_t ctx, @@ -168,7 +165,6 @@ mdn_resconf_create(mdn_resconf_t *ctxp) { ctx->local_encoding = NULL; ctx->local_converter = NULL; ctx->idn_converter = NULL; - ctx->alternate_converter = NULL; ctx->normalizer = NULL; ctx->prohibit_checker = NULL; ctx->unassigned_checker = NULL; @@ -217,6 +213,8 @@ mdn_resconf_loadfile(mdn_resconf_t ctx, const char *file) { void mdn_resconf_destroy(mdn_resconf_t ctx) { + assert(ctx != NULL); + TRACE(("mdn_resconf_destroy()\n")); TRACE(("mdn_resconf_destroy: update reference count (%d->%d)\n", ctx->reference_count, ctx->reference_count - 1)); @@ -242,15 +240,17 @@ mdn_resconf_incrref(mdn_resconf_t ctx) { mdn_converter_t mdn_resconf_getalternateconverter(mdn_resconf_t ctx) { - TRACE(("mdn_resconf_alternateconverter()\n")); + assert(ctx != NULL); + + TRACE(("mdn_resconf_getalternateconverter()\n")); - if (ctx->alternate_converter != NULL) - mdn_converter_incrref(ctx->alternate_converter); - return (ctx->alternate_converter); + return (mdn_resconf_getidnconverter(ctx)); } mdn_delimitermap_t mdn_resconf_getdelimitermap(mdn_resconf_t ctx) { + assert(ctx != NULL); + TRACE(("mdn_resconf_getdelimitermap()\n")); if (ctx->delimiter_mapper != NULL) @@ -260,6 +260,8 @@ mdn_resconf_getdelimitermap(mdn_resconf_t ctx) { mdn_converter_t mdn_resconf_getidnconverter(mdn_resconf_t ctx) { + assert(ctx != NULL); + TRACE(("mdn_resconf_getidnconverter()\n")); if (ctx->idn_converter != NULL) @@ -269,6 +271,8 @@ mdn_resconf_getidnconverter(mdn_resconf_t ctx) { mdn_converter_t mdn_resconf_getlocalconverter(mdn_resconf_t ctx) { + assert(ctx != NULL); + TRACE(("mdn_resconf_getlocalconverter()\n")); if (update_local_converter(ctx) != mdn_success) @@ -279,6 +283,8 @@ mdn_resconf_getlocalconverter(mdn_resconf_t ctx) { mdn_mapselector_t mdn_resconf_getlocalmapselector(mdn_resconf_t ctx) { + assert(ctx != NULL); + TRACE(("mdn_resconf_getlocalmapselector()\n")); if (ctx->local_mapper != NULL) @@ -288,6 +294,8 @@ mdn_resconf_getlocalmapselector(mdn_resconf_t ctx) { mdn_mapper_t mdn_resconf_getmapper(mdn_resconf_t ctx) { + assert(ctx != NULL); + TRACE(("mdn_resconf_getmapper()\n")); if (ctx->mapper != NULL) @@ -297,6 +305,8 @@ mdn_resconf_getmapper(mdn_resconf_t ctx) { mdn_normalizer_t mdn_resconf_getnormalizer(mdn_resconf_t ctx) { + assert(ctx != NULL); + TRACE(("mdn_resconf_getnormalizer()\n")); if (ctx->normalizer != NULL) @@ -306,6 +316,8 @@ mdn_resconf_getnormalizer(mdn_resconf_t ctx) { mdn_checker_t mdn_resconf_getprohibitchecker(mdn_resconf_t ctx) { + assert(ctx != NULL); + TRACE(("mdn_resconf_getprohibitchecker()\n")); if (ctx->prohibit_checker != NULL) @@ -315,6 +327,8 @@ mdn_resconf_getprohibitchecker(mdn_resconf_t ctx) { mdn_checker_t mdn_resconf_getunassignedchecker(mdn_resconf_t ctx) { + assert(ctx != NULL); + TRACE(("mdn_resconf_getunassignedchecker()\n")); if (ctx->unassigned_checker != NULL) @@ -325,38 +339,44 @@ mdn_resconf_getunassignedchecker(mdn_resconf_t ctx) { void mdn_resconf_setalternateconverter(mdn_resconf_t ctx, mdn_converter_t alternate_converter) { - TRACE(("mdn_resconf_setalternateconverter()\n")); + assert(ctx != NULL); - if (ctx->alternate_converter != NULL) - mdn_converter_destroy(ctx->alternate_converter); - ctx->alternate_converter = alternate_converter; - mdn_converter_incrref(ctx->alternate_converter); + TRACE(("mdn_resconf_setalternateconverter()\n")); } void mdn_resconf_setdelimitermap(mdn_resconf_t ctx, mdn_delimitermap_t delimiter_mapper) { + assert(ctx != NULL); + TRACE(("mdn_resconf_setdelimitermap()\n")); + if (ctx->delimiter_mapper != NULL) mdn_delimitermap_destroy(ctx->delimiter_mapper); ctx->delimiter_mapper = delimiter_mapper; - mdn_delimitermap_incrref(ctx->delimiter_mapper); + if (delimiter_mapper != NULL) + mdn_delimitermap_incrref(ctx->delimiter_mapper); } void mdn_resconf_setidnconverter(mdn_resconf_t ctx, mdn_converter_t idn_converter) { + assert(ctx != NULL); + TRACE(("mdn_resconf_setidnconverter()\n")); if (ctx->idn_converter != NULL) mdn_converter_destroy(ctx->idn_converter); ctx->idn_converter = idn_converter; - mdn_converter_incrref(ctx->idn_converter); + if (idn_converter != NULL) + mdn_converter_incrref(ctx->idn_converter); } void mdn_resconf_setlocalconverter(mdn_resconf_t ctx, mdn_converter_t local_converter) { + assert(ctx != NULL); + TRACE(("mdn_resconf_setlocalconverter()\n")); if (ctx->local_converter != NULL) @@ -371,53 +391,69 @@ mdn_resconf_setlocalconverter(mdn_resconf_t ctx, void mdn_resconf_setlocalmapselector(mdn_resconf_t ctx, mdn_mapselector_t local_mapper) { + assert(ctx != NULL); + TRACE(("mdn_resconf_setlocalmapselector()\n")); if (ctx->local_mapper != NULL) mdn_mapselector_destroy(ctx->local_mapper); ctx->local_mapper = local_mapper; - mdn_mapselector_incrref(ctx->local_mapper); + if (local_mapper != NULL) + mdn_mapselector_incrref(ctx->local_mapper); } void mdn_resconf_setmapper(mdn_resconf_t ctx, mdn_mapper_t mapper) { + assert(ctx != NULL); + TRACE(("mdn_resconf_setmapper()\n")); if (ctx->mapper != NULL) mdn_mapper_destroy(ctx->mapper); ctx->mapper = mapper; - mdn_mapper_incrref(ctx->mapper); + if (mapper != NULL) + mdn_mapper_incrref(ctx->mapper); } void mdn_resconf_setnormalizer(mdn_resconf_t ctx, mdn_normalizer_t normalizer) { + assert(ctx != NULL); + TRACE(("mdn_resconf_setnormalizer()\n")); if (ctx->normalizer != NULL) mdn_normalizer_destroy(ctx->normalizer); ctx->normalizer = normalizer; - mdn_normalizer_incrref(ctx->normalizer); + if (normalizer != NULL) + mdn_normalizer_incrref(ctx->normalizer); } void mdn_resconf_setprohibitchecker(mdn_resconf_t ctx, mdn_checker_t prohibit_checker) { + assert(ctx != NULL); + TRACE(("mdn_resconf_setprohibitchecker()\n")); if (ctx->prohibit_checker != NULL) mdn_checker_destroy(ctx->prohibit_checker); ctx->prohibit_checker = prohibit_checker; - mdn_checker_incrref(ctx->prohibit_checker); + if (prohibit_checker != NULL) + mdn_checker_incrref(ctx->prohibit_checker); } void mdn_resconf_setunassignedchecker(mdn_resconf_t ctx, mdn_checker_t unassigned_checker) { + assert(ctx != NULL); + TRACE(("mdn_resconf_setunassignedchecker()\n")); + if (ctx->unassigned_checker != NULL) mdn_checker_destroy(ctx->unassigned_checker); ctx->unassigned_checker = unassigned_checker; - mdn_checker_incrref(ctx->unassigned_checker); + if (unassigned_checker != NULL) + mdn_checker_incrref(ctx->unassigned_checker); } mdn_result_t @@ -517,27 +553,11 @@ failure: mdn_result_t mdn_resconf_setalternateconvertername(mdn_resconf_t ctx, const char *name, int flags) { - mdn_converter_t alternate_converter; - mdn_result_t r; - assert(ctx != NULL && name != NULL); TRACE(("mdn_resconf_setalternateconvertername(name=%s, flags=%d)\n", name, flags)); - r = mdn_converter_create(name, &alternate_converter, flags); - if (r != mdn_success) - return (r); - - if (!mdn_converter_isasciicompatible(alternate_converter)) { - mdn_converter_destroy(alternate_converter); - return (mdn_invalid_name); - } - - if (ctx->alternate_converter != NULL) - mdn_converter_destroy(ctx->alternate_converter); - ctx->alternate_converter = alternate_converter; - return (mdn_success); } @@ -742,16 +762,14 @@ parse_conf(mdn_resconf_t ctx, FILE *fp) { char *argv[3]; int argc; mdn_result_t r; - char *alternate_encoding_args = NULL; - int alternate_encoding_lineno = 0; char *idn_encoding_args = NULL; int idn_encoding_lineno = 0; char *nameprep = NULL; /* - * Parse config file. parsing of 'alternate-encoding' and - * 'idn-encoding' lines are postponed because - * 'alias-file' line must be processed before them. + * Parse config file. parsing of 'idn-encoding' line is + * postponed because 'alias-file' line must be processed + * before them. */ while (fgets(line, sizeof(line), fp) != NULL) { char *newline; @@ -776,13 +794,7 @@ parse_conf(mdn_resconf_t ctx, FILE *fp) { } if (strcmp(argv[0], "alternate-encoding") == 0) { - r = mystrdup(argv[1], &alternate_encoding_args); - if (r != mdn_success) { - mdn_log_error("mdnres: %s, line %d\n", - mdn_result_tostring(r), lineno); - } - alternate_encoding_lineno = lineno; - + continue; } else if (strcmp(argv[0], "delimiter-map") == 0) { r = parse_delimiter_map(ctx, argv[1], lineno); @@ -858,12 +870,6 @@ parse_conf(mdn_resconf_t ctx, FILE *fp) { } } - if (alternate_encoding_args != NULL) { - r = parse_alternate_encoding(ctx, alternate_encoding_args, - alternate_encoding_lineno); - if (r != mdn_success) - return (r); - } if (idn_encoding_args != NULL) { r = parse_idn_encoding(ctx, idn_encoding_args, idn_encoding_lineno); @@ -874,40 +880,6 @@ parse_conf(mdn_resconf_t ctx, FILE *fp) { return (mdn_success); } -static mdn_result_t -parse_alternate_encoding(mdn_resconf_t ctx, char *args, int lineno) { - mdn_result_t r; - char *argv[MAX_CONF_LINE_ARGS + 1]; - int argc; - - argc = split_args(args, argv, MAX_CONF_LINE_ARGS + 1); - - if (argc != 1) { - mdn_log_error("mdnres: wrong # of args for " - "alternate-encoding, line %d\n", lineno); - return (mdn_invalid_syntax); - } - - r = mdn_converter_create(argv[0], &ctx->alternate_converter, - MDN_CONVERTER_DELAYEDOPEN); - if (r != mdn_success) { - mdn_log_error("mdnres: cannot create alternate-encodng " - "converter, %s, line %d\n", - mdn_result_tostring(r), lineno); - return (mdn_invalid_syntax); - } - - if (!mdn_converter_isasciicompatible(ctx->alternate_converter)) { - mdn_log_error("mdnres: alternate encoding must be " - "ASCII-compatible, line %d\n", lineno); - mdn_converter_destroy(ctx->alternate_converter); - ctx->alternate_converter = NULL; - return (mdn_invalid_name); - } - - return (r); -} - static mdn_result_t parse_delimiter_map(mdn_resconf_t ctx, char *args, int lineno) { mdn_result_t r; @@ -1269,42 +1241,14 @@ resetconf(mdn_resconf_t ctx) { free(ctx->local_encoding); ctx->local_encoding = NULL; - if (ctx->local_converter != NULL) { - mdn_converter_destroy(ctx->local_converter); - ctx->local_converter = NULL; - } - if (ctx->idn_converter != NULL) { - mdn_converter_destroy(ctx->idn_converter); - ctx->idn_converter = NULL; - } - if (ctx->alternate_converter != NULL) { - mdn_converter_destroy(ctx->alternate_converter); - ctx->alternate_converter = NULL; - } - if (ctx->normalizer != NULL) { - mdn_normalizer_destroy(ctx->normalizer); - ctx->normalizer = NULL; - } - if (ctx->prohibit_checker != NULL) { - mdn_checker_destroy(ctx->prohibit_checker); - ctx->prohibit_checker = NULL; - } - if (ctx->unassigned_checker != NULL) { - mdn_checker_destroy(ctx->unassigned_checker); - ctx->unassigned_checker = NULL; - } - if (ctx->mapper != NULL) { - mdn_mapper_destroy(ctx->mapper); - ctx->mapper = NULL; - } - if (ctx->local_mapper != NULL) { - mdn_mapselector_destroy(ctx->local_mapper); - ctx->local_mapper = NULL; - } - if (ctx->delimiter_mapper != NULL) { - mdn_delimitermap_destroy(ctx->delimiter_mapper); - ctx->delimiter_mapper = NULL; - } + mdn_resconf_setlocalconverter(ctx, NULL); + mdn_resconf_setidnconverter(ctx, NULL); + mdn_resconf_setdelimitermap(ctx, NULL); + mdn_resconf_setlocalmapselector(ctx, NULL); + mdn_resconf_setmapper(ctx, NULL); + mdn_resconf_setnormalizer(ctx, NULL); + mdn_resconf_setprohibitchecker(ctx, NULL); + mdn_resconf_setunassignedchecker(ctx, NULL); } static mdn_result_t diff --git a/contrib/idn/mdnkit/lib/result.c b/contrib/idn/mdnkit/lib/result.c index 4bbf4684d59..d5947a4a602 100644 --- a/contrib/idn/mdnkit/lib/result.c +++ b/contrib/idn/mdnkit/lib/result.c @@ -1,5 +1,5 @@ #ifndef lint -static char *rcsid = "$Id: result.c,v 1.10 2001/02/05 09:10:58 ishisone Exp $"; +static char *rcsid = "$Id: result.c,v 1.1 2002/01/02 02:46:47 marka Exp $"; #endif /* @@ -11,8 +11,8 @@ static char *rcsid = "$Id: result.c,v 1.10 2001/02/05 09:10:58 ishisone Exp $"; * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/lib/selectiveencode.c b/contrib/idn/mdnkit/lib/selectiveencode.c index bb1a760e2b2..f450ef82f83 100644 --- a/contrib/idn/mdnkit/lib/selectiveencode.c +++ b/contrib/idn/mdnkit/lib/selectiveencode.c @@ -1,5 +1,5 @@ #ifndef lint -static char *rcsid = "$Id: selectiveencode.c,v 1.8 2001/05/31 05:21:38 ishisone Exp $"; +static char *rcsid = "$Id: selectiveencode.c,v 1.1 2002/01/02 02:46:47 marka Exp $"; #endif /* @@ -11,8 +11,8 @@ static char *rcsid = "$Id: selectiveencode.c,v 1.8 2001/05/31 05:21:38 ishisone * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/lib/strhash.c b/contrib/idn/mdnkit/lib/strhash.c index 9353db05e1d..ac99b32856c 100644 --- a/contrib/idn/mdnkit/lib/strhash.c +++ b/contrib/idn/mdnkit/lib/strhash.c @@ -1,5 +1,5 @@ #ifndef lint -static char *rcsid = "$Id: strhash.c,v 1.8 2000/09/20 02:47:32 ishisone Exp $"; +static char *rcsid = "$Id: strhash.c,v 1.1 2002/01/02 02:46:47 marka Exp $"; #endif /* @@ -11,8 +11,8 @@ static char *rcsid = "$Id: strhash.c,v 1.8 2000/09/20 02:47:32 ishisone Exp $"; * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/lib/ucsmap.c b/contrib/idn/mdnkit/lib/ucsmap.c index bd62e18a81b..0e99c938bdd 100644 --- a/contrib/idn/mdnkit/lib/ucsmap.c +++ b/contrib/idn/mdnkit/lib/ucsmap.c @@ -1,5 +1,5 @@ #ifndef lint -static char *rcsid = "$Id: ucsmap.c,v 1.1 2001/06/09 00:30:27 tale Exp $"; +static char *rcsid = "$Id: ucsmap.c,v 1.2 2002/02/08 05:40:37 marka Exp $"; #endif /* @@ -11,8 +11,8 @@ static char *rcsid = "$Id: ucsmap.c,v 1.1 2001/06/09 00:30:27 tale Exp $"; * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/lib/ucsset.c b/contrib/idn/mdnkit/lib/ucsset.c index a9a3545bd46..bd1b1e7b5fc 100644 --- a/contrib/idn/mdnkit/lib/ucsset.c +++ b/contrib/idn/mdnkit/lib/ucsset.c @@ -1,5 +1,5 @@ #ifndef lint -static char *rcsid = "$Id: ucsset.c,v 1.1 2001/06/09 00:30:27 tale Exp $"; +static char *rcsid = "$Id: ucsset.c,v 1.2 2002/02/08 05:40:38 marka Exp $"; #endif /* @@ -11,8 +11,8 @@ static char *rcsid = "$Id: ucsset.c,v 1.1 2001/06/09 00:30:27 tale Exp $"; * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/lib/unicode.c b/contrib/idn/mdnkit/lib/unicode.c index 1a4e04410f9..1853870087e 100644 --- a/contrib/idn/mdnkit/lib/unicode.c +++ b/contrib/idn/mdnkit/lib/unicode.c @@ -1,5 +1,5 @@ #ifndef lint -static char *rcsid = "$Id: unicode.c,v 1.13 2001/02/14 02:16:15 ishisone Exp $"; +static char *rcsid = "$Id: unicode.c,v 1.1 2002/01/02 02:46:48 marka Exp $"; #endif /* @@ -12,8 +12,8 @@ static char *rcsid = "$Id: unicode.c,v 1.13 2001/02/14 02:16:15 ishisone Exp $"; * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted @@ -65,12 +65,15 @@ static char *rcsid = "$Id: unicode.c,v 1.13 2001/02/14 02:16:15 ishisone Exp $"; #include #include +#include #include #include #include #include +#define UNICODE_CURRENT "3.1.0" + #define UCS_MAX 0x10ffff #define END_BIT 0x80000000 @@ -86,63 +89,118 @@ static char *rcsid = "$Id: unicode.c,v 1.13 2001/02/14 02:16:15 ishisone Exp $"; #define TCount 28 #define SLast (SBase + LCount * VCount * TCount) -#include "unicodedata.c" - /* - * Macro for multi-level index table. + * Symbol composition macro. */ -#define LOOKUPTBL(vprefix, mprefix, v) \ - DMAP(vprefix)[\ - IMAP(vprefix)[\ - IMAP(vprefix)[IDX0(mprefix, v)] + IDX1(mprefix, v)\ - ]\ - ].tbl[IDX2(mprefix, v)] +#define compose_sym(a, b) compose_symX(a, b) +#define compose_symX(a, b) a ## b + +struct composition { + unsigned long c2; /* 2nd character */ + unsigned long comp; /* composed character */ +}; + +#include "unicodedata_301.c" +#define VERSION v301 +#include "unicode_template.c" +#undef VERSION + +#include "unicodedata_310.c" +#define VERSION v310 +#include "unicode_template.c" +#undef VERSION + +typedef int (*unicode_canonclassproc)(unsigned long v); +typedef int (*unicode_decomposeproc)(unsigned long c, + const unsigned long **seqp); +typedef int (*unicode_composeproc)(unsigned long c, + const struct composition **compp); +typedef int (*unicode_toupperproc)(unsigned long c, + const unsigned long **seqp); +typedef int (*unicode_tolowerproc)(unsigned long c, + const unsigned long **seqp); +typedef int (*unicode_casectxproc)(unsigned long c); +typedef int (*unicode_casefoldingproc)(unsigned long c, + const unsigned long **seqp); + +static struct mdn__unicode_ops { + char *version; + unicode_canonclassproc canonclass_proc; + unicode_decomposeproc decompose_proc; + unicode_composeproc compose_proc; + unicode_toupperproc toupper_proc; + unicode_tolowerproc tolower_proc; + unicode_casectxproc casectx_proc; + unicode_casefoldingproc casefolding_proc; +} unicode_versions[] = { +#define MAKE_UNICODE_HANDLE(version, suffix) \ + { version, \ + compose_sym(canonclass_, suffix), \ + compose_sym(decompose_, suffix), \ + compose_sym(compose_, suffix), \ + compose_sym(toupper_, suffix), \ + compose_sym(tolower_, suffix), \ + compose_sym(casemapctx_, suffix), \ + compose_sym(casefolding_, suffix) } + MAKE_UNICODE_HANDLE("3.0.1", v301), + MAKE_UNICODE_HANDLE("3.1.0", v310), + { NULL }, +#undef MAKE_UNICODE_HANDLE +}; + +static mdn_result_t casemap(mdn__unicode_version_t version, + unsigned long c, mdn__unicode_context_t ctx, + unsigned long *v, size_t vlen, int *convlenp, + int do_uppercase); -#define IDX0(mprefix, v) IDX_0(v, BITS1(mprefix), BITS2(mprefix)) -#define IDX1(mprefix, v) IDX_1(v, BITS1(mprefix), BITS2(mprefix)) -#define IDX2(mprefix, v) IDX_2(v, BITS1(mprefix), BITS2(mprefix)) +mdn_result_t +mdn__unicode_create(const char *version, + mdn__unicode_version_t *versionp) +{ + mdn__unicode_version_t v; -#define IDX_0(v, bits1, bits2) ((v) >> ((bits1) + (bits2))) -#define IDX_1(v, bits1, bits2) (((v) >> (bits2)) & ((1 << (bits1)) - 1)) -#define IDX_2(v, bits1, bits2) ((v) & ((1 << (bits2)) - 1)) + assert(versionp != NULL); + TRACE(("mdn__unicode_create(version=%-.50s)\n", + version == NULL ? "" : version)); -#define BITS1(mprefix) mprefix ## _BITS_1 -#define BITS2(mprefix) mprefix ## _BITS_2 + if (version == NULL) + version = UNICODE_CURRENT; -#define IMAP(vprefix) vprefix ## _imap -#define DMAP(vprefix) vprefix ## _table + for (v = unicode_versions; v->version != NULL; v++) { + if (strcmp(v->version, version) == 0) { + *versionp = v; + return (mdn_success); + } + } + return (mdn_notfound); +} -static mdn_result_t casemap(unsigned long c, mdn__unicode_context_t ctx, - unsigned long *v, size_t vlen, int *convlenp, - int do_uppercase); +void +mdn__unicode_destroy(mdn__unicode_version_t version) { + assert(version != NULL); + TRACE(("mdn__unicode_destroy()\n")); + /* Nothing to do */ +} int -mdn__unicode_canonicalclass(unsigned long c) { -#if 0 - TRACE(("mdn__unicode_canonicalclass(c=%lx)\n", c)); -#endif - +mdn__unicode_canonicalclass(mdn__unicode_version_t version, unsigned long c) { if (c > UCS_MAX) return (0); - return (LOOKUPTBL(canon_class, CANON_CLASS, c)); + return (*version->canonclass_proc)(c); } mdn_result_t -mdn__unicode_decompose(int compat, unsigned long *v, size_t vlen, +mdn__unicode_decompose(mdn__unicode_version_t version, + int compat, unsigned long *v, size_t vlen, unsigned long c, int *decomp_lenp) { unsigned long *vorg = v; int seqidx; - unsigned long *seq; + const unsigned long *seq; assert(v != NULL && vlen >= 0 && decomp_lenp != NULL); -#if 0 - TRACE(("mdn__unicode_decompose(compat=%d,vlen=%d,c=%lx)\n", - compat, vlen, c)); -#endif - if (c > UCS_MAX) return (mdn_notfound); @@ -172,7 +230,7 @@ mdn__unicode_decompose(int compat, unsigned long *v, size_t vlen, * or if it is a compatibility decomosition when canonical * decomposition requested, return 'mdn_notfound'. */ - seqidx = LOOKUPTBL(decompose, DECOMP, c); + seqidx = (*version->decompose_proc)(c, &seq); if (seqidx == 0 || (compat == 0 && (seqidx & DECOMP_COMPAT) != 0)) return (mdn_notfound); @@ -180,16 +238,15 @@ mdn__unicode_decompose(int compat, unsigned long *v, size_t vlen, * Copy the decomposed sequence. The end of the sequence are * marked with END_BIT. */ - seq = &decompose_seq[seqidx & ~DECOMP_COMPAT]; do { unsigned long c; - size_t dlen; + int dlen; mdn_result_t r; c = *seq & ~END_BIT; /* Decompose recursively. */ - r = mdn__unicode_decompose(compat, v, vlen, c, &dlen); + r = mdn__unicode_decompose(version, compat, v, vlen, c, &dlen); if (r == mdn_success) { v += dlen; vlen -= dlen; @@ -210,10 +267,10 @@ mdn__unicode_decompose(int compat, unsigned long *v, size_t vlen, } int -mdn__unicode_iscompositecandidate(unsigned long c) { -#if 0 - TRACE(("mdn__unicode_iscompositecandidate(c=%lx)\n", c)); -#endif +mdn__unicode_iscompositecandidate(mdn__unicode_version_t version, + unsigned long c) +{ + const struct composition *dummy; if (c > UCS_MAX) return (0); @@ -227,25 +284,22 @@ mdn__unicode_iscompositecandidate(unsigned long c) { * that begins with the given character, it is not a * composition candidate. */ - if (LOOKUPTBL(compose, CANON_COMPOSE, c) == 0) + if ((*version->compose_proc)(c, &dummy) == 0) return (0); else return (1); } mdn_result_t -mdn__unicode_compose(unsigned long c1, unsigned long c2, unsigned long *compp) +mdn__unicode_compose(mdn__unicode_version_t version, + unsigned long c1, unsigned long c2, unsigned long *compp) { - unsigned long x; int n; - int seqidx, lo, hi; + int lo, hi; + const struct composition *cseq; assert(compp != NULL); -#if 0 - TRACE(("mdn__unicode_compose(c1=%lx,c2=%lx)\n", c1, c2)); -#endif - if (c1 > UCS_MAX || c2 > UCS_MAX) return (mdn_notfound); @@ -276,26 +330,24 @@ mdn__unicode_compose(unsigned long c1, unsigned long c2, unsigned long *compp) * the number of composition that begins with 'c1', and the lower * 16bits is the offset in 'compose_seq'. */ - if ((x = LOOKUPTBL(compose, CANON_COMPOSE, c1)) == 0) + if ((n = (*version->compose_proc)(c1, &cseq)) == 0) return (mdn_notfound); - n = x >> 16; - seqidx = x & 0xffff; /* * The composite sequences are sorted by the 2nd character 'c2'. * So we can use binary search. */ - lo = seqidx; - hi = seqidx + n - 1; + lo = 0; + hi = n - 1; while (lo <= hi) { int mid = (lo + hi) / 2; - if (compose_seq[mid].c2 < c2) { + if (cseq[mid].c2 < c2) { lo = mid + 1; - } else if (compose_seq[mid].c2 > c2) { + } else if (cseq[mid].c2 > c2) { hi = mid - 1; } else { - *compp = compose_seq[mid].comp; + *compp = cseq[mid].comp; return (mdn_success); } } @@ -303,30 +355,27 @@ mdn__unicode_compose(unsigned long c1, unsigned long c2, unsigned long *compp) } mdn_result_t -mdn__unicode_toupper(unsigned long c, mdn__unicode_context_t ctx, +mdn__unicode_toupper(mdn__unicode_version_t version, + unsigned long c, mdn__unicode_context_t ctx, unsigned long *v, size_t vlen, int *convlenp) { -#if 0 - TRACE(("mdn__unicode_toupper(c=%lx)\n", c)); -#endif - return (casemap(c, ctx, v, vlen, convlenp, 1)); + return (casemap(version, c, ctx, v, vlen, convlenp, 1)); } mdn_result_t -mdn__unicode_tolower(unsigned long c, mdn__unicode_context_t ctx, +mdn__unicode_tolower(mdn__unicode_version_t version, + unsigned long c, mdn__unicode_context_t ctx, unsigned long *v, size_t vlen, int *convlenp) { -#if 0 - TRACE(("mdn__unicode_tolower(c=%lx)\n", c)); -#endif - return (casemap(c, ctx, v, vlen, convlenp, 0)); + return (casemap(version, c, ctx, v, vlen, convlenp, 0)); } static mdn_result_t -casemap(unsigned long c, mdn__unicode_context_t ctx, +casemap(mdn__unicode_version_t version, + unsigned long c, mdn__unicode_context_t ctx, unsigned long *v, size_t vlen, int *convlenp, int do_uppercase) { - unsigned long *seq; + const unsigned long *seq; int seqidx; if (vlen < 1) @@ -338,13 +387,10 @@ casemap(unsigned long c, mdn__unicode_context_t ctx, /* * Look up toupper/tolower mapping table. */ - if (do_uppercase) { - seq = toupper_seq; - seqidx = LOOKUPTBL(toupper, CASEMAP, c); - } else { - seq = tolower_seq; - seqidx = LOOKUPTBL(tolower, CASEMAP, c); - } + if (do_uppercase) + seqidx = (*version->toupper_proc)(c, &seq); + else + seqidx = (*version->tolower_proc)(c, &seq); /* Zero means there are no mapping. */ if (seqidx == 0) @@ -356,7 +402,6 @@ casemap(unsigned long c, mdn__unicode_context_t ctx, * are defined for a single character, so we have to loop * through all the mappings. */ - seq += seqidx; for (;;) { int found = 0; unsigned long flags = *seq++; @@ -425,7 +470,9 @@ casemap(unsigned long c, mdn__unicode_context_t ctx, } mdn__unicode_context_t -mdn__unicode_getcontext(unsigned long c) { +mdn__unicode_getcontext(mdn__unicode_version_t version, + unsigned long c) +{ #if 0 TRACE(("mdn__unicode_getcontext(c=%lx)\n", c)); #endif @@ -433,7 +480,7 @@ mdn__unicode_getcontext(unsigned long c) { if (c > UCS_MAX) return (mdn__unicode_context_final); - switch (LOOKUPTBL(casemap_ctx, CASEMAP_CTX, c)) { + switch ((*version->casectx_proc)(c)) { case CTX_CASED: return (mdn__unicode_context_nonfinal); case CTX_NSM: @@ -444,12 +491,13 @@ mdn__unicode_getcontext(unsigned long c) { } mdn_result_t -mdn__unicode_casefold(unsigned long c, unsigned long *v, size_t vlen, +mdn__unicode_casefold(mdn__unicode_version_t version, + unsigned long c, unsigned long *v, size_t vlen, int *foldlenp) { unsigned long *vorg = v; int seqidx; - unsigned long *seq; + const unsigned long *seq; assert(v != NULL && vlen >= 0 && foldlenp != NULL); @@ -462,10 +510,9 @@ mdn__unicode_casefold(unsigned long c, unsigned long *v, size_t vlen, goto nomap; /* Look up case folding table. */ - if ((seqidx = LOOKUPTBL(case_folding, CASE_FOLDING, c)) == 0) + if ((seqidx = (*version->casefolding_proc)(c, &seq)) == 0) goto nomap; - seq = &case_folding_seq[seqidx]; do { if (vlen-- < 1) return (mdn_buffer_overflow); diff --git a/contrib/idn/mdnkit/lib/unicode_template.c b/contrib/idn/mdnkit/lib/unicode_template.c new file mode 100644 index 00000000000..42c4dc60c07 --- /dev/null +++ b/contrib/idn/mdnkit/lib/unicode_template.c @@ -0,0 +1,145 @@ +/* $Id: unicode_template.c,v 1.1 2002/02/08 05:40:41 marka Exp $ */ + +/* + * Copyright (c) 2000,2001 Japan Network Information Center. + * All rights reserved. + * + * By using this file, you agree to the terms and conditions set forth bellow. + * + * LICENSE TERMS AND CONDITIONS + * + * The following License Terms and Conditions apply, unless a different + * license is obtained from Japan Network Information Center ("JPNIC"), + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. + * + * 1. Use, Modification and Redistribution (including distribution of any + * modified or derived work) in source and/or binary forms is permitted + * under this License Terms and Conditions. + * + * 2. Redistribution of source code must retain the copyright notices as they + * appear in each source code file, this License Terms and Conditions. + * + * 3. Redistribution in binary form must reproduce the Copyright Notice, + * this License Terms and Conditions, in the documentation and/or other + * materials provided with the distribution. For the purposes of binary + * distribution the "Copyright Notice" refers to the following language: + * "Copyright (c) Japan Network Information Center. All rights reserved." + * + * 4. Neither the name of JPNIC may be used to endorse or promote products + * derived from this Software without specific prior written approval of + * JPNIC. + * + * 5. Disclaimer/Limitation of Liability: THIS SOFTWARE IS PROVIDED BY JPNIC + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A + * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JPNIC BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + * + * 6. Indemnification by Licensee + * Any person or entities using and/or redistributing this Software under + * this License Terms and Conditions shall defend indemnify and hold + * harmless JPNIC from and against any and all judgements damages, + * expenses, settlement liabilities, cost and other liabilities of any + * kind as a result of use and redistribution of this Software or any + * claim, suite, action, litigation or proceeding by any third party + * arising out of or relates to this License Terms and Conditions. + * + * 7. Governing Law, Jurisdiction and Venue + * This License Terms and Conditions shall be governed by and and + * construed in accordance with the law of Japan. Any person or entities + * using and/or redistributing this Software under this License Terms and + * Conditions hereby agrees and consent to the personal and exclusive + * jurisdiction and venue of Tokyo District Court of Japan. + */ + +#ifndef UNICODE_TEMPLATE_INIT +#define UNICODE_TEMPLATE_INIT + +/* + * Macro for multi-level index table. + */ +#define LOOKUPTBL(vprefix, mprefix, v) \ + DMAP(vprefix)[\ + IMAP(vprefix)[\ + IMAP(vprefix)[IDX0(mprefix, v)] + IDX1(mprefix, v)\ + ]\ + ].tbl[IDX2(mprefix, v)] + +#define IDX0(mprefix, v) IDX_0(v, BITS1(mprefix), BITS2(mprefix)) +#define IDX1(mprefix, v) IDX_1(v, BITS1(mprefix), BITS2(mprefix)) +#define IDX2(mprefix, v) IDX_2(v, BITS1(mprefix), BITS2(mprefix)) + +#define IDX_0(v, bits1, bits2) ((v) >> ((bits1) + (bits2))) +#define IDX_1(v, bits1, bits2) (((v) >> (bits2)) & ((1 << (bits1)) - 1)) +#define IDX_2(v, bits1, bits2) ((v) & ((1 << (bits2)) - 1)) + +#define BITS1(mprefix) mprefix ## _BITS_1 +#define BITS2(mprefix) mprefix ## _BITS_2 + +#define IMAP(vprefix) concat4(VERSION, _, vprefix, _imap) +#define DMAP(vprefix) concat4(VERSION, _, vprefix, _table) +#define SEQ(vprefix) concat4(VERSION, _, vprefix, _seq) +#define concat4(a,b,c,d) concat4X(a, b, c, d) +#define concat4X(a,b,c,d) a ## b ## c ## d + +#endif /* UNICODE_TEMPLATE_INIT */ + +static int +compose_sym(canonclass_, VERSION) (unsigned long c) { + /* Look up canonicalclass table. */ + return (LOOKUPTBL(canon_class, CANON_CLASS, c)); +} + +static int +compose_sym(decompose_, VERSION) (unsigned long c, const unsigned long **seqp) +{ + /* Look up decomposition table. */ + int seqidx = LOOKUPTBL(decompose, DECOMP, c); + *seqp = SEQ(decompose) + (seqidx & ~DECOMP_COMPAT); + return (seqidx); +} + +static int +compose_sym(compose_, VERSION) (unsigned long c, + const struct composition **compp) +{ + /* Look up composition table. */ + int seqidx = LOOKUPTBL(compose, CANON_COMPOSE, c); + *compp = SEQ(compose) + (seqidx & 0xffff); + return (seqidx >> 16); +} + +static int +compose_sym(toupper_, VERSION) (unsigned long c, const unsigned long **seqp) { + int seqidx = LOOKUPTBL(toupper, CASEMAP, c); + *seqp = SEQ(toupper) + seqidx; + return (seqidx); +} + +static int +compose_sym(tolower_, VERSION) (unsigned long c, const unsigned long **seqp) { + int seqidx = LOOKUPTBL(tolower, CASEMAP, c); + *seqp = SEQ(tolower) + seqidx; + return (seqidx); +} + +static int +compose_sym(casemapctx_, VERSION) (unsigned long c) { + return (LOOKUPTBL(casemap_ctx, CASEMAP_CTX, c)); +} + +static int +compose_sym(casefolding_, VERSION) (unsigned long c, + const unsigned long **seqp) +{ + int seqidx = LOOKUPTBL(case_folding, CASE_FOLDING, c); + *seqp = SEQ(case_folding) + seqidx; + return (seqidx); +} diff --git a/contrib/idn/mdnkit/lib/unicodedata.c b/contrib/idn/mdnkit/lib/unicodedata_301.c similarity index 99% rename from contrib/idn/mdnkit/lib/unicodedata.c rename to contrib/idn/mdnkit/lib/unicodedata_301.c index 54b33891231..56894fd7e4c 100644 --- a/contrib/idn/mdnkit/lib/unicodedata.c +++ b/contrib/idn/mdnkit/lib/unicodedata_301.c @@ -1,5 +1,5 @@ -/* $Id: unicodedata.c,v 1.8 2001/02/13 08:25:53 ishisone Exp $ */ -/* $-Id: generate_normalize_data.pl,v 1.5 2001/02/13 07:34:02 ishisone Exp -$ */ +/* $Id: unicodedata_301.c,v 1.1 2002/02/08 05:40:44 marka Exp $ */ +/* $-Id: generate_normalize_data.pl,v 1.7 2001/09/10 08:16:20 ishisone Exp -$ */ /* * Do not edit this file! * This file is generated from UnicodeData.txt, CompositionExclusions-1.txt, @@ -15,7 +15,7 @@ #define CANON_CLASS_BITS_1 7 #define CANON_CLASS_BITS_2 5 -static unsigned short canon_class_imap[] = { +static const unsigned short v301_canon_class_imap[] = { 272, 400, 528, 656, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 912, 784, 784, 784, 784, 784, 784, 784, 784, @@ -148,9 +148,9 @@ static unsigned short canon_class_imap[] = { 0, 0, 0, 0, 0, 0, 0, 0, }; -static struct { +static const struct { unsigned char tbl[32]; -} canon_class_table[] = { +} v301_canon_class_table[] = { {{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -356,7 +356,7 @@ static struct { #define CANON_COMPOSE_BITS_1 7 #define CANON_COMPOSE_BITS_2 5 -static unsigned short compose_imap[] = { +static const unsigned short v301_compose_imap[] = { 272, 400, 528, 656, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, @@ -473,9 +473,9 @@ static unsigned short compose_imap[] = { 0, 0, 0, 0, 0, 0, 0, 0, }; -static struct { +static const struct { unsigned long tbl[32]; -} compose_table[] = { +} v301_compose_table[] = { {{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -926,10 +926,7 @@ static struct { }}, }; -static struct composition { - unsigned long c2; /* 2nd character */ - unsigned long comp; /* composed character */ -} compose_seq[] = { +static const struct composition v301_compose_seq[] = { { 0x00000000, 0x00000000 }, { 0x00000338, 0x0000226e }, { 0x00000338, 0x00002260 }, { 0x00000338, 0x0000226f }, { 0x00000300, 0x000000c0 }, { 0x00000301, 0x000000c1 }, @@ -1402,7 +1399,7 @@ static struct composition { #define DECOMP_BITS_2 5 #define DECOMP_COMPAT 32768 -static unsigned short decompose_imap[] = { +static const unsigned short v301_decompose_imap[] = { 272, 400, 528, 656, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 912, 784, 784, 784, 784, 784, 784, 784, 784, @@ -1535,9 +1532,9 @@ static unsigned short decompose_imap[] = { 173, 174, 175, 176, 177, 178, 179, 180, }; -static struct { +static const struct { unsigned short tbl[32]; -} decompose_table[] = { +} v301_decompose_table[] = { {{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2625,7 +2622,7 @@ static struct { 0, 0, 0, 0, 0, 0, 0, 0, }}, }; -static unsigned long decompose_seq[] = { +static const unsigned long v301_decompose_seq[] = { 0x00000000, 0x80000020, 0x00000020, 0x80000308, 0x80000061, 0x00000020, 0x80000304, 0x80000032, 0x80000033, 0x00000020, 0x80000301, 0x800003bc, @@ -4159,7 +4156,7 @@ static unsigned long decompose_seq[] = { #define CASEMAP_BITS_1 7 #define CASEMAP_BITS_2 5 -static unsigned short toupper_imap[] = { +static const unsigned short v301_toupper_imap[] = { 272, 400, 528, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 784, 656, 656, 656, 656, 656, 656, 656, 656, @@ -4276,9 +4273,9 @@ static unsigned short toupper_imap[] = { 0, 0, 52, 0, 0, 0, 0, 0, }; -static struct { +static const struct { unsigned short tbl[32]; -} toupper_table[] = { +} v301_toupper_table[] = { {{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -4545,7 +4542,7 @@ static struct { 1725, 1727, 1729, 1731, 1733, 0, 0, 0, 0, 0, }}, }; -static unsigned short tolower_imap[] = { +static const unsigned short v301_tolower_imap[] = { 272, 400, 528, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 784, 656, 656, 656, 656, 656, 656, 656, 656, @@ -4662,9 +4659,9 @@ static unsigned short tolower_imap[] = { 0, 46, 0, 0, 0, 0, 0, 0, }; -static struct { +static const struct { unsigned short tbl[32]; -} tolower_table[] = { +} v301_tolower_table[] = { {{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -4901,7 +4898,7 @@ static struct { 1439, 1441, 1443, 1445, 1447, 0, 0, 0, 0, 0, }}, }; -static unsigned long toupper_seq[] = { +static const unsigned long v301_toupper_seq[] = { 0x00000000, 0x00000010, 0x80000041, 0x00000010, 0x80000042, 0x00000010, 0x80000043, 0x00000010, 0x80000044, 0x00000010, 0x80000045, 0x00000010, @@ -5338,7 +5335,7 @@ static unsigned long toupper_seq[] = { 0x8000ff39, 0x00000010, 0x8000ff3a, }; -static unsigned long tolower_seq[] = { +static const unsigned long v301_tolower_seq[] = { 0x00000000, 0x00000010, 0x80000061, 0x00000010, 0x80000062, 0x00000010, 0x80000063, 0x00000010, 0x80000064, 0x00000010, 0x80000065, 0x00000010, @@ -5716,7 +5713,7 @@ static unsigned long tolower_seq[] = { #define CTX_CASED 1 #define CTX_NSM 2 -static unsigned short casemap_ctx_imap[] = { +static const unsigned short v301_casemap_ctx_imap[] = { 272, 400, 528, 656, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 912, 784, 784, 784, 784, 784, 784, 784, 784, @@ -5849,9 +5846,9 @@ static unsigned short casemap_ctx_imap[] = { 0, 1, 1, 0, 0, 0, 0, 0, }; -static struct { +static const struct { unsigned char tbl[32]; -} casemap_ctx_table[] = { +} v301_casemap_ctx_table[] = { {{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -6198,7 +6195,7 @@ static struct { #define CASE_FOLDING_BITS_1 7 #define CASE_FOLDING_BITS_2 5 -static unsigned short case_folding_imap[] = { +static const unsigned short v301_case_folding_imap[] = { 272, 400, 528, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 784, 656, 656, 656, 656, 656, 656, 656, 656, @@ -6315,9 +6312,9 @@ static unsigned short case_folding_imap[] = { 0, 50, 0, 0, 0, 0, 0, 0, }; -static struct { +static const struct { unsigned short tbl[32]; -} case_folding_table[] = { +} v301_case_folding_table[] = { {{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -6574,7 +6571,7 @@ static struct { 900, 901, 902, 903, 904, 0, 0, 0, 0, 0, }}, }; -static unsigned long case_folding_seq[] = { +static const unsigned long v301_case_folding_seq[] = { 0x00000000, 0x80000061, 0x80000062, 0x80000063, 0x80000064, 0x80000065, 0x80000066, 0x80000067, 0x80000068, 0x80000069, 0x8000006a, 0x8000006b, diff --git a/contrib/idn/mdnkit/lib/unicodedata_310.c b/contrib/idn/mdnkit/lib/unicodedata_310.c new file mode 100644 index 00000000000..a86e795f6ee --- /dev/null +++ b/contrib/idn/mdnkit/lib/unicodedata_310.c @@ -0,0 +1,7796 @@ +/* $Id: unicodedata_310.c,v 1.1 2002/02/08 05:40:44 marka Exp $ */ +/* $-Id: generate_normalize_data.pl,v 1.7 2001/09/10 08:16:20 ishisone Exp -$ */ +/* + * Do not edit this file! + * This file is generated from UnicodeData.txt, CompositionExclusions-1.txt, + * SpecialCasing.txt and CaseFolding.txt. + */ + + +/* + * Canonical Class + */ + +#define CANON_CLASS_BITS_0 9 +#define CANON_CLASS_BITS_1 7 +#define CANON_CLASS_BITS_2 5 + +static const unsigned short v310_canon_class_imap[] = { + 272, 400, 528, 656, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 912, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 1040, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 1, 2, 3, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 5, 0, 0, 0, + 0, 0, 0, 0, 6, 7, 8, 0, + 0, 0, 9, 10, 0, 0, 11, 12, + 13, 14, 15, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 16, 17, 0, 0, 16, 18, 0, + 0, 16, 18, 0, 0, 16, 18, 0, + 0, 16, 18, 0, 0, 0, 18, 0, + 0, 0, 19, 0, 0, 0, 18, 0, + 0, 0, 18, 0, 0, 0, 20, 0, + 0, 21, 22, 0, 0, 23, 24, 0, + 25, 26, 0, 27, 28, 0, 29, 0, + 0, 30, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 31, 0, + 0, 0, 0, 0, 0, 32, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 33, 34, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 35, 0, 0, 36, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 37, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 38, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 39, 40, 41, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, +}; + +static const struct { + unsigned char tbl[32]; +} v310_canon_class_table[] = { + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, + 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 232, + 220, 220, 220, 220, 232, 216, 220, 220, 220, 220, + }}, + {{ + 220, 202, 202, 220, 220, 220, 220, 202, 202, 220, 220, + 220, 220, 220, 220, 220, 220, 220, 220, 220, 1, 1, + 1, 1, 1, 220, 220, 220, 220, 230, 230, 230, + }}, + {{ + 230, 230, 230, 230, 230, 240, 230, 220, 220, 220, 230, + 230, 230, 220, 220, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 234, 234, 233, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 230, 230, 230, 230, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 220, 230, 230, 230, 230, + 220, 230, 230, 230, 222, 220, 230, 230, 230, 230, + }}, + {{ + 230, 230, 0, 220, 220, 220, 220, 220, 230, 230, 220, + 230, 230, 222, 228, 230, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 0, 20, 21, 22, 0, 23, + }}, + {{ + 0, 24, 25, 0, 230, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 27, 28, 29, 30, 31, 32, 33, 34, 230, 230, 220, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 230, 230, 230, 230, 230, 230, 230, 0, 0, 230, + }}, + {{ + 230, 230, 230, 220, 230, 0, 0, 230, 230, 0, 220, + 230, 230, 220, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 230, 220, 230, 230, 220, 230, + 230, 220, 220, 220, 230, 220, 220, 230, 220, 230, + }}, + {{ + 230, 230, 220, 230, 220, 230, 220, 230, 220, 230, 230, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 9, 0, 0, 0, 230, 220, 230, 230, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 84, + 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 103, 103, 9, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 107, 107, 107, + 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 118, 118, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 122, 122, 122, + 122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 220, 220, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 220, + 0, 220, 0, 216, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 129, 130, 0, 132, 0, + 0, 0, 0, 0, 130, 130, 130, 130, 0, 0, + }}, + {{ + 130, 0, 230, 230, 9, 0, 230, 230, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 220, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 7, 0, 9, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 230, 230, 1, 1, 230, 230, + 230, 230, 1, 1, 1, 230, 230, 0, 0, 0, + }}, + {{ + 0, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 218, + 228, 232, 222, 224, 224, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, + }}, + {{ + 230, 230, 230, 230, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 216, 216, 1, 1, 1, 0, + 0, 0, 226, 216, 216, 216, 216, 216, 0, 0, 0, + 0, 0, 0, 0, 0, 220, 220, 220, 220, 220, + }}, + {{ + 220, 220, 220, 0, 0, 230, 230, 230, 230, 230, 220, + 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, + 230, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, +}; + +/* + * Canonical Composition + */ + +#define CANON_COMPOSE_BITS_0 9 +#define CANON_COMPOSE_BITS_1 7 +#define CANON_COMPOSE_BITS_2 5 + +static const unsigned short v310_compose_imap[] = { + 272, 400, 528, 656, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 0, 1, 2, 3, 0, 4, 5, 6, + 7, 0, 8, 9, 0, 10, 0, 11, + 0, 12, 0, 0, 13, 0, 0, 0, + 0, 0, 0, 0, 14, 15, 16, 0, + 17, 18, 19, 20, 0, 0, 21, 22, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 23, 24, 0, 0, 0, 25, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 26, 0, 0, 0, 0, 27, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 28, 0, 29, 0, 30, 0, + 0, 0, 31, 0, 0, 32, 33, 0, + 0, 0, 34, 0, 0, 0, 35, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 36, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 37, 38, 39, 0, 40, 41, 0, + 42, 43, 44, 45, 0, 46, 47, 48, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 49, 0, 50, 0, + 51, 52, 53, 54, 55, 56, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 57, 58, 59, 60, 61, 62, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, +}; + +static const struct { + unsigned long tbl[32]; +} v310_compose_table[] = { + {{ + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 65537, 65538, 65539, 0, + }}, + {{ + 0, 1048580, 196628, 327703, 393244, 1114146, 65587, + 458804, 458811, 983106, 65617, 327762, 393303, 196701, + 589920, 1048681, 131193, 0, 524411, 458883, 458890, + 1245329, 131236, 393382, 131244, 589998, 393399, 0, + 0, 0, 0, 0, + }}, + {{ + 0, 1048765, 196813, 327888, 393429, 1114331, 65772, + 458989, 524532, 917756, 131338, 327948, 393489, 196887, + 590106, 1048867, 131379, 0, 524597, 459069, 524612, + 1245516, 131423, 459105, 131432, 655722, 393588, 0, + 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, + 0, 196986, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, + }}, + {{ + 0, 0, 262525, 0, 65921, 65922, 131459, + 65925, 0, 0, 262534, 0, 0, 0, + 0, 65930, 0, 0, 0, 0, 262539, + 197007, 65938, 0, 65939, 0, 0, 0, + 262548, 0, 0, 0, + }}, + {{ + 0, 0, 262552, 0, 65948, 65949, 131486, + 65952, 0, 0, 262561, 0, 0, 0, + 0, 65957, 0, 0, 0, 0, 262566, + 197034, 65965, 0, 65966, 0, 0, 0, + 262575, 0, 0, 0, + }}, + {{ + 0, 0, 262579, 262583, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 131515, 131517, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 131519, 131521, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 65987, 65988, + 0, 0, 0, 0, + }}, + {{ + 65989, 65990, 0, 0, 0, 0, 0, + 0, 65991, 65992, 65993, 65994, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 65995, + }}, + {{ + 328140, 328145, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 328150, 328155, 0, 0, 0, 0, + 0, 0, 66016, 0, 0, 0, 0, + 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 66017, 66018, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 66019, + 66020, 66021, 66022, 0, 0, 0, 0, + 66023, 66024, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 66025, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 459242, 0, 0, 0, + 262641, 0, 328181, 0, 459258, 0, 0, + 0, 0, 0, 262657, + }}, + {{ + 0, 66053, 0, 0, 0, 393734, 0, + 0, 0, 328204, 0, 0, 66065, 0, + 66066, 0, 0, 524819, 0, 0, 0, + 262683, 0, 393759, 0, 524837, 0, 0, + 0, 0, 0, 262701, + }}, + {{ + 0, 131633, 0, 0, 0, 524851, 0, + 0, 0, 393787, 197185, 197188, 0, 0, + 66119, 0, 0, 0, 131656, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 66122, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 131659, 0, 0, 66125, 0, + 197198, 131665, 66131, 262740, 0, 66136, 0, + 0, 0, 66137, 0, + }}, + {{ + 0, 0, 0, 262746, 0, 0, 0, + 66142, 0, 0, 0, 66143, 0, 66144, + 0, 0, 131681, 0, 0, 66147, 0, + 197220, 131687, 66153, 262762, 0, 66158, 0, + 0, 0, 66159, 0, + }}, + {{ + 0, 0, 0, 262768, 0, 0, 0, + 66164, 0, 0, 0, 66165, 0, 66166, + 0, 0, 0, 0, 0, 0, 0, + 0, 66167, 0, 0, 0, 0, 0, + 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 66168, + 66169, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 66170, 66171, 0, 0, + 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, + 0, 66172, 66173, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, + 197246, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, + 0, 66177, 0, 66178, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, + }}, + {{ + 0, 66179, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 66180, 0, 0, + 66181, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, + 0, 66182, 0, 0, 0, 0, 0, + 0, 0, 66183, 0, 0, 66184, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, + 131721, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, + 197259, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 66190, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 131727, + 66193, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 66194, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 66195, + }}, + {{ + 0, 0, 0, 0, 0, 0, 197268, + 0, 0, 0, 66199, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 131736, + 66202, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 197275, 0, 0, + 66206, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 66207, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 66208, 66209, 0, 0, 0, 0, + 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 66210, 66211, + 0, 0, 0, 0, + }}, + {{ + 0, 0, 66212, 66213, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, + }}, + {{ + 131750, 131752, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 66218, 66219, 0, 0, + 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 66220, 66221, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, + }}, + {{ + 262830, 262834, 66230, 66231, 66232, 66233, 66234, + 66235, 262844, 262848, 66244, 66245, 66246, 66247, + 66248, 66249, 131786, 131788, 0, 0, 0, + 0, 0, 0, 131790, 131792, 0, 0, + 0, 0, 0, 0, + }}, + {{ + 262866, 262870, 66266, 66267, 66268, 66269, 66270, + 66271, 262880, 262884, 66280, 66281, 66282, 66283, + 66284, 66285, 197358, 197361, 0, 0, 0, + 0, 0, 0, 197364, 197367, 0, 0, + 0, 0, 0, 0, + }}, + {{ + 131834, 131836, 0, 0, 0, 0, 0, + 0, 131838, 131840, 0, 0, 0, 0, + 0, 0, 197378, 197381, 0, 0, 0, + 0, 0, 0, 0, 197384, 0, 0, + 0, 0, 0, 0, + }}, + {{ + 262923, 262927, 66323, 66324, 66325, 66326, 66327, + 66328, 262937, 262941, 66337, 66338, 66339, 66340, + 66341, 66342, 66343, 0, 0, 0, 66344, + 0, 0, 0, 0, 0, 0, 0, + 66345, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 66346, 0, 0, 0, 0, 0, + 0, 0, 0, 197419, + }}, + {{ + 0, 0, 0, 0, 0, 0, 66350, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 66351, 0, 0, 0, 0, 0, + 0, 0, 197424, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 66355, 0, 66356, 0, 66357, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 66358, 0, 66359, 0, 66360, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 66361, 0, 0, 0, + 0, 66362, 0, 0, 66363, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 66364, 0, 66365, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 66366, 0, 0, 0, + }}, + {{ + 0, 0, 0, 66367, 0, 66368, 0, + 0, 66369, 0, 0, 0, 0, 66370, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, + }}, + {{ + 0, 66371, 0, 0, 66372, 66373, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 66374, 66375, 0, + 0, 66376, 66377, 0, 0, 66378, 66379, + 66380, 66381, 0, 0, + }}, + {{ + 0, 0, 66382, 66383, 0, 0, 66384, + 66385, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 66386, 66387, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, + }}, + {{ + 0, 0, 66388, 0, 0, 0, 0, + 0, 66389, 66390, 0, 66391, 0, 0, + 0, 0, 0, 0, 66392, 66393, 66394, + 66395, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 66396, + 0, 0, 0, 0, 66397, 0, 66398, + 0, 66399, 0, 66400, 0, 66401, 0, + 66402, 0, 66403, 0, 66404, 0, 66405, + 0, 66406, 0, 66407, + }}, + {{ + 0, 66408, 0, 0, 66409, 0, 66410, + 0, 66411, 0, 0, 0, 0, 0, + 0, 131948, 0, 0, 131950, 0, 0, + 131952, 0, 0, 131954, 0, 0, 131956, + 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 66422, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 66423, + 0, 0, 0, 0, 66424, 0, 66425, + 0, 66426, 0, 66427, 0, 66428, 0, + 66429, 0, 66430, 0, 66431, 0, 66432, + 0, 66433, 0, 66434, + }}, + {{ + 0, 66435, 0, 0, 66436, 0, 66437, + 0, 66438, 0, 0, 0, 0, 0, + 0, 131975, 0, 0, 131977, 0, 0, + 131979, 0, 0, 131981, 0, 0, 131983, + 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 66449, 66450, 66451, 66452, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 66453, 0, 0, + }}, +}; + +static const struct composition v310_compose_seq[] = { + { 0x00000000, 0x00000000 }, { 0x00000338, 0x0000226e }, + { 0x00000338, 0x00002260 }, { 0x00000338, 0x0000226f }, + { 0x00000300, 0x000000c0 }, { 0x00000301, 0x000000c1 }, + { 0x00000302, 0x000000c2 }, { 0x00000303, 0x000000c3 }, + { 0x00000304, 0x00000100 }, { 0x00000306, 0x00000102 }, + { 0x00000307, 0x00000226 }, { 0x00000308, 0x000000c4 }, + { 0x00000309, 0x00001ea2 }, { 0x0000030a, 0x000000c5 }, + { 0x0000030c, 0x000001cd }, { 0x0000030f, 0x00000200 }, + { 0x00000311, 0x00000202 }, { 0x00000323, 0x00001ea0 }, + { 0x00000325, 0x00001e00 }, { 0x00000328, 0x00000104 }, + { 0x00000307, 0x00001e02 }, { 0x00000323, 0x00001e04 }, + { 0x00000331, 0x00001e06 }, { 0x00000301, 0x00000106 }, + { 0x00000302, 0x00000108 }, { 0x00000307, 0x0000010a }, + { 0x0000030c, 0x0000010c }, { 0x00000327, 0x000000c7 }, + { 0x00000307, 0x00001e0a }, { 0x0000030c, 0x0000010e }, + { 0x00000323, 0x00001e0c }, { 0x00000327, 0x00001e10 }, + { 0x0000032d, 0x00001e12 }, { 0x00000331, 0x00001e0e }, + { 0x00000300, 0x000000c8 }, { 0x00000301, 0x000000c9 }, + { 0x00000302, 0x000000ca }, { 0x00000303, 0x00001ebc }, + { 0x00000304, 0x00000112 }, { 0x00000306, 0x00000114 }, + { 0x00000307, 0x00000116 }, { 0x00000308, 0x000000cb }, + { 0x00000309, 0x00001eba }, { 0x0000030c, 0x0000011a }, + { 0x0000030f, 0x00000204 }, { 0x00000311, 0x00000206 }, + { 0x00000323, 0x00001eb8 }, { 0x00000327, 0x00000228 }, + { 0x00000328, 0x00000118 }, { 0x0000032d, 0x00001e18 }, + { 0x00000330, 0x00001e1a }, { 0x00000307, 0x00001e1e }, + { 0x00000301, 0x000001f4 }, { 0x00000302, 0x0000011c }, + { 0x00000304, 0x00001e20 }, { 0x00000306, 0x0000011e }, + { 0x00000307, 0x00000120 }, { 0x0000030c, 0x000001e6 }, + { 0x00000327, 0x00000122 }, { 0x00000302, 0x00000124 }, + { 0x00000307, 0x00001e22 }, { 0x00000308, 0x00001e26 }, + { 0x0000030c, 0x0000021e }, { 0x00000323, 0x00001e24 }, + { 0x00000327, 0x00001e28 }, { 0x0000032e, 0x00001e2a }, + { 0x00000300, 0x000000cc }, { 0x00000301, 0x000000cd }, + { 0x00000302, 0x000000ce }, { 0x00000303, 0x00000128 }, + { 0x00000304, 0x0000012a }, { 0x00000306, 0x0000012c }, + { 0x00000307, 0x00000130 }, { 0x00000308, 0x000000cf }, + { 0x00000309, 0x00001ec8 }, { 0x0000030c, 0x000001cf }, + { 0x0000030f, 0x00000208 }, { 0x00000311, 0x0000020a }, + { 0x00000323, 0x00001eca }, { 0x00000328, 0x0000012e }, + { 0x00000330, 0x00001e2c }, { 0x00000302, 0x00000134 }, + { 0x00000301, 0x00001e30 }, { 0x0000030c, 0x000001e8 }, + { 0x00000323, 0x00001e32 }, { 0x00000327, 0x00000136 }, + { 0x00000331, 0x00001e34 }, { 0x00000301, 0x00000139 }, + { 0x0000030c, 0x0000013d }, { 0x00000323, 0x00001e36 }, + { 0x00000327, 0x0000013b }, { 0x0000032d, 0x00001e3c }, + { 0x00000331, 0x00001e3a }, { 0x00000301, 0x00001e3e }, + { 0x00000307, 0x00001e40 }, { 0x00000323, 0x00001e42 }, + { 0x00000300, 0x000001f8 }, { 0x00000301, 0x00000143 }, + { 0x00000303, 0x000000d1 }, { 0x00000307, 0x00001e44 }, + { 0x0000030c, 0x00000147 }, { 0x00000323, 0x00001e46 }, + { 0x00000327, 0x00000145 }, { 0x0000032d, 0x00001e4a }, + { 0x00000331, 0x00001e48 }, { 0x00000300, 0x000000d2 }, + { 0x00000301, 0x000000d3 }, { 0x00000302, 0x000000d4 }, + { 0x00000303, 0x000000d5 }, { 0x00000304, 0x0000014c }, + { 0x00000306, 0x0000014e }, { 0x00000307, 0x0000022e }, + { 0x00000308, 0x000000d6 }, { 0x00000309, 0x00001ece }, + { 0x0000030b, 0x00000150 }, { 0x0000030c, 0x000001d1 }, + { 0x0000030f, 0x0000020c }, { 0x00000311, 0x0000020e }, + { 0x0000031b, 0x000001a0 }, { 0x00000323, 0x00001ecc }, + { 0x00000328, 0x000001ea }, { 0x00000301, 0x00001e54 }, + { 0x00000307, 0x00001e56 }, { 0x00000301, 0x00000154 }, + { 0x00000307, 0x00001e58 }, { 0x0000030c, 0x00000158 }, + { 0x0000030f, 0x00000210 }, { 0x00000311, 0x00000212 }, + { 0x00000323, 0x00001e5a }, { 0x00000327, 0x00000156 }, + { 0x00000331, 0x00001e5e }, { 0x00000301, 0x0000015a }, + { 0x00000302, 0x0000015c }, { 0x00000307, 0x00001e60 }, + { 0x0000030c, 0x00000160 }, { 0x00000323, 0x00001e62 }, + { 0x00000326, 0x00000218 }, { 0x00000327, 0x0000015e }, + { 0x00000307, 0x00001e6a }, { 0x0000030c, 0x00000164 }, + { 0x00000323, 0x00001e6c }, { 0x00000326, 0x0000021a }, + { 0x00000327, 0x00000162 }, { 0x0000032d, 0x00001e70 }, + { 0x00000331, 0x00001e6e }, { 0x00000300, 0x000000d9 }, + { 0x00000301, 0x000000da }, { 0x00000302, 0x000000db }, + { 0x00000303, 0x00000168 }, { 0x00000304, 0x0000016a }, + { 0x00000306, 0x0000016c }, { 0x00000308, 0x000000dc }, + { 0x00000309, 0x00001ee6 }, { 0x0000030a, 0x0000016e }, + { 0x0000030b, 0x00000170 }, { 0x0000030c, 0x000001d3 }, + { 0x0000030f, 0x00000214 }, { 0x00000311, 0x00000216 }, + { 0x0000031b, 0x000001af }, { 0x00000323, 0x00001ee4 }, + { 0x00000324, 0x00001e72 }, { 0x00000328, 0x00000172 }, + { 0x0000032d, 0x00001e76 }, { 0x00000330, 0x00001e74 }, + { 0x00000303, 0x00001e7c }, { 0x00000323, 0x00001e7e }, + { 0x00000300, 0x00001e80 }, { 0x00000301, 0x00001e82 }, + { 0x00000302, 0x00000174 }, { 0x00000307, 0x00001e86 }, + { 0x00000308, 0x00001e84 }, { 0x00000323, 0x00001e88 }, + { 0x00000307, 0x00001e8a }, { 0x00000308, 0x00001e8c }, + { 0x00000300, 0x00001ef2 }, { 0x00000301, 0x000000dd }, + { 0x00000302, 0x00000176 }, { 0x00000303, 0x00001ef8 }, + { 0x00000304, 0x00000232 }, { 0x00000307, 0x00001e8e }, + { 0x00000308, 0x00000178 }, { 0x00000309, 0x00001ef6 }, + { 0x00000323, 0x00001ef4 }, { 0x00000301, 0x00000179 }, + { 0x00000302, 0x00001e90 }, { 0x00000307, 0x0000017b }, + { 0x0000030c, 0x0000017d }, { 0x00000323, 0x00001e92 }, + { 0x00000331, 0x00001e94 }, { 0x00000300, 0x000000e0 }, + { 0x00000301, 0x000000e1 }, { 0x00000302, 0x000000e2 }, + { 0x00000303, 0x000000e3 }, { 0x00000304, 0x00000101 }, + { 0x00000306, 0x00000103 }, { 0x00000307, 0x00000227 }, + { 0x00000308, 0x000000e4 }, { 0x00000309, 0x00001ea3 }, + { 0x0000030a, 0x000000e5 }, { 0x0000030c, 0x000001ce }, + { 0x0000030f, 0x00000201 }, { 0x00000311, 0x00000203 }, + { 0x00000323, 0x00001ea1 }, { 0x00000325, 0x00001e01 }, + { 0x00000328, 0x00000105 }, { 0x00000307, 0x00001e03 }, + { 0x00000323, 0x00001e05 }, { 0x00000331, 0x00001e07 }, + { 0x00000301, 0x00000107 }, { 0x00000302, 0x00000109 }, + { 0x00000307, 0x0000010b }, { 0x0000030c, 0x0000010d }, + { 0x00000327, 0x000000e7 }, { 0x00000307, 0x00001e0b }, + { 0x0000030c, 0x0000010f }, { 0x00000323, 0x00001e0d }, + { 0x00000327, 0x00001e11 }, { 0x0000032d, 0x00001e13 }, + { 0x00000331, 0x00001e0f }, { 0x00000300, 0x000000e8 }, + { 0x00000301, 0x000000e9 }, { 0x00000302, 0x000000ea }, + { 0x00000303, 0x00001ebd }, { 0x00000304, 0x00000113 }, + { 0x00000306, 0x00000115 }, { 0x00000307, 0x00000117 }, + { 0x00000308, 0x000000eb }, { 0x00000309, 0x00001ebb }, + { 0x0000030c, 0x0000011b }, { 0x0000030f, 0x00000205 }, + { 0x00000311, 0x00000207 }, { 0x00000323, 0x00001eb9 }, + { 0x00000327, 0x00000229 }, { 0x00000328, 0x00000119 }, + { 0x0000032d, 0x00001e19 }, { 0x00000330, 0x00001e1b }, + { 0x00000307, 0x00001e1f }, { 0x00000301, 0x000001f5 }, + { 0x00000302, 0x0000011d }, { 0x00000304, 0x00001e21 }, + { 0x00000306, 0x0000011f }, { 0x00000307, 0x00000121 }, + { 0x0000030c, 0x000001e7 }, { 0x00000327, 0x00000123 }, + { 0x00000302, 0x00000125 }, { 0x00000307, 0x00001e23 }, + { 0x00000308, 0x00001e27 }, { 0x0000030c, 0x0000021f }, + { 0x00000323, 0x00001e25 }, { 0x00000327, 0x00001e29 }, + { 0x0000032e, 0x00001e2b }, { 0x00000331, 0x00001e96 }, + { 0x00000300, 0x000000ec }, { 0x00000301, 0x000000ed }, + { 0x00000302, 0x000000ee }, { 0x00000303, 0x00000129 }, + { 0x00000304, 0x0000012b }, { 0x00000306, 0x0000012d }, + { 0x00000308, 0x000000ef }, { 0x00000309, 0x00001ec9 }, + { 0x0000030c, 0x000001d0 }, { 0x0000030f, 0x00000209 }, + { 0x00000311, 0x0000020b }, { 0x00000323, 0x00001ecb }, + { 0x00000328, 0x0000012f }, { 0x00000330, 0x00001e2d }, + { 0x00000302, 0x00000135 }, { 0x0000030c, 0x000001f0 }, + { 0x00000301, 0x00001e31 }, { 0x0000030c, 0x000001e9 }, + { 0x00000323, 0x00001e33 }, { 0x00000327, 0x00000137 }, + { 0x00000331, 0x00001e35 }, { 0x00000301, 0x0000013a }, + { 0x0000030c, 0x0000013e }, { 0x00000323, 0x00001e37 }, + { 0x00000327, 0x0000013c }, { 0x0000032d, 0x00001e3d }, + { 0x00000331, 0x00001e3b }, { 0x00000301, 0x00001e3f }, + { 0x00000307, 0x00001e41 }, { 0x00000323, 0x00001e43 }, + { 0x00000300, 0x000001f9 }, { 0x00000301, 0x00000144 }, + { 0x00000303, 0x000000f1 }, { 0x00000307, 0x00001e45 }, + { 0x0000030c, 0x00000148 }, { 0x00000323, 0x00001e47 }, + { 0x00000327, 0x00000146 }, { 0x0000032d, 0x00001e4b }, + { 0x00000331, 0x00001e49 }, { 0x00000300, 0x000000f2 }, + { 0x00000301, 0x000000f3 }, { 0x00000302, 0x000000f4 }, + { 0x00000303, 0x000000f5 }, { 0x00000304, 0x0000014d }, + { 0x00000306, 0x0000014f }, { 0x00000307, 0x0000022f }, + { 0x00000308, 0x000000f6 }, { 0x00000309, 0x00001ecf }, + { 0x0000030b, 0x00000151 }, { 0x0000030c, 0x000001d2 }, + { 0x0000030f, 0x0000020d }, { 0x00000311, 0x0000020f }, + { 0x0000031b, 0x000001a1 }, { 0x00000323, 0x00001ecd }, + { 0x00000328, 0x000001eb }, { 0x00000301, 0x00001e55 }, + { 0x00000307, 0x00001e57 }, { 0x00000301, 0x00000155 }, + { 0x00000307, 0x00001e59 }, { 0x0000030c, 0x00000159 }, + { 0x0000030f, 0x00000211 }, { 0x00000311, 0x00000213 }, + { 0x00000323, 0x00001e5b }, { 0x00000327, 0x00000157 }, + { 0x00000331, 0x00001e5f }, { 0x00000301, 0x0000015b }, + { 0x00000302, 0x0000015d }, { 0x00000307, 0x00001e61 }, + { 0x0000030c, 0x00000161 }, { 0x00000323, 0x00001e63 }, + { 0x00000326, 0x00000219 }, { 0x00000327, 0x0000015f }, + { 0x00000307, 0x00001e6b }, { 0x00000308, 0x00001e97 }, + { 0x0000030c, 0x00000165 }, { 0x00000323, 0x00001e6d }, + { 0x00000326, 0x0000021b }, { 0x00000327, 0x00000163 }, + { 0x0000032d, 0x00001e71 }, { 0x00000331, 0x00001e6f }, + { 0x00000300, 0x000000f9 }, { 0x00000301, 0x000000fa }, + { 0x00000302, 0x000000fb }, { 0x00000303, 0x00000169 }, + { 0x00000304, 0x0000016b }, { 0x00000306, 0x0000016d }, + { 0x00000308, 0x000000fc }, { 0x00000309, 0x00001ee7 }, + { 0x0000030a, 0x0000016f }, { 0x0000030b, 0x00000171 }, + { 0x0000030c, 0x000001d4 }, { 0x0000030f, 0x00000215 }, + { 0x00000311, 0x00000217 }, { 0x0000031b, 0x000001b0 }, + { 0x00000323, 0x00001ee5 }, { 0x00000324, 0x00001e73 }, + { 0x00000328, 0x00000173 }, { 0x0000032d, 0x00001e77 }, + { 0x00000330, 0x00001e75 }, { 0x00000303, 0x00001e7d }, + { 0x00000323, 0x00001e7f }, { 0x00000300, 0x00001e81 }, + { 0x00000301, 0x00001e83 }, { 0x00000302, 0x00000175 }, + { 0x00000307, 0x00001e87 }, { 0x00000308, 0x00001e85 }, + { 0x0000030a, 0x00001e98 }, { 0x00000323, 0x00001e89 }, + { 0x00000307, 0x00001e8b }, { 0x00000308, 0x00001e8d }, + { 0x00000300, 0x00001ef3 }, { 0x00000301, 0x000000fd }, + { 0x00000302, 0x00000177 }, { 0x00000303, 0x00001ef9 }, + { 0x00000304, 0x00000233 }, { 0x00000307, 0x00001e8f }, + { 0x00000308, 0x000000ff }, { 0x00000309, 0x00001ef7 }, + { 0x0000030a, 0x00001e99 }, { 0x00000323, 0x00001ef5 }, + { 0x00000301, 0x0000017a }, { 0x00000302, 0x00001e91 }, + { 0x00000307, 0x0000017c }, { 0x0000030c, 0x0000017e }, + { 0x00000323, 0x00001e93 }, { 0x00000331, 0x00001e95 }, + { 0x00000300, 0x00001fed }, { 0x00000301, 0x00000385 }, + { 0x00000342, 0x00001fc1 }, { 0x00000300, 0x00001ea6 }, + { 0x00000301, 0x00001ea4 }, { 0x00000303, 0x00001eaa }, + { 0x00000309, 0x00001ea8 }, { 0x00000304, 0x000001de }, + { 0x00000301, 0x000001fa }, { 0x00000301, 0x000001fc }, + { 0x00000304, 0x000001e2 }, { 0x00000301, 0x00001e08 }, + { 0x00000300, 0x00001ec0 }, { 0x00000301, 0x00001ebe }, + { 0x00000303, 0x00001ec4 }, { 0x00000309, 0x00001ec2 }, + { 0x00000301, 0x00001e2e }, { 0x00000300, 0x00001ed2 }, + { 0x00000301, 0x00001ed0 }, { 0x00000303, 0x00001ed6 }, + { 0x00000309, 0x00001ed4 }, { 0x00000301, 0x00001e4c }, + { 0x00000304, 0x0000022c }, { 0x00000308, 0x00001e4e }, + { 0x00000304, 0x0000022a }, { 0x00000301, 0x000001fe }, + { 0x00000300, 0x000001db }, { 0x00000301, 0x000001d7 }, + { 0x00000304, 0x000001d5 }, { 0x0000030c, 0x000001d9 }, + { 0x00000300, 0x00001ea7 }, { 0x00000301, 0x00001ea5 }, + { 0x00000303, 0x00001eab }, { 0x00000309, 0x00001ea9 }, + { 0x00000304, 0x000001df }, { 0x00000301, 0x000001fb }, + { 0x00000301, 0x000001fd }, { 0x00000304, 0x000001e3 }, + { 0x00000301, 0x00001e09 }, { 0x00000300, 0x00001ec1 }, + { 0x00000301, 0x00001ebf }, { 0x00000303, 0x00001ec5 }, + { 0x00000309, 0x00001ec3 }, { 0x00000301, 0x00001e2f }, + { 0x00000300, 0x00001ed3 }, { 0x00000301, 0x00001ed1 }, + { 0x00000303, 0x00001ed7 }, { 0x00000309, 0x00001ed5 }, + { 0x00000301, 0x00001e4d }, { 0x00000304, 0x0000022d }, + { 0x00000308, 0x00001e4f }, { 0x00000304, 0x0000022b }, + { 0x00000301, 0x000001ff }, { 0x00000300, 0x000001dc }, + { 0x00000301, 0x000001d8 }, { 0x00000304, 0x000001d6 }, + { 0x0000030c, 0x000001da }, { 0x00000300, 0x00001eb0 }, + { 0x00000301, 0x00001eae }, { 0x00000303, 0x00001eb4 }, + { 0x00000309, 0x00001eb2 }, { 0x00000300, 0x00001eb1 }, + { 0x00000301, 0x00001eaf }, { 0x00000303, 0x00001eb5 }, + { 0x00000309, 0x00001eb3 }, { 0x00000300, 0x00001e14 }, + { 0x00000301, 0x00001e16 }, { 0x00000300, 0x00001e15 }, + { 0x00000301, 0x00001e17 }, { 0x00000300, 0x00001e50 }, + { 0x00000301, 0x00001e52 }, { 0x00000300, 0x00001e51 }, + { 0x00000301, 0x00001e53 }, { 0x00000307, 0x00001e64 }, + { 0x00000307, 0x00001e65 }, { 0x00000307, 0x00001e66 }, + { 0x00000307, 0x00001e67 }, { 0x00000301, 0x00001e78 }, + { 0x00000301, 0x00001e79 }, { 0x00000308, 0x00001e7a }, + { 0x00000308, 0x00001e7b }, { 0x00000307, 0x00001e9b }, + { 0x00000300, 0x00001edc }, { 0x00000301, 0x00001eda }, + { 0x00000303, 0x00001ee0 }, { 0x00000309, 0x00001ede }, + { 0x00000323, 0x00001ee2 }, { 0x00000300, 0x00001edd }, + { 0x00000301, 0x00001edb }, { 0x00000303, 0x00001ee1 }, + { 0x00000309, 0x00001edf }, { 0x00000323, 0x00001ee3 }, + { 0x00000300, 0x00001eea }, { 0x00000301, 0x00001ee8 }, + { 0x00000303, 0x00001eee }, { 0x00000309, 0x00001eec }, + { 0x00000323, 0x00001ef0 }, { 0x00000300, 0x00001eeb }, + { 0x00000301, 0x00001ee9 }, { 0x00000303, 0x00001eef }, + { 0x00000309, 0x00001eed }, { 0x00000323, 0x00001ef1 }, + { 0x0000030c, 0x000001ee }, { 0x00000304, 0x000001ec }, + { 0x00000304, 0x000001ed }, { 0x00000304, 0x000001e0 }, + { 0x00000304, 0x000001e1 }, { 0x00000306, 0x00001e1c }, + { 0x00000306, 0x00001e1d }, { 0x00000304, 0x00000230 }, + { 0x00000304, 0x00000231 }, { 0x0000030c, 0x000001ef }, + { 0x00000300, 0x00001fba }, { 0x00000301, 0x00000386 }, + { 0x00000304, 0x00001fb9 }, { 0x00000306, 0x00001fb8 }, + { 0x00000313, 0x00001f08 }, { 0x00000314, 0x00001f09 }, + { 0x00000345, 0x00001fbc }, { 0x00000300, 0x00001fc8 }, + { 0x00000301, 0x00000388 }, { 0x00000313, 0x00001f18 }, + { 0x00000314, 0x00001f19 }, { 0x00000300, 0x00001fca }, + { 0x00000301, 0x00000389 }, { 0x00000313, 0x00001f28 }, + { 0x00000314, 0x00001f29 }, { 0x00000345, 0x00001fcc }, + { 0x00000300, 0x00001fda }, { 0x00000301, 0x0000038a }, + { 0x00000304, 0x00001fd9 }, { 0x00000306, 0x00001fd8 }, + { 0x00000308, 0x000003aa }, { 0x00000313, 0x00001f38 }, + { 0x00000314, 0x00001f39 }, { 0x00000300, 0x00001ff8 }, + { 0x00000301, 0x0000038c }, { 0x00000313, 0x00001f48 }, + { 0x00000314, 0x00001f49 }, { 0x00000314, 0x00001fec }, + { 0x00000300, 0x00001fea }, { 0x00000301, 0x0000038e }, + { 0x00000304, 0x00001fe9 }, { 0x00000306, 0x00001fe8 }, + { 0x00000308, 0x000003ab }, { 0x00000314, 0x00001f59 }, + { 0x00000300, 0x00001ffa }, { 0x00000301, 0x0000038f }, + { 0x00000313, 0x00001f68 }, { 0x00000314, 0x00001f69 }, + { 0x00000345, 0x00001ffc }, { 0x00000345, 0x00001fb4 }, + { 0x00000345, 0x00001fc4 }, { 0x00000300, 0x00001f70 }, + { 0x00000301, 0x000003ac }, { 0x00000304, 0x00001fb1 }, + { 0x00000306, 0x00001fb0 }, { 0x00000313, 0x00001f00 }, + { 0x00000314, 0x00001f01 }, { 0x00000342, 0x00001fb6 }, + { 0x00000345, 0x00001fb3 }, { 0x00000300, 0x00001f72 }, + { 0x00000301, 0x000003ad }, { 0x00000313, 0x00001f10 }, + { 0x00000314, 0x00001f11 }, { 0x00000300, 0x00001f74 }, + { 0x00000301, 0x000003ae }, { 0x00000313, 0x00001f20 }, + { 0x00000314, 0x00001f21 }, { 0x00000342, 0x00001fc6 }, + { 0x00000345, 0x00001fc3 }, { 0x00000300, 0x00001f76 }, + { 0x00000301, 0x000003af }, { 0x00000304, 0x00001fd1 }, + { 0x00000306, 0x00001fd0 }, { 0x00000308, 0x000003ca }, + { 0x00000313, 0x00001f30 }, { 0x00000314, 0x00001f31 }, + { 0x00000342, 0x00001fd6 }, { 0x00000300, 0x00001f78 }, + { 0x00000301, 0x000003cc }, { 0x00000313, 0x00001f40 }, + { 0x00000314, 0x00001f41 }, { 0x00000313, 0x00001fe4 }, + { 0x00000314, 0x00001fe5 }, { 0x00000300, 0x00001f7a }, + { 0x00000301, 0x000003cd }, { 0x00000304, 0x00001fe1 }, + { 0x00000306, 0x00001fe0 }, { 0x00000308, 0x000003cb }, + { 0x00000313, 0x00001f50 }, { 0x00000314, 0x00001f51 }, + { 0x00000342, 0x00001fe6 }, { 0x00000300, 0x00001f7c }, + { 0x00000301, 0x000003ce }, { 0x00000313, 0x00001f60 }, + { 0x00000314, 0x00001f61 }, { 0x00000342, 0x00001ff6 }, + { 0x00000345, 0x00001ff3 }, { 0x00000300, 0x00001fd2 }, + { 0x00000301, 0x00000390 }, { 0x00000342, 0x00001fd7 }, + { 0x00000300, 0x00001fe2 }, { 0x00000301, 0x000003b0 }, + { 0x00000342, 0x00001fe7 }, { 0x00000345, 0x00001ff4 }, + { 0x00000301, 0x000003d3 }, { 0x00000308, 0x000003d4 }, + { 0x00000308, 0x00000407 }, { 0x00000306, 0x000004d0 }, + { 0x00000308, 0x000004d2 }, { 0x00000301, 0x00000403 }, + { 0x00000300, 0x00000400 }, { 0x00000306, 0x000004d6 }, + { 0x00000308, 0x00000401 }, { 0x00000306, 0x000004c1 }, + { 0x00000308, 0x000004dc }, { 0x00000308, 0x000004de }, + { 0x00000300, 0x0000040d }, { 0x00000304, 0x000004e2 }, + { 0x00000306, 0x00000419 }, { 0x00000308, 0x000004e4 }, + { 0x00000301, 0x0000040c }, { 0x00000308, 0x000004e6 }, + { 0x00000304, 0x000004ee }, { 0x00000306, 0x0000040e }, + { 0x00000308, 0x000004f0 }, { 0x0000030b, 0x000004f2 }, + { 0x00000308, 0x000004f4 }, { 0x00000308, 0x000004f8 }, + { 0x00000308, 0x000004ec }, { 0x00000306, 0x000004d1 }, + { 0x00000308, 0x000004d3 }, { 0x00000301, 0x00000453 }, + { 0x00000300, 0x00000450 }, { 0x00000306, 0x000004d7 }, + { 0x00000308, 0x00000451 }, { 0x00000306, 0x000004c2 }, + { 0x00000308, 0x000004dd }, { 0x00000308, 0x000004df }, + { 0x00000300, 0x0000045d }, { 0x00000304, 0x000004e3 }, + { 0x00000306, 0x00000439 }, { 0x00000308, 0x000004e5 }, + { 0x00000301, 0x0000045c }, { 0x00000308, 0x000004e7 }, + { 0x00000304, 0x000004ef }, { 0x00000306, 0x0000045e }, + { 0x00000308, 0x000004f1 }, { 0x0000030b, 0x000004f3 }, + { 0x00000308, 0x000004f5 }, { 0x00000308, 0x000004f9 }, + { 0x00000308, 0x000004ed }, { 0x00000308, 0x00000457 }, + { 0x0000030f, 0x00000476 }, { 0x0000030f, 0x00000477 }, + { 0x00000308, 0x000004da }, { 0x00000308, 0x000004db }, + { 0x00000308, 0x000004ea }, { 0x00000308, 0x000004eb }, + { 0x00000653, 0x00000622 }, { 0x00000654, 0x00000623 }, + { 0x00000655, 0x00000625 }, { 0x00000654, 0x00000624 }, + { 0x00000654, 0x00000626 }, { 0x00000654, 0x000006c2 }, + { 0x00000654, 0x000006d3 }, { 0x00000654, 0x000006c0 }, + { 0x0000093c, 0x00000929 }, { 0x0000093c, 0x00000931 }, + { 0x0000093c, 0x00000934 }, { 0x000009be, 0x000009cb }, + { 0x000009d7, 0x000009cc }, { 0x00000b3e, 0x00000b4b }, + { 0x00000b56, 0x00000b48 }, { 0x00000b57, 0x00000b4c }, + { 0x00000bd7, 0x00000b94 }, { 0x00000bbe, 0x00000bca }, + { 0x00000bd7, 0x00000bcc }, { 0x00000bbe, 0x00000bcb }, + { 0x00000c56, 0x00000c48 }, { 0x00000cd5, 0x00000cc0 }, + { 0x00000cc2, 0x00000cca }, { 0x00000cd5, 0x00000cc7 }, + { 0x00000cd6, 0x00000cc8 }, { 0x00000cd5, 0x00000ccb }, + { 0x00000d3e, 0x00000d4a }, { 0x00000d57, 0x00000d4c }, + { 0x00000d3e, 0x00000d4b }, { 0x00000dca, 0x00000dda }, + { 0x00000dcf, 0x00000ddc }, { 0x00000ddf, 0x00000dde }, + { 0x00000dca, 0x00000ddd }, { 0x0000102e, 0x00001026 }, + { 0x00000304, 0x00001e38 }, { 0x00000304, 0x00001e39 }, + { 0x00000304, 0x00001e5c }, { 0x00000304, 0x00001e5d }, + { 0x00000307, 0x00001e68 }, { 0x00000307, 0x00001e69 }, + { 0x00000302, 0x00001eac }, { 0x00000306, 0x00001eb6 }, + { 0x00000302, 0x00001ead }, { 0x00000306, 0x00001eb7 }, + { 0x00000302, 0x00001ec6 }, { 0x00000302, 0x00001ec7 }, + { 0x00000302, 0x00001ed8 }, { 0x00000302, 0x00001ed9 }, + { 0x00000300, 0x00001f02 }, { 0x00000301, 0x00001f04 }, + { 0x00000342, 0x00001f06 }, { 0x00000345, 0x00001f80 }, + { 0x00000300, 0x00001f03 }, { 0x00000301, 0x00001f05 }, + { 0x00000342, 0x00001f07 }, { 0x00000345, 0x00001f81 }, + { 0x00000345, 0x00001f82 }, { 0x00000345, 0x00001f83 }, + { 0x00000345, 0x00001f84 }, { 0x00000345, 0x00001f85 }, + { 0x00000345, 0x00001f86 }, { 0x00000345, 0x00001f87 }, + { 0x00000300, 0x00001f0a }, { 0x00000301, 0x00001f0c }, + { 0x00000342, 0x00001f0e }, { 0x00000345, 0x00001f88 }, + { 0x00000300, 0x00001f0b }, { 0x00000301, 0x00001f0d }, + { 0x00000342, 0x00001f0f }, { 0x00000345, 0x00001f89 }, + { 0x00000345, 0x00001f8a }, { 0x00000345, 0x00001f8b }, + { 0x00000345, 0x00001f8c }, { 0x00000345, 0x00001f8d }, + { 0x00000345, 0x00001f8e }, { 0x00000345, 0x00001f8f }, + { 0x00000300, 0x00001f12 }, { 0x00000301, 0x00001f14 }, + { 0x00000300, 0x00001f13 }, { 0x00000301, 0x00001f15 }, + { 0x00000300, 0x00001f1a }, { 0x00000301, 0x00001f1c }, + { 0x00000300, 0x00001f1b }, { 0x00000301, 0x00001f1d }, + { 0x00000300, 0x00001f22 }, { 0x00000301, 0x00001f24 }, + { 0x00000342, 0x00001f26 }, { 0x00000345, 0x00001f90 }, + { 0x00000300, 0x00001f23 }, { 0x00000301, 0x00001f25 }, + { 0x00000342, 0x00001f27 }, { 0x00000345, 0x00001f91 }, + { 0x00000345, 0x00001f92 }, { 0x00000345, 0x00001f93 }, + { 0x00000345, 0x00001f94 }, { 0x00000345, 0x00001f95 }, + { 0x00000345, 0x00001f96 }, { 0x00000345, 0x00001f97 }, + { 0x00000300, 0x00001f2a }, { 0x00000301, 0x00001f2c }, + { 0x00000342, 0x00001f2e }, { 0x00000345, 0x00001f98 }, + { 0x00000300, 0x00001f2b }, { 0x00000301, 0x00001f2d }, + { 0x00000342, 0x00001f2f }, { 0x00000345, 0x00001f99 }, + { 0x00000345, 0x00001f9a }, { 0x00000345, 0x00001f9b }, + { 0x00000345, 0x00001f9c }, { 0x00000345, 0x00001f9d }, + { 0x00000345, 0x00001f9e }, { 0x00000345, 0x00001f9f }, + { 0x00000300, 0x00001f32 }, { 0x00000301, 0x00001f34 }, + { 0x00000342, 0x00001f36 }, { 0x00000300, 0x00001f33 }, + { 0x00000301, 0x00001f35 }, { 0x00000342, 0x00001f37 }, + { 0x00000300, 0x00001f3a }, { 0x00000301, 0x00001f3c }, + { 0x00000342, 0x00001f3e }, { 0x00000300, 0x00001f3b }, + { 0x00000301, 0x00001f3d }, { 0x00000342, 0x00001f3f }, + { 0x00000300, 0x00001f42 }, { 0x00000301, 0x00001f44 }, + { 0x00000300, 0x00001f43 }, { 0x00000301, 0x00001f45 }, + { 0x00000300, 0x00001f4a }, { 0x00000301, 0x00001f4c }, + { 0x00000300, 0x00001f4b }, { 0x00000301, 0x00001f4d }, + { 0x00000300, 0x00001f52 }, { 0x00000301, 0x00001f54 }, + { 0x00000342, 0x00001f56 }, { 0x00000300, 0x00001f53 }, + { 0x00000301, 0x00001f55 }, { 0x00000342, 0x00001f57 }, + { 0x00000300, 0x00001f5b }, { 0x00000301, 0x00001f5d }, + { 0x00000342, 0x00001f5f }, { 0x00000300, 0x00001f62 }, + { 0x00000301, 0x00001f64 }, { 0x00000342, 0x00001f66 }, + { 0x00000345, 0x00001fa0 }, { 0x00000300, 0x00001f63 }, + { 0x00000301, 0x00001f65 }, { 0x00000342, 0x00001f67 }, + { 0x00000345, 0x00001fa1 }, { 0x00000345, 0x00001fa2 }, + { 0x00000345, 0x00001fa3 }, { 0x00000345, 0x00001fa4 }, + { 0x00000345, 0x00001fa5 }, { 0x00000345, 0x00001fa6 }, + { 0x00000345, 0x00001fa7 }, { 0x00000300, 0x00001f6a }, + { 0x00000301, 0x00001f6c }, { 0x00000342, 0x00001f6e }, + { 0x00000345, 0x00001fa8 }, { 0x00000300, 0x00001f6b }, + { 0x00000301, 0x00001f6d }, { 0x00000342, 0x00001f6f }, + { 0x00000345, 0x00001fa9 }, { 0x00000345, 0x00001faa }, + { 0x00000345, 0x00001fab }, { 0x00000345, 0x00001fac }, + { 0x00000345, 0x00001fad }, { 0x00000345, 0x00001fae }, + { 0x00000345, 0x00001faf }, { 0x00000345, 0x00001fb2 }, + { 0x00000345, 0x00001fc2 }, { 0x00000345, 0x00001ff2 }, + { 0x00000345, 0x00001fb7 }, { 0x00000300, 0x00001fcd }, + { 0x00000301, 0x00001fce }, { 0x00000342, 0x00001fcf }, + { 0x00000345, 0x00001fc7 }, { 0x00000345, 0x00001ff7 }, + { 0x00000300, 0x00001fdd }, { 0x00000301, 0x00001fde }, + { 0x00000342, 0x00001fdf }, { 0x00000338, 0x0000219a }, + { 0x00000338, 0x0000219b }, { 0x00000338, 0x000021ae }, + { 0x00000338, 0x000021cd }, { 0x00000338, 0x000021cf }, + { 0x00000338, 0x000021ce }, { 0x00000338, 0x00002204 }, + { 0x00000338, 0x00002209 }, { 0x00000338, 0x0000220c }, + { 0x00000338, 0x00002224 }, { 0x00000338, 0x00002226 }, + { 0x00000338, 0x00002241 }, { 0x00000338, 0x00002244 }, + { 0x00000338, 0x00002247 }, { 0x00000338, 0x00002249 }, + { 0x00000338, 0x0000226d }, { 0x00000338, 0x00002262 }, + { 0x00000338, 0x00002270 }, { 0x00000338, 0x00002271 }, + { 0x00000338, 0x00002274 }, { 0x00000338, 0x00002275 }, + { 0x00000338, 0x00002278 }, { 0x00000338, 0x00002279 }, + { 0x00000338, 0x00002280 }, { 0x00000338, 0x00002281 }, + { 0x00000338, 0x000022e0 }, { 0x00000338, 0x000022e1 }, + { 0x00000338, 0x00002284 }, { 0x00000338, 0x00002285 }, + { 0x00000338, 0x00002288 }, { 0x00000338, 0x00002289 }, + { 0x00000338, 0x000022e2 }, { 0x00000338, 0x000022e3 }, + { 0x00000338, 0x000022ac }, { 0x00000338, 0x000022ad }, + { 0x00000338, 0x000022ae }, { 0x00000338, 0x000022af }, + { 0x00000338, 0x000022ea }, { 0x00000338, 0x000022eb }, + { 0x00000338, 0x000022ec }, { 0x00000338, 0x000022ed }, + { 0x00003099, 0x00003094 }, { 0x00003099, 0x0000304c }, + { 0x00003099, 0x0000304e }, { 0x00003099, 0x00003050 }, + { 0x00003099, 0x00003052 }, { 0x00003099, 0x00003054 }, + { 0x00003099, 0x00003056 }, { 0x00003099, 0x00003058 }, + { 0x00003099, 0x0000305a }, { 0x00003099, 0x0000305c }, + { 0x00003099, 0x0000305e }, { 0x00003099, 0x00003060 }, + { 0x00003099, 0x00003062 }, { 0x00003099, 0x00003065 }, + { 0x00003099, 0x00003067 }, { 0x00003099, 0x00003069 }, + { 0x00003099, 0x00003070 }, { 0x0000309a, 0x00003071 }, + { 0x00003099, 0x00003073 }, { 0x0000309a, 0x00003074 }, + { 0x00003099, 0x00003076 }, { 0x0000309a, 0x00003077 }, + { 0x00003099, 0x00003079 }, { 0x0000309a, 0x0000307a }, + { 0x00003099, 0x0000307c }, { 0x0000309a, 0x0000307d }, + { 0x00003099, 0x0000309e }, { 0x00003099, 0x000030f4 }, + { 0x00003099, 0x000030ac }, { 0x00003099, 0x000030ae }, + { 0x00003099, 0x000030b0 }, { 0x00003099, 0x000030b2 }, + { 0x00003099, 0x000030b4 }, { 0x00003099, 0x000030b6 }, + { 0x00003099, 0x000030b8 }, { 0x00003099, 0x000030ba }, + { 0x00003099, 0x000030bc }, { 0x00003099, 0x000030be }, + { 0x00003099, 0x000030c0 }, { 0x00003099, 0x000030c2 }, + { 0x00003099, 0x000030c5 }, { 0x00003099, 0x000030c7 }, + { 0x00003099, 0x000030c9 }, { 0x00003099, 0x000030d0 }, + { 0x0000309a, 0x000030d1 }, { 0x00003099, 0x000030d3 }, + { 0x0000309a, 0x000030d4 }, { 0x00003099, 0x000030d6 }, + { 0x0000309a, 0x000030d7 }, { 0x00003099, 0x000030d9 }, + { 0x0000309a, 0x000030da }, { 0x00003099, 0x000030dc }, + { 0x0000309a, 0x000030dd }, { 0x00003099, 0x000030f7 }, + { 0x00003099, 0x000030f8 }, { 0x00003099, 0x000030f9 }, + { 0x00003099, 0x000030fa }, { 0x00003099, 0x000030fe }, +}; + + +/* + * Canonical/Compatibility Decomposition + */ + +#define DECOMP_BITS_0 9 +#define DECOMP_BITS_1 7 +#define DECOMP_BITS_2 5 +#define DECOMP_COMPAT 32768 + +static const unsigned short v310_decompose_imap[] = { + 272, 400, 528, 656, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 912, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 1040, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 1168, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 0, 0, 0, 0, 0, 1, 2, 3, + 4, 5, 6, 7, 0, 8, 9, 10, + 11, 12, 0, 0, 0, 13, 14, 15, + 0, 0, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 0, 0, 26, 27, + 0, 0, 0, 0, 28, 0, 0, 0, + 0, 29, 0, 30, 0, 0, 31, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 32, 33, 0, 0, 0, 34, 0, + 0, 35, 36, 0, 0, 0, 0, 0, + 0, 0, 37, 0, 38, 0, 39, 0, + 0, 0, 40, 0, 0, 0, 41, 0, + 0, 0, 42, 0, 0, 0, 43, 0, + 0, 44, 0, 0, 0, 45, 46, 0, + 47, 0, 48, 49, 50, 51, 0, 0, + 0, 52, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, 0, 0, + 75, 76, 77, 78, 79, 80, 81, 0, + 82, 83, 84, 85, 86, 87, 0, 88, + 0, 89, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 90, 91, 92, 93, 94, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 95, 0, 0, 96, + 97, 98, 99, 100, 101, 102, 103, 0, + 104, 105, 106, 107, 108, 109, 110, 111, + 0, 112, 113, 114, 115, 0, 0, 0, + 116, 117, 118, 119, 120, 121, 122, 123, + 124, 125, 126, 127, 128, 129, 130, 131, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 132, 133, 134, 135, 136, 137, 138, 139, + 140, 141, 0, 0, 0, 0, 0, 0, + 142, 143, 144, 145, 146, 147, 148, 149, + 150, 151, 152, 153, 154, 155, 156, 157, + 158, 159, 160, 161, 162, 163, 164, 165, + 0, 166, 167, 168, 169, 170, 171, 172, + 173, 174, 175, 176, 177, 178, 179, 180, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 181, 182, 0, 183, 184, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 185, 186, 187, 188, 189, 190, 191, 192, + 193, 194, 195, 196, 197, 198, 199, 200, + 201, 202, 203, 204, 205, 206, 207, 208, + 209, 210, 211, 212, 213, 214, 215, 216, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, + 233, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, +}; + +static const struct { + unsigned short tbl[32]; +} v310_decompose_table[] = { + {{ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 32769, 0, 0, 0, 0, 0, 0, 0, + 32770, 0, 32772, 0, 0, 0, 0, 32773, + 0, 0, 32775, 32776, 32777, 32779, 0, 0, + 32780, 32782, 32783, 0, 32784, 32787, 32790, 0, + }}, + {{ + 25, 27, 29, 31, 33, 35, 0, 37, + 39, 41, 43, 45, 47, 49, 51, 53, + 0, 55, 57, 59, 61, 63, 65, 0, + 0, 67, 69, 71, 73, 75, 0, 0, + }}, + {{ + 77, 79, 81, 83, 85, 87, 0, 89, + 91, 93, 95, 97, 99, 101, 103, 105, + 0, 107, 109, 111, 113, 115, 117, 0, + 0, 119, 121, 123, 125, 127, 0, 129, + }}, + {{ + 131, 133, 135, 137, 139, 141, 143, 145, + 147, 149, 151, 153, 155, 157, 159, 161, + 0, 0, 163, 165, 167, 169, 171, 173, + 175, 177, 179, 181, 183, 185, 187, 189, + }}, + {{ + 191, 193, 195, 197, 199, 201, 0, 0, + 203, 205, 207, 209, 211, 213, 215, 217, + 219, 0, 32989, 32991, 225, 227, 229, 231, + 0, 233, 235, 237, 239, 241, 243, 33013, + }}, + {{ + 33015, 0, 0, 249, 251, 253, 255, 257, + 259, 33029, 0, 0, 263, 265, 267, 269, + 271, 273, 0, 0, 275, 277, 279, 281, + 283, 285, 287, 289, 291, 293, 295, 297, + }}, + {{ + 299, 301, 303, 305, 307, 309, 0, 0, + 311, 313, 315, 317, 319, 321, 323, 325, + 327, 329, 331, 333, 335, 337, 339, 341, + 343, 345, 347, 349, 351, 353, 355, 33125, + }}, + {{ + 358, 360, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 362, + 364, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 33134, 33136, 33138, 33140, + 33142, 33144, 33146, 33148, 33150, 384, 386, 388, + 390, 392, 394, 396, 398, 400, 402, 404, + 406, 408, 410, 412, 414, 0, 416, 418, + }}, + {{ + 420, 422, 424, 426, 0, 0, 428, 430, + 432, 434, 436, 438, 440, 442, 444, 446, + 448, 33218, 33220, 33222, 456, 458, 0, 0, + 460, 462, 464, 466, 468, 470, 472, 474, + }}, + {{ + 476, 478, 480, 482, 484, 486, 488, 490, + 492, 494, 496, 498, 500, 502, 504, 506, + 508, 510, 512, 514, 516, 518, 520, 522, + 524, 526, 528, 530, 0, 0, 532, 534, + }}, + {{ + 0, 0, 0, 0, 0, 0, 536, 538, + 540, 542, 544, 546, 548, 550, 552, 554, + 556, 558, 560, 562, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 33332, 33333, 33334, 33335, 33336, 33337, 33338, 33339, + 33340, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 33341, 33343, 33345, 33347, 33349, 33351, 0, 0, + }}, + {{ + 33353, 33354, 33355, 33356, 33357, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 590, 591, 0, 592, 593, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 595, 0, 0, 0, + 0, 0, 33364, 0, 0, 0, 598, 0, + }}, + {{ + 0, 0, 0, 0, 33367, 601, 603, 605, + 606, 608, 610, 0, 612, 0, 614, 616, + 618, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 620, 622, 624, 626, 628, 630, + 632, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 634, 636, 638, 640, 642, 0, + 33412, 33413, 33414, 647, 649, 33419, 33420, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 33421, 33422, 33423, 0, 33424, 33425, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 658, 660, 0, 662, 0, 0, 0, 664, + 0, 0, 0, 0, 666, 668, 670, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 672, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 674, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 676, 678, 0, 680, 0, 0, 0, 682, + 0, 0, 0, 0, 684, 686, 688, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 690, 692, + 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 694, 696, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 698, 700, 702, 704, 0, 0, 706, 708, + 0, 0, 710, 712, 714, 716, 718, 720, + }}, + {{ + 0, 0, 722, 724, 726, 728, 730, 732, + 0, 0, 734, 736, 738, 740, 742, 744, + 746, 748, 750, 752, 754, 756, 0, 0, + 758, 760, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 33530, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 764, 766, 768, 770, 772, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 33542, 33544, 33546, + 33548, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 782, 0, 784, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 786, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 788, 0, 0, 0, 0, 0, 0, + 0, 790, 0, 0, 792, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 794, 796, 798, 800, 802, 804, 806, 808, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 810, 812, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 814, 816, 0, 818, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 820, 0, 0, 822, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 824, 826, 828, 0, 0, 830, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, + 832, 0, 0, 834, 836, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 838, 840, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 842, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 844, 846, 848, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, + 850, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 852, 0, 0, 0, 0, 0, 0, 854, + 856, 0, 858, 860, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 862, 864, 866, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 868, 0, 870, 872, 874, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 33644, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 33646, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 33648, 33650, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 33652, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 885, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 887, 0, 0, + 0, 0, 889, 0, 0, 0, 0, 891, + 0, 0, 0, 0, 893, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 895, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 897, 0, 899, 901, 33671, + 905, 33675, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 909, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 911, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 913, 0, 0, + }}, + {{ + 0, 0, 915, 0, 0, 0, 0, 917, + 0, 0, 0, 0, 919, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 921, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 923, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 925, 927, 929, 931, 933, 935, 937, 939, + 941, 943, 945, 947, 949, 951, 953, 955, + 957, 959, 961, 963, 965, 967, 969, 971, + 973, 975, 977, 979, 981, 983, 985, 987, + }}, + {{ + 989, 991, 993, 995, 997, 999, 1001, 1003, + 1005, 1007, 1009, 1011, 1013, 1015, 1017, 1019, + 1021, 1023, 1025, 1027, 1029, 1031, 1033, 1035, + 1037, 1039, 1041, 1043, 1045, 1047, 1049, 1051, + }}, + {{ + 1053, 1055, 1057, 1059, 1061, 1063, 1065, 1067, + 1069, 1071, 1073, 1075, 1077, 1079, 1081, 1083, + 1085, 1087, 1089, 1091, 1093, 1095, 1097, 1099, + 1101, 1103, 1105, 1107, 1109, 1111, 1113, 1115, + }}, + {{ + 1117, 1119, 1121, 1123, 1125, 1127, 1129, 1131, + 1133, 1135, 1137, 1139, 1141, 1143, 1145, 1147, + 1149, 1151, 1153, 1155, 1157, 1159, 1161, 1163, + 1165, 1167, 1169, 1171, 1173, 1175, 1177, 1179, + }}, + {{ + 1181, 1183, 1185, 1187, 1189, 1191, 1193, 1195, + 1197, 1199, 1201, 1203, 1205, 1207, 1209, 1211, + 1213, 1215, 1217, 1219, 1221, 1223, 1225, 1227, + 1229, 1231, 34001, 1235, 0, 0, 0, 0, + }}, + {{ + 1237, 1239, 1241, 1243, 1245, 1247, 1249, 1251, + 1253, 1255, 1257, 1259, 1261, 1263, 1265, 1267, + 1269, 1271, 1273, 1275, 1277, 1279, 1281, 1283, + 1285, 1287, 1289, 1291, 1293, 1295, 1297, 1299, + }}, + {{ + 1301, 1303, 1305, 1307, 1309, 1311, 1313, 1315, + 1317, 1319, 1321, 1323, 1325, 1327, 1329, 1331, + 1333, 1335, 1337, 1339, 1341, 1343, 1345, 1347, + 1349, 1351, 1353, 1355, 1357, 1359, 1361, 1363, + }}, + {{ + 1365, 1367, 1369, 1371, 1373, 1375, 1377, 1379, + 1381, 1383, 1385, 1387, 1389, 1391, 1393, 1395, + 1397, 1399, 1401, 1403, 1405, 1407, 1409, 1411, + 1413, 1415, 0, 0, 0, 0, 0, 0, + }}, + {{ + 1417, 1419, 1421, 1423, 1425, 1427, 1429, 1431, + 1433, 1435, 1437, 1439, 1441, 1443, 1445, 1447, + 1449, 1451, 1453, 1455, 1457, 1459, 0, 0, + 1461, 1463, 1465, 1467, 1469, 1471, 0, 0, + }}, + {{ + 1473, 1475, 1477, 1479, 1481, 1483, 1485, 1487, + 1489, 1491, 1493, 1495, 1497, 1499, 1501, 1503, + 1505, 1507, 1509, 1511, 1513, 1515, 1517, 1519, + 1521, 1523, 1525, 1527, 1529, 1531, 1533, 1535, + }}, + {{ + 1537, 1539, 1541, 1543, 1545, 1547, 0, 0, + 1549, 1551, 1553, 1555, 1557, 1559, 0, 0, + 1561, 1563, 1565, 1567, 1569, 1571, 1573, 1575, + 0, 1577, 0, 1579, 0, 1581, 0, 1583, + }}, + {{ + 1585, 1587, 1589, 1591, 1593, 1595, 1597, 1599, + 1601, 1603, 1605, 1607, 1609, 1611, 1613, 1615, + 1617, 1619, 1620, 1622, 1623, 1625, 1626, 1628, + 1629, 1631, 1632, 1634, 1635, 1637, 0, 0, + }}, + {{ + 1638, 1640, 1642, 1644, 1646, 1648, 1650, 1652, + 1654, 1656, 1658, 1660, 1662, 1664, 1666, 1668, + 1670, 1672, 1674, 1676, 1678, 1680, 1682, 1684, + 1686, 1688, 1690, 1692, 1694, 1696, 1698, 1700, + }}, + {{ + 1702, 1704, 1706, 1708, 1710, 1712, 1714, 1716, + 1718, 1720, 1722, 1724, 1726, 1728, 1730, 1732, + 1734, 1736, 1738, 1740, 1742, 0, 1744, 1746, + 1748, 1750, 1752, 1754, 1755, 34525, 1759, 34528, + }}, + {{ + 34530, 1764, 1766, 1768, 1770, 0, 1772, 1774, + 1776, 1778, 1779, 1781, 1782, 1784, 1786, 1788, + 1790, 1792, 1794, 1796, 0, 0, 1797, 1799, + 1801, 1803, 1805, 1807, 0, 1808, 1810, 1812, + }}, + {{ + 1814, 1816, 1818, 1820, 1821, 1823, 1825, 1827, + 1829, 1831, 1833, 1835, 1836, 1838, 1840, 1841, + 0, 0, 1842, 1844, 1846, 0, 1848, 1850, + 1852, 1854, 1855, 1857, 1858, 1860, 34629, 0, + }}, + {{ + 1863, 1864, 34633, 34634, 34635, 34636, 34637, 34638, + 34639, 34640, 34641, 0, 0, 0, 0, 0, + 0, 34642, 0, 0, 0, 0, 0, 34643, + 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 34645, 34646, 34648, 0, + 0, 0, 0, 0, 0, 0, 0, 34651, + 0, 0, 0, 34652, 34654, 0, 34657, 34659, + 0, 0, 0, 0, 34662, 0, 34664, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, + 34666, 34668, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 34670, 0, 0, 0, 34671, 34672, 34673, 34674, + 34675, 34676, 34677, 34678, 34679, 34680, 34681, 34682, + }}, + {{ + 34683, 34684, 34685, 34686, 34687, 34688, 34689, 34690, + 34691, 34692, 34693, 34694, 34695, 34696, 34697, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, + 34698, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 34700, 34703, 34706, 34707, 0, 34709, 34712, 34715, + 0, 34716, 34718, 34719, 34720, 34721, 34722, 34723, + 34724, 34725, 34726, 34727, 0, 34728, 34729, 0, + 0, 34731, 34732, 34733, 34734, 34735, 0, 0, + }}, + {{ + 34736, 34738, 34741, 0, 34743, 0, 1976, 0, + 34745, 0, 1978, 1979, 34748, 34749, 0, 34750, + 34751, 34752, 0, 34753, 34754, 34755, 34756, 34757, + 34758, 34759, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 34760, 34763, 34766, 34769, 34772, + 34775, 34778, 34781, 34784, 34787, 34790, 34793, 34796, + }}, + {{ + 34798, 34799, 34801, 34804, 34806, 34807, 34809, 34812, + 34816, 34818, 34819, 34821, 34824, 34825, 34826, 34827, + 34828, 34829, 34831, 34834, 34836, 34837, 34839, 34842, + 34846, 34848, 34849, 34851, 34854, 34855, 34856, 34857, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2090, 2092, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 2094, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2096, 2098, 2100, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 2102, 0, 0, 0, + 0, 2104, 0, 0, 2106, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 2108, 0, 2110, 0, + 0, 0, 0, 0, 34880, 34882, 0, 34885, + 34887, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 2122, 0, 0, 2124, 0, 0, 2126, + 0, 2128, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 2130, 0, 2132, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2134, 2136, 2138, + 2140, 2142, 0, 0, 2144, 2146, 0, 0, + 2148, 2150, 0, 0, 0, 0, 0, 0, + }}, + {{ + 2152, 2154, 0, 0, 2156, 2158, 0, 0, + 2160, 2162, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2164, 2166, 2168, 2170, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 2172, 2174, 2176, 2178, 0, 0, 0, 0, + 0, 0, 2180, 2182, 2184, 2186, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2188, 2189, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 34958, 34959, 34960, 34961, 34962, 34963, 34964, 34965, + 34966, 34967, 34969, 34971, 34973, 34975, 34977, 34979, + 34981, 34983, 34985, 34987, 34989, 34992, 34995, 34998, + 35001, 35004, 35007, 35010, 35013, 35016, 35020, 35024, + }}, + {{ + 35028, 35032, 35036, 35040, 35044, 35048, 35052, 35056, + 35060, 35062, 35064, 35066, 35068, 35070, 35072, 35074, + 35076, 35078, 35081, 35084, 35087, 35090, 35093, 35096, + 35099, 35102, 35105, 35108, 35111, 35114, 35117, 35120, + }}, + {{ + 35123, 35126, 35129, 35132, 35135, 35138, 35141, 35144, + 35147, 35150, 35153, 35156, 35159, 35162, 35165, 35168, + 35171, 35174, 35177, 35180, 35183, 35186, 35189, 35190, + 35191, 35192, 35193, 35194, 35195, 35196, 35197, 35198, + }}, + {{ + 35199, 35200, 35201, 35202, 35203, 35204, 35205, 35206, + 35207, 35208, 35209, 35210, 35211, 35212, 35213, 35214, + 35215, 35216, 35217, 35218, 35219, 35220, 35221, 35222, + 35223, 35224, 35225, 35226, 35227, 35228, 35229, 35230, + }}, + {{ + 35231, 35232, 35233, 35234, 35235, 35236, 35237, 35238, + 35239, 35240, 35241, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 35242, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 35243, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 35244, 35245, 35246, 35247, 35248, 35249, 35250, 35251, + 35252, 35253, 35254, 35255, 35256, 35257, 35258, 35259, + 35260, 35261, 35262, 35263, 35264, 35265, 35266, 35267, + 35268, 35269, 35270, 35271, 35272, 35273, 35274, 35275, + }}, + {{ + 35276, 35277, 35278, 35279, 35280, 35281, 35282, 35283, + 35284, 35285, 35286, 35287, 35288, 35289, 35290, 35291, + 35292, 35293, 35294, 35295, 35296, 35297, 35298, 35299, + 35300, 35301, 35302, 35303, 35304, 35305, 35306, 35307, + }}, + {{ + 35308, 35309, 35310, 35311, 35312, 35313, 35314, 35315, + 35316, 35317, 35318, 35319, 35320, 35321, 35322, 35323, + 35324, 35325, 35326, 35327, 35328, 35329, 35330, 35331, + 35332, 35333, 35334, 35335, 35336, 35337, 35338, 35339, + }}, + {{ + 35340, 35341, 35342, 35343, 35344, 35345, 35346, 35347, + 35348, 35349, 35350, 35351, 35352, 35353, 35354, 35355, + 35356, 35357, 35358, 35359, 35360, 35361, 35362, 35363, + 35364, 35365, 35366, 35367, 35368, 35369, 35370, 35371, + }}, + {{ + 35372, 35373, 35374, 35375, 35376, 35377, 35378, 35379, + 35380, 35381, 35382, 35383, 35384, 35385, 35386, 35387, + 35388, 35389, 35390, 35391, 35392, 35393, 35394, 35395, + 35396, 35397, 35398, 35399, 35400, 35401, 35402, 35403, + }}, + {{ + 35404, 35405, 35406, 35407, 35408, 35409, 35410, 35411, + 35412, 35413, 35414, 35415, 35416, 35417, 35418, 35419, + 35420, 35421, 35422, 35423, 35424, 35425, 35426, 35427, + 35428, 35429, 35430, 35431, 35432, 35433, 35434, 35435, + }}, + {{ + 35436, 35437, 35438, 35439, 35440, 35441, 35442, 35443, + 35444, 35445, 35446, 35447, 35448, 35449, 35450, 35451, + 35452, 35453, 35454, 35455, 35456, 35457, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 35458, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 35459, 0, + 35460, 35461, 35462, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2695, 0, 2697, 0, + 2699, 0, 2701, 0, 2703, 0, 2705, 0, + 2707, 0, 2709, 0, 2711, 0, 2713, 0, + }}, + {{ + 2715, 0, 2717, 0, 0, 2719, 0, 2721, + 0, 2723, 0, 0, 0, 0, 0, 0, + 2725, 2727, 0, 2729, 2731, 0, 2733, 2735, + 0, 2737, 2739, 0, 2741, 2743, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2745, 0, 0, 0, + 0, 0, 0, 35515, 35517, 0, 2751, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2753, 0, 2755, 0, + 2757, 0, 2759, 0, 2761, 0, 2763, 0, + 2765, 0, 2767, 0, 2769, 0, 2771, 0, + }}, + {{ + 2773, 0, 2775, 0, 0, 2777, 0, 2779, + 0, 2781, 0, 0, 0, 0, 0, 0, + 2783, 2785, 0, 2787, 2789, 0, 2791, 2793, + 0, 2795, 2797, 0, 2799, 2801, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2803, 0, 0, 2805, + 2807, 2809, 2811, 0, 0, 0, 2813, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 35583, 35584, 35585, 35586, 35587, 35588, 35589, + 35590, 35591, 35592, 35593, 35594, 35595, 35596, 35597, + }}, + {{ + 35598, 35599, 35600, 35601, 35602, 35603, 35604, 35605, + 35606, 35607, 35608, 35609, 35610, 35611, 35612, 35613, + 35614, 35615, 35616, 35617, 35618, 35619, 35620, 35621, + 35622, 35623, 35624, 35625, 35626, 35627, 35628, 35629, + }}, + {{ + 35630, 35631, 35632, 35633, 35634, 35635, 35636, 35637, + 35638, 35639, 35640, 35641, 35642, 35643, 35644, 35645, + 35646, 35647, 35648, 35649, 35650, 35651, 35652, 35653, + 35654, 35655, 35656, 35657, 35658, 35659, 35660, 35661, + }}, + {{ + 35662, 35663, 35664, 35665, 35666, 35667, 35668, 35669, + 35670, 35671, 35672, 35673, 35674, 35675, 35676, 0, + 0, 0, 35677, 35678, 35679, 35680, 35681, 35682, + 35683, 35684, 35685, 35686, 35687, 35688, 35689, 35690, + }}, + {{ + 35691, 35694, 35697, 35700, 35703, 35706, 35709, 35712, + 35715, 35718, 35721, 35724, 35727, 35730, 35733, 35737, + 35741, 35745, 35749, 35753, 35757, 35761, 35765, 35769, + 35773, 35777, 35781, 35785, 35789, 0, 0, 0, + }}, + {{ + 35793, 35796, 35799, 35802, 35805, 35808, 35811, 35814, + 35817, 35820, 35823, 35826, 35829, 35832, 35835, 35838, + 35841, 35844, 35847, 35850, 35853, 35856, 35859, 35862, + 35865, 35868, 35871, 35874, 35877, 35880, 35883, 35886, + }}, + {{ + 35889, 35892, 35895, 35898, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 35901, 35902, 35903, 35904, 35905, 35906, 35907, 35908, + 35909, 35910, 35911, 35912, 35913, 35914, 35915, 35917, + 35919, 35921, 35923, 35925, 35927, 35929, 35931, 35933, + 35935, 35937, 35939, 35941, 0, 0, 0, 0, + }}, + {{ + 35943, 35944, 35945, 35946, 35947, 35948, 35949, 35950, + 35951, 35952, 35953, 35954, 35955, 35956, 35957, 35958, + 35959, 35960, 35961, 35962, 35963, 35964, 35965, 35966, + 35967, 35968, 35969, 35970, 35971, 35972, 35973, 35974, + }}, + {{ + 35975, 35976, 35977, 35978, 35979, 35980, 35981, 35982, + 35983, 35984, 35985, 35986, 35987, 35988, 35989, 35990, + 35991, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 35992, 35994, 35996, 35998, 36000, 36002, 36004, 36006, + 36008, 36010, 36013, 36016, 0, 0, 0, 0, + 36019, 36020, 36021, 36022, 36023, 36024, 36025, 36026, + 36027, 36028, 36029, 36030, 36031, 36032, 36033, 36034, + }}, + {{ + 36035, 36036, 36037, 36038, 36039, 36040, 36041, 36042, + 36043, 36044, 36045, 36046, 36047, 36048, 36049, 36050, + 36051, 36052, 36053, 36054, 36055, 36056, 36057, 36058, + 36059, 36060, 36061, 36062, 36063, 36064, 36065, 0, + }}, + {{ + 36066, 36070, 36074, 36078, 36081, 36085, 36088, 36091, + 36096, 36100, 36103, 36106, 36109, 36113, 36117, 36120, + 36123, 36125, 36128, 36132, 36136, 36138, 36143, 36149, + 36154, 36157, 36162, 36167, 36171, 36174, 36177, 36180, + }}, + {{ + 36184, 36189, 36193, 36196, 36199, 36202, 36204, 36206, + 36208, 36210, 36213, 36216, 36221, 36224, 36228, 36233, + 36236, 36238, 36240, 36245, 36249, 36254, 36257, 36262, + 36264, 36267, 36270, 36273, 36276, 36279, 36283, 36286, + }}, + {{ + 36288, 36291, 36294, 36297, 36301, 36304, 36307, 36310, + 36315, 36319, 36321, 36326, 36328, 36332, 36336, 36339, + 36342, 36345, 36349, 36351, 36354, 36358, 36360, 36365, + 36368, 36370, 36372, 36374, 36376, 36378, 36380, 36382, + }}, + {{ + 36384, 36386, 36388, 36391, 36394, 36397, 36400, 36403, + 36406, 36409, 36412, 36415, 36418, 36421, 36424, 36427, + 36430, 36433, 36436, 36438, 36440, 36443, 36445, 0, + 0, 0, 0, 36447, 36449, 36451, 36453, 36455, + }}, + {{ + 36459, 36461, 36463, 36465, 36467, 36469, 36471, 36473, + 36475, 36478, 36482, 36484, 36486, 36488, 36490, 36492, + 36494, 36496, 36499, 36502, 36505, 36508, 36510, 36512, + 36514, 36516, 36518, 36520, 36522, 36524, 36526, 36528, + }}, + {{ + 36531, 36534, 36536, 36539, 36542, 36545, 36547, 36550, + 36553, 36557, 36559, 36562, 36565, 36568, 36571, 36576, + 36582, 36584, 36586, 36588, 36590, 36592, 36594, 36596, + 36598, 36600, 36602, 36604, 36606, 36608, 36610, 36612, + }}, + {{ + 36614, 36616, 36618, 36622, 36624, 36626, 36628, 36632, + 36635, 36637, 36639, 36641, 36643, 36645, 36647, 36649, + 36651, 36653, 36655, 36658, 36660, 36662, 36665, 36668, + 36670, 36674, 36677, 36679, 36681, 36683, 0, 0, + }}, + {{ + 36685, 36687, 36689, 36691, 36693, 36695, 36697, 36699, + 36701, 36703, 36706, 36709, 36712, 36715, 36718, 36721, + 36724, 36727, 36730, 36733, 36736, 36739, 36742, 36745, + 36748, 36751, 36754, 36757, 36760, 36763, 36766, 0, + }}, + {{ + 4001, 4002, 4003, 4004, 4005, 4006, 4007, 4008, + 4009, 4010, 4011, 4012, 4013, 4014, 4015, 4016, + 4017, 4018, 4019, 4020, 4021, 4022, 4023, 4024, + 4025, 4026, 4027, 4028, 4029, 4030, 4031, 4032, + }}, + {{ + 4033, 4034, 4035, 4036, 4037, 4038, 4039, 4040, + 4041, 4042, 4043, 4044, 4045, 4046, 4047, 4048, + 4049, 4050, 4051, 4052, 4053, 4054, 4055, 4056, + 4057, 4058, 4059, 4060, 4061, 4062, 4063, 4064, + }}, + {{ + 4065, 4066, 4067, 4068, 4069, 4070, 4071, 4072, + 4073, 4074, 4075, 4076, 4077, 4078, 4079, 4080, + 4081, 4082, 4083, 4084, 4085, 4086, 4087, 4088, + 4089, 4090, 4091, 4092, 4093, 4094, 4095, 4096, + }}, + {{ + 4097, 4098, 4099, 4100, 4101, 4102, 4103, 4104, + 4105, 4106, 4107, 4108, 4109, 4110, 4111, 4112, + 4113, 4114, 4115, 4116, 4117, 4118, 4119, 4120, + 4121, 4122, 4123, 4124, 4125, 4126, 4127, 4128, + }}, + {{ + 4129, 4130, 4131, 4132, 4133, 4134, 4135, 4136, + 4137, 4138, 4139, 4140, 4141, 4142, 4143, 4144, + 4145, 4146, 4147, 4148, 4149, 4150, 4151, 4152, + 4153, 4154, 4155, 4156, 4157, 4158, 4159, 4160, + }}, + {{ + 4161, 4162, 4163, 4164, 4165, 4166, 4167, 4168, + 4169, 4170, 4171, 4172, 4173, 4174, 4175, 4176, + 4177, 4178, 4179, 4180, 4181, 4182, 4183, 4184, + 4185, 4186, 4187, 4188, 4189, 4190, 4191, 4192, + }}, + {{ + 4193, 4194, 4195, 4196, 4197, 4198, 4199, 4200, + 4201, 4202, 4203, 4204, 4205, 4206, 4207, 4208, + 4209, 4210, 4211, 4212, 4213, 4214, 4215, 4216, + 4217, 4218, 4219, 4220, 4221, 4222, 4223, 4224, + }}, + {{ + 4225, 4226, 4227, 4228, 4229, 4230, 4231, 4232, + 4233, 4234, 4235, 4236, 4237, 4238, 4239, 4240, + 4241, 4242, 4243, 4244, 4245, 4246, 4247, 4248, + 4249, 4250, 4251, 4252, 4253, 4254, 4255, 4256, + }}, + {{ + 4257, 4258, 4259, 4260, 4261, 4262, 4263, 4264, + 4265, 4266, 4267, 4268, 4269, 4270, 0, 0, + 4271, 0, 4272, 0, 0, 4273, 4274, 4275, + 4276, 4277, 4278, 4279, 4280, 4281, 4282, 0, + }}, + {{ + 4283, 0, 4284, 0, 0, 4285, 4286, 0, + 0, 0, 4287, 4288, 4289, 4290, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 37059, 37061, 37063, 37065, 37068, 37071, 37073, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 37075, 37077, 37079, 37081, 37083, + 0, 0, 0, 0, 0, 4317, 0, 4319, + }}, + {{ + 37089, 37090, 37091, 37092, 37093, 37094, 37095, 37096, + 37097, 37098, 4331, 4333, 4335, 4337, 4339, 4341, + 4343, 4345, 4347, 4349, 4351, 4353, 4355, 0, + 4357, 4359, 4361, 4363, 4365, 0, 4367, 0, + }}, + {{ + 4369, 4371, 0, 4373, 4375, 0, 4377, 4379, + 4381, 4383, 4385, 4387, 4389, 4391, 4393, 37163, + 37165, 37166, 37167, 37168, 37169, 37170, 37171, 37172, + 37173, 37174, 37175, 37176, 37177, 37178, 37179, 37180, + }}, + {{ + 37181, 37182, 37183, 37184, 37185, 37186, 37187, 37188, + 37189, 37190, 37191, 37192, 37193, 37194, 37195, 37196, + 37197, 37198, 37199, 37200, 37201, 37202, 37203, 37204, + 37205, 37206, 37207, 37208, 37209, 37210, 37211, 37212, + }}, + {{ + 37213, 37214, 37215, 37216, 37217, 37218, 37219, 37220, + 37221, 37222, 37223, 37224, 37225, 37226, 37227, 37228, + 37229, 37230, 37231, 37232, 37233, 37234, 37235, 37236, + 37237, 37238, 37239, 37240, 37241, 37242, 37243, 37244, + }}, + {{ + 37245, 37246, 37247, 37248, 37249, 37250, 37251, 37252, + 37253, 37254, 37255, 37256, 37257, 37258, 37259, 37260, + 37261, 37262, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 37263, 37264, 37265, 37266, 37267, + 37268, 37269, 37270, 37271, 37272, 37273, 37274, 37275, + }}, + {{ + 37276, 37277, 37278, 37279, 37280, 37281, 37282, 37283, + 37284, 37285, 37286, 37288, 37290, 37292, 37294, 37296, + 37298, 37300, 37302, 37304, 37306, 37308, 37310, 37312, + 37314, 37316, 37318, 37320, 37322, 37323, 37324, 37325, + }}, + {{ + 37326, 37328, 37330, 37332, 37334, 37336, 37338, 37340, + 37342, 37344, 37346, 37348, 37350, 37352, 37354, 37356, + 37358, 37360, 37362, 37364, 37366, 37368, 37370, 37372, + 37374, 37376, 37378, 37380, 37382, 37384, 37386, 37388, + }}, + {{ + 37390, 37392, 37394, 37396, 37398, 37400, 37402, 37404, + 37406, 37408, 37410, 37412, 37414, 37416, 37418, 37420, + 37422, 37424, 37426, 37428, 37430, 37432, 37434, 37436, + 37438, 37440, 37442, 37444, 37446, 37448, 37450, 37452, + }}, + {{ + 37454, 37456, 37458, 37460, 37462, 37464, 37466, 37468, + 37470, 37472, 37474, 37476, 37478, 37480, 37482, 37484, + 37486, 37488, 37490, 37492, 37494, 37496, 37498, 37500, + 37502, 37504, 37506, 37508, 37510, 37512, 37514, 37517, + }}, + {{ + 37520, 37523, 37526, 37529, 37532, 37534, 37536, 37538, + 37540, 37542, 37544, 37546, 37548, 37550, 37552, 37554, + 37556, 37558, 37560, 37562, 37564, 37566, 37568, 37570, + 37572, 37574, 37576, 37578, 37580, 37582, 37584, 37586, + }}, + {{ + 37588, 37590, 37592, 37594, 37596, 37598, 37600, 37602, + 37604, 37606, 37608, 37610, 37612, 37614, 37616, 37618, + 37620, 37622, 37624, 37626, 37628, 37630, 37632, 37634, + 37636, 37638, 37640, 37642, 37644, 37646, 37648, 37650, + }}, + {{ + 37652, 37654, 37656, 37658, 37660, 37662, 37664, 37666, + 37668, 37670, 37672, 37674, 37676, 37678, 37680, 37682, + 37684, 37686, 37688, 37690, 37692, 37694, 37696, 37698, + 37700, 37702, 37704, 37706, 37708, 37710, 37712, 37714, + }}, + {{ + 37716, 37718, 37720, 37722, 37724, 37726, 37728, 37730, + 37732, 37734, 37736, 37738, 37740, 37742, 37744, 37746, + 37748, 37750, 37752, 37754, 37756, 37758, 37760, 37762, + 37764, 37766, 37768, 37770, 37772, 37774, 37776, 37778, + }}, + {{ + 37780, 37782, 37784, 37786, 37788, 37790, 37792, 37794, + 37796, 37798, 37800, 37802, 37804, 37806, 37808, 37810, + 37812, 37814, 37816, 37819, 37822, 37825, 37827, 37829, + 37831, 37833, 37835, 37837, 37839, 37841, 37843, 37845, + }}, + {{ + 37847, 37849, 37851, 37853, 37855, 37857, 37859, 37861, + 37863, 37865, 37867, 37869, 37871, 37873, 37875, 37877, + 37879, 37881, 37883, 37885, 37887, 37889, 37891, 37893, + 37895, 37897, 37899, 37901, 37903, 37905, 37907, 37909, + }}, + {{ + 37911, 37913, 37915, 37917, 37919, 37921, 37923, 37925, + 37927, 37929, 37931, 37933, 37935, 37937, 37939, 37941, + 37943, 37945, 37947, 37949, 37951, 37953, 37955, 37957, + 37959, 37961, 37963, 37965, 37967, 37969, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 37971, 37974, 37977, 37980, 37983, 37986, 37989, 37992, + 37995, 37998, 38001, 38004, 38007, 38010, 38013, 38016, + }}, + {{ + 38019, 38022, 38025, 38028, 38031, 38034, 38037, 38040, + 38043, 38046, 38049, 38052, 38055, 38058, 38061, 38064, + 38067, 38070, 38073, 38076, 38079, 38082, 38085, 38088, + 38091, 38094, 38097, 38100, 38103, 38106, 38109, 38112, + }}, + {{ + 38115, 38118, 38121, 38124, 38127, 38130, 38133, 38136, + 38139, 38142, 38145, 38148, 38151, 38154, 38157, 38160, + 0, 0, 38163, 38166, 38169, 38172, 38175, 38178, + 38181, 38184, 38187, 38190, 38193, 38196, 38199, 38202, + }}, + {{ + 38205, 38208, 38211, 38214, 38217, 38220, 38223, 38226, + 38229, 38232, 38235, 38238, 38241, 38244, 38247, 38250, + 38253, 38256, 38259, 38262, 38265, 38268, 38271, 38274, + 38277, 38280, 38283, 38286, 38289, 38292, 38295, 38298, + }}, + {{ + 38301, 38304, 38307, 38310, 38313, 38316, 38319, 38322, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 38325, 38328, 38331, 38335, 38339, 38343, 38347, 38351, + 38355, 38359, 38362, 38380, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 38388, 38389, 38390, 38391, 38392, 38393, 38394, 38395, + 38396, 38397, 38398, 38399, 38400, 38401, 38402, 38403, + }}, + {{ + 38404, 38405, 38406, 38407, 38408, 0, 0, 0, + 0, 38409, 38410, 38411, 38412, 38413, 38414, 38415, + 38416, 38417, 38418, 0, 38419, 38420, 38421, 38422, + 38423, 38424, 38425, 38426, 38427, 38428, 38429, 38430, + }}, + {{ + 38431, 38432, 38433, 38434, 38435, 38436, 38437, 0, + 38438, 38439, 38440, 38441, 0, 0, 0, 0, + 38442, 38444, 38446, 0, 38448, 0, 38450, 38452, + 38454, 38456, 38458, 38460, 38462, 38464, 38466, 38468, + }}, + {{ + 38470, 38471, 38472, 38473, 38474, 38475, 38476, 38477, + 38478, 38479, 38480, 38481, 38482, 38483, 38484, 38485, + 38486, 38487, 38488, 38489, 38490, 38491, 38492, 38493, + 38494, 38495, 38496, 38497, 38498, 38499, 38500, 38501, + }}, + {{ + 38502, 38503, 38504, 38505, 38506, 38507, 38508, 38509, + 38510, 38511, 38512, 38513, 38514, 38515, 38516, 38517, + 38518, 38519, 38520, 38521, 38522, 38523, 38524, 38525, + 38526, 38527, 38528, 38529, 38530, 38531, 38532, 38533, + }}, + {{ + 38534, 38535, 38536, 38537, 38538, 38539, 38540, 38541, + 38542, 38543, 38544, 38545, 38546, 38547, 38548, 38549, + 38550, 38551, 38552, 38553, 38554, 38555, 38556, 38557, + 38558, 38559, 38560, 38561, 38562, 38563, 38564, 38565, + }}, + {{ + 38566, 38567, 38568, 38569, 38570, 38571, 38572, 38573, + 38574, 38575, 38576, 38577, 38578, 38579, 38580, 38581, + 38582, 38583, 38584, 38585, 38586, 38587, 38589, 38591, + 38593, 38595, 38597, 38599, 38601, 0, 0, 0, + }}, + {{ + 0, 38603, 38604, 38605, 38606, 38607, 38608, 38609, + 38610, 38611, 38612, 38613, 38614, 38615, 38616, 38617, + 38618, 38619, 38620, 38621, 38622, 38623, 38624, 38625, + 38626, 38627, 38628, 38629, 38630, 38631, 38632, 38633, + }}, + {{ + 38634, 38635, 38636, 38637, 38638, 38639, 38640, 38641, + 38642, 38643, 38644, 38645, 38646, 38647, 38648, 38649, + 38650, 38651, 38652, 38653, 38654, 38655, 38656, 38657, + 38658, 38659, 38660, 38661, 38662, 38663, 38664, 38665, + }}, + {{ + 38666, 38667, 38668, 38669, 38670, 38671, 38672, 38673, + 38674, 38675, 38676, 38677, 38678, 38679, 38680, 38681, + 38682, 38683, 38684, 38685, 38686, 38687, 38688, 38689, + 38690, 38691, 38692, 38693, 38694, 38695, 38696, 0, + }}, + {{ + 0, 38697, 38698, 38699, 38700, 38701, 38702, 38703, + 38704, 38705, 38706, 38707, 38708, 38709, 38710, 38711, + 38712, 38713, 38714, 38715, 38716, 38717, 38718, 38719, + 38720, 38721, 38722, 38723, 38724, 38725, 38726, 38727, + }}, + {{ + 38728, 38729, 38730, 38731, 38732, 38733, 38734, 38735, + 38736, 38737, 38738, 38739, 38740, 38741, 38742, 38743, + 38744, 38745, 38746, 38747, 38748, 38749, 38750, 38751, + 38752, 38753, 38754, 38755, 38756, 38757, 38758, 38759, + }}, + {{ + 38760, 38761, 38762, 38763, 38764, 38765, 38766, 38767, + 38768, 38769, 38770, 38771, 38772, 38773, 38774, 38775, + 38776, 38777, 38778, 38779, 38780, 38781, 38782, 38783, + 38784, 38785, 38786, 38787, 38788, 38789, 38790, 0, + }}, + {{ + 0, 0, 38791, 38792, 38793, 38794, 38795, 38796, + 0, 0, 38797, 38798, 38799, 38800, 38801, 38802, + 0, 0, 38803, 38804, 38805, 38806, 38807, 38808, + 0, 0, 38809, 38810, 38811, 0, 0, 0, + }}, + {{ + 38812, 38813, 38814, 38815, 38816, 38817, 38818, 0, + 38819, 38820, 38821, 38822, 38823, 38824, 38825, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 6058, 6060, + }}, + {{ + 6062, 6064, 6066, 6068, 6070, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 6072, 6074, 6076, 6078, 6080, + }}, + {{ + 6082, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 38852, 38853, 38854, 38855, 38856, 38857, 38858, 38859, + 38860, 38861, 38862, 38863, 38864, 38865, 38866, 38867, + 38868, 38869, 38870, 38871, 38872, 38873, 38874, 38875, + 38876, 38877, 38878, 38879, 38880, 38881, 38882, 38883, + }}, + {{ + 38884, 38885, 38886, 38887, 38888, 38889, 38890, 38891, + 38892, 38893, 38894, 38895, 38896, 38897, 38898, 38899, + 38900, 38901, 38902, 38903, 38904, 38905, 38906, 38907, + 38908, 38909, 38910, 38911, 38912, 38913, 38914, 38915, + }}, + {{ + 38916, 38917, 38918, 38919, 38920, 38921, 38922, 38923, + 38924, 38925, 38926, 38927, 38928, 38929, 38930, 38931, + 38932, 38933, 38934, 38935, 38936, 0, 38937, 38938, + 38939, 38940, 38941, 38942, 38943, 38944, 38945, 38946, + }}, + {{ + 38947, 38948, 38949, 38950, 38951, 38952, 38953, 38954, + 38955, 38956, 38957, 38958, 38959, 38960, 38961, 38962, + 38963, 38964, 38965, 38966, 38967, 38968, 38969, 38970, + 38971, 38972, 38973, 38974, 38975, 38976, 38977, 38978, + }}, + {{ + 38979, 38980, 38981, 38982, 38983, 38984, 38985, 38986, + 38987, 38988, 38989, 38990, 38991, 38992, 38993, 38994, + 38995, 38996, 38997, 38998, 38999, 39000, 39001, 39002, + 39003, 39004, 39005, 39006, 39007, 0, 39008, 39009, + }}, + {{ + 0, 0, 39010, 0, 0, 39011, 39012, 0, + 0, 39013, 39014, 39015, 39016, 0, 39017, 39018, + 39019, 39020, 39021, 39022, 39023, 39024, 39025, 39026, + 39027, 39028, 0, 39029, 0, 39030, 39031, 39032, + }}, + {{ + 39033, 0, 39034, 39035, 0, 39036, 39037, 39038, + 39039, 39040, 39041, 39042, 39043, 39044, 39045, 39046, + 39047, 39048, 39049, 39050, 39051, 39052, 39053, 39054, + 39055, 39056, 39057, 39058, 39059, 39060, 39061, 39062, + }}, + {{ + 39063, 39064, 39065, 39066, 39067, 39068, 39069, 39070, + 39071, 39072, 39073, 39074, 39075, 39076, 39077, 39078, + 39079, 39080, 39081, 39082, 39083, 39084, 39085, 39086, + 39087, 39088, 39089, 39090, 39091, 39092, 39093, 39094, + }}, + {{ + 39095, 39096, 39097, 39098, 39099, 39100, 0, 39101, + 39102, 39103, 39104, 0, 0, 39105, 39106, 39107, + 39108, 39109, 39110, 39111, 39112, 0, 39113, 39114, + 39115, 39116, 39117, 39118, 39119, 0, 39120, 39121, + }}, + {{ + 39122, 39123, 39124, 39125, 39126, 39127, 39128, 39129, + 39130, 39131, 39132, 39133, 39134, 39135, 39136, 39137, + 39138, 39139, 39140, 39141, 39142, 39143, 39144, 39145, + 39146, 39147, 0, 39148, 39149, 39150, 39151, 0, + }}, + {{ + 39152, 39153, 39154, 39155, 39156, 0, 39157, 0, + 0, 0, 39158, 39159, 39160, 39161, 39162, 39163, + 39164, 0, 39165, 39166, 39167, 39168, 39169, 39170, + 39171, 39172, 39173, 39174, 39175, 39176, 39177, 39178, + }}, + {{ + 39179, 39180, 39181, 39182, 39183, 39184, 39185, 39186, + 39187, 39188, 39189, 39190, 39191, 39192, 39193, 39194, + 39195, 39196, 39197, 39198, 39199, 39200, 39201, 39202, + 39203, 39204, 39205, 39206, 39207, 39208, 39209, 39210, + }}, + {{ + 39211, 39212, 39213, 39214, 39215, 39216, 39217, 39218, + 39219, 39220, 39221, 39222, 39223, 39224, 39225, 39226, + 39227, 39228, 39229, 39230, 39231, 39232, 39233, 39234, + 39235, 39236, 39237, 39238, 39239, 39240, 39241, 39242, + }}, + {{ + 39243, 39244, 39245, 39246, 39247, 39248, 39249, 39250, + 39251, 39252, 39253, 39254, 39255, 39256, 39257, 39258, + 39259, 39260, 39261, 39262, 39263, 39264, 39265, 39266, + 39267, 39268, 39269, 39270, 39271, 39272, 39273, 39274, + }}, + {{ + 39275, 39276, 39277, 39278, 39279, 39280, 39281, 39282, + 39283, 39284, 39285, 39286, 39287, 39288, 39289, 39290, + 39291, 39292, 39293, 39294, 39295, 39296, 39297, 39298, + 39299, 39300, 39301, 39302, 39303, 39304, 39305, 39306, + }}, + {{ + 39307, 39308, 39309, 39310, 39311, 39312, 39313, 39314, + 39315, 39316, 39317, 39318, 39319, 39320, 39321, 39322, + 39323, 39324, 39325, 39326, 39327, 39328, 39329, 39330, + 39331, 39332, 39333, 39334, 39335, 39336, 39337, 39338, + }}, + {{ + 39339, 39340, 39341, 39342, 39343, 39344, 39345, 39346, + 39347, 39348, 39349, 39350, 39351, 39352, 39353, 39354, + 39355, 39356, 39357, 39358, 39359, 39360, 39361, 39362, + 39363, 39364, 39365, 39366, 39367, 39368, 39369, 39370, + }}, + {{ + 39371, 39372, 39373, 39374, 39375, 39376, 39377, 39378, + 39379, 39380, 39381, 39382, 39383, 39384, 39385, 39386, + 39387, 39388, 39389, 39390, 39391, 39392, 39393, 39394, + 39395, 39396, 39397, 39398, 39399, 39400, 39401, 39402, + }}, + {{ + 39403, 39404, 39405, 39406, 39407, 39408, 39409, 39410, + 39411, 39412, 39413, 39414, 39415, 39416, 39417, 39418, + 39419, 39420, 39421, 39422, 39423, 39424, 39425, 39426, + 39427, 39428, 39429, 39430, 39431, 39432, 39433, 39434, + }}, + {{ + 39435, 39436, 39437, 39438, 39439, 39440, 39441, 39442, + 39443, 39444, 39445, 39446, 39447, 39448, 39449, 39450, + 39451, 39452, 39453, 39454, 39455, 39456, 39457, 39458, + 39459, 39460, 39461, 39462, 39463, 39464, 39465, 39466, + }}, + {{ + 39467, 39468, 39469, 39470, 39471, 39472, 39473, 39474, + 39475, 39476, 39477, 39478, 39479, 39480, 39481, 39482, + 39483, 39484, 39485, 39486, 39487, 39488, 39489, 39490, + 39491, 39492, 39493, 39494, 39495, 39496, 39497, 39498, + }}, + {{ + 39499, 39500, 39501, 39502, 0, 0, 0, 0, + 39503, 39504, 39505, 39506, 39507, 39508, 39509, 39510, + 39511, 39512, 39513, 39514, 39515, 39516, 39517, 39518, + 39519, 39520, 39521, 39522, 39523, 39524, 39525, 39526, + }}, + {{ + 39527, 39528, 39529, 39530, 39531, 39532, 39533, 39534, + 39535, 39536, 39537, 39538, 39539, 39540, 39541, 39542, + 39543, 39544, 39545, 39546, 39547, 39548, 39549, 39550, + 39551, 39552, 39553, 39554, 39555, 39556, 39557, 39558, + }}, + {{ + 39559, 39560, 39561, 39562, 39563, 39564, 39565, 39566, + 39567, 39568, 39569, 39570, 39571, 39572, 39573, 39574, + 39575, 39576, 39577, 39578, 39579, 39580, 39581, 39582, + 39583, 39584, 39585, 39586, 39587, 39588, 39589, 39590, + }}, + {{ + 39591, 39592, 39593, 39594, 39595, 39596, 39597, 39598, + 39599, 39600, 39601, 39602, 39603, 39604, 39605, 39606, + 39607, 39608, 39609, 39610, 39611, 39612, 39613, 39614, + 39615, 39616, 39617, 39618, 39619, 39620, 39621, 39622, + }}, + {{ + 39623, 39624, 39625, 39626, 39627, 39628, 39629, 39630, + 39631, 39632, 39633, 39634, 39635, 39636, 39637, 39638, + 39639, 39640, 39641, 39642, 39643, 39644, 39645, 39646, + 39647, 39648, 39649, 39650, 39651, 39652, 39653, 39654, + }}, + {{ + 39655, 39656, 39657, 39658, 39659, 39660, 39661, 39662, + 39663, 39664, 39665, 39666, 39667, 39668, 39669, 39670, + 39671, 39672, 39673, 39674, 39675, 39676, 39677, 39678, + 39679, 39680, 39681, 39682, 39683, 39684, 39685, 39686, + }}, + {{ + 39687, 39688, 39689, 39690, 39691, 39692, 39693, 39694, + 39695, 39696, 39697, 39698, 39699, 39700, 39701, 39702, + 39703, 39704, 39705, 39706, 39707, 39708, 39709, 39710, + 39711, 39712, 39713, 39714, 39715, 39716, 39717, 39718, + }}, + {{ + 39719, 39720, 39721, 39722, 39723, 39724, 39725, 39726, + 39727, 39728, 39729, 39730, 39731, 39732, 39733, 39734, + 39735, 39736, 39737, 39738, 39739, 39740, 39741, 39742, + 39743, 39744, 39745, 39746, 39747, 39748, 39749, 39750, + }}, + {{ + 39751, 39752, 39753, 39754, 39755, 39756, 39757, 39758, + 39759, 39760, 39761, 39762, 39763, 39764, 39765, 39766, + 39767, 39768, 39769, 39770, 39771, 39772, 39773, 39774, + 39775, 39776, 39777, 39778, 39779, 39780, 39781, 39782, + }}, + {{ + 39783, 39784, 39785, 39786, 39787, 39788, 39789, 39790, + 39791, 39792, 0, 0, 0, 0, 39793, 39794, + 39795, 39796, 39797, 39798, 39799, 39800, 39801, 39802, + 39803, 39804, 39805, 39806, 39807, 39808, 39809, 39810, + }}, + {{ + 39811, 39812, 39813, 39814, 39815, 39816, 39817, 39818, + 39819, 39820, 39821, 39822, 39823, 39824, 39825, 39826, + 39827, 39828, 39829, 39830, 39831, 39832, 39833, 39834, + 39835, 39836, 39837, 39838, 39839, 39840, 39841, 39842, + }}, + {{ + 7075, 7076, 7077, 7078, 7079, 7080, 7081, 7082, + 7083, 7084, 7085, 7086, 7087, 7088, 7089, 7090, + 7091, 7092, 7093, 7094, 7095, 7096, 7097, 7098, + 7099, 7100, 7101, 7102, 7103, 7104, 7105, 7106, + }}, + {{ + 7107, 7108, 7109, 7110, 7111, 7112, 7113, 7114, + 7115, 7116, 7117, 7118, 7119, 7120, 7121, 7122, + 7123, 7124, 7125, 7126, 7127, 7128, 7129, 7130, + 7131, 7132, 7133, 7134, 7135, 7136, 7137, 7138, + }}, + {{ + 7139, 7140, 7141, 7142, 7143, 7144, 7145, 7146, + 7147, 7148, 7149, 7150, 7151, 7152, 7153, 7154, + 7155, 7156, 7157, 7158, 7159, 7160, 7161, 7162, + 7163, 7164, 7165, 7166, 7167, 7168, 7169, 7170, + }}, + {{ + 7171, 7172, 7173, 7174, 7175, 7176, 7177, 7178, + 7179, 7180, 7181, 7182, 7183, 7184, 7185, 7186, + 7187, 7188, 7189, 7190, 7191, 7192, 7193, 7194, + 7195, 7196, 7197, 7198, 7199, 7200, 7201, 7202, + }}, + {{ + 7203, 7204, 7205, 7206, 7207, 7208, 7209, 7210, + 7211, 7212, 7213, 7214, 7215, 7216, 7217, 7218, + 7219, 7220, 7221, 7222, 7223, 7224, 7225, 7226, + 7227, 7228, 7229, 7230, 7231, 7232, 7233, 7234, + }}, + {{ + 7235, 7236, 7237, 7238, 7239, 7240, 7241, 7242, + 7243, 7244, 7245, 7246, 7247, 7248, 7249, 7250, + 7251, 7252, 7253, 7254, 7255, 7256, 7257, 7258, + 7259, 7260, 7261, 7262, 7263, 7264, 7265, 7266, + }}, + {{ + 7267, 7268, 7269, 7270, 7271, 7272, 7273, 7274, + 7275, 7276, 7277, 7278, 7279, 7280, 7281, 7282, + 7283, 7284, 7285, 7286, 7287, 7288, 7289, 7290, + 7291, 7292, 7293, 7294, 7295, 7296, 7297, 7298, + }}, + {{ + 7299, 7300, 7301, 7302, 7303, 7304, 7305, 7306, + 7307, 7308, 7309, 7310, 7311, 7312, 7313, 7314, + 7315, 7316, 7317, 7318, 7319, 7320, 7321, 7322, + 7323, 7324, 7325, 7326, 7327, 7328, 7329, 7330, + }}, + {{ + 7331, 7332, 7333, 7334, 7335, 7336, 7337, 7338, + 7339, 7340, 7341, 7342, 7343, 7344, 7345, 7346, + 7347, 7348, 7349, 7350, 7351, 7352, 7353, 7354, + 7355, 7356, 7357, 7358, 7359, 7360, 7361, 7362, + }}, + {{ + 7363, 7364, 7365, 7366, 7367, 7368, 7369, 7370, + 7371, 7372, 7373, 7374, 7375, 7376, 7377, 7378, + 7379, 7380, 7381, 7382, 7383, 7384, 7385, 7386, + 7387, 7388, 7389, 7390, 7391, 7392, 7393, 7394, + }}, + {{ + 7395, 7396, 7397, 7398, 7399, 7400, 7401, 7402, + 7403, 7404, 7405, 7406, 7407, 7408, 7409, 7410, + 7411, 7412, 7413, 7414, 7415, 7416, 7417, 7418, + 7419, 7420, 7421, 7422, 7423, 7424, 7425, 7426, + }}, + {{ + 7427, 7428, 7429, 7430, 7431, 7432, 7433, 7434, + 7435, 7436, 7437, 7438, 7439, 7440, 7441, 7442, + 7443, 7444, 7445, 7446, 7447, 7448, 7449, 7450, + 7451, 7452, 7453, 7454, 7455, 7456, 7457, 7458, + }}, + {{ + 7459, 7460, 7461, 7462, 7463, 7464, 7465, 7466, + 7467, 7468, 7469, 7470, 7471, 7472, 7473, 7474, + 7475, 7476, 7477, 7478, 7479, 7480, 7481, 7482, + 7483, 7484, 7485, 7486, 7487, 7488, 7489, 7490, + }}, + {{ + 7491, 7492, 7493, 7494, 7495, 7496, 7497, 7498, + 7499, 7500, 7501, 7502, 7503, 7504, 7505, 7506, + 7507, 7508, 7509, 7510, 7511, 7512, 7513, 7514, + 7515, 7516, 7517, 7518, 7519, 7520, 7521, 7522, + }}, + {{ + 7523, 7524, 7525, 7526, 7527, 7528, 7529, 7530, + 7531, 7532, 7533, 7534, 7535, 7536, 7537, 7538, + 7539, 7540, 7541, 7542, 7543, 7544, 7545, 7546, + 7547, 7548, 7549, 7550, 7551, 7552, 7553, 7554, + }}, + {{ + 7555, 7556, 7557, 7558, 7559, 7560, 7561, 7562, + 7563, 7564, 7565, 7566, 7567, 7568, 7569, 7570, + 7571, 7572, 7573, 7574, 7575, 7576, 7577, 7578, + 7579, 7580, 7581, 7582, 7583, 7584, 7585, 7586, + }}, + {{ + 7587, 7588, 7589, 7590, 7591, 7592, 7593, 7594, + 7595, 7596, 7597, 7598, 7599, 7600, 7601, 7602, + 7603, 7604, 7605, 7606, 7607, 7608, 7609, 7610, + 7611, 7612, 7613, 7614, 7615, 7616, 0, 0, + }}, +}; +static const unsigned long v310_decompose_seq[] = { + 0x00000000, 0x80000020, 0x00000020, 0x80000308, + 0x80000061, 0x00000020, 0x80000304, 0x80000032, + 0x80000033, 0x00000020, 0x80000301, 0x800003bc, + 0x00000020, 0x80000327, 0x80000031, 0x8000006f, + 0x00000031, 0x00002044, 0x80000034, 0x00000031, + 0x00002044, 0x80000032, 0x00000033, 0x00002044, + 0x80000034, 0x00000041, 0x80000300, 0x00000041, + 0x80000301, 0x00000041, 0x80000302, 0x00000041, + 0x80000303, 0x00000041, 0x80000308, 0x00000041, + 0x8000030a, 0x00000043, 0x80000327, 0x00000045, + 0x80000300, 0x00000045, 0x80000301, 0x00000045, + 0x80000302, 0x00000045, 0x80000308, 0x00000049, + 0x80000300, 0x00000049, 0x80000301, 0x00000049, + 0x80000302, 0x00000049, 0x80000308, 0x0000004e, + 0x80000303, 0x0000004f, 0x80000300, 0x0000004f, + 0x80000301, 0x0000004f, 0x80000302, 0x0000004f, + 0x80000303, 0x0000004f, 0x80000308, 0x00000055, + 0x80000300, 0x00000055, 0x80000301, 0x00000055, + 0x80000302, 0x00000055, 0x80000308, 0x00000059, + 0x80000301, 0x00000061, 0x80000300, 0x00000061, + 0x80000301, 0x00000061, 0x80000302, 0x00000061, + 0x80000303, 0x00000061, 0x80000308, 0x00000061, + 0x8000030a, 0x00000063, 0x80000327, 0x00000065, + 0x80000300, 0x00000065, 0x80000301, 0x00000065, + 0x80000302, 0x00000065, 0x80000308, 0x00000069, + 0x80000300, 0x00000069, 0x80000301, 0x00000069, + 0x80000302, 0x00000069, 0x80000308, 0x0000006e, + 0x80000303, 0x0000006f, 0x80000300, 0x0000006f, + 0x80000301, 0x0000006f, 0x80000302, 0x0000006f, + 0x80000303, 0x0000006f, 0x80000308, 0x00000075, + 0x80000300, 0x00000075, 0x80000301, 0x00000075, + 0x80000302, 0x00000075, 0x80000308, 0x00000079, + 0x80000301, 0x00000079, 0x80000308, 0x00000041, + 0x80000304, 0x00000061, 0x80000304, 0x00000041, + 0x80000306, 0x00000061, 0x80000306, 0x00000041, + 0x80000328, 0x00000061, 0x80000328, 0x00000043, + 0x80000301, 0x00000063, 0x80000301, 0x00000043, + 0x80000302, 0x00000063, 0x80000302, 0x00000043, + 0x80000307, 0x00000063, 0x80000307, 0x00000043, + 0x8000030c, 0x00000063, 0x8000030c, 0x00000044, + 0x8000030c, 0x00000064, 0x8000030c, 0x00000045, + 0x80000304, 0x00000065, 0x80000304, 0x00000045, + 0x80000306, 0x00000065, 0x80000306, 0x00000045, + 0x80000307, 0x00000065, 0x80000307, 0x00000045, + 0x80000328, 0x00000065, 0x80000328, 0x00000045, + 0x8000030c, 0x00000065, 0x8000030c, 0x00000047, + 0x80000302, 0x00000067, 0x80000302, 0x00000047, + 0x80000306, 0x00000067, 0x80000306, 0x00000047, + 0x80000307, 0x00000067, 0x80000307, 0x00000047, + 0x80000327, 0x00000067, 0x80000327, 0x00000048, + 0x80000302, 0x00000068, 0x80000302, 0x00000049, + 0x80000303, 0x00000069, 0x80000303, 0x00000049, + 0x80000304, 0x00000069, 0x80000304, 0x00000049, + 0x80000306, 0x00000069, 0x80000306, 0x00000049, + 0x80000328, 0x00000069, 0x80000328, 0x00000049, + 0x80000307, 0x00000049, 0x8000004a, 0x00000069, + 0x8000006a, 0x0000004a, 0x80000302, 0x0000006a, + 0x80000302, 0x0000004b, 0x80000327, 0x0000006b, + 0x80000327, 0x0000004c, 0x80000301, 0x0000006c, + 0x80000301, 0x0000004c, 0x80000327, 0x0000006c, + 0x80000327, 0x0000004c, 0x8000030c, 0x0000006c, + 0x8000030c, 0x0000004c, 0x800000b7, 0x0000006c, + 0x800000b7, 0x0000004e, 0x80000301, 0x0000006e, + 0x80000301, 0x0000004e, 0x80000327, 0x0000006e, + 0x80000327, 0x0000004e, 0x8000030c, 0x0000006e, + 0x8000030c, 0x000002bc, 0x8000006e, 0x0000004f, + 0x80000304, 0x0000006f, 0x80000304, 0x0000004f, + 0x80000306, 0x0000006f, 0x80000306, 0x0000004f, + 0x8000030b, 0x0000006f, 0x8000030b, 0x00000052, + 0x80000301, 0x00000072, 0x80000301, 0x00000052, + 0x80000327, 0x00000072, 0x80000327, 0x00000052, + 0x8000030c, 0x00000072, 0x8000030c, 0x00000053, + 0x80000301, 0x00000073, 0x80000301, 0x00000053, + 0x80000302, 0x00000073, 0x80000302, 0x00000053, + 0x80000327, 0x00000073, 0x80000327, 0x00000053, + 0x8000030c, 0x00000073, 0x8000030c, 0x00000054, + 0x80000327, 0x00000074, 0x80000327, 0x00000054, + 0x8000030c, 0x00000074, 0x8000030c, 0x00000055, + 0x80000303, 0x00000075, 0x80000303, 0x00000055, + 0x80000304, 0x00000075, 0x80000304, 0x00000055, + 0x80000306, 0x00000075, 0x80000306, 0x00000055, + 0x8000030a, 0x00000075, 0x8000030a, 0x00000055, + 0x8000030b, 0x00000075, 0x8000030b, 0x00000055, + 0x80000328, 0x00000075, 0x80000328, 0x00000057, + 0x80000302, 0x00000077, 0x80000302, 0x00000059, + 0x80000302, 0x00000079, 0x80000302, 0x00000059, + 0x80000308, 0x0000005a, 0x80000301, 0x0000007a, + 0x80000301, 0x0000005a, 0x80000307, 0x0000007a, + 0x80000307, 0x0000005a, 0x8000030c, 0x0000007a, + 0x8000030c, 0x80000073, 0x0000004f, 0x8000031b, + 0x0000006f, 0x8000031b, 0x00000055, 0x8000031b, + 0x00000075, 0x8000031b, 0x00000044, 0x8000017d, + 0x00000044, 0x8000017e, 0x00000064, 0x8000017e, + 0x0000004c, 0x8000004a, 0x0000004c, 0x8000006a, + 0x0000006c, 0x8000006a, 0x0000004e, 0x8000004a, + 0x0000004e, 0x8000006a, 0x0000006e, 0x8000006a, + 0x00000041, 0x8000030c, 0x00000061, 0x8000030c, + 0x00000049, 0x8000030c, 0x00000069, 0x8000030c, + 0x0000004f, 0x8000030c, 0x0000006f, 0x8000030c, + 0x00000055, 0x8000030c, 0x00000075, 0x8000030c, + 0x000000dc, 0x80000304, 0x000000fc, 0x80000304, + 0x000000dc, 0x80000301, 0x000000fc, 0x80000301, + 0x000000dc, 0x8000030c, 0x000000fc, 0x8000030c, + 0x000000dc, 0x80000300, 0x000000fc, 0x80000300, + 0x000000c4, 0x80000304, 0x000000e4, 0x80000304, + 0x00000226, 0x80000304, 0x00000227, 0x80000304, + 0x000000c6, 0x80000304, 0x000000e6, 0x80000304, + 0x00000047, 0x8000030c, 0x00000067, 0x8000030c, + 0x0000004b, 0x8000030c, 0x0000006b, 0x8000030c, + 0x0000004f, 0x80000328, 0x0000006f, 0x80000328, + 0x000001ea, 0x80000304, 0x000001eb, 0x80000304, + 0x000001b7, 0x8000030c, 0x00000292, 0x8000030c, + 0x0000006a, 0x8000030c, 0x00000044, 0x8000005a, + 0x00000044, 0x8000007a, 0x00000064, 0x8000007a, + 0x00000047, 0x80000301, 0x00000067, 0x80000301, + 0x0000004e, 0x80000300, 0x0000006e, 0x80000300, + 0x000000c5, 0x80000301, 0x000000e5, 0x80000301, + 0x000000c6, 0x80000301, 0x000000e6, 0x80000301, + 0x000000d8, 0x80000301, 0x000000f8, 0x80000301, + 0x00000041, 0x8000030f, 0x00000061, 0x8000030f, + 0x00000041, 0x80000311, 0x00000061, 0x80000311, + 0x00000045, 0x8000030f, 0x00000065, 0x8000030f, + 0x00000045, 0x80000311, 0x00000065, 0x80000311, + 0x00000049, 0x8000030f, 0x00000069, 0x8000030f, + 0x00000049, 0x80000311, 0x00000069, 0x80000311, + 0x0000004f, 0x8000030f, 0x0000006f, 0x8000030f, + 0x0000004f, 0x80000311, 0x0000006f, 0x80000311, + 0x00000052, 0x8000030f, 0x00000072, 0x8000030f, + 0x00000052, 0x80000311, 0x00000072, 0x80000311, + 0x00000055, 0x8000030f, 0x00000075, 0x8000030f, + 0x00000055, 0x80000311, 0x00000075, 0x80000311, + 0x00000053, 0x80000326, 0x00000073, 0x80000326, + 0x00000054, 0x80000326, 0x00000074, 0x80000326, + 0x00000048, 0x8000030c, 0x00000068, 0x8000030c, + 0x00000041, 0x80000307, 0x00000061, 0x80000307, + 0x00000045, 0x80000327, 0x00000065, 0x80000327, + 0x000000d6, 0x80000304, 0x000000f6, 0x80000304, + 0x000000d5, 0x80000304, 0x000000f5, 0x80000304, + 0x0000004f, 0x80000307, 0x0000006f, 0x80000307, + 0x0000022e, 0x80000304, 0x0000022f, 0x80000304, + 0x00000059, 0x80000304, 0x00000079, 0x80000304, + 0x80000068, 0x80000266, 0x8000006a, 0x80000072, + 0x80000279, 0x8000027b, 0x80000281, 0x80000077, + 0x80000079, 0x00000020, 0x80000306, 0x00000020, + 0x80000307, 0x00000020, 0x8000030a, 0x00000020, + 0x80000328, 0x00000020, 0x80000303, 0x00000020, + 0x8000030b, 0x80000263, 0x8000006c, 0x80000073, + 0x80000078, 0x80000295, 0x80000300, 0x80000301, + 0x80000313, 0x00000308, 0x80000301, 0x800002b9, + 0x00000020, 0x80000345, 0x8000003b, 0x00000020, + 0x80000301, 0x000000a8, 0x80000301, 0x00000391, + 0x80000301, 0x800000b7, 0x00000395, 0x80000301, + 0x00000397, 0x80000301, 0x00000399, 0x80000301, + 0x0000039f, 0x80000301, 0x000003a5, 0x80000301, + 0x000003a9, 0x80000301, 0x000003ca, 0x80000301, + 0x00000399, 0x80000308, 0x000003a5, 0x80000308, + 0x000003b1, 0x80000301, 0x000003b5, 0x80000301, + 0x000003b7, 0x80000301, 0x000003b9, 0x80000301, + 0x000003cb, 0x80000301, 0x000003b9, 0x80000308, + 0x000003c5, 0x80000308, 0x000003bf, 0x80000301, + 0x000003c5, 0x80000301, 0x000003c9, 0x80000301, + 0x800003b2, 0x800003b8, 0x800003a5, 0x000003d2, + 0x80000301, 0x000003d2, 0x80000308, 0x800003c6, + 0x800003c0, 0x800003ba, 0x800003c1, 0x800003c2, + 0x80000398, 0x800003b5, 0x00000415, 0x80000300, + 0x00000415, 0x80000308, 0x00000413, 0x80000301, + 0x00000406, 0x80000308, 0x0000041a, 0x80000301, + 0x00000418, 0x80000300, 0x00000423, 0x80000306, + 0x00000418, 0x80000306, 0x00000438, 0x80000306, + 0x00000435, 0x80000300, 0x00000435, 0x80000308, + 0x00000433, 0x80000301, 0x00000456, 0x80000308, + 0x0000043a, 0x80000301, 0x00000438, 0x80000300, + 0x00000443, 0x80000306, 0x00000474, 0x8000030f, + 0x00000475, 0x8000030f, 0x00000416, 0x80000306, + 0x00000436, 0x80000306, 0x00000410, 0x80000306, + 0x00000430, 0x80000306, 0x00000410, 0x80000308, + 0x00000430, 0x80000308, 0x00000415, 0x80000306, + 0x00000435, 0x80000306, 0x000004d8, 0x80000308, + 0x000004d9, 0x80000308, 0x00000416, 0x80000308, + 0x00000436, 0x80000308, 0x00000417, 0x80000308, + 0x00000437, 0x80000308, 0x00000418, 0x80000304, + 0x00000438, 0x80000304, 0x00000418, 0x80000308, + 0x00000438, 0x80000308, 0x0000041e, 0x80000308, + 0x0000043e, 0x80000308, 0x000004e8, 0x80000308, + 0x000004e9, 0x80000308, 0x0000042d, 0x80000308, + 0x0000044d, 0x80000308, 0x00000423, 0x80000304, + 0x00000443, 0x80000304, 0x00000423, 0x80000308, + 0x00000443, 0x80000308, 0x00000423, 0x8000030b, + 0x00000443, 0x8000030b, 0x00000427, 0x80000308, + 0x00000447, 0x80000308, 0x0000042b, 0x80000308, + 0x0000044b, 0x80000308, 0x00000565, 0x80000582, + 0x00000627, 0x80000653, 0x00000627, 0x80000654, + 0x00000648, 0x80000654, 0x00000627, 0x80000655, + 0x0000064a, 0x80000654, 0x00000627, 0x80000674, + 0x00000648, 0x80000674, 0x000006c7, 0x80000674, + 0x0000064a, 0x80000674, 0x000006d5, 0x80000654, + 0x000006c1, 0x80000654, 0x000006d2, 0x80000654, + 0x00000928, 0x8000093c, 0x00000930, 0x8000093c, + 0x00000933, 0x8000093c, 0x00000915, 0x8000093c, + 0x00000916, 0x8000093c, 0x00000917, 0x8000093c, + 0x0000091c, 0x8000093c, 0x00000921, 0x8000093c, + 0x00000922, 0x8000093c, 0x0000092b, 0x8000093c, + 0x0000092f, 0x8000093c, 0x000009c7, 0x800009be, + 0x000009c7, 0x800009d7, 0x000009a1, 0x800009bc, + 0x000009a2, 0x800009bc, 0x000009af, 0x800009bc, + 0x00000a32, 0x80000a3c, 0x00000a38, 0x80000a3c, + 0x00000a16, 0x80000a3c, 0x00000a17, 0x80000a3c, + 0x00000a1c, 0x80000a3c, 0x00000a2b, 0x80000a3c, + 0x00000b47, 0x80000b56, 0x00000b47, 0x80000b3e, + 0x00000b47, 0x80000b57, 0x00000b21, 0x80000b3c, + 0x00000b22, 0x80000b3c, 0x00000b92, 0x80000bd7, + 0x00000bc6, 0x80000bbe, 0x00000bc7, 0x80000bbe, + 0x00000bc6, 0x80000bd7, 0x00000c46, 0x80000c56, + 0x00000cbf, 0x80000cd5, 0x00000cc6, 0x80000cd5, + 0x00000cc6, 0x80000cd6, 0x00000cc6, 0x80000cc2, + 0x00000cca, 0x80000cd5, 0x00000d46, 0x80000d3e, + 0x00000d47, 0x80000d3e, 0x00000d46, 0x80000d57, + 0x00000dd9, 0x80000dca, 0x00000dd9, 0x80000dcf, + 0x00000ddc, 0x80000dca, 0x00000dd9, 0x80000ddf, + 0x00000e4d, 0x80000e32, 0x00000ecd, 0x80000eb2, + 0x00000eab, 0x80000e99, 0x00000eab, 0x80000ea1, + 0x80000f0b, 0x00000f42, 0x80000fb7, 0x00000f4c, + 0x80000fb7, 0x00000f51, 0x80000fb7, 0x00000f56, + 0x80000fb7, 0x00000f5b, 0x80000fb7, 0x00000f40, + 0x80000fb5, 0x00000f71, 0x80000f72, 0x00000f71, + 0x80000f74, 0x00000fb2, 0x80000f80, 0x00000fb2, + 0x80000f81, 0x00000fb3, 0x80000f80, 0x00000fb3, + 0x80000f81, 0x00000f71, 0x80000f80, 0x00000f92, + 0x80000fb7, 0x00000f9c, 0x80000fb7, 0x00000fa1, + 0x80000fb7, 0x00000fa6, 0x80000fb7, 0x00000fab, + 0x80000fb7, 0x00000f90, 0x80000fb5, 0x00001025, + 0x8000102e, 0x00000041, 0x80000325, 0x00000061, + 0x80000325, 0x00000042, 0x80000307, 0x00000062, + 0x80000307, 0x00000042, 0x80000323, 0x00000062, + 0x80000323, 0x00000042, 0x80000331, 0x00000062, + 0x80000331, 0x000000c7, 0x80000301, 0x000000e7, + 0x80000301, 0x00000044, 0x80000307, 0x00000064, + 0x80000307, 0x00000044, 0x80000323, 0x00000064, + 0x80000323, 0x00000044, 0x80000331, 0x00000064, + 0x80000331, 0x00000044, 0x80000327, 0x00000064, + 0x80000327, 0x00000044, 0x8000032d, 0x00000064, + 0x8000032d, 0x00000112, 0x80000300, 0x00000113, + 0x80000300, 0x00000112, 0x80000301, 0x00000113, + 0x80000301, 0x00000045, 0x8000032d, 0x00000065, + 0x8000032d, 0x00000045, 0x80000330, 0x00000065, + 0x80000330, 0x00000228, 0x80000306, 0x00000229, + 0x80000306, 0x00000046, 0x80000307, 0x00000066, + 0x80000307, 0x00000047, 0x80000304, 0x00000067, + 0x80000304, 0x00000048, 0x80000307, 0x00000068, + 0x80000307, 0x00000048, 0x80000323, 0x00000068, + 0x80000323, 0x00000048, 0x80000308, 0x00000068, + 0x80000308, 0x00000048, 0x80000327, 0x00000068, + 0x80000327, 0x00000048, 0x8000032e, 0x00000068, + 0x8000032e, 0x00000049, 0x80000330, 0x00000069, + 0x80000330, 0x000000cf, 0x80000301, 0x000000ef, + 0x80000301, 0x0000004b, 0x80000301, 0x0000006b, + 0x80000301, 0x0000004b, 0x80000323, 0x0000006b, + 0x80000323, 0x0000004b, 0x80000331, 0x0000006b, + 0x80000331, 0x0000004c, 0x80000323, 0x0000006c, + 0x80000323, 0x00001e36, 0x80000304, 0x00001e37, + 0x80000304, 0x0000004c, 0x80000331, 0x0000006c, + 0x80000331, 0x0000004c, 0x8000032d, 0x0000006c, + 0x8000032d, 0x0000004d, 0x80000301, 0x0000006d, + 0x80000301, 0x0000004d, 0x80000307, 0x0000006d, + 0x80000307, 0x0000004d, 0x80000323, 0x0000006d, + 0x80000323, 0x0000004e, 0x80000307, 0x0000006e, + 0x80000307, 0x0000004e, 0x80000323, 0x0000006e, + 0x80000323, 0x0000004e, 0x80000331, 0x0000006e, + 0x80000331, 0x0000004e, 0x8000032d, 0x0000006e, + 0x8000032d, 0x000000d5, 0x80000301, 0x000000f5, + 0x80000301, 0x000000d5, 0x80000308, 0x000000f5, + 0x80000308, 0x0000014c, 0x80000300, 0x0000014d, + 0x80000300, 0x0000014c, 0x80000301, 0x0000014d, + 0x80000301, 0x00000050, 0x80000301, 0x00000070, + 0x80000301, 0x00000050, 0x80000307, 0x00000070, + 0x80000307, 0x00000052, 0x80000307, 0x00000072, + 0x80000307, 0x00000052, 0x80000323, 0x00000072, + 0x80000323, 0x00001e5a, 0x80000304, 0x00001e5b, + 0x80000304, 0x00000052, 0x80000331, 0x00000072, + 0x80000331, 0x00000053, 0x80000307, 0x00000073, + 0x80000307, 0x00000053, 0x80000323, 0x00000073, + 0x80000323, 0x0000015a, 0x80000307, 0x0000015b, + 0x80000307, 0x00000160, 0x80000307, 0x00000161, + 0x80000307, 0x00001e62, 0x80000307, 0x00001e63, + 0x80000307, 0x00000054, 0x80000307, 0x00000074, + 0x80000307, 0x00000054, 0x80000323, 0x00000074, + 0x80000323, 0x00000054, 0x80000331, 0x00000074, + 0x80000331, 0x00000054, 0x8000032d, 0x00000074, + 0x8000032d, 0x00000055, 0x80000324, 0x00000075, + 0x80000324, 0x00000055, 0x80000330, 0x00000075, + 0x80000330, 0x00000055, 0x8000032d, 0x00000075, + 0x8000032d, 0x00000168, 0x80000301, 0x00000169, + 0x80000301, 0x0000016a, 0x80000308, 0x0000016b, + 0x80000308, 0x00000056, 0x80000303, 0x00000076, + 0x80000303, 0x00000056, 0x80000323, 0x00000076, + 0x80000323, 0x00000057, 0x80000300, 0x00000077, + 0x80000300, 0x00000057, 0x80000301, 0x00000077, + 0x80000301, 0x00000057, 0x80000308, 0x00000077, + 0x80000308, 0x00000057, 0x80000307, 0x00000077, + 0x80000307, 0x00000057, 0x80000323, 0x00000077, + 0x80000323, 0x00000058, 0x80000307, 0x00000078, + 0x80000307, 0x00000058, 0x80000308, 0x00000078, + 0x80000308, 0x00000059, 0x80000307, 0x00000079, + 0x80000307, 0x0000005a, 0x80000302, 0x0000007a, + 0x80000302, 0x0000005a, 0x80000323, 0x0000007a, + 0x80000323, 0x0000005a, 0x80000331, 0x0000007a, + 0x80000331, 0x00000068, 0x80000331, 0x00000074, + 0x80000308, 0x00000077, 0x8000030a, 0x00000079, + 0x8000030a, 0x00000061, 0x800002be, 0x0000017f, + 0x80000307, 0x00000041, 0x80000323, 0x00000061, + 0x80000323, 0x00000041, 0x80000309, 0x00000061, + 0x80000309, 0x000000c2, 0x80000301, 0x000000e2, + 0x80000301, 0x000000c2, 0x80000300, 0x000000e2, + 0x80000300, 0x000000c2, 0x80000309, 0x000000e2, + 0x80000309, 0x000000c2, 0x80000303, 0x000000e2, + 0x80000303, 0x00001ea0, 0x80000302, 0x00001ea1, + 0x80000302, 0x00000102, 0x80000301, 0x00000103, + 0x80000301, 0x00000102, 0x80000300, 0x00000103, + 0x80000300, 0x00000102, 0x80000309, 0x00000103, + 0x80000309, 0x00000102, 0x80000303, 0x00000103, + 0x80000303, 0x00001ea0, 0x80000306, 0x00001ea1, + 0x80000306, 0x00000045, 0x80000323, 0x00000065, + 0x80000323, 0x00000045, 0x80000309, 0x00000065, + 0x80000309, 0x00000045, 0x80000303, 0x00000065, + 0x80000303, 0x000000ca, 0x80000301, 0x000000ea, + 0x80000301, 0x000000ca, 0x80000300, 0x000000ea, + 0x80000300, 0x000000ca, 0x80000309, 0x000000ea, + 0x80000309, 0x000000ca, 0x80000303, 0x000000ea, + 0x80000303, 0x00001eb8, 0x80000302, 0x00001eb9, + 0x80000302, 0x00000049, 0x80000309, 0x00000069, + 0x80000309, 0x00000049, 0x80000323, 0x00000069, + 0x80000323, 0x0000004f, 0x80000323, 0x0000006f, + 0x80000323, 0x0000004f, 0x80000309, 0x0000006f, + 0x80000309, 0x000000d4, 0x80000301, 0x000000f4, + 0x80000301, 0x000000d4, 0x80000300, 0x000000f4, + 0x80000300, 0x000000d4, 0x80000309, 0x000000f4, + 0x80000309, 0x000000d4, 0x80000303, 0x000000f4, + 0x80000303, 0x00001ecc, 0x80000302, 0x00001ecd, + 0x80000302, 0x000001a0, 0x80000301, 0x000001a1, + 0x80000301, 0x000001a0, 0x80000300, 0x000001a1, + 0x80000300, 0x000001a0, 0x80000309, 0x000001a1, + 0x80000309, 0x000001a0, 0x80000303, 0x000001a1, + 0x80000303, 0x000001a0, 0x80000323, 0x000001a1, + 0x80000323, 0x00000055, 0x80000323, 0x00000075, + 0x80000323, 0x00000055, 0x80000309, 0x00000075, + 0x80000309, 0x000001af, 0x80000301, 0x000001b0, + 0x80000301, 0x000001af, 0x80000300, 0x000001b0, + 0x80000300, 0x000001af, 0x80000309, 0x000001b0, + 0x80000309, 0x000001af, 0x80000303, 0x000001b0, + 0x80000303, 0x000001af, 0x80000323, 0x000001b0, + 0x80000323, 0x00000059, 0x80000300, 0x00000079, + 0x80000300, 0x00000059, 0x80000323, 0x00000079, + 0x80000323, 0x00000059, 0x80000309, 0x00000079, + 0x80000309, 0x00000059, 0x80000303, 0x00000079, + 0x80000303, 0x000003b1, 0x80000313, 0x000003b1, + 0x80000314, 0x00001f00, 0x80000300, 0x00001f01, + 0x80000300, 0x00001f00, 0x80000301, 0x00001f01, + 0x80000301, 0x00001f00, 0x80000342, 0x00001f01, + 0x80000342, 0x00000391, 0x80000313, 0x00000391, + 0x80000314, 0x00001f08, 0x80000300, 0x00001f09, + 0x80000300, 0x00001f08, 0x80000301, 0x00001f09, + 0x80000301, 0x00001f08, 0x80000342, 0x00001f09, + 0x80000342, 0x000003b5, 0x80000313, 0x000003b5, + 0x80000314, 0x00001f10, 0x80000300, 0x00001f11, + 0x80000300, 0x00001f10, 0x80000301, 0x00001f11, + 0x80000301, 0x00000395, 0x80000313, 0x00000395, + 0x80000314, 0x00001f18, 0x80000300, 0x00001f19, + 0x80000300, 0x00001f18, 0x80000301, 0x00001f19, + 0x80000301, 0x000003b7, 0x80000313, 0x000003b7, + 0x80000314, 0x00001f20, 0x80000300, 0x00001f21, + 0x80000300, 0x00001f20, 0x80000301, 0x00001f21, + 0x80000301, 0x00001f20, 0x80000342, 0x00001f21, + 0x80000342, 0x00000397, 0x80000313, 0x00000397, + 0x80000314, 0x00001f28, 0x80000300, 0x00001f29, + 0x80000300, 0x00001f28, 0x80000301, 0x00001f29, + 0x80000301, 0x00001f28, 0x80000342, 0x00001f29, + 0x80000342, 0x000003b9, 0x80000313, 0x000003b9, + 0x80000314, 0x00001f30, 0x80000300, 0x00001f31, + 0x80000300, 0x00001f30, 0x80000301, 0x00001f31, + 0x80000301, 0x00001f30, 0x80000342, 0x00001f31, + 0x80000342, 0x00000399, 0x80000313, 0x00000399, + 0x80000314, 0x00001f38, 0x80000300, 0x00001f39, + 0x80000300, 0x00001f38, 0x80000301, 0x00001f39, + 0x80000301, 0x00001f38, 0x80000342, 0x00001f39, + 0x80000342, 0x000003bf, 0x80000313, 0x000003bf, + 0x80000314, 0x00001f40, 0x80000300, 0x00001f41, + 0x80000300, 0x00001f40, 0x80000301, 0x00001f41, + 0x80000301, 0x0000039f, 0x80000313, 0x0000039f, + 0x80000314, 0x00001f48, 0x80000300, 0x00001f49, + 0x80000300, 0x00001f48, 0x80000301, 0x00001f49, + 0x80000301, 0x000003c5, 0x80000313, 0x000003c5, + 0x80000314, 0x00001f50, 0x80000300, 0x00001f51, + 0x80000300, 0x00001f50, 0x80000301, 0x00001f51, + 0x80000301, 0x00001f50, 0x80000342, 0x00001f51, + 0x80000342, 0x000003a5, 0x80000314, 0x00001f59, + 0x80000300, 0x00001f59, 0x80000301, 0x00001f59, + 0x80000342, 0x000003c9, 0x80000313, 0x000003c9, + 0x80000314, 0x00001f60, 0x80000300, 0x00001f61, + 0x80000300, 0x00001f60, 0x80000301, 0x00001f61, + 0x80000301, 0x00001f60, 0x80000342, 0x00001f61, + 0x80000342, 0x000003a9, 0x80000313, 0x000003a9, + 0x80000314, 0x00001f68, 0x80000300, 0x00001f69, + 0x80000300, 0x00001f68, 0x80000301, 0x00001f69, + 0x80000301, 0x00001f68, 0x80000342, 0x00001f69, + 0x80000342, 0x000003b1, 0x80000300, 0x800003ac, + 0x000003b5, 0x80000300, 0x800003ad, 0x000003b7, + 0x80000300, 0x800003ae, 0x000003b9, 0x80000300, + 0x800003af, 0x000003bf, 0x80000300, 0x800003cc, + 0x000003c5, 0x80000300, 0x800003cd, 0x000003c9, + 0x80000300, 0x800003ce, 0x00001f00, 0x80000345, + 0x00001f01, 0x80000345, 0x00001f02, 0x80000345, + 0x00001f03, 0x80000345, 0x00001f04, 0x80000345, + 0x00001f05, 0x80000345, 0x00001f06, 0x80000345, + 0x00001f07, 0x80000345, 0x00001f08, 0x80000345, + 0x00001f09, 0x80000345, 0x00001f0a, 0x80000345, + 0x00001f0b, 0x80000345, 0x00001f0c, 0x80000345, + 0x00001f0d, 0x80000345, 0x00001f0e, 0x80000345, + 0x00001f0f, 0x80000345, 0x00001f20, 0x80000345, + 0x00001f21, 0x80000345, 0x00001f22, 0x80000345, + 0x00001f23, 0x80000345, 0x00001f24, 0x80000345, + 0x00001f25, 0x80000345, 0x00001f26, 0x80000345, + 0x00001f27, 0x80000345, 0x00001f28, 0x80000345, + 0x00001f29, 0x80000345, 0x00001f2a, 0x80000345, + 0x00001f2b, 0x80000345, 0x00001f2c, 0x80000345, + 0x00001f2d, 0x80000345, 0x00001f2e, 0x80000345, + 0x00001f2f, 0x80000345, 0x00001f60, 0x80000345, + 0x00001f61, 0x80000345, 0x00001f62, 0x80000345, + 0x00001f63, 0x80000345, 0x00001f64, 0x80000345, + 0x00001f65, 0x80000345, 0x00001f66, 0x80000345, + 0x00001f67, 0x80000345, 0x00001f68, 0x80000345, + 0x00001f69, 0x80000345, 0x00001f6a, 0x80000345, + 0x00001f6b, 0x80000345, 0x00001f6c, 0x80000345, + 0x00001f6d, 0x80000345, 0x00001f6e, 0x80000345, + 0x00001f6f, 0x80000345, 0x000003b1, 0x80000306, + 0x000003b1, 0x80000304, 0x00001f70, 0x80000345, + 0x000003b1, 0x80000345, 0x000003ac, 0x80000345, + 0x000003b1, 0x80000342, 0x00001fb6, 0x80000345, + 0x00000391, 0x80000306, 0x00000391, 0x80000304, + 0x00000391, 0x80000300, 0x80000386, 0x00000391, + 0x80000345, 0x00000020, 0x80000313, 0x800003b9, + 0x00000020, 0x80000313, 0x00000020, 0x80000342, + 0x000000a8, 0x80000342, 0x00001f74, 0x80000345, + 0x000003b7, 0x80000345, 0x000003ae, 0x80000345, + 0x000003b7, 0x80000342, 0x00001fc6, 0x80000345, + 0x00000395, 0x80000300, 0x80000388, 0x00000397, + 0x80000300, 0x80000389, 0x00000397, 0x80000345, + 0x00001fbf, 0x80000300, 0x00001fbf, 0x80000301, + 0x00001fbf, 0x80000342, 0x000003b9, 0x80000306, + 0x000003b9, 0x80000304, 0x000003ca, 0x80000300, + 0x80000390, 0x000003b9, 0x80000342, 0x000003ca, + 0x80000342, 0x00000399, 0x80000306, 0x00000399, + 0x80000304, 0x00000399, 0x80000300, 0x8000038a, + 0x00001ffe, 0x80000300, 0x00001ffe, 0x80000301, + 0x00001ffe, 0x80000342, 0x000003c5, 0x80000306, + 0x000003c5, 0x80000304, 0x000003cb, 0x80000300, + 0x800003b0, 0x000003c1, 0x80000313, 0x000003c1, + 0x80000314, 0x000003c5, 0x80000342, 0x000003cb, + 0x80000342, 0x000003a5, 0x80000306, 0x000003a5, + 0x80000304, 0x000003a5, 0x80000300, 0x8000038e, + 0x000003a1, 0x80000314, 0x000000a8, 0x80000300, + 0x80000385, 0x80000060, 0x00001f7c, 0x80000345, + 0x000003c9, 0x80000345, 0x000003ce, 0x80000345, + 0x000003c9, 0x80000342, 0x00001ff6, 0x80000345, + 0x0000039f, 0x80000300, 0x8000038c, 0x000003a9, + 0x80000300, 0x8000038f, 0x000003a9, 0x80000345, + 0x800000b4, 0x00000020, 0x80000314, 0x80002002, + 0x80002003, 0x80000020, 0x80000020, 0x80000020, + 0x80000020, 0x80000020, 0x80000020, 0x80000020, + 0x80000020, 0x80000020, 0x80002010, 0x00000020, + 0x80000333, 0x8000002e, 0x0000002e, 0x8000002e, + 0x0000002e, 0x0000002e, 0x8000002e, 0x80000020, + 0x00002032, 0x80002032, 0x00002032, 0x00002032, + 0x80002032, 0x00002035, 0x80002035, 0x00002035, + 0x00002035, 0x80002035, 0x00000021, 0x80000021, + 0x00000020, 0x80000305, 0x0000003f, 0x80000021, + 0x00000021, 0x8000003f, 0x80000030, 0x80000034, + 0x80000035, 0x80000036, 0x80000037, 0x80000038, + 0x80000039, 0x8000002b, 0x80002212, 0x8000003d, + 0x80000028, 0x80000029, 0x8000006e, 0x80000030, + 0x80000031, 0x80000032, 0x80000033, 0x80000034, + 0x80000035, 0x80000036, 0x80000037, 0x80000038, + 0x80000039, 0x8000002b, 0x80002212, 0x8000003d, + 0x80000028, 0x80000029, 0x00000052, 0x80000073, + 0x00000061, 0x0000002f, 0x80000063, 0x00000061, + 0x0000002f, 0x80000073, 0x80000043, 0x000000b0, + 0x80000043, 0x00000063, 0x0000002f, 0x8000006f, + 0x00000063, 0x0000002f, 0x80000075, 0x80000190, + 0x000000b0, 0x80000046, 0x80000067, 0x80000048, + 0x80000048, 0x80000048, 0x80000068, 0x80000127, + 0x80000049, 0x80000049, 0x8000004c, 0x8000006c, + 0x8000004e, 0x0000004e, 0x8000006f, 0x80000050, + 0x80000051, 0x80000052, 0x80000052, 0x80000052, + 0x00000053, 0x8000004d, 0x00000054, 0x00000045, + 0x8000004c, 0x00000054, 0x8000004d, 0x8000005a, + 0x800003a9, 0x8000005a, 0x8000004b, 0x800000c5, + 0x80000042, 0x80000043, 0x80000065, 0x80000045, + 0x80000046, 0x8000004d, 0x8000006f, 0x800005d0, + 0x800005d1, 0x800005d2, 0x800005d3, 0x80000069, + 0x00000031, 0x00002044, 0x80000033, 0x00000032, + 0x00002044, 0x80000033, 0x00000031, 0x00002044, + 0x80000035, 0x00000032, 0x00002044, 0x80000035, + 0x00000033, 0x00002044, 0x80000035, 0x00000034, + 0x00002044, 0x80000035, 0x00000031, 0x00002044, + 0x80000036, 0x00000035, 0x00002044, 0x80000036, + 0x00000031, 0x00002044, 0x80000038, 0x00000033, + 0x00002044, 0x80000038, 0x00000035, 0x00002044, + 0x80000038, 0x00000037, 0x00002044, 0x80000038, + 0x00000031, 0x80002044, 0x80000049, 0x00000049, + 0x80000049, 0x00000049, 0x00000049, 0x80000049, + 0x00000049, 0x80000056, 0x80000056, 0x00000056, + 0x80000049, 0x00000056, 0x00000049, 0x80000049, + 0x00000056, 0x00000049, 0x00000049, 0x80000049, + 0x00000049, 0x80000058, 0x80000058, 0x00000058, + 0x80000049, 0x00000058, 0x00000049, 0x80000049, + 0x8000004c, 0x80000043, 0x80000044, 0x8000004d, + 0x80000069, 0x00000069, 0x80000069, 0x00000069, + 0x00000069, 0x80000069, 0x00000069, 0x80000076, + 0x80000076, 0x00000076, 0x80000069, 0x00000076, + 0x00000069, 0x80000069, 0x00000076, 0x00000069, + 0x00000069, 0x80000069, 0x00000069, 0x80000078, + 0x80000078, 0x00000078, 0x80000069, 0x00000078, + 0x00000069, 0x80000069, 0x8000006c, 0x80000063, + 0x80000064, 0x8000006d, 0x00002190, 0x80000338, + 0x00002192, 0x80000338, 0x00002194, 0x80000338, + 0x000021d0, 0x80000338, 0x000021d4, 0x80000338, + 0x000021d2, 0x80000338, 0x00002203, 0x80000338, + 0x00002208, 0x80000338, 0x0000220b, 0x80000338, + 0x00002223, 0x80000338, 0x00002225, 0x80000338, + 0x0000222b, 0x8000222b, 0x0000222b, 0x0000222b, + 0x8000222b, 0x0000222e, 0x8000222e, 0x0000222e, + 0x0000222e, 0x8000222e, 0x0000223c, 0x80000338, + 0x00002243, 0x80000338, 0x00002245, 0x80000338, + 0x00002248, 0x80000338, 0x0000003d, 0x80000338, + 0x00002261, 0x80000338, 0x0000224d, 0x80000338, + 0x0000003c, 0x80000338, 0x0000003e, 0x80000338, + 0x00002264, 0x80000338, 0x00002265, 0x80000338, + 0x00002272, 0x80000338, 0x00002273, 0x80000338, + 0x00002276, 0x80000338, 0x00002277, 0x80000338, + 0x0000227a, 0x80000338, 0x0000227b, 0x80000338, + 0x00002282, 0x80000338, 0x00002283, 0x80000338, + 0x00002286, 0x80000338, 0x00002287, 0x80000338, + 0x000022a2, 0x80000338, 0x000022a8, 0x80000338, + 0x000022a9, 0x80000338, 0x000022ab, 0x80000338, + 0x0000227c, 0x80000338, 0x0000227d, 0x80000338, + 0x00002291, 0x80000338, 0x00002292, 0x80000338, + 0x000022b2, 0x80000338, 0x000022b3, 0x80000338, + 0x000022b4, 0x80000338, 0x000022b5, 0x80000338, + 0x80003008, 0x80003009, 0x80000031, 0x80000032, + 0x80000033, 0x80000034, 0x80000035, 0x80000036, + 0x80000037, 0x80000038, 0x80000039, 0x00000031, + 0x80000030, 0x00000031, 0x80000031, 0x00000031, + 0x80000032, 0x00000031, 0x80000033, 0x00000031, + 0x80000034, 0x00000031, 0x80000035, 0x00000031, + 0x80000036, 0x00000031, 0x80000037, 0x00000031, + 0x80000038, 0x00000031, 0x80000039, 0x00000032, + 0x80000030, 0x00000028, 0x00000031, 0x80000029, + 0x00000028, 0x00000032, 0x80000029, 0x00000028, + 0x00000033, 0x80000029, 0x00000028, 0x00000034, + 0x80000029, 0x00000028, 0x00000035, 0x80000029, + 0x00000028, 0x00000036, 0x80000029, 0x00000028, + 0x00000037, 0x80000029, 0x00000028, 0x00000038, + 0x80000029, 0x00000028, 0x00000039, 0x80000029, + 0x00000028, 0x00000031, 0x00000030, 0x80000029, + 0x00000028, 0x00000031, 0x00000031, 0x80000029, + 0x00000028, 0x00000031, 0x00000032, 0x80000029, + 0x00000028, 0x00000031, 0x00000033, 0x80000029, + 0x00000028, 0x00000031, 0x00000034, 0x80000029, + 0x00000028, 0x00000031, 0x00000035, 0x80000029, + 0x00000028, 0x00000031, 0x00000036, 0x80000029, + 0x00000028, 0x00000031, 0x00000037, 0x80000029, + 0x00000028, 0x00000031, 0x00000038, 0x80000029, + 0x00000028, 0x00000031, 0x00000039, 0x80000029, + 0x00000028, 0x00000032, 0x00000030, 0x80000029, + 0x00000031, 0x8000002e, 0x00000032, 0x8000002e, + 0x00000033, 0x8000002e, 0x00000034, 0x8000002e, + 0x00000035, 0x8000002e, 0x00000036, 0x8000002e, + 0x00000037, 0x8000002e, 0x00000038, 0x8000002e, + 0x00000039, 0x8000002e, 0x00000031, 0x00000030, + 0x8000002e, 0x00000031, 0x00000031, 0x8000002e, + 0x00000031, 0x00000032, 0x8000002e, 0x00000031, + 0x00000033, 0x8000002e, 0x00000031, 0x00000034, + 0x8000002e, 0x00000031, 0x00000035, 0x8000002e, + 0x00000031, 0x00000036, 0x8000002e, 0x00000031, + 0x00000037, 0x8000002e, 0x00000031, 0x00000038, + 0x8000002e, 0x00000031, 0x00000039, 0x8000002e, + 0x00000032, 0x00000030, 0x8000002e, 0x00000028, + 0x00000061, 0x80000029, 0x00000028, 0x00000062, + 0x80000029, 0x00000028, 0x00000063, 0x80000029, + 0x00000028, 0x00000064, 0x80000029, 0x00000028, + 0x00000065, 0x80000029, 0x00000028, 0x00000066, + 0x80000029, 0x00000028, 0x00000067, 0x80000029, + 0x00000028, 0x00000068, 0x80000029, 0x00000028, + 0x00000069, 0x80000029, 0x00000028, 0x0000006a, + 0x80000029, 0x00000028, 0x0000006b, 0x80000029, + 0x00000028, 0x0000006c, 0x80000029, 0x00000028, + 0x0000006d, 0x80000029, 0x00000028, 0x0000006e, + 0x80000029, 0x00000028, 0x0000006f, 0x80000029, + 0x00000028, 0x00000070, 0x80000029, 0x00000028, + 0x00000071, 0x80000029, 0x00000028, 0x00000072, + 0x80000029, 0x00000028, 0x00000073, 0x80000029, + 0x00000028, 0x00000074, 0x80000029, 0x00000028, + 0x00000075, 0x80000029, 0x00000028, 0x00000076, + 0x80000029, 0x00000028, 0x00000077, 0x80000029, + 0x00000028, 0x00000078, 0x80000029, 0x00000028, + 0x00000079, 0x80000029, 0x00000028, 0x0000007a, + 0x80000029, 0x80000041, 0x80000042, 0x80000043, + 0x80000044, 0x80000045, 0x80000046, 0x80000047, + 0x80000048, 0x80000049, 0x8000004a, 0x8000004b, + 0x8000004c, 0x8000004d, 0x8000004e, 0x8000004f, + 0x80000050, 0x80000051, 0x80000052, 0x80000053, + 0x80000054, 0x80000055, 0x80000056, 0x80000057, + 0x80000058, 0x80000059, 0x8000005a, 0x80000061, + 0x80000062, 0x80000063, 0x80000064, 0x80000065, + 0x80000066, 0x80000067, 0x80000068, 0x80000069, + 0x8000006a, 0x8000006b, 0x8000006c, 0x8000006d, + 0x8000006e, 0x8000006f, 0x80000070, 0x80000071, + 0x80000072, 0x80000073, 0x80000074, 0x80000075, + 0x80000076, 0x80000077, 0x80000078, 0x80000079, + 0x8000007a, 0x80000030, 0x80006bcd, 0x80009f9f, + 0x80004e00, 0x80004e28, 0x80004e36, 0x80004e3f, + 0x80004e59, 0x80004e85, 0x80004e8c, 0x80004ea0, + 0x80004eba, 0x8000513f, 0x80005165, 0x8000516b, + 0x80005182, 0x80005196, 0x800051ab, 0x800051e0, + 0x800051f5, 0x80005200, 0x8000529b, 0x800052f9, + 0x80005315, 0x8000531a, 0x80005338, 0x80005341, + 0x8000535c, 0x80005369, 0x80005382, 0x800053b6, + 0x800053c8, 0x800053e3, 0x800056d7, 0x8000571f, + 0x800058eb, 0x80005902, 0x8000590a, 0x80005915, + 0x80005927, 0x80005973, 0x80005b50, 0x80005b80, + 0x80005bf8, 0x80005c0f, 0x80005c22, 0x80005c38, + 0x80005c6e, 0x80005c71, 0x80005ddb, 0x80005de5, + 0x80005df1, 0x80005dfe, 0x80005e72, 0x80005e7a, + 0x80005e7f, 0x80005ef4, 0x80005efe, 0x80005f0b, + 0x80005f13, 0x80005f50, 0x80005f61, 0x80005f73, + 0x80005fc3, 0x80006208, 0x80006236, 0x8000624b, + 0x8000652f, 0x80006534, 0x80006587, 0x80006597, + 0x800065a4, 0x800065b9, 0x800065e0, 0x800065e5, + 0x800066f0, 0x80006708, 0x80006728, 0x80006b20, + 0x80006b62, 0x80006b79, 0x80006bb3, 0x80006bcb, + 0x80006bd4, 0x80006bdb, 0x80006c0f, 0x80006c14, + 0x80006c34, 0x8000706b, 0x8000722a, 0x80007236, + 0x8000723b, 0x8000723f, 0x80007247, 0x80007259, + 0x8000725b, 0x800072ac, 0x80007384, 0x80007389, + 0x800074dc, 0x800074e6, 0x80007518, 0x8000751f, + 0x80007528, 0x80007530, 0x8000758b, 0x80007592, + 0x80007676, 0x8000767d, 0x800076ae, 0x800076bf, + 0x800076ee, 0x800077db, 0x800077e2, 0x800077f3, + 0x8000793a, 0x800079b8, 0x800079be, 0x80007a74, + 0x80007acb, 0x80007af9, 0x80007c73, 0x80007cf8, + 0x80007f36, 0x80007f51, 0x80007f8a, 0x80007fbd, + 0x80008001, 0x8000800c, 0x80008012, 0x80008033, + 0x8000807f, 0x80008089, 0x800081e3, 0x800081ea, + 0x800081f3, 0x800081fc, 0x8000820c, 0x8000821b, + 0x8000821f, 0x8000826e, 0x80008272, 0x80008278, + 0x8000864d, 0x8000866b, 0x80008840, 0x8000884c, + 0x80008863, 0x8000897e, 0x8000898b, 0x800089d2, + 0x80008a00, 0x80008c37, 0x80008c46, 0x80008c55, + 0x80008c78, 0x80008c9d, 0x80008d64, 0x80008d70, + 0x80008db3, 0x80008eab, 0x80008eca, 0x80008f9b, + 0x80008fb0, 0x80008fb5, 0x80009091, 0x80009149, + 0x800091c6, 0x800091cc, 0x800091d1, 0x80009577, + 0x80009580, 0x8000961c, 0x800096b6, 0x800096b9, + 0x800096e8, 0x80009751, 0x8000975e, 0x80009762, + 0x80009769, 0x800097cb, 0x800097ed, 0x800097f3, + 0x80009801, 0x800098a8, 0x800098db, 0x800098df, + 0x80009996, 0x80009999, 0x800099ac, 0x80009aa8, + 0x80009ad8, 0x80009adf, 0x80009b25, 0x80009b2f, + 0x80009b32, 0x80009b3c, 0x80009b5a, 0x80009ce5, + 0x80009e75, 0x80009e7f, 0x80009ea5, 0x80009ebb, + 0x80009ec3, 0x80009ecd, 0x80009ed1, 0x80009ef9, + 0x80009efd, 0x80009f0e, 0x80009f13, 0x80009f20, + 0x80009f3b, 0x80009f4a, 0x80009f52, 0x80009f8d, + 0x80009f9c, 0x80009fa0, 0x80000020, 0x80003012, + 0x80005341, 0x80005344, 0x80005345, 0x0000304b, + 0x80003099, 0x0000304d, 0x80003099, 0x0000304f, + 0x80003099, 0x00003051, 0x80003099, 0x00003053, + 0x80003099, 0x00003055, 0x80003099, 0x00003057, + 0x80003099, 0x00003059, 0x80003099, 0x0000305b, + 0x80003099, 0x0000305d, 0x80003099, 0x0000305f, + 0x80003099, 0x00003061, 0x80003099, 0x00003064, + 0x80003099, 0x00003066, 0x80003099, 0x00003068, + 0x80003099, 0x0000306f, 0x80003099, 0x0000306f, + 0x8000309a, 0x00003072, 0x80003099, 0x00003072, + 0x8000309a, 0x00003075, 0x80003099, 0x00003075, + 0x8000309a, 0x00003078, 0x80003099, 0x00003078, + 0x8000309a, 0x0000307b, 0x80003099, 0x0000307b, + 0x8000309a, 0x00003046, 0x80003099, 0x00000020, + 0x80003099, 0x00000020, 0x8000309a, 0x0000309d, + 0x80003099, 0x000030ab, 0x80003099, 0x000030ad, + 0x80003099, 0x000030af, 0x80003099, 0x000030b1, + 0x80003099, 0x000030b3, 0x80003099, 0x000030b5, + 0x80003099, 0x000030b7, 0x80003099, 0x000030b9, + 0x80003099, 0x000030bb, 0x80003099, 0x000030bd, + 0x80003099, 0x000030bf, 0x80003099, 0x000030c1, + 0x80003099, 0x000030c4, 0x80003099, 0x000030c6, + 0x80003099, 0x000030c8, 0x80003099, 0x000030cf, + 0x80003099, 0x000030cf, 0x8000309a, 0x000030d2, + 0x80003099, 0x000030d2, 0x8000309a, 0x000030d5, + 0x80003099, 0x000030d5, 0x8000309a, 0x000030d8, + 0x80003099, 0x000030d8, 0x8000309a, 0x000030db, + 0x80003099, 0x000030db, 0x8000309a, 0x000030a6, + 0x80003099, 0x000030ef, 0x80003099, 0x000030f0, + 0x80003099, 0x000030f1, 0x80003099, 0x000030f2, + 0x80003099, 0x000030fd, 0x80003099, 0x80001100, + 0x80001101, 0x800011aa, 0x80001102, 0x800011ac, + 0x800011ad, 0x80001103, 0x80001104, 0x80001105, + 0x800011b0, 0x800011b1, 0x800011b2, 0x800011b3, + 0x800011b4, 0x800011b5, 0x8000111a, 0x80001106, + 0x80001107, 0x80001108, 0x80001121, 0x80001109, + 0x8000110a, 0x8000110b, 0x8000110c, 0x8000110d, + 0x8000110e, 0x8000110f, 0x80001110, 0x80001111, + 0x80001112, 0x80001161, 0x80001162, 0x80001163, + 0x80001164, 0x80001165, 0x80001166, 0x80001167, + 0x80001168, 0x80001169, 0x8000116a, 0x8000116b, + 0x8000116c, 0x8000116d, 0x8000116e, 0x8000116f, + 0x80001170, 0x80001171, 0x80001172, 0x80001173, + 0x80001174, 0x80001175, 0x80001160, 0x80001114, + 0x80001115, 0x800011c7, 0x800011c8, 0x800011cc, + 0x800011ce, 0x800011d3, 0x800011d7, 0x800011d9, + 0x8000111c, 0x800011dd, 0x800011df, 0x8000111d, + 0x8000111e, 0x80001120, 0x80001122, 0x80001123, + 0x80001127, 0x80001129, 0x8000112b, 0x8000112c, + 0x8000112d, 0x8000112e, 0x8000112f, 0x80001132, + 0x80001136, 0x80001140, 0x80001147, 0x8000114c, + 0x800011f1, 0x800011f2, 0x80001157, 0x80001158, + 0x80001159, 0x80001184, 0x80001185, 0x80001188, + 0x80001191, 0x80001192, 0x80001194, 0x8000119e, + 0x800011a1, 0x80004e00, 0x80004e8c, 0x80004e09, + 0x800056db, 0x80004e0a, 0x80004e2d, 0x80004e0b, + 0x80007532, 0x80004e59, 0x80004e19, 0x80004e01, + 0x80005929, 0x80005730, 0x80004eba, 0x00000028, + 0x00001100, 0x80000029, 0x00000028, 0x00001102, + 0x80000029, 0x00000028, 0x00001103, 0x80000029, + 0x00000028, 0x00001105, 0x80000029, 0x00000028, + 0x00001106, 0x80000029, 0x00000028, 0x00001107, + 0x80000029, 0x00000028, 0x00001109, 0x80000029, + 0x00000028, 0x0000110b, 0x80000029, 0x00000028, + 0x0000110c, 0x80000029, 0x00000028, 0x0000110e, + 0x80000029, 0x00000028, 0x0000110f, 0x80000029, + 0x00000028, 0x00001110, 0x80000029, 0x00000028, + 0x00001111, 0x80000029, 0x00000028, 0x00001112, + 0x80000029, 0x00000028, 0x00001100, 0x00001161, + 0x80000029, 0x00000028, 0x00001102, 0x00001161, + 0x80000029, 0x00000028, 0x00001103, 0x00001161, + 0x80000029, 0x00000028, 0x00001105, 0x00001161, + 0x80000029, 0x00000028, 0x00001106, 0x00001161, + 0x80000029, 0x00000028, 0x00001107, 0x00001161, + 0x80000029, 0x00000028, 0x00001109, 0x00001161, + 0x80000029, 0x00000028, 0x0000110b, 0x00001161, + 0x80000029, 0x00000028, 0x0000110c, 0x00001161, + 0x80000029, 0x00000028, 0x0000110e, 0x00001161, + 0x80000029, 0x00000028, 0x0000110f, 0x00001161, + 0x80000029, 0x00000028, 0x00001110, 0x00001161, + 0x80000029, 0x00000028, 0x00001111, 0x00001161, + 0x80000029, 0x00000028, 0x00001112, 0x00001161, + 0x80000029, 0x00000028, 0x0000110c, 0x0000116e, + 0x80000029, 0x00000028, 0x00004e00, 0x80000029, + 0x00000028, 0x00004e8c, 0x80000029, 0x00000028, + 0x00004e09, 0x80000029, 0x00000028, 0x000056db, + 0x80000029, 0x00000028, 0x00004e94, 0x80000029, + 0x00000028, 0x0000516d, 0x80000029, 0x00000028, + 0x00004e03, 0x80000029, 0x00000028, 0x0000516b, + 0x80000029, 0x00000028, 0x00004e5d, 0x80000029, + 0x00000028, 0x00005341, 0x80000029, 0x00000028, + 0x00006708, 0x80000029, 0x00000028, 0x0000706b, + 0x80000029, 0x00000028, 0x00006c34, 0x80000029, + 0x00000028, 0x00006728, 0x80000029, 0x00000028, + 0x000091d1, 0x80000029, 0x00000028, 0x0000571f, + 0x80000029, 0x00000028, 0x000065e5, 0x80000029, + 0x00000028, 0x0000682a, 0x80000029, 0x00000028, + 0x00006709, 0x80000029, 0x00000028, 0x0000793e, + 0x80000029, 0x00000028, 0x0000540d, 0x80000029, + 0x00000028, 0x00007279, 0x80000029, 0x00000028, + 0x00008ca1, 0x80000029, 0x00000028, 0x0000795d, + 0x80000029, 0x00000028, 0x000052b4, 0x80000029, + 0x00000028, 0x00004ee3, 0x80000029, 0x00000028, + 0x0000547c, 0x80000029, 0x00000028, 0x00005b66, + 0x80000029, 0x00000028, 0x000076e3, 0x80000029, + 0x00000028, 0x00004f01, 0x80000029, 0x00000028, + 0x00008cc7, 0x80000029, 0x00000028, 0x00005354, + 0x80000029, 0x00000028, 0x0000796d, 0x80000029, + 0x00000028, 0x00004f11, 0x80000029, 0x00000028, + 0x000081ea, 0x80000029, 0x00000028, 0x000081f3, + 0x80000029, 0x80001100, 0x80001102, 0x80001103, + 0x80001105, 0x80001106, 0x80001107, 0x80001109, + 0x8000110b, 0x8000110c, 0x8000110e, 0x8000110f, + 0x80001110, 0x80001111, 0x80001112, 0x00001100, + 0x80001161, 0x00001102, 0x80001161, 0x00001103, + 0x80001161, 0x00001105, 0x80001161, 0x00001106, + 0x80001161, 0x00001107, 0x80001161, 0x00001109, + 0x80001161, 0x0000110b, 0x80001161, 0x0000110c, + 0x80001161, 0x0000110e, 0x80001161, 0x0000110f, + 0x80001161, 0x00001110, 0x80001161, 0x00001111, + 0x80001161, 0x00001112, 0x80001161, 0x80004e00, + 0x80004e8c, 0x80004e09, 0x800056db, 0x80004e94, + 0x8000516d, 0x80004e03, 0x8000516b, 0x80004e5d, + 0x80005341, 0x80006708, 0x8000706b, 0x80006c34, + 0x80006728, 0x800091d1, 0x8000571f, 0x800065e5, + 0x8000682a, 0x80006709, 0x8000793e, 0x8000540d, + 0x80007279, 0x80008ca1, 0x8000795d, 0x800052b4, + 0x800079d8, 0x80007537, 0x80005973, 0x80009069, + 0x8000512a, 0x80005370, 0x80006ce8, 0x80009805, + 0x80004f11, 0x80005199, 0x80006b63, 0x80004e0a, + 0x80004e2d, 0x80004e0b, 0x80005de6, 0x800053f3, + 0x8000533b, 0x80005b97, 0x80005b66, 0x800076e3, + 0x80004f01, 0x80008cc7, 0x80005354, 0x8000591c, + 0x00000031, 0x80006708, 0x00000032, 0x80006708, + 0x00000033, 0x80006708, 0x00000034, 0x80006708, + 0x00000035, 0x80006708, 0x00000036, 0x80006708, + 0x00000037, 0x80006708, 0x00000038, 0x80006708, + 0x00000039, 0x80006708, 0x00000031, 0x00000030, + 0x80006708, 0x00000031, 0x00000031, 0x80006708, + 0x00000031, 0x00000032, 0x80006708, 0x800030a2, + 0x800030a4, 0x800030a6, 0x800030a8, 0x800030aa, + 0x800030ab, 0x800030ad, 0x800030af, 0x800030b1, + 0x800030b3, 0x800030b5, 0x800030b7, 0x800030b9, + 0x800030bb, 0x800030bd, 0x800030bf, 0x800030c1, + 0x800030c4, 0x800030c6, 0x800030c8, 0x800030ca, + 0x800030cb, 0x800030cc, 0x800030cd, 0x800030ce, + 0x800030cf, 0x800030d2, 0x800030d5, 0x800030d8, + 0x800030db, 0x800030de, 0x800030df, 0x800030e0, + 0x800030e1, 0x800030e2, 0x800030e4, 0x800030e6, + 0x800030e8, 0x800030e9, 0x800030ea, 0x800030eb, + 0x800030ec, 0x800030ed, 0x800030ef, 0x800030f0, + 0x800030f1, 0x800030f2, 0x000030a2, 0x000030d1, + 0x000030fc, 0x800030c8, 0x000030a2, 0x000030eb, + 0x000030d5, 0x800030a1, 0x000030a2, 0x000030f3, + 0x000030da, 0x800030a2, 0x000030a2, 0x000030fc, + 0x800030eb, 0x000030a4, 0x000030cb, 0x000030f3, + 0x800030b0, 0x000030a4, 0x000030f3, 0x800030c1, + 0x000030a6, 0x000030a9, 0x800030f3, 0x000030a8, + 0x000030b9, 0x000030af, 0x000030fc, 0x800030c9, + 0x000030a8, 0x000030fc, 0x000030ab, 0x800030fc, + 0x000030aa, 0x000030f3, 0x800030b9, 0x000030aa, + 0x000030fc, 0x800030e0, 0x000030ab, 0x000030a4, + 0x800030ea, 0x000030ab, 0x000030e9, 0x000030c3, + 0x800030c8, 0x000030ab, 0x000030ed, 0x000030ea, + 0x800030fc, 0x000030ac, 0x000030ed, 0x800030f3, + 0x000030ac, 0x000030f3, 0x800030de, 0x000030ae, + 0x800030ac, 0x000030ae, 0x000030cb, 0x800030fc, + 0x000030ad, 0x000030e5, 0x000030ea, 0x800030fc, + 0x000030ae, 0x000030eb, 0x000030c0, 0x800030fc, + 0x000030ad, 0x800030ed, 0x000030ad, 0x000030ed, + 0x000030b0, 0x000030e9, 0x800030e0, 0x000030ad, + 0x000030ed, 0x000030e1, 0x000030fc, 0x000030c8, + 0x800030eb, 0x000030ad, 0x000030ed, 0x000030ef, + 0x000030c3, 0x800030c8, 0x000030b0, 0x000030e9, + 0x800030e0, 0x000030b0, 0x000030e9, 0x000030e0, + 0x000030c8, 0x800030f3, 0x000030af, 0x000030eb, + 0x000030bc, 0x000030a4, 0x800030ed, 0x000030af, + 0x000030ed, 0x000030fc, 0x800030cd, 0x000030b1, + 0x000030fc, 0x800030b9, 0x000030b3, 0x000030eb, + 0x800030ca, 0x000030b3, 0x000030fc, 0x800030dd, + 0x000030b5, 0x000030a4, 0x000030af, 0x800030eb, + 0x000030b5, 0x000030f3, 0x000030c1, 0x000030fc, + 0x800030e0, 0x000030b7, 0x000030ea, 0x000030f3, + 0x800030b0, 0x000030bb, 0x000030f3, 0x800030c1, + 0x000030bb, 0x000030f3, 0x800030c8, 0x000030c0, + 0x000030fc, 0x800030b9, 0x000030c7, 0x800030b7, + 0x000030c9, 0x800030eb, 0x000030c8, 0x800030f3, + 0x000030ca, 0x800030ce, 0x000030ce, 0x000030c3, + 0x800030c8, 0x000030cf, 0x000030a4, 0x800030c4, + 0x000030d1, 0x000030fc, 0x000030bb, 0x000030f3, + 0x800030c8, 0x000030d1, 0x000030fc, 0x800030c4, + 0x000030d0, 0x000030fc, 0x000030ec, 0x800030eb, + 0x000030d4, 0x000030a2, 0x000030b9, 0x000030c8, + 0x800030eb, 0x000030d4, 0x000030af, 0x800030eb, + 0x000030d4, 0x800030b3, 0x000030d3, 0x800030eb, + 0x000030d5, 0x000030a1, 0x000030e9, 0x000030c3, + 0x800030c9, 0x000030d5, 0x000030a3, 0x000030fc, + 0x800030c8, 0x000030d6, 0x000030c3, 0x000030b7, + 0x000030a7, 0x800030eb, 0x000030d5, 0x000030e9, + 0x800030f3, 0x000030d8, 0x000030af, 0x000030bf, + 0x000030fc, 0x800030eb, 0x000030da, 0x800030bd, + 0x000030da, 0x000030cb, 0x800030d2, 0x000030d8, + 0x000030eb, 0x800030c4, 0x000030da, 0x000030f3, + 0x800030b9, 0x000030da, 0x000030fc, 0x800030b8, + 0x000030d9, 0x000030fc, 0x800030bf, 0x000030dd, + 0x000030a4, 0x000030f3, 0x800030c8, 0x000030dc, + 0x000030eb, 0x800030c8, 0x000030db, 0x800030f3, + 0x000030dd, 0x000030f3, 0x800030c9, 0x000030db, + 0x000030fc, 0x800030eb, 0x000030db, 0x000030fc, + 0x800030f3, 0x000030de, 0x000030a4, 0x000030af, + 0x800030ed, 0x000030de, 0x000030a4, 0x800030eb, + 0x000030de, 0x000030c3, 0x800030cf, 0x000030de, + 0x000030eb, 0x800030af, 0x000030de, 0x000030f3, + 0x000030b7, 0x000030e7, 0x800030f3, 0x000030df, + 0x000030af, 0x000030ed, 0x800030f3, 0x000030df, + 0x800030ea, 0x000030df, 0x000030ea, 0x000030d0, + 0x000030fc, 0x800030eb, 0x000030e1, 0x800030ac, + 0x000030e1, 0x000030ac, 0x000030c8, 0x800030f3, + 0x000030e1, 0x000030fc, 0x000030c8, 0x800030eb, + 0x000030e4, 0x000030fc, 0x800030c9, 0x000030e4, + 0x000030fc, 0x800030eb, 0x000030e6, 0x000030a2, + 0x800030f3, 0x000030ea, 0x000030c3, 0x000030c8, + 0x800030eb, 0x000030ea, 0x800030e9, 0x000030eb, + 0x000030d4, 0x800030fc, 0x000030eb, 0x000030fc, + 0x000030d6, 0x800030eb, 0x000030ec, 0x800030e0, + 0x000030ec, 0x000030f3, 0x000030c8, 0x000030b2, + 0x800030f3, 0x000030ef, 0x000030c3, 0x800030c8, + 0x00000030, 0x800070b9, 0x00000031, 0x800070b9, + 0x00000032, 0x800070b9, 0x00000033, 0x800070b9, + 0x00000034, 0x800070b9, 0x00000035, 0x800070b9, + 0x00000036, 0x800070b9, 0x00000037, 0x800070b9, + 0x00000038, 0x800070b9, 0x00000039, 0x800070b9, + 0x00000031, 0x00000030, 0x800070b9, 0x00000031, + 0x00000031, 0x800070b9, 0x00000031, 0x00000032, + 0x800070b9, 0x00000031, 0x00000033, 0x800070b9, + 0x00000031, 0x00000034, 0x800070b9, 0x00000031, + 0x00000035, 0x800070b9, 0x00000031, 0x00000036, + 0x800070b9, 0x00000031, 0x00000037, 0x800070b9, + 0x00000031, 0x00000038, 0x800070b9, 0x00000031, + 0x00000039, 0x800070b9, 0x00000032, 0x00000030, + 0x800070b9, 0x00000032, 0x00000031, 0x800070b9, + 0x00000032, 0x00000032, 0x800070b9, 0x00000032, + 0x00000033, 0x800070b9, 0x00000032, 0x00000034, + 0x800070b9, 0x00000068, 0x00000050, 0x80000061, + 0x00000064, 0x80000061, 0x00000041, 0x80000055, + 0x00000062, 0x00000061, 0x80000072, 0x0000006f, + 0x80000056, 0x00000070, 0x80000063, 0x00005e73, + 0x80006210, 0x0000662d, 0x8000548c, 0x00005927, + 0x80006b63, 0x0000660e, 0x80006cbb, 0x0000682a, + 0x00005f0f, 0x00004f1a, 0x8000793e, 0x00000070, + 0x80000041, 0x0000006e, 0x80000041, 0x000003bc, + 0x80000041, 0x0000006d, 0x80000041, 0x0000006b, + 0x80000041, 0x0000004b, 0x80000042, 0x0000004d, + 0x80000042, 0x00000047, 0x80000042, 0x00000063, + 0x00000061, 0x8000006c, 0x0000006b, 0x00000063, + 0x00000061, 0x8000006c, 0x00000070, 0x80000046, + 0x0000006e, 0x80000046, 0x000003bc, 0x80000046, + 0x000003bc, 0x80000067, 0x0000006d, 0x80000067, + 0x0000006b, 0x80000067, 0x00000048, 0x8000007a, + 0x0000006b, 0x00000048, 0x8000007a, 0x0000004d, + 0x00000048, 0x8000007a, 0x00000047, 0x00000048, + 0x8000007a, 0x00000054, 0x00000048, 0x8000007a, + 0x000003bc, 0x80002113, 0x0000006d, 0x80002113, + 0x00000064, 0x80002113, 0x0000006b, 0x80002113, + 0x00000066, 0x8000006d, 0x0000006e, 0x8000006d, + 0x000003bc, 0x8000006d, 0x0000006d, 0x8000006d, + 0x00000063, 0x8000006d, 0x0000006b, 0x8000006d, + 0x0000006d, 0x0000006d, 0x800000b2, 0x00000063, + 0x0000006d, 0x800000b2, 0x0000006d, 0x800000b2, + 0x0000006b, 0x0000006d, 0x800000b2, 0x0000006d, + 0x0000006d, 0x800000b3, 0x00000063, 0x0000006d, + 0x800000b3, 0x0000006d, 0x800000b3, 0x0000006b, + 0x0000006d, 0x800000b3, 0x0000006d, 0x00002215, + 0x80000073, 0x0000006d, 0x00002215, 0x00000073, + 0x800000b2, 0x00000050, 0x80000061, 0x0000006b, + 0x00000050, 0x80000061, 0x0000004d, 0x00000050, + 0x80000061, 0x00000047, 0x00000050, 0x80000061, + 0x00000072, 0x00000061, 0x80000064, 0x00000072, + 0x00000061, 0x00000064, 0x00002215, 0x80000073, + 0x00000072, 0x00000061, 0x00000064, 0x00002215, + 0x00000073, 0x800000b2, 0x00000070, 0x80000073, + 0x0000006e, 0x80000073, 0x000003bc, 0x80000073, + 0x0000006d, 0x80000073, 0x00000070, 0x80000056, + 0x0000006e, 0x80000056, 0x000003bc, 0x80000056, + 0x0000006d, 0x80000056, 0x0000006b, 0x80000056, + 0x0000004d, 0x80000056, 0x00000070, 0x80000057, + 0x0000006e, 0x80000057, 0x000003bc, 0x80000057, + 0x0000006d, 0x80000057, 0x0000006b, 0x80000057, + 0x0000004d, 0x80000057, 0x0000006b, 0x800003a9, + 0x0000004d, 0x800003a9, 0x00000061, 0x0000002e, + 0x0000006d, 0x8000002e, 0x00000042, 0x80000071, + 0x00000063, 0x80000063, 0x00000063, 0x80000064, + 0x00000043, 0x00002215, 0x0000006b, 0x80000067, + 0x00000043, 0x0000006f, 0x8000002e, 0x00000064, + 0x80000042, 0x00000047, 0x80000079, 0x00000068, + 0x80000061, 0x00000048, 0x80000050, 0x00000069, + 0x8000006e, 0x0000004b, 0x8000004b, 0x0000004b, + 0x8000004d, 0x0000006b, 0x80000074, 0x0000006c, + 0x8000006d, 0x0000006c, 0x8000006e, 0x0000006c, + 0x0000006f, 0x80000067, 0x0000006c, 0x80000078, + 0x0000006d, 0x80000062, 0x0000006d, 0x00000069, + 0x8000006c, 0x0000006d, 0x0000006f, 0x8000006c, + 0x00000050, 0x80000048, 0x00000070, 0x0000002e, + 0x0000006d, 0x8000002e, 0x00000050, 0x00000050, + 0x8000004d, 0x00000050, 0x80000052, 0x00000073, + 0x80000072, 0x00000053, 0x80000076, 0x00000057, + 0x80000062, 0x00000031, 0x800065e5, 0x00000032, + 0x800065e5, 0x00000033, 0x800065e5, 0x00000034, + 0x800065e5, 0x00000035, 0x800065e5, 0x00000036, + 0x800065e5, 0x00000037, 0x800065e5, 0x00000038, + 0x800065e5, 0x00000039, 0x800065e5, 0x00000031, + 0x00000030, 0x800065e5, 0x00000031, 0x00000031, + 0x800065e5, 0x00000031, 0x00000032, 0x800065e5, + 0x00000031, 0x00000033, 0x800065e5, 0x00000031, + 0x00000034, 0x800065e5, 0x00000031, 0x00000035, + 0x800065e5, 0x00000031, 0x00000036, 0x800065e5, + 0x00000031, 0x00000037, 0x800065e5, 0x00000031, + 0x00000038, 0x800065e5, 0x00000031, 0x00000039, + 0x800065e5, 0x00000032, 0x00000030, 0x800065e5, + 0x00000032, 0x00000031, 0x800065e5, 0x00000032, + 0x00000032, 0x800065e5, 0x00000032, 0x00000033, + 0x800065e5, 0x00000032, 0x00000034, 0x800065e5, + 0x00000032, 0x00000035, 0x800065e5, 0x00000032, + 0x00000036, 0x800065e5, 0x00000032, 0x00000037, + 0x800065e5, 0x00000032, 0x00000038, 0x800065e5, + 0x00000032, 0x00000039, 0x800065e5, 0x00000033, + 0x00000030, 0x800065e5, 0x00000033, 0x00000031, + 0x800065e5, 0x80008c48, 0x800066f4, 0x80008eca, + 0x80008cc8, 0x80006ed1, 0x80004e32, 0x800053e5, + 0x80009f9c, 0x80009f9c, 0x80005951, 0x800091d1, + 0x80005587, 0x80005948, 0x800061f6, 0x80007669, + 0x80007f85, 0x8000863f, 0x800087ba, 0x800088f8, + 0x8000908f, 0x80006a02, 0x80006d1b, 0x800070d9, + 0x800073de, 0x8000843d, 0x8000916a, 0x800099f1, + 0x80004e82, 0x80005375, 0x80006b04, 0x8000721b, + 0x8000862d, 0x80009e1e, 0x80005d50, 0x80006feb, + 0x800085cd, 0x80008964, 0x800062c9, 0x800081d8, + 0x8000881f, 0x80005eca, 0x80006717, 0x80006d6a, + 0x800072fc, 0x800090ce, 0x80004f86, 0x800051b7, + 0x800052de, 0x800064c4, 0x80006ad3, 0x80007210, + 0x800076e7, 0x80008001, 0x80008606, 0x8000865c, + 0x80008def, 0x80009732, 0x80009b6f, 0x80009dfa, + 0x8000788c, 0x8000797f, 0x80007da0, 0x800083c9, + 0x80009304, 0x80009e7f, 0x80008ad6, 0x800058df, + 0x80005f04, 0x80007c60, 0x8000807e, 0x80007262, + 0x800078ca, 0x80008cc2, 0x800096f7, 0x800058d8, + 0x80005c62, 0x80006a13, 0x80006dda, 0x80006f0f, + 0x80007d2f, 0x80007e37, 0x800096fb, 0x800052d2, + 0x8000808b, 0x800051dc, 0x800051cc, 0x80007a1c, + 0x80007dbe, 0x800083f1, 0x80009675, 0x80008b80, + 0x800062cf, 0x80006a02, 0x80008afe, 0x80004e39, + 0x80005be7, 0x80006012, 0x80007387, 0x80007570, + 0x80005317, 0x800078fb, 0x80004fbf, 0x80005fa9, + 0x80004e0d, 0x80006ccc, 0x80006578, 0x80007d22, + 0x800053c3, 0x8000585e, 0x80007701, 0x80008449, + 0x80008aaa, 0x80006bba, 0x80008fb0, 0x80006c88, + 0x800062fe, 0x800082e5, 0x800063a0, 0x80007565, + 0x80004eae, 0x80005169, 0x800051c9, 0x80006881, + 0x80007ce7, 0x8000826f, 0x80008ad2, 0x800091cf, + 0x800052f5, 0x80005442, 0x80005973, 0x80005eec, + 0x800065c5, 0x80006ffe, 0x8000792a, 0x800095ad, + 0x80009a6a, 0x80009e97, 0x80009ece, 0x8000529b, + 0x800066c6, 0x80006b77, 0x80008f62, 0x80005e74, + 0x80006190, 0x80006200, 0x8000649a, 0x80006f23, + 0x80007149, 0x80007489, 0x800079ca, 0x80007df4, + 0x8000806f, 0x80008f26, 0x800084ee, 0x80009023, + 0x8000934a, 0x80005217, 0x800052a3, 0x800054bd, + 0x800070c8, 0x800088c2, 0x80008aaa, 0x80005ec9, + 0x80005ff5, 0x8000637b, 0x80006bae, 0x80007c3e, + 0x80007375, 0x80004ee4, 0x800056f9, 0x80005be7, + 0x80005dba, 0x8000601c, 0x800073b2, 0x80007469, + 0x80007f9a, 0x80008046, 0x80009234, 0x800096f6, + 0x80009748, 0x80009818, 0x80004f8b, 0x800079ae, + 0x800091b4, 0x800096b8, 0x800060e1, 0x80004e86, + 0x800050da, 0x80005bee, 0x80005c3f, 0x80006599, + 0x80006a02, 0x800071ce, 0x80007642, 0x800084fc, + 0x8000907c, 0x80009f8d, 0x80006688, 0x8000962e, + 0x80005289, 0x8000677b, 0x800067f3, 0x80006d41, + 0x80006e9c, 0x80007409, 0x80007559, 0x8000786b, + 0x80007d10, 0x8000985e, 0x8000516d, 0x8000622e, + 0x80009678, 0x8000502b, 0x80005d19, 0x80006dea, + 0x80008f2a, 0x80005f8b, 0x80006144, 0x80006817, + 0x80007387, 0x80009686, 0x80005229, 0x8000540f, + 0x80005c65, 0x80006613, 0x8000674e, 0x800068a8, + 0x80006ce5, 0x80007406, 0x800075e2, 0x80007f79, + 0x800088cf, 0x800088e1, 0x800091cc, 0x800096e2, + 0x8000533f, 0x80006eba, 0x8000541d, 0x800071d0, + 0x80007498, 0x800085fa, 0x800096a3, 0x80009c57, + 0x80009e9f, 0x80006797, 0x80006dcb, 0x800081e8, + 0x80007acb, 0x80007b20, 0x80007c92, 0x800072c0, + 0x80007099, 0x80008b58, 0x80004ec0, 0x80008336, + 0x8000523a, 0x80005207, 0x80005ea6, 0x800062d3, + 0x80007cd6, 0x80005b85, 0x80006d1e, 0x800066b4, + 0x80008f3b, 0x8000884c, 0x8000964d, 0x8000898b, + 0x80005ed3, 0x80005140, 0x800055c0, 0x8000585a, + 0x80006674, 0x800051de, 0x8000732a, 0x800076ca, + 0x8000793c, 0x8000795e, 0x80007965, 0x8000798f, + 0x80009756, 0x80007cbe, 0x80007fbd, 0x80008612, + 0x80008af8, 0x80009038, 0x800090fd, 0x800098ef, + 0x800098fc, 0x80009928, 0x80009db4, 0x00000066, + 0x80000066, 0x00000066, 0x80000069, 0x00000066, + 0x8000006c, 0x00000066, 0x00000066, 0x80000069, + 0x00000066, 0x00000066, 0x8000006c, 0x0000017f, + 0x80000074, 0x00000073, 0x80000074, 0x00000574, + 0x80000576, 0x00000574, 0x80000565, 0x00000574, + 0x8000056b, 0x0000057e, 0x80000576, 0x00000574, + 0x8000056d, 0x000005d9, 0x800005b4, 0x000005f2, + 0x800005b7, 0x800005e2, 0x800005d0, 0x800005d3, + 0x800005d4, 0x800005db, 0x800005dc, 0x800005dd, + 0x800005e8, 0x800005ea, 0x8000002b, 0x000005e9, + 0x800005c1, 0x000005e9, 0x800005c2, 0x0000fb49, + 0x800005c1, 0x0000fb49, 0x800005c2, 0x000005d0, + 0x800005b7, 0x000005d0, 0x800005b8, 0x000005d0, + 0x800005bc, 0x000005d1, 0x800005bc, 0x000005d2, + 0x800005bc, 0x000005d3, 0x800005bc, 0x000005d4, + 0x800005bc, 0x000005d5, 0x800005bc, 0x000005d6, + 0x800005bc, 0x000005d8, 0x800005bc, 0x000005d9, + 0x800005bc, 0x000005da, 0x800005bc, 0x000005db, + 0x800005bc, 0x000005dc, 0x800005bc, 0x000005de, + 0x800005bc, 0x000005e0, 0x800005bc, 0x000005e1, + 0x800005bc, 0x000005e3, 0x800005bc, 0x000005e4, + 0x800005bc, 0x000005e6, 0x800005bc, 0x000005e7, + 0x800005bc, 0x000005e8, 0x800005bc, 0x000005e9, + 0x800005bc, 0x000005ea, 0x800005bc, 0x000005d5, + 0x800005b9, 0x000005d1, 0x800005bf, 0x000005db, + 0x800005bf, 0x000005e4, 0x800005bf, 0x000005d0, + 0x800005dc, 0x80000671, 0x80000671, 0x8000067b, + 0x8000067b, 0x8000067b, 0x8000067b, 0x8000067e, + 0x8000067e, 0x8000067e, 0x8000067e, 0x80000680, + 0x80000680, 0x80000680, 0x80000680, 0x8000067a, + 0x8000067a, 0x8000067a, 0x8000067a, 0x8000067f, + 0x8000067f, 0x8000067f, 0x8000067f, 0x80000679, + 0x80000679, 0x80000679, 0x80000679, 0x800006a4, + 0x800006a4, 0x800006a4, 0x800006a4, 0x800006a6, + 0x800006a6, 0x800006a6, 0x800006a6, 0x80000684, + 0x80000684, 0x80000684, 0x80000684, 0x80000683, + 0x80000683, 0x80000683, 0x80000683, 0x80000686, + 0x80000686, 0x80000686, 0x80000686, 0x80000687, + 0x80000687, 0x80000687, 0x80000687, 0x8000068d, + 0x8000068d, 0x8000068c, 0x8000068c, 0x8000068e, + 0x8000068e, 0x80000688, 0x80000688, 0x80000698, + 0x80000698, 0x80000691, 0x80000691, 0x800006a9, + 0x800006a9, 0x800006a9, 0x800006a9, 0x800006af, + 0x800006af, 0x800006af, 0x800006af, 0x800006b3, + 0x800006b3, 0x800006b3, 0x800006b3, 0x800006b1, + 0x800006b1, 0x800006b1, 0x800006b1, 0x800006ba, + 0x800006ba, 0x800006bb, 0x800006bb, 0x800006bb, + 0x800006bb, 0x800006c0, 0x800006c0, 0x800006c1, + 0x800006c1, 0x800006c1, 0x800006c1, 0x800006be, + 0x800006be, 0x800006be, 0x800006be, 0x800006d2, + 0x800006d2, 0x800006d3, 0x800006d3, 0x800006ad, + 0x800006ad, 0x800006ad, 0x800006ad, 0x800006c7, + 0x800006c7, 0x800006c6, 0x800006c6, 0x800006c8, + 0x800006c8, 0x80000677, 0x800006cb, 0x800006cb, + 0x800006c5, 0x800006c5, 0x800006c9, 0x800006c9, + 0x800006d0, 0x800006d0, 0x800006d0, 0x800006d0, + 0x80000649, 0x80000649, 0x00000626, 0x80000627, + 0x00000626, 0x80000627, 0x00000626, 0x800006d5, + 0x00000626, 0x800006d5, 0x00000626, 0x80000648, + 0x00000626, 0x80000648, 0x00000626, 0x800006c7, + 0x00000626, 0x800006c7, 0x00000626, 0x800006c6, + 0x00000626, 0x800006c6, 0x00000626, 0x800006c8, + 0x00000626, 0x800006c8, 0x00000626, 0x800006d0, + 0x00000626, 0x800006d0, 0x00000626, 0x800006d0, + 0x00000626, 0x80000649, 0x00000626, 0x80000649, + 0x00000626, 0x80000649, 0x800006cc, 0x800006cc, + 0x800006cc, 0x800006cc, 0x00000626, 0x8000062c, + 0x00000626, 0x8000062d, 0x00000626, 0x80000645, + 0x00000626, 0x80000649, 0x00000626, 0x8000064a, + 0x00000628, 0x8000062c, 0x00000628, 0x8000062d, + 0x00000628, 0x8000062e, 0x00000628, 0x80000645, + 0x00000628, 0x80000649, 0x00000628, 0x8000064a, + 0x0000062a, 0x8000062c, 0x0000062a, 0x8000062d, + 0x0000062a, 0x8000062e, 0x0000062a, 0x80000645, + 0x0000062a, 0x80000649, 0x0000062a, 0x8000064a, + 0x0000062b, 0x8000062c, 0x0000062b, 0x80000645, + 0x0000062b, 0x80000649, 0x0000062b, 0x8000064a, + 0x0000062c, 0x8000062d, 0x0000062c, 0x80000645, + 0x0000062d, 0x8000062c, 0x0000062d, 0x80000645, + 0x0000062e, 0x8000062c, 0x0000062e, 0x8000062d, + 0x0000062e, 0x80000645, 0x00000633, 0x8000062c, + 0x00000633, 0x8000062d, 0x00000633, 0x8000062e, + 0x00000633, 0x80000645, 0x00000635, 0x8000062d, + 0x00000635, 0x80000645, 0x00000636, 0x8000062c, + 0x00000636, 0x8000062d, 0x00000636, 0x8000062e, + 0x00000636, 0x80000645, 0x00000637, 0x8000062d, + 0x00000637, 0x80000645, 0x00000638, 0x80000645, + 0x00000639, 0x8000062c, 0x00000639, 0x80000645, + 0x0000063a, 0x8000062c, 0x0000063a, 0x80000645, + 0x00000641, 0x8000062c, 0x00000641, 0x8000062d, + 0x00000641, 0x8000062e, 0x00000641, 0x80000645, + 0x00000641, 0x80000649, 0x00000641, 0x8000064a, + 0x00000642, 0x8000062d, 0x00000642, 0x80000645, + 0x00000642, 0x80000649, 0x00000642, 0x8000064a, + 0x00000643, 0x80000627, 0x00000643, 0x8000062c, + 0x00000643, 0x8000062d, 0x00000643, 0x8000062e, + 0x00000643, 0x80000644, 0x00000643, 0x80000645, + 0x00000643, 0x80000649, 0x00000643, 0x8000064a, + 0x00000644, 0x8000062c, 0x00000644, 0x8000062d, + 0x00000644, 0x8000062e, 0x00000644, 0x80000645, + 0x00000644, 0x80000649, 0x00000644, 0x8000064a, + 0x00000645, 0x8000062c, 0x00000645, 0x8000062d, + 0x00000645, 0x8000062e, 0x00000645, 0x80000645, + 0x00000645, 0x80000649, 0x00000645, 0x8000064a, + 0x00000646, 0x8000062c, 0x00000646, 0x8000062d, + 0x00000646, 0x8000062e, 0x00000646, 0x80000645, + 0x00000646, 0x80000649, 0x00000646, 0x8000064a, + 0x00000647, 0x8000062c, 0x00000647, 0x80000645, + 0x00000647, 0x80000649, 0x00000647, 0x8000064a, + 0x0000064a, 0x8000062c, 0x0000064a, 0x8000062d, + 0x0000064a, 0x8000062e, 0x0000064a, 0x80000645, + 0x0000064a, 0x80000649, 0x0000064a, 0x8000064a, + 0x00000630, 0x80000670, 0x00000631, 0x80000670, + 0x00000649, 0x80000670, 0x00000020, 0x0000064c, + 0x80000651, 0x00000020, 0x0000064d, 0x80000651, + 0x00000020, 0x0000064e, 0x80000651, 0x00000020, + 0x0000064f, 0x80000651, 0x00000020, 0x00000650, + 0x80000651, 0x00000020, 0x00000651, 0x80000670, + 0x00000626, 0x80000631, 0x00000626, 0x80000632, + 0x00000626, 0x80000645, 0x00000626, 0x80000646, + 0x00000626, 0x80000649, 0x00000626, 0x8000064a, + 0x00000628, 0x80000631, 0x00000628, 0x80000632, + 0x00000628, 0x80000645, 0x00000628, 0x80000646, + 0x00000628, 0x80000649, 0x00000628, 0x8000064a, + 0x0000062a, 0x80000631, 0x0000062a, 0x80000632, + 0x0000062a, 0x80000645, 0x0000062a, 0x80000646, + 0x0000062a, 0x80000649, 0x0000062a, 0x8000064a, + 0x0000062b, 0x80000631, 0x0000062b, 0x80000632, + 0x0000062b, 0x80000645, 0x0000062b, 0x80000646, + 0x0000062b, 0x80000649, 0x0000062b, 0x8000064a, + 0x00000641, 0x80000649, 0x00000641, 0x8000064a, + 0x00000642, 0x80000649, 0x00000642, 0x8000064a, + 0x00000643, 0x80000627, 0x00000643, 0x80000644, + 0x00000643, 0x80000645, 0x00000643, 0x80000649, + 0x00000643, 0x8000064a, 0x00000644, 0x80000645, + 0x00000644, 0x80000649, 0x00000644, 0x8000064a, + 0x00000645, 0x80000627, 0x00000645, 0x80000645, + 0x00000646, 0x80000631, 0x00000646, 0x80000632, + 0x00000646, 0x80000645, 0x00000646, 0x80000646, + 0x00000646, 0x80000649, 0x00000646, 0x8000064a, + 0x00000649, 0x80000670, 0x0000064a, 0x80000631, + 0x0000064a, 0x80000632, 0x0000064a, 0x80000645, + 0x0000064a, 0x80000646, 0x0000064a, 0x80000649, + 0x0000064a, 0x8000064a, 0x00000626, 0x8000062c, + 0x00000626, 0x8000062d, 0x00000626, 0x8000062e, + 0x00000626, 0x80000645, 0x00000626, 0x80000647, + 0x00000628, 0x8000062c, 0x00000628, 0x8000062d, + 0x00000628, 0x8000062e, 0x00000628, 0x80000645, + 0x00000628, 0x80000647, 0x0000062a, 0x8000062c, + 0x0000062a, 0x8000062d, 0x0000062a, 0x8000062e, + 0x0000062a, 0x80000645, 0x0000062a, 0x80000647, + 0x0000062b, 0x80000645, 0x0000062c, 0x8000062d, + 0x0000062c, 0x80000645, 0x0000062d, 0x8000062c, + 0x0000062d, 0x80000645, 0x0000062e, 0x8000062c, + 0x0000062e, 0x80000645, 0x00000633, 0x8000062c, + 0x00000633, 0x8000062d, 0x00000633, 0x8000062e, + 0x00000633, 0x80000645, 0x00000635, 0x8000062d, + 0x00000635, 0x8000062e, 0x00000635, 0x80000645, + 0x00000636, 0x8000062c, 0x00000636, 0x8000062d, + 0x00000636, 0x8000062e, 0x00000636, 0x80000645, + 0x00000637, 0x8000062d, 0x00000638, 0x80000645, + 0x00000639, 0x8000062c, 0x00000639, 0x80000645, + 0x0000063a, 0x8000062c, 0x0000063a, 0x80000645, + 0x00000641, 0x8000062c, 0x00000641, 0x8000062d, + 0x00000641, 0x8000062e, 0x00000641, 0x80000645, + 0x00000642, 0x8000062d, 0x00000642, 0x80000645, + 0x00000643, 0x8000062c, 0x00000643, 0x8000062d, + 0x00000643, 0x8000062e, 0x00000643, 0x80000644, + 0x00000643, 0x80000645, 0x00000644, 0x8000062c, + 0x00000644, 0x8000062d, 0x00000644, 0x8000062e, + 0x00000644, 0x80000645, 0x00000644, 0x80000647, + 0x00000645, 0x8000062c, 0x00000645, 0x8000062d, + 0x00000645, 0x8000062e, 0x00000645, 0x80000645, + 0x00000646, 0x8000062c, 0x00000646, 0x8000062d, + 0x00000646, 0x8000062e, 0x00000646, 0x80000645, + 0x00000646, 0x80000647, 0x00000647, 0x8000062c, + 0x00000647, 0x80000645, 0x00000647, 0x80000670, + 0x0000064a, 0x8000062c, 0x0000064a, 0x8000062d, + 0x0000064a, 0x8000062e, 0x0000064a, 0x80000645, + 0x0000064a, 0x80000647, 0x00000626, 0x80000645, + 0x00000626, 0x80000647, 0x00000628, 0x80000645, + 0x00000628, 0x80000647, 0x0000062a, 0x80000645, + 0x0000062a, 0x80000647, 0x0000062b, 0x80000645, + 0x0000062b, 0x80000647, 0x00000633, 0x80000645, + 0x00000633, 0x80000647, 0x00000634, 0x80000645, + 0x00000634, 0x80000647, 0x00000643, 0x80000644, + 0x00000643, 0x80000645, 0x00000644, 0x80000645, + 0x00000646, 0x80000645, 0x00000646, 0x80000647, + 0x0000064a, 0x80000645, 0x0000064a, 0x80000647, + 0x00000640, 0x0000064e, 0x80000651, 0x00000640, + 0x0000064f, 0x80000651, 0x00000640, 0x00000650, + 0x80000651, 0x00000637, 0x80000649, 0x00000637, + 0x8000064a, 0x00000639, 0x80000649, 0x00000639, + 0x8000064a, 0x0000063a, 0x80000649, 0x0000063a, + 0x8000064a, 0x00000633, 0x80000649, 0x00000633, + 0x8000064a, 0x00000634, 0x80000649, 0x00000634, + 0x8000064a, 0x0000062d, 0x80000649, 0x0000062d, + 0x8000064a, 0x0000062c, 0x80000649, 0x0000062c, + 0x8000064a, 0x0000062e, 0x80000649, 0x0000062e, + 0x8000064a, 0x00000635, 0x80000649, 0x00000635, + 0x8000064a, 0x00000636, 0x80000649, 0x00000636, + 0x8000064a, 0x00000634, 0x8000062c, 0x00000634, + 0x8000062d, 0x00000634, 0x8000062e, 0x00000634, + 0x80000645, 0x00000634, 0x80000631, 0x00000633, + 0x80000631, 0x00000635, 0x80000631, 0x00000636, + 0x80000631, 0x00000637, 0x80000649, 0x00000637, + 0x8000064a, 0x00000639, 0x80000649, 0x00000639, + 0x8000064a, 0x0000063a, 0x80000649, 0x0000063a, + 0x8000064a, 0x00000633, 0x80000649, 0x00000633, + 0x8000064a, 0x00000634, 0x80000649, 0x00000634, + 0x8000064a, 0x0000062d, 0x80000649, 0x0000062d, + 0x8000064a, 0x0000062c, 0x80000649, 0x0000062c, + 0x8000064a, 0x0000062e, 0x80000649, 0x0000062e, + 0x8000064a, 0x00000635, 0x80000649, 0x00000635, + 0x8000064a, 0x00000636, 0x80000649, 0x00000636, + 0x8000064a, 0x00000634, 0x8000062c, 0x00000634, + 0x8000062d, 0x00000634, 0x8000062e, 0x00000634, + 0x80000645, 0x00000634, 0x80000631, 0x00000633, + 0x80000631, 0x00000635, 0x80000631, 0x00000636, + 0x80000631, 0x00000634, 0x8000062c, 0x00000634, + 0x8000062d, 0x00000634, 0x8000062e, 0x00000634, + 0x80000645, 0x00000633, 0x80000647, 0x00000634, + 0x80000647, 0x00000637, 0x80000645, 0x00000633, + 0x8000062c, 0x00000633, 0x8000062d, 0x00000633, + 0x8000062e, 0x00000634, 0x8000062c, 0x00000634, + 0x8000062d, 0x00000634, 0x8000062e, 0x00000637, + 0x80000645, 0x00000638, 0x80000645, 0x00000627, + 0x8000064b, 0x00000627, 0x8000064b, 0x0000062a, + 0x0000062c, 0x80000645, 0x0000062a, 0x0000062d, + 0x8000062c, 0x0000062a, 0x0000062d, 0x8000062c, + 0x0000062a, 0x0000062d, 0x80000645, 0x0000062a, + 0x0000062e, 0x80000645, 0x0000062a, 0x00000645, + 0x8000062c, 0x0000062a, 0x00000645, 0x8000062d, + 0x0000062a, 0x00000645, 0x8000062e, 0x0000062c, + 0x00000645, 0x8000062d, 0x0000062c, 0x00000645, + 0x8000062d, 0x0000062d, 0x00000645, 0x8000064a, + 0x0000062d, 0x00000645, 0x80000649, 0x00000633, + 0x0000062d, 0x8000062c, 0x00000633, 0x0000062c, + 0x8000062d, 0x00000633, 0x0000062c, 0x80000649, + 0x00000633, 0x00000645, 0x8000062d, 0x00000633, + 0x00000645, 0x8000062d, 0x00000633, 0x00000645, + 0x8000062c, 0x00000633, 0x00000645, 0x80000645, + 0x00000633, 0x00000645, 0x80000645, 0x00000635, + 0x0000062d, 0x8000062d, 0x00000635, 0x0000062d, + 0x8000062d, 0x00000635, 0x00000645, 0x80000645, + 0x00000634, 0x0000062d, 0x80000645, 0x00000634, + 0x0000062d, 0x80000645, 0x00000634, 0x0000062c, + 0x8000064a, 0x00000634, 0x00000645, 0x8000062e, + 0x00000634, 0x00000645, 0x8000062e, 0x00000634, + 0x00000645, 0x80000645, 0x00000634, 0x00000645, + 0x80000645, 0x00000636, 0x0000062d, 0x80000649, + 0x00000636, 0x0000062e, 0x80000645, 0x00000636, + 0x0000062e, 0x80000645, 0x00000637, 0x00000645, + 0x8000062d, 0x00000637, 0x00000645, 0x8000062d, + 0x00000637, 0x00000645, 0x80000645, 0x00000637, + 0x00000645, 0x8000064a, 0x00000639, 0x0000062c, + 0x80000645, 0x00000639, 0x00000645, 0x80000645, + 0x00000639, 0x00000645, 0x80000645, 0x00000639, + 0x00000645, 0x80000649, 0x0000063a, 0x00000645, + 0x80000645, 0x0000063a, 0x00000645, 0x8000064a, + 0x0000063a, 0x00000645, 0x80000649, 0x00000641, + 0x0000062e, 0x80000645, 0x00000641, 0x0000062e, + 0x80000645, 0x00000642, 0x00000645, 0x8000062d, + 0x00000642, 0x00000645, 0x80000645, 0x00000644, + 0x0000062d, 0x80000645, 0x00000644, 0x0000062d, + 0x8000064a, 0x00000644, 0x0000062d, 0x80000649, + 0x00000644, 0x0000062c, 0x8000062c, 0x00000644, + 0x0000062c, 0x8000062c, 0x00000644, 0x0000062e, + 0x80000645, 0x00000644, 0x0000062e, 0x80000645, + 0x00000644, 0x00000645, 0x8000062d, 0x00000644, + 0x00000645, 0x8000062d, 0x00000645, 0x0000062d, + 0x8000062c, 0x00000645, 0x0000062d, 0x80000645, + 0x00000645, 0x0000062d, 0x8000064a, 0x00000645, + 0x0000062c, 0x8000062d, 0x00000645, 0x0000062c, + 0x80000645, 0x00000645, 0x0000062e, 0x8000062c, + 0x00000645, 0x0000062e, 0x80000645, 0x00000645, + 0x0000062c, 0x8000062e, 0x00000647, 0x00000645, + 0x8000062c, 0x00000647, 0x00000645, 0x80000645, + 0x00000646, 0x0000062d, 0x80000645, 0x00000646, + 0x0000062d, 0x80000649, 0x00000646, 0x0000062c, + 0x80000645, 0x00000646, 0x0000062c, 0x80000645, + 0x00000646, 0x0000062c, 0x80000649, 0x00000646, + 0x00000645, 0x8000064a, 0x00000646, 0x00000645, + 0x80000649, 0x0000064a, 0x00000645, 0x80000645, + 0x0000064a, 0x00000645, 0x80000645, 0x00000628, + 0x0000062e, 0x8000064a, 0x0000062a, 0x0000062c, + 0x8000064a, 0x0000062a, 0x0000062c, 0x80000649, + 0x0000062a, 0x0000062e, 0x8000064a, 0x0000062a, + 0x0000062e, 0x80000649, 0x0000062a, 0x00000645, + 0x8000064a, 0x0000062a, 0x00000645, 0x80000649, + 0x0000062c, 0x00000645, 0x8000064a, 0x0000062c, + 0x0000062d, 0x80000649, 0x0000062c, 0x00000645, + 0x80000649, 0x00000633, 0x0000062e, 0x80000649, + 0x00000635, 0x0000062d, 0x8000064a, 0x00000634, + 0x0000062d, 0x8000064a, 0x00000636, 0x0000062d, + 0x8000064a, 0x00000644, 0x0000062c, 0x8000064a, + 0x00000644, 0x00000645, 0x8000064a, 0x0000064a, + 0x0000062d, 0x8000064a, 0x0000064a, 0x0000062c, + 0x8000064a, 0x0000064a, 0x00000645, 0x8000064a, + 0x00000645, 0x00000645, 0x8000064a, 0x00000642, + 0x00000645, 0x8000064a, 0x00000646, 0x0000062d, + 0x8000064a, 0x00000642, 0x00000645, 0x8000062d, + 0x00000644, 0x0000062d, 0x80000645, 0x00000639, + 0x00000645, 0x8000064a, 0x00000643, 0x00000645, + 0x8000064a, 0x00000646, 0x0000062c, 0x8000062d, + 0x00000645, 0x0000062e, 0x8000064a, 0x00000644, + 0x0000062c, 0x80000645, 0x00000643, 0x00000645, + 0x80000645, 0x00000644, 0x0000062c, 0x80000645, + 0x00000646, 0x0000062c, 0x8000062d, 0x0000062c, + 0x0000062d, 0x8000064a, 0x0000062d, 0x0000062c, + 0x8000064a, 0x00000645, 0x0000062c, 0x8000064a, + 0x00000641, 0x00000645, 0x8000064a, 0x00000628, + 0x0000062d, 0x8000064a, 0x00000643, 0x00000645, + 0x80000645, 0x00000639, 0x0000062c, 0x80000645, + 0x00000635, 0x00000645, 0x80000645, 0x00000633, + 0x0000062e, 0x8000064a, 0x00000646, 0x0000062c, + 0x8000064a, 0x00000635, 0x00000644, 0x800006d2, + 0x00000642, 0x00000644, 0x800006d2, 0x00000627, + 0x00000644, 0x00000644, 0x80000647, 0x00000627, + 0x00000643, 0x00000628, 0x80000631, 0x00000645, + 0x0000062d, 0x00000645, 0x8000062f, 0x00000635, + 0x00000644, 0x00000639, 0x80000645, 0x00000631, + 0x00000633, 0x00000648, 0x80000644, 0x00000639, + 0x00000644, 0x0000064a, 0x80000647, 0x00000648, + 0x00000633, 0x00000644, 0x80000645, 0x00000635, + 0x00000644, 0x80000649, 0x00000635, 0x00000644, + 0x00000649, 0x00000020, 0x00000627, 0x00000644, + 0x00000644, 0x00000647, 0x00000020, 0x00000639, + 0x00000644, 0x0000064a, 0x00000647, 0x00000020, + 0x00000648, 0x00000633, 0x00000644, 0x80000645, + 0x0000062c, 0x00000644, 0x00000020, 0x0000062c, + 0x00000644, 0x00000627, 0x00000644, 0x80000647, + 0x80002025, 0x80002014, 0x80002013, 0x8000005f, + 0x8000005f, 0x80000028, 0x80000029, 0x8000007b, + 0x8000007d, 0x80003014, 0x80003015, 0x80003010, + 0x80003011, 0x8000300a, 0x8000300b, 0x80003008, + 0x80003009, 0x8000300c, 0x8000300d, 0x8000300e, + 0x8000300f, 0x8000203e, 0x8000203e, 0x8000203e, + 0x8000203e, 0x8000005f, 0x8000005f, 0x8000005f, + 0x8000002c, 0x80003001, 0x8000002e, 0x8000003b, + 0x8000003a, 0x8000003f, 0x80000021, 0x80002014, + 0x80000028, 0x80000029, 0x8000007b, 0x8000007d, + 0x80003014, 0x80003015, 0x80000023, 0x80000026, + 0x8000002a, 0x8000002b, 0x8000002d, 0x8000003c, + 0x8000003e, 0x8000003d, 0x8000005c, 0x80000024, + 0x80000025, 0x80000040, 0x00000020, 0x8000064b, + 0x00000640, 0x8000064b, 0x00000020, 0x8000064c, + 0x00000020, 0x8000064d, 0x00000020, 0x8000064e, + 0x00000640, 0x8000064e, 0x00000020, 0x8000064f, + 0x00000640, 0x8000064f, 0x00000020, 0x80000650, + 0x00000640, 0x80000650, 0x00000020, 0x80000651, + 0x00000640, 0x80000651, 0x00000020, 0x80000652, + 0x00000640, 0x80000652, 0x80000621, 0x80000622, + 0x80000622, 0x80000623, 0x80000623, 0x80000624, + 0x80000624, 0x80000625, 0x80000625, 0x80000626, + 0x80000626, 0x80000626, 0x80000626, 0x80000627, + 0x80000627, 0x80000628, 0x80000628, 0x80000628, + 0x80000628, 0x80000629, 0x80000629, 0x8000062a, + 0x8000062a, 0x8000062a, 0x8000062a, 0x8000062b, + 0x8000062b, 0x8000062b, 0x8000062b, 0x8000062c, + 0x8000062c, 0x8000062c, 0x8000062c, 0x8000062d, + 0x8000062d, 0x8000062d, 0x8000062d, 0x8000062e, + 0x8000062e, 0x8000062e, 0x8000062e, 0x8000062f, + 0x8000062f, 0x80000630, 0x80000630, 0x80000631, + 0x80000631, 0x80000632, 0x80000632, 0x80000633, + 0x80000633, 0x80000633, 0x80000633, 0x80000634, + 0x80000634, 0x80000634, 0x80000634, 0x80000635, + 0x80000635, 0x80000635, 0x80000635, 0x80000636, + 0x80000636, 0x80000636, 0x80000636, 0x80000637, + 0x80000637, 0x80000637, 0x80000637, 0x80000638, + 0x80000638, 0x80000638, 0x80000638, 0x80000639, + 0x80000639, 0x80000639, 0x80000639, 0x8000063a, + 0x8000063a, 0x8000063a, 0x8000063a, 0x80000641, + 0x80000641, 0x80000641, 0x80000641, 0x80000642, + 0x80000642, 0x80000642, 0x80000642, 0x80000643, + 0x80000643, 0x80000643, 0x80000643, 0x80000644, + 0x80000644, 0x80000644, 0x80000644, 0x80000645, + 0x80000645, 0x80000645, 0x80000645, 0x80000646, + 0x80000646, 0x80000646, 0x80000646, 0x80000647, + 0x80000647, 0x80000647, 0x80000647, 0x80000648, + 0x80000648, 0x80000649, 0x80000649, 0x8000064a, + 0x8000064a, 0x8000064a, 0x8000064a, 0x00000644, + 0x80000622, 0x00000644, 0x80000622, 0x00000644, + 0x80000623, 0x00000644, 0x80000623, 0x00000644, + 0x80000625, 0x00000644, 0x80000625, 0x00000644, + 0x80000627, 0x00000644, 0x80000627, 0x80000021, + 0x80000022, 0x80000023, 0x80000024, 0x80000025, + 0x80000026, 0x80000027, 0x80000028, 0x80000029, + 0x8000002a, 0x8000002b, 0x8000002c, 0x8000002d, + 0x8000002e, 0x8000002f, 0x80000030, 0x80000031, + 0x80000032, 0x80000033, 0x80000034, 0x80000035, + 0x80000036, 0x80000037, 0x80000038, 0x80000039, + 0x8000003a, 0x8000003b, 0x8000003c, 0x8000003d, + 0x8000003e, 0x8000003f, 0x80000040, 0x80000041, + 0x80000042, 0x80000043, 0x80000044, 0x80000045, + 0x80000046, 0x80000047, 0x80000048, 0x80000049, + 0x8000004a, 0x8000004b, 0x8000004c, 0x8000004d, + 0x8000004e, 0x8000004f, 0x80000050, 0x80000051, + 0x80000052, 0x80000053, 0x80000054, 0x80000055, + 0x80000056, 0x80000057, 0x80000058, 0x80000059, + 0x8000005a, 0x8000005b, 0x8000005c, 0x8000005d, + 0x8000005e, 0x8000005f, 0x80000060, 0x80000061, + 0x80000062, 0x80000063, 0x80000064, 0x80000065, + 0x80000066, 0x80000067, 0x80000068, 0x80000069, + 0x8000006a, 0x8000006b, 0x8000006c, 0x8000006d, + 0x8000006e, 0x8000006f, 0x80000070, 0x80000071, + 0x80000072, 0x80000073, 0x80000074, 0x80000075, + 0x80000076, 0x80000077, 0x80000078, 0x80000079, + 0x8000007a, 0x8000007b, 0x8000007c, 0x8000007d, + 0x8000007e, 0x80003002, 0x8000300c, 0x8000300d, + 0x80003001, 0x800030fb, 0x800030f2, 0x800030a1, + 0x800030a3, 0x800030a5, 0x800030a7, 0x800030a9, + 0x800030e3, 0x800030e5, 0x800030e7, 0x800030c3, + 0x800030fc, 0x800030a2, 0x800030a4, 0x800030a6, + 0x800030a8, 0x800030aa, 0x800030ab, 0x800030ad, + 0x800030af, 0x800030b1, 0x800030b3, 0x800030b5, + 0x800030b7, 0x800030b9, 0x800030bb, 0x800030bd, + 0x800030bf, 0x800030c1, 0x800030c4, 0x800030c6, + 0x800030c8, 0x800030ca, 0x800030cb, 0x800030cc, + 0x800030cd, 0x800030ce, 0x800030cf, 0x800030d2, + 0x800030d5, 0x800030d8, 0x800030db, 0x800030de, + 0x800030df, 0x800030e0, 0x800030e1, 0x800030e2, + 0x800030e4, 0x800030e6, 0x800030e8, 0x800030e9, + 0x800030ea, 0x800030eb, 0x800030ec, 0x800030ed, + 0x800030ef, 0x800030f3, 0x80003099, 0x8000309a, + 0x80003164, 0x80003131, 0x80003132, 0x80003133, + 0x80003134, 0x80003135, 0x80003136, 0x80003137, + 0x80003138, 0x80003139, 0x8000313a, 0x8000313b, + 0x8000313c, 0x8000313d, 0x8000313e, 0x8000313f, + 0x80003140, 0x80003141, 0x80003142, 0x80003143, + 0x80003144, 0x80003145, 0x80003146, 0x80003147, + 0x80003148, 0x80003149, 0x8000314a, 0x8000314b, + 0x8000314c, 0x8000314d, 0x8000314e, 0x8000314f, + 0x80003150, 0x80003151, 0x80003152, 0x80003153, + 0x80003154, 0x80003155, 0x80003156, 0x80003157, + 0x80003158, 0x80003159, 0x8000315a, 0x8000315b, + 0x8000315c, 0x8000315d, 0x8000315e, 0x8000315f, + 0x80003160, 0x80003161, 0x80003162, 0x80003163, + 0x800000a2, 0x800000a3, 0x800000ac, 0x800000af, + 0x800000a6, 0x800000a5, 0x800020a9, 0x80002502, + 0x80002190, 0x80002191, 0x80002192, 0x80002193, + 0x800025a0, 0x800025cb, 0x0001d157, 0x8001d165, + 0x0001d158, 0x8001d165, 0x0001d15f, 0x8001d16e, + 0x0001d15f, 0x8001d16f, 0x0001d15f, 0x8001d170, + 0x0001d15f, 0x8001d171, 0x0001d15f, 0x8001d172, + 0x0001d1b9, 0x8001d165, 0x0001d1ba, 0x8001d165, + 0x0001d1bb, 0x8001d16e, 0x0001d1bc, 0x8001d16e, + 0x0001d1bb, 0x8001d16f, 0x0001d1bc, 0x8001d16f, + 0x80000041, 0x80000042, 0x80000043, 0x80000044, + 0x80000045, 0x80000046, 0x80000047, 0x80000048, + 0x80000049, 0x8000004a, 0x8000004b, 0x8000004c, + 0x8000004d, 0x8000004e, 0x8000004f, 0x80000050, + 0x80000051, 0x80000052, 0x80000053, 0x80000054, + 0x80000055, 0x80000056, 0x80000057, 0x80000058, + 0x80000059, 0x8000005a, 0x80000061, 0x80000062, + 0x80000063, 0x80000064, 0x80000065, 0x80000066, + 0x80000067, 0x80000068, 0x80000069, 0x8000006a, + 0x8000006b, 0x8000006c, 0x8000006d, 0x8000006e, + 0x8000006f, 0x80000070, 0x80000071, 0x80000072, + 0x80000073, 0x80000074, 0x80000075, 0x80000076, + 0x80000077, 0x80000078, 0x80000079, 0x8000007a, + 0x80000041, 0x80000042, 0x80000043, 0x80000044, + 0x80000045, 0x80000046, 0x80000047, 0x80000048, + 0x80000049, 0x8000004a, 0x8000004b, 0x8000004c, + 0x8000004d, 0x8000004e, 0x8000004f, 0x80000050, + 0x80000051, 0x80000052, 0x80000053, 0x80000054, + 0x80000055, 0x80000056, 0x80000057, 0x80000058, + 0x80000059, 0x8000005a, 0x80000061, 0x80000062, + 0x80000063, 0x80000064, 0x80000065, 0x80000066, + 0x80000067, 0x80000069, 0x8000006a, 0x8000006b, + 0x8000006c, 0x8000006d, 0x8000006e, 0x8000006f, + 0x80000070, 0x80000071, 0x80000072, 0x80000073, + 0x80000074, 0x80000075, 0x80000076, 0x80000077, + 0x80000078, 0x80000079, 0x8000007a, 0x80000041, + 0x80000042, 0x80000043, 0x80000044, 0x80000045, + 0x80000046, 0x80000047, 0x80000048, 0x80000049, + 0x8000004a, 0x8000004b, 0x8000004c, 0x8000004d, + 0x8000004e, 0x8000004f, 0x80000050, 0x80000051, + 0x80000052, 0x80000053, 0x80000054, 0x80000055, + 0x80000056, 0x80000057, 0x80000058, 0x80000059, + 0x8000005a, 0x80000061, 0x80000062, 0x80000063, + 0x80000064, 0x80000065, 0x80000066, 0x80000067, + 0x80000068, 0x80000069, 0x8000006a, 0x8000006b, + 0x8000006c, 0x8000006d, 0x8000006e, 0x8000006f, + 0x80000070, 0x80000071, 0x80000072, 0x80000073, + 0x80000074, 0x80000075, 0x80000076, 0x80000077, + 0x80000078, 0x80000079, 0x8000007a, 0x80000041, + 0x80000043, 0x80000044, 0x80000047, 0x8000004a, + 0x8000004b, 0x8000004e, 0x8000004f, 0x80000050, + 0x80000051, 0x80000053, 0x80000054, 0x80000055, + 0x80000056, 0x80000057, 0x80000058, 0x80000059, + 0x8000005a, 0x80000061, 0x80000062, 0x80000063, + 0x80000064, 0x80000066, 0x80000068, 0x80000069, + 0x8000006a, 0x8000006b, 0x8000006d, 0x8000006e, + 0x80000070, 0x80000071, 0x80000072, 0x80000073, + 0x80000074, 0x80000075, 0x80000076, 0x80000077, + 0x80000078, 0x80000079, 0x8000007a, 0x80000041, + 0x80000042, 0x80000043, 0x80000044, 0x80000045, + 0x80000046, 0x80000047, 0x80000048, 0x80000049, + 0x8000004a, 0x8000004b, 0x8000004c, 0x8000004d, + 0x8000004e, 0x8000004f, 0x80000050, 0x80000051, + 0x80000052, 0x80000053, 0x80000054, 0x80000055, + 0x80000056, 0x80000057, 0x80000058, 0x80000059, + 0x8000005a, 0x80000061, 0x80000062, 0x80000063, + 0x80000064, 0x80000065, 0x80000066, 0x80000067, + 0x80000068, 0x80000069, 0x8000006a, 0x8000006b, + 0x8000006c, 0x8000006d, 0x8000006e, 0x8000006f, + 0x80000070, 0x80000071, 0x80000072, 0x80000073, + 0x80000074, 0x80000075, 0x80000076, 0x80000077, + 0x80000078, 0x80000079, 0x8000007a, 0x80000041, + 0x80000042, 0x80000044, 0x80000045, 0x80000046, + 0x80000047, 0x8000004a, 0x8000004b, 0x8000004c, + 0x8000004d, 0x8000004e, 0x8000004f, 0x80000050, + 0x80000051, 0x80000053, 0x80000054, 0x80000055, + 0x80000056, 0x80000057, 0x80000058, 0x80000059, + 0x80000061, 0x80000062, 0x80000063, 0x80000064, + 0x80000065, 0x80000066, 0x80000067, 0x80000068, + 0x80000069, 0x8000006a, 0x8000006b, 0x8000006c, + 0x8000006d, 0x8000006e, 0x8000006f, 0x80000070, + 0x80000071, 0x80000072, 0x80000073, 0x80000074, + 0x80000075, 0x80000076, 0x80000077, 0x80000078, + 0x80000079, 0x8000007a, 0x80000041, 0x80000042, + 0x80000044, 0x80000045, 0x80000046, 0x80000047, + 0x80000049, 0x8000004a, 0x8000004b, 0x8000004c, + 0x8000004d, 0x8000004f, 0x80000053, 0x80000054, + 0x80000055, 0x80000056, 0x80000057, 0x80000058, + 0x80000059, 0x80000061, 0x80000062, 0x80000063, + 0x80000064, 0x80000065, 0x80000066, 0x80000067, + 0x80000068, 0x80000069, 0x8000006a, 0x8000006b, + 0x8000006c, 0x8000006d, 0x8000006e, 0x8000006f, + 0x80000070, 0x80000071, 0x80000072, 0x80000073, + 0x80000074, 0x80000075, 0x80000076, 0x80000077, + 0x80000078, 0x80000079, 0x8000007a, 0x80000041, + 0x80000042, 0x80000043, 0x80000044, 0x80000045, + 0x80000046, 0x80000047, 0x80000048, 0x80000049, + 0x8000004a, 0x8000004b, 0x8000004c, 0x8000004d, + 0x8000004e, 0x8000004f, 0x80000050, 0x80000051, + 0x80000052, 0x80000053, 0x80000054, 0x80000055, + 0x80000056, 0x80000057, 0x80000058, 0x80000059, + 0x8000005a, 0x80000061, 0x80000062, 0x80000063, + 0x80000064, 0x80000065, 0x80000066, 0x80000067, + 0x80000068, 0x80000069, 0x8000006a, 0x8000006b, + 0x8000006c, 0x8000006d, 0x8000006e, 0x8000006f, + 0x80000070, 0x80000071, 0x80000072, 0x80000073, + 0x80000074, 0x80000075, 0x80000076, 0x80000077, + 0x80000078, 0x80000079, 0x8000007a, 0x80000041, + 0x80000042, 0x80000043, 0x80000044, 0x80000045, + 0x80000046, 0x80000047, 0x80000048, 0x80000049, + 0x8000004a, 0x8000004b, 0x8000004c, 0x8000004d, + 0x8000004e, 0x8000004f, 0x80000050, 0x80000051, + 0x80000052, 0x80000053, 0x80000054, 0x80000055, + 0x80000056, 0x80000057, 0x80000058, 0x80000059, + 0x8000005a, 0x80000061, 0x80000062, 0x80000063, + 0x80000064, 0x80000065, 0x80000066, 0x80000067, + 0x80000068, 0x80000069, 0x8000006a, 0x8000006b, + 0x8000006c, 0x8000006d, 0x8000006e, 0x8000006f, + 0x80000070, 0x80000071, 0x80000072, 0x80000073, + 0x80000074, 0x80000075, 0x80000076, 0x80000077, + 0x80000078, 0x80000079, 0x8000007a, 0x80000041, + 0x80000042, 0x80000043, 0x80000044, 0x80000045, + 0x80000046, 0x80000047, 0x80000048, 0x80000049, + 0x8000004a, 0x8000004b, 0x8000004c, 0x8000004d, + 0x8000004e, 0x8000004f, 0x80000050, 0x80000051, + 0x80000052, 0x80000053, 0x80000054, 0x80000055, + 0x80000056, 0x80000057, 0x80000058, 0x80000059, + 0x8000005a, 0x80000061, 0x80000062, 0x80000063, + 0x80000064, 0x80000065, 0x80000066, 0x80000067, + 0x80000068, 0x80000069, 0x8000006a, 0x8000006b, + 0x8000006c, 0x8000006d, 0x8000006e, 0x8000006f, + 0x80000070, 0x80000071, 0x80000072, 0x80000073, + 0x80000074, 0x80000075, 0x80000076, 0x80000077, + 0x80000078, 0x80000079, 0x8000007a, 0x80000041, + 0x80000042, 0x80000043, 0x80000044, 0x80000045, + 0x80000046, 0x80000047, 0x80000048, 0x80000049, + 0x8000004a, 0x8000004b, 0x8000004c, 0x8000004d, + 0x8000004e, 0x8000004f, 0x80000050, 0x80000051, + 0x80000052, 0x80000053, 0x80000054, 0x80000055, + 0x80000056, 0x80000057, 0x80000058, 0x80000059, + 0x8000005a, 0x80000061, 0x80000062, 0x80000063, + 0x80000064, 0x80000065, 0x80000066, 0x80000067, + 0x80000068, 0x80000069, 0x8000006a, 0x8000006b, + 0x8000006c, 0x8000006d, 0x8000006e, 0x8000006f, + 0x80000070, 0x80000071, 0x80000072, 0x80000073, + 0x80000074, 0x80000075, 0x80000076, 0x80000077, + 0x80000078, 0x80000079, 0x8000007a, 0x80000041, + 0x80000042, 0x80000043, 0x80000044, 0x80000045, + 0x80000046, 0x80000047, 0x80000048, 0x80000049, + 0x8000004a, 0x8000004b, 0x8000004c, 0x8000004d, + 0x8000004e, 0x8000004f, 0x80000050, 0x80000051, + 0x80000052, 0x80000053, 0x80000054, 0x80000055, + 0x80000056, 0x80000057, 0x80000058, 0x80000059, + 0x8000005a, 0x80000061, 0x80000062, 0x80000063, + 0x80000064, 0x80000065, 0x80000066, 0x80000067, + 0x80000068, 0x80000069, 0x8000006a, 0x8000006b, + 0x8000006c, 0x8000006d, 0x8000006e, 0x8000006f, + 0x80000070, 0x80000071, 0x80000072, 0x80000073, + 0x80000074, 0x80000075, 0x80000076, 0x80000077, + 0x80000078, 0x80000079, 0x8000007a, 0x80000041, + 0x80000042, 0x80000043, 0x80000044, 0x80000045, + 0x80000046, 0x80000047, 0x80000048, 0x80000049, + 0x8000004a, 0x8000004b, 0x8000004c, 0x8000004d, + 0x8000004e, 0x8000004f, 0x80000050, 0x80000051, + 0x80000052, 0x80000053, 0x80000054, 0x80000055, + 0x80000056, 0x80000057, 0x80000058, 0x80000059, + 0x8000005a, 0x80000061, 0x80000062, 0x80000063, + 0x80000064, 0x80000065, 0x80000066, 0x80000067, + 0x80000068, 0x80000069, 0x8000006a, 0x8000006b, + 0x8000006c, 0x8000006d, 0x8000006e, 0x8000006f, + 0x80000070, 0x80000071, 0x80000072, 0x80000073, + 0x80000074, 0x80000075, 0x80000076, 0x80000077, + 0x80000078, 0x80000079, 0x8000007a, 0x80000391, + 0x80000392, 0x80000393, 0x80000394, 0x80000395, + 0x80000396, 0x80000397, 0x80000398, 0x80000399, + 0x8000039a, 0x8000039b, 0x8000039c, 0x8000039d, + 0x8000039e, 0x8000039f, 0x800003a0, 0x800003a1, + 0x800003f4, 0x800003a3, 0x800003a4, 0x800003a5, + 0x800003a6, 0x800003a7, 0x800003a8, 0x800003a9, + 0x80002207, 0x800003b1, 0x800003b2, 0x800003b3, + 0x800003b4, 0x800003b5, 0x800003b6, 0x800003b7, + 0x800003b8, 0x800003b9, 0x800003ba, 0x800003bb, + 0x800003bc, 0x800003bd, 0x800003be, 0x800003bf, + 0x800003c0, 0x800003c1, 0x800003c2, 0x800003c3, + 0x800003c4, 0x800003c5, 0x800003c6, 0x800003c7, + 0x800003c8, 0x800003c9, 0x80002202, 0x800003f5, + 0x800003d1, 0x800003f0, 0x800003d5, 0x800003f1, + 0x800003d6, 0x80000391, 0x80000392, 0x80000393, + 0x80000394, 0x80000395, 0x80000396, 0x80000397, + 0x80000398, 0x80000399, 0x8000039a, 0x8000039b, + 0x8000039c, 0x8000039d, 0x8000039e, 0x8000039f, + 0x800003a0, 0x800003a1, 0x800003f4, 0x800003a3, + 0x800003a4, 0x800003a5, 0x800003a6, 0x800003a7, + 0x800003a8, 0x800003a9, 0x80002207, 0x800003b1, + 0x800003b2, 0x800003b3, 0x800003b4, 0x800003b5, + 0x800003b6, 0x800003b7, 0x800003b8, 0x800003b9, + 0x800003ba, 0x800003bb, 0x800003bc, 0x800003bd, + 0x800003be, 0x800003bf, 0x800003c0, 0x800003c1, + 0x800003c2, 0x800003c3, 0x800003c4, 0x800003c5, + 0x800003c6, 0x800003c7, 0x800003c8, 0x800003c9, + 0x80002202, 0x800003f5, 0x800003d1, 0x800003f0, + 0x800003d5, 0x800003f1, 0x800003d6, 0x80000391, + 0x80000392, 0x80000393, 0x80000394, 0x80000395, + 0x80000396, 0x80000397, 0x80000398, 0x80000399, + 0x8000039a, 0x8000039b, 0x8000039c, 0x8000039d, + 0x8000039e, 0x8000039f, 0x800003a0, 0x800003a1, + 0x800003f4, 0x800003a3, 0x800003a4, 0x800003a5, + 0x800003a6, 0x800003a7, 0x800003a8, 0x800003a9, + 0x80002207, 0x800003b1, 0x800003b2, 0x800003b3, + 0x800003b4, 0x800003b5, 0x800003b6, 0x800003b7, + 0x800003b8, 0x800003b9, 0x800003ba, 0x800003bb, + 0x800003bc, 0x800003bd, 0x800003be, 0x800003bf, + 0x800003c0, 0x800003c1, 0x800003c2, 0x800003c3, + 0x800003c4, 0x800003c5, 0x800003c6, 0x800003c7, + 0x800003c8, 0x800003c9, 0x80002202, 0x800003f5, + 0x800003d1, 0x800003f0, 0x800003d5, 0x800003f1, + 0x800003d6, 0x80000391, 0x80000392, 0x80000393, + 0x80000394, 0x80000395, 0x80000396, 0x80000397, + 0x80000398, 0x80000399, 0x8000039a, 0x8000039b, + 0x8000039c, 0x8000039d, 0x8000039e, 0x8000039f, + 0x800003a0, 0x800003a1, 0x800003f4, 0x800003a3, + 0x800003a4, 0x800003a5, 0x800003a6, 0x800003a7, + 0x800003a8, 0x800003a9, 0x80002207, 0x800003b1, + 0x800003b2, 0x800003b3, 0x800003b4, 0x800003b5, + 0x800003b6, 0x800003b7, 0x800003b8, 0x800003b9, + 0x800003ba, 0x800003bb, 0x800003bc, 0x800003bd, + 0x800003be, 0x800003bf, 0x800003c0, 0x800003c1, + 0x800003c2, 0x800003c3, 0x800003c4, 0x800003c5, + 0x800003c6, 0x800003c7, 0x800003c8, 0x800003c9, + 0x80002202, 0x800003f5, 0x800003d1, 0x800003f0, + 0x800003d5, 0x800003f1, 0x800003d6, 0x80000391, + 0x80000392, 0x80000393, 0x80000394, 0x80000395, + 0x80000396, 0x80000397, 0x80000398, 0x80000399, + 0x8000039a, 0x8000039b, 0x8000039c, 0x8000039d, + 0x8000039e, 0x8000039f, 0x800003a0, 0x800003a1, + 0x800003f4, 0x800003a3, 0x800003a4, 0x800003a5, + 0x800003a6, 0x800003a7, 0x800003a8, 0x800003a9, + 0x80002207, 0x800003b1, 0x800003b2, 0x800003b3, + 0x800003b4, 0x800003b5, 0x800003b6, 0x800003b7, + 0x800003b8, 0x800003b9, 0x800003ba, 0x800003bb, + 0x800003bc, 0x800003bd, 0x800003be, 0x800003bf, + 0x800003c0, 0x800003c1, 0x800003c2, 0x800003c3, + 0x800003c4, 0x800003c5, 0x800003c6, 0x800003c7, + 0x800003c8, 0x800003c9, 0x80002202, 0x800003f5, + 0x800003d1, 0x800003f0, 0x800003d5, 0x800003f1, + 0x800003d6, 0x80000030, 0x80000031, 0x80000032, + 0x80000033, 0x80000034, 0x80000035, 0x80000036, + 0x80000037, 0x80000038, 0x80000039, 0x80000030, + 0x80000031, 0x80000032, 0x80000033, 0x80000034, + 0x80000035, 0x80000036, 0x80000037, 0x80000038, + 0x80000039, 0x80000030, 0x80000031, 0x80000032, + 0x80000033, 0x80000034, 0x80000035, 0x80000036, + 0x80000037, 0x80000038, 0x80000039, 0x80000030, + 0x80000031, 0x80000032, 0x80000033, 0x80000034, + 0x80000035, 0x80000036, 0x80000037, 0x80000038, + 0x80000039, 0x80000030, 0x80000031, 0x80000032, + 0x80000033, 0x80000034, 0x80000035, 0x80000036, + 0x80000037, 0x80000038, 0x80000039, 0x80004e3d, + 0x80004e38, 0x80004e41, 0x80020122, 0x80004f60, + 0x80004fae, 0x80004fbb, 0x80005002, 0x8000507a, + 0x80005099, 0x800050e7, 0x800050cf, 0x8000349e, + 0x8002063a, 0x8000514d, 0x80005154, 0x80005164, + 0x80005177, 0x8002051c, 0x800034b9, 0x80005167, + 0x8000518d, 0x8002054b, 0x80005197, 0x800051a4, + 0x80004ecc, 0x800051ac, 0x800051b5, 0x800291df, + 0x800051f5, 0x80005203, 0x800034df, 0x8000523b, + 0x80005246, 0x80005272, 0x80005277, 0x80003515, + 0x800052c7, 0x800052c9, 0x800052e4, 0x800052fa, + 0x80005305, 0x80005306, 0x80005317, 0x80005349, + 0x80005351, 0x8000535a, 0x80005373, 0x8000537d, + 0x8000537f, 0x8000537f, 0x8000537f, 0x80020a2c, + 0x80007070, 0x800053ca, 0x800053df, 0x80020b63, + 0x800053eb, 0x800053f1, 0x80005406, 0x8000549e, + 0x80005438, 0x80005448, 0x80005468, 0x800054a2, + 0x800054f6, 0x80005510, 0x80005553, 0x80005563, + 0x80005584, 0x80005584, 0x80005599, 0x800055ab, + 0x800055b3, 0x800055c2, 0x80005716, 0x80005606, + 0x80005717, 0x80005651, 0x80005674, 0x80005207, + 0x800058ee, 0x800057ce, 0x800057f4, 0x8000580d, + 0x8000578b, 0x80005832, 0x80005831, 0x800058ac, + 0x800214e4, 0x800058f2, 0x800058f7, 0x80005906, + 0x8000591a, 0x80005922, 0x80005962, 0x800216a8, + 0x800216ea, 0x800059ec, 0x80005a1b, 0x80005a27, + 0x800059d8, 0x80005a66, 0x800036ee, 0x8002136a, + 0x80005b08, 0x80005b3e, 0x80005b3e, 0x800219c8, + 0x80005bc3, 0x80005bd8, 0x80005be7, 0x80005bf3, + 0x80021b18, 0x80005bff, 0x80005c06, 0x80005f33, + 0x80005c22, 0x80003781, 0x80005c60, 0x80005c6e, + 0x80005cc0, 0x80005c8d, 0x80021de4, 0x80005d43, + 0x80021de6, 0x80005d6e, 0x80005d6b, 0x80005d7c, + 0x80005de1, 0x80005de2, 0x8000382f, 0x80005dfd, + 0x80005e28, 0x80005e3d, 0x80005e69, 0x80003862, + 0x80022183, 0x8000387c, 0x80005eb0, 0x80005eb3, + 0x80005eb6, 0x80005eca, 0x8002a392, 0x80005efe, + 0x80022331, 0x80022331, 0x80008201, 0x80005f22, + 0x80005f22, 0x800038c7, 0x800232b8, 0x800261da, + 0x80005f62, 0x80005f6b, 0x800038e3, 0x80005f9a, + 0x80005fcd, 0x80005fd7, 0x80005ff9, 0x80006081, + 0x8000393a, 0x8000391c, 0x80006094, 0x800226d4, + 0x800060c7, 0x80006148, 0x8000614c, 0x8000614e, + 0x8000614c, 0x8000617a, 0x8000618e, 0x800061b2, + 0x800061a4, 0x800061af, 0x800061de, 0x800061f2, + 0x800061f6, 0x80006210, 0x8000621b, 0x8000625d, + 0x800062b1, 0x800062d4, 0x80006350, 0x80022b0c, + 0x8000633d, 0x800062fc, 0x80006368, 0x80006383, + 0x800063e4, 0x80022bf1, 0x80006422, 0x800063c5, + 0x800063a9, 0x80003a2e, 0x80006469, 0x8000647e, + 0x8000649d, 0x80006477, 0x80003a6c, 0x8000654f, + 0x8000656c, 0x8002300a, 0x800065e3, 0x800066f8, + 0x80006649, 0x80003b19, 0x80006691, 0x80003b08, + 0x80003ae4, 0x80005192, 0x80005195, 0x80006700, + 0x8000669c, 0x800080ad, 0x800043d9, 0x80006717, + 0x8000671b, 0x80006721, 0x8000675e, 0x80006753, + 0x800233c3, 0x80003b49, 0x800067fa, 0x80006785, + 0x80006852, 0x80006885, 0x8002346d, 0x8000688e, + 0x8000681f, 0x80006914, 0x80003b9d, 0x80006942, + 0x800069a3, 0x800069ea, 0x80006aa8, 0x800236a3, + 0x80006adb, 0x80003c18, 0x80006b21, 0x800238a7, + 0x80006b54, 0x80003c4e, 0x80006b72, 0x80006b9f, + 0x80006bba, 0x80006bbb, 0x80023a8d, 0x80021d0b, + 0x80023afa, 0x80006c4e, 0x80023cbc, 0x80006cbf, + 0x80006ccd, 0x80006c67, 0x80006d16, 0x80006d3e, + 0x80006d77, 0x80006d41, 0x80006d69, 0x80006d78, + 0x80006d85, 0x80023d1e, 0x80006d34, 0x80006e2f, + 0x80006e6e, 0x80003d33, 0x80006ecb, 0x80006ec7, + 0x80023ed1, 0x80006df9, 0x80006f6e, 0x80023f5e, + 0x80023f8e, 0x80006fc6, 0x80007039, 0x8000701e, + 0x8000701b, 0x80003d96, 0x8000704a, 0x8000707d, + 0x80007077, 0x800070ad, 0x80020525, 0x80007145, + 0x80024263, 0x8000719c, 0x800043ab, 0x80007228, + 0x80007235, 0x80007250, 0x80024608, 0x80007280, + 0x80007295, 0x80024735, 0x80024814, 0x8000737a, + 0x8000738b, 0x80003eac, 0x800073a5, 0x80003eb8, + 0x80003eb8, 0x80007447, 0x8000745c, 0x80007471, + 0x80007485, 0x800074ca, 0x80003f1b, 0x80007524, + 0x80024c36, 0x8000753e, 0x80024c92, 0x80007570, + 0x8002219f, 0x80007610, 0x80024fa1, 0x80024fb8, + 0x80025044, 0x80003ffc, 0x80004008, 0x800076f4, + 0x800250f3, 0x800250f2, 0x80025119, 0x80025133, + 0x8000771e, 0x8000771f, 0x8000771f, 0x8000774a, + 0x80004039, 0x8000778b, 0x80004046, 0x80004096, + 0x8002541d, 0x8000784e, 0x8000788c, 0x800078cc, + 0x800040e3, 0x80025626, 0x80007956, 0x8002569a, + 0x800256c5, 0x8000798f, 0x800079eb, 0x8000412f, + 0x80007a40, 0x80007a4a, 0x80007a4f, 0x8002597c, + 0x80025aa7, 0x80025aa7, 0x80007aae, 0x80004202, + 0x80025bab, 0x80007bc6, 0x80007bc9, 0x80004227, + 0x80025c80, 0x80007cd2, 0x800042a0, 0x80007ce8, + 0x80007ce3, 0x80007d00, 0x80025f86, 0x80007d63, + 0x80004301, 0x80007dc7, 0x80007e02, 0x80007e45, + 0x80004334, 0x80026228, 0x80026247, 0x80004359, + 0x800262d9, 0x80007f7a, 0x8002633e, 0x80007f95, + 0x80007ffa, 0x80008005, 0x800264da, 0x80026523, + 0x80008060, 0x800265a8, 0x80008070, 0x8002335f, + 0x800043d5, 0x800080b2, 0x80008103, 0x8000440b, + 0x8000813e, 0x80005ab5, 0x800267a7, 0x800267b5, + 0x80023393, 0x8002339c, 0x80008201, 0x80008204, + 0x80008f9e, 0x8000446b, 0x80008291, 0x8000828b, + 0x8000829d, 0x800052b3, 0x800082b1, 0x800082b3, + 0x800082bd, 0x800082e6, 0x80026b3c, 0x800082e5, + 0x8000831d, 0x80008363, 0x800083ad, 0x80008323, + 0x800083bd, 0x800083e7, 0x80008457, 0x80008353, + 0x800083ca, 0x800083cc, 0x800083dc, 0x80026c36, + 0x80026d6b, 0x80026cd5, 0x8000452b, 0x800084f1, + 0x800084f3, 0x80008516, 0x800273ca, 0x80008564, + 0x80026f2c, 0x8000455d, 0x80004561, 0x80026fb1, + 0x800270d2, 0x8000456b, 0x80008650, 0x8000865c, + 0x80008667, 0x80008669, 0x800086a9, 0x80008688, + 0x8000870e, 0x800086e2, 0x80008779, 0x80008728, + 0x8000876b, 0x80008786, 0x80004d57, 0x800087e1, + 0x80008801, 0x800045f9, 0x80008860, 0x80008863, + 0x80027667, 0x800088d7, 0x800088de, 0x80004635, + 0x800088fa, 0x800034bb, 0x800278ae, 0x80027966, + 0x800046be, 0x800046c7, 0x80008aa0, 0x80008aed, + 0x80008b8a, 0x80008c55, 0x80027ca8, 0x80008cab, + 0x80008cc1, 0x80008d1b, 0x80008d77, 0x80027f2f, + 0x80020804, 0x80008dcb, 0x80008dbc, 0x80008df0, + 0x800208de, 0x80008ed4, 0x80008f38, 0x800285d2, + 0x800285ed, 0x80009094, 0x800090f1, 0x80009111, + 0x8002872e, 0x8000911b, 0x80009238, 0x800092d7, + 0x800092d8, 0x8000927c, 0x800093f9, 0x80009415, + 0x80028bfa, 0x8000958b, 0x80004995, 0x800095b7, + 0x80028d77, 0x800049e6, 0x800096c3, 0x80005db2, + 0x80009723, 0x80029145, 0x8002921a, 0x80004a6e, + 0x80004a76, 0x800097e0, 0x8002940a, 0x80004ab2, + 0x80029496, 0x8000980b, 0x8000980b, 0x80009829, + 0x800295b6, 0x800098e2, 0x80004b33, 0x80009929, + 0x800099a7, 0x800099c2, 0x800099fe, 0x80004bce, + 0x80029b30, 0x80009b12, 0x80009c40, 0x80009cfd, + 0x80004cce, 0x80004ced, 0x80009d67, 0x8002a0ce, + 0x80004cf8, 0x8002a105, 0x8002a20e, 0x8002a291, + 0x80009ebb, 0x80004d56, 0x80009ef9, 0x80009efe, + 0x80009f05, 0x80009f0f, 0x80009f16, 0x80009f3b, + 0x8002a600, +}; + + +/* + * Lowercase <-> Uppercase mapping + */ + +/* + * Flags for special case mapping. + */ +#define CMF_FINAL 1 +#define CMF_NONFINAL 2 +#define CMF_LAST 16 +#define CMF_CTXDEP (CMF_FINAL|CMF_NONFINAL) + +#define CASEMAP_BITS_0 9 +#define CASEMAP_BITS_1 7 +#define CASEMAP_BITS_2 5 + +static const unsigned short v310_toupper_imap[] = { + 272, 400, 528, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 784, + 912, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 0, 0, 0, 1, 0, 2, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 0, 0, 0, + 0, 0, 18, 0, 19, 20, 21, 22, + 0, 23, 24, 25, 26, 27, 28, 29, + 0, 0, 0, 30, 31, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 48, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 49, 50, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 51, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 52, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 53, 54, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, +}; + +static const struct { + unsigned short tbl[32]; +} v310_toupper_table[] = { + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 1, 3, 5, 7, 9, 11, 13, 15, 17, 19, + 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, + 43, 45, 47, 49, 51, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, + }}, + {{ + 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, + 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, + 102, 0, 104, 106, 108, 110, 112, 114, 116, 118, + }}, + {{ + 0, 120, 0, 122, 0, 124, 0, 126, 0, 128, 0, + 130, 0, 132, 0, 134, 0, 136, 0, 138, 0, 140, + 0, 142, 0, 144, 0, 146, 0, 148, 0, 150, + }}, + {{ + 0, 152, 0, 154, 0, 156, 0, 158, 0, 160, 0, + 162, 0, 164, 0, 166, 0, 168, 0, 170, 0, 172, + 0, 174, 0, 0, 176, 0, 178, 0, 180, 0, + }}, + {{ + 182, 0, 184, 0, 186, 0, 188, 0, 190, 192, 0, + 195, 0, 197, 0, 199, 0, 201, 0, 203, 0, 205, + 0, 207, 0, 209, 0, 211, 0, 213, 0, 215, + }}, + {{ + 0, 217, 0, 219, 0, 221, 0, 223, 0, 225, 0, + 227, 0, 229, 0, 231, 0, 233, 0, 235, 0, 237, + 0, 239, 0, 0, 241, 0, 243, 0, 245, 247, + }}, + {{ + 0, 0, 0, 249, 0, 251, 0, 0, 253, 0, 0, + 0, 255, 0, 0, 0, 0, 0, 257, 0, 0, 259, + 0, 0, 0, 261, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 263, 0, 265, 0, 267, 0, 0, 269, 0, 0, + 0, 0, 271, 0, 0, 273, 0, 0, 0, 275, 0, + 277, 0, 0, 279, 0, 0, 0, 281, 0, 283, + }}, + {{ + 0, 0, 0, 0, 0, 285, 287, 0, 289, 291, 0, + 293, 295, 0, 297, 0, 299, 0, 301, 0, 303, 0, + 305, 0, 307, 0, 309, 0, 311, 313, 0, 315, + }}, + {{ + 0, 317, 0, 319, 0, 321, 0, 323, 0, 325, 0, + 327, 0, 329, 0, 331, 333, 0, 336, 338, 0, 340, + 0, 0, 0, 342, 0, 344, 0, 346, 0, 348, + }}, + {{ + 0, 350, 0, 352, 0, 354, 0, 356, 0, 358, 0, + 360, 0, 362, 0, 364, 0, 366, 0, 368, 0, 370, + 0, 372, 0, 374, 0, 376, 0, 378, 0, 380, + }}, + {{ + 0, 0, 0, 382, 0, 384, 0, 386, 0, 388, 0, + 390, 0, 392, 0, 394, 0, 396, 0, 398, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 400, 402, 0, + 404, 406, 0, 408, 0, 410, 0, 0, 0, 0, + }}, + {{ + 412, 0, 0, 414, 0, 0, 0, 0, 416, 418, 0, + 0, 0, 0, 0, 420, 0, 0, 422, 0, 0, 424, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 426, 0, 0, 428, 0, 0, 0, 0, 430, 0, 432, + 434, 0, 0, 0, 0, 0, 0, 436, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 438, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 440, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 444, 446, 448, 450, 452, 456, 458, 460, 462, 464, + 466, 468, 470, 472, 474, 476, 478, 480, 482, 484, + }}, + {{ + 486, 488, 490, 492, 494, 496, 498, 500, 502, 504, 506, + 508, 510, 512, 514, 0, 516, 518, 0, 0, 0, 520, + 522, 0, 0, 0, 0, 524, 0, 526, 0, 528, + }}, + {{ + 0, 530, 0, 532, 0, 534, 0, 536, 0, 538, 0, + 540, 0, 542, 0, 544, 546, 548, 550, 0, 0, 552, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 554, 556, 558, 560, 562, 564, + 566, 568, 570, 572, 574, 576, 578, 580, 582, 584, + }}, + {{ + 586, 588, 590, 592, 594, 596, 598, 600, 602, 604, 606, + 608, 610, 612, 614, 616, 618, 620, 622, 624, 626, 628, + 630, 632, 634, 636, 638, 640, 642, 644, 646, 648, + }}, + {{ + 0, 650, 0, 652, 0, 654, 0, 656, 0, 658, 0, + 660, 0, 662, 0, 664, 0, 666, 0, 668, 0, 670, + 0, 672, 0, 674, 0, 676, 0, 678, 0, 680, + }}, + {{ + 0, 682, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 684, 0, 686, 0, 688, 0, 690, 0, 692, + 0, 694, 0, 696, 0, 698, 0, 700, 0, 702, + }}, + {{ + 0, 704, 0, 706, 0, 708, 0, 710, 0, 712, 0, + 714, 0, 716, 0, 718, 0, 720, 0, 722, 0, 724, + 0, 726, 0, 728, 0, 730, 0, 732, 0, 734, + }}, + {{ + 0, 0, 736, 0, 738, 0, 0, 0, 740, 0, 0, + 0, 742, 0, 0, 0, 0, 744, 0, 746, 0, 748, + 0, 750, 0, 752, 0, 754, 0, 756, 0, 758, + }}, + {{ + 0, 760, 0, 762, 0, 764, 0, 766, 0, 768, 0, + 770, 0, 772, 0, 774, 0, 776, 0, 778, 0, 780, + 0, 0, 0, 782, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 784, 786, 788, 790, 792, 794, 796, 798, 800, 802, + 804, 806, 808, 810, 812, 814, 816, 818, 820, 822, 824, + 826, 828, 830, 832, 834, 836, 838, 840, 842, 844, + }}, + {{ + 846, 848, 850, 852, 854, 856, 858, 860, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 863, 0, 865, 0, 867, 0, 869, 0, 871, 0, + 873, 0, 875, 0, 877, 0, 879, 0, 881, 0, 883, + 0, 885, 0, 887, 0, 889, 0, 891, 0, 893, + }}, + {{ + 0, 895, 0, 897, 0, 899, 0, 901, 0, 903, 0, + 905, 0, 907, 0, 909, 0, 911, 0, 913, 0, 915, + 0, 917, 0, 919, 0, 921, 0, 923, 0, 925, + }}, + {{ + 0, 927, 0, 929, 0, 931, 0, 933, 0, 935, 0, + 937, 0, 939, 0, 941, 0, 943, 0, 945, 0, 947, + 0, 949, 0, 951, 0, 953, 0, 955, 0, 957, + }}, + {{ + 0, 959, 0, 961, 0, 963, 0, 965, 0, 967, 0, + 969, 0, 971, 0, 973, 0, 975, 0, 977, 0, 979, + 0, 981, 0, 983, 0, 985, 0, 987, 0, 989, + }}, + {{ + 0, 991, 0, 993, 0, 995, 0, 997, 0, 999, 0, + 1001, 0, 1003, 0, 1005, 0, 1007, 0, 1009, 0, 1011, + 1013, 1016, 1019, 1022, 1025, 1028, 0, 0, 0, 0, + }}, + {{ + 0, 1030, 0, 1032, 0, 1034, 0, 1036, 0, 1038, 0, + 1040, 0, 1042, 0, 1044, 0, 1046, 0, 1048, 0, 1050, + 0, 1052, 0, 1054, 0, 1056, 0, 1058, 0, 1060, + }}, + {{ + 0, 1062, 0, 1064, 0, 1066, 0, 1068, 0, 1070, 0, + 1072, 0, 1074, 0, 1076, 0, 1078, 0, 1080, 0, 1082, + 0, 1084, 0, 1086, 0, 1088, 0, 1090, 0, 1092, + }}, + {{ + 0, 1094, 0, 1096, 0, 1098, 0, 1100, 0, 1102, 0, + 1104, 0, 1106, 0, 1108, 0, 1110, 0, 1112, 0, 1114, + 0, 1116, 0, 1118, 0, 0, 0, 0, 0, 0, + }}, + {{ + 1120, 1122, 1124, 1126, 1128, 1130, 1132, 1134, 0, 0, 0, + 0, 0, 0, 0, 0, 1136, 1138, 1140, 1142, 1144, 1146, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 1148, 1150, 1152, 1154, 1156, 1158, 1160, 1162, 0, 0, 0, + 0, 0, 0, 0, 0, 1164, 1166, 1168, 1170, 1172, 1174, + 1176, 1178, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 1180, 1182, 1184, 1186, 1188, 1190, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1192, 1195, 1197, 1201, 1203, 1207, + 1209, 1213, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 1215, 1217, 1219, 1221, 1223, 1225, 1227, 1229, 0, 0, 0, + 0, 0, 0, 0, 0, 1231, 1233, 1235, 1237, 1239, 1241, + 1243, 1245, 1247, 1249, 1251, 1253, 1255, 1257, 0, 0, + }}, + {{ + 1259, 1264, 1269, 1274, 1279, 1284, 1289, 1294, 1299, 1302, 1305, + 1308, 1311, 1314, 1317, 1320, 1323, 1328, 1333, 1338, 1343, 1348, + 1353, 1358, 1363, 1366, 1369, 1372, 1375, 1378, 1381, 1384, + }}, + {{ + 1387, 1392, 1397, 1402, 1407, 1412, 1417, 1422, 1427, 1430, 1433, + 1436, 1439, 1442, 1445, 1448, 1451, 1453, 1455, 1458, 1463, 0, + 1466, 1469, 0, 0, 0, 0, 1473, 0, 1476, 0, + }}, + {{ + 0, 0, 1478, 1481, 1486, 0, 1489, 1492, 0, 0, 0, + 0, 1496, 0, 0, 0, 1499, 1501, 1503, 1507, 0, 0, + 1511, 1514, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 1518, 1520, 1522, 1526, 1530, 1533, 1535, 1538, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1542, 1545, 1550, 0, + 1553, 1556, 0, 0, 0, 0, 1560, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1563, 1565, 1567, 1569, 1571, 1573, + 1575, 1577, 1579, 1581, 1583, 1585, 1587, 1589, 1591, 1593, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1595, 1597, 1599, 1601, 1603, 1605, + 1607, 1609, 1611, 1613, 1615, 1617, 1619, 1621, 1623, 1625, + }}, + {{ + 1627, 1629, 1631, 1633, 1635, 1637, 1639, 1641, 1643, 1645, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 1647, 1650, 1653, 1656, 1660, 1664, 1667, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1670, 1673, 1676, + 1679, 1682, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 1685, 1687, 1689, 1691, 1693, 1695, 1697, 1699, 1701, 1703, + 1705, 1707, 1709, 1711, 1713, 1715, 1717, 1719, 1721, 1723, 1725, + 1727, 1729, 1731, 1733, 1735, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 1737, 1739, 1741, + 1743, 1745, 1747, 1749, 1751, 1753, 1755, 1757, 1759, 1761, 1763, + 1765, 1767, 1769, 1771, 1773, 1775, 1777, 1779, 1781, 1783, + }}, + {{ + 1785, 1787, 1789, 1791, 1793, 1795, 1797, 1799, 1801, 1803, 1805, + 1807, 1809, 1811, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, +}; +static const unsigned short v310_tolower_imap[] = { + 272, 400, 528, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 784, + 912, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 0, 0, 1, 0, 0, 0, 2, 0, + 3, 4, 5, 6, 7, 8, 9, 10, + 11, 12, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 13, 14, 15, 16, + 17, 18, 0, 19, 20, 21, 22, 23, + 0, 24, 25, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 26, 27, 28, 29, 30, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 40, 41, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 42, 0, 43, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 44, 45, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 46, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 47, 48, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, +}; + +static const struct { + unsigned short tbl[32]; +} v310_tolower_table[] = { + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 1, 3, 5, 7, 9, 11, 13, 15, 17, 19, + 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, + 43, 45, 47, 49, 51, 0, 0, 0, 0, 0, + }}, + {{ + 53, 55, 57, 59, 61, 63, 65, 67, 69, 71, 73, + 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95, + 97, 0, 99, 101, 103, 105, 107, 109, 111, 0, + }}, + {{ + 113, 0, 115, 0, 117, 0, 119, 0, 121, 0, 123, + 0, 125, 0, 127, 0, 129, 0, 131, 0, 133, 0, + 135, 0, 137, 0, 139, 0, 141, 0, 143, 0, + }}, + {{ + 145, 0, 147, 0, 149, 0, 151, 0, 153, 0, 155, + 0, 157, 0, 159, 0, 161, 0, 163, 0, 165, 0, + 167, 0, 0, 169, 0, 171, 0, 173, 0, 175, + }}, + {{ + 0, 177, 0, 179, 0, 181, 0, 183, 0, 0, 185, + 0, 187, 0, 189, 0, 191, 0, 193, 0, 195, 0, + 197, 0, 199, 0, 201, 0, 203, 0, 205, 0, + }}, + {{ + 207, 0, 209, 0, 211, 0, 213, 0, 215, 0, 217, + 0, 219, 0, 221, 0, 223, 0, 225, 0, 227, 0, + 229, 0, 231, 233, 0, 235, 0, 237, 0, 0, + }}, + {{ + 0, 239, 241, 0, 243, 0, 245, 247, 0, 249, 251, + 253, 0, 0, 255, 257, 259, 261, 0, 263, 265, 0, + 267, 269, 271, 0, 0, 0, 273, 275, 0, 277, + }}, + {{ + 279, 0, 281, 0, 283, 0, 285, 287, 0, 289, 0, + 0, 291, 0, 293, 295, 0, 297, 299, 301, 0, 303, + 0, 305, 307, 0, 0, 0, 309, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 311, 313, 0, 315, 317, 0, 319, + 321, 0, 323, 0, 325, 0, 327, 0, 329, 0, 331, + 0, 333, 0, 335, 0, 337, 0, 0, 339, 0, + }}, + {{ + 341, 0, 343, 0, 345, 0, 347, 0, 349, 0, 351, + 0, 353, 0, 355, 0, 0, 357, 359, 0, 361, 0, + 363, 365, 367, 0, 369, 0, 371, 0, 373, 0, + }}, + {{ + 375, 0, 377, 0, 379, 0, 381, 0, 383, 0, 385, + 0, 387, 0, 389, 0, 391, 0, 393, 0, 395, 0, + 397, 0, 399, 0, 401, 0, 403, 0, 405, 0, + }}, + {{ + 0, 0, 407, 0, 409, 0, 411, 0, 413, 0, 415, + 0, 417, 0, 419, 0, 421, 0, 423, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 425, 0, 427, 429, 431, + 0, 433, 0, 435, 437, 0, 439, 441, 443, 445, 447, + 449, 451, 453, 455, 457, 459, 461, 463, 465, 467, + }}, + {{ + 469, 471, 0, 473, 477, 479, 481, 483, 485, 487, 489, + 491, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 493, 0, 495, 0, 497, 0, + }}, + {{ + 499, 0, 501, 0, 503, 0, 505, 0, 507, 0, 509, + 0, 511, 0, 513, 0, 0, 0, 0, 0, 515, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 517, 519, 521, 523, 525, 527, 529, 531, 533, 535, 537, + 539, 541, 543, 545, 547, 549, 551, 553, 555, 557, 559, + 561, 563, 565, 567, 569, 571, 573, 575, 577, 579, + }}, + {{ + 581, 583, 585, 587, 589, 591, 593, 595, 597, 599, 601, + 603, 605, 607, 609, 611, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 613, 0, 615, 0, 617, 0, 619, 0, 621, 0, 623, + 0, 625, 0, 627, 0, 629, 0, 631, 0, 633, 0, + 635, 0, 637, 0, 639, 0, 641, 0, 643, 0, + }}, + {{ + 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 647, 0, 649, 0, 651, 0, 653, 0, 655, 0, + 657, 0, 659, 0, 661, 0, 663, 0, 665, 0, + }}, + {{ + 667, 0, 669, 0, 671, 0, 673, 0, 675, 0, 677, + 0, 679, 0, 681, 0, 683, 0, 685, 0, 687, 0, + 689, 0, 691, 0, 693, 0, 695, 0, 697, 0, + }}, + {{ + 0, 699, 0, 701, 0, 0, 0, 703, 0, 0, 0, + 705, 0, 0, 0, 0, 707, 0, 709, 0, 711, 0, + 713, 0, 715, 0, 717, 0, 719, 0, 721, 0, + }}, + {{ + 723, 0, 725, 0, 727, 0, 729, 0, 731, 0, 733, + 0, 735, 0, 737, 0, 739, 0, 741, 0, 743, 0, + 0, 0, 745, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 747, 749, 751, 753, 755, + 757, 759, 761, 763, 765, 767, 769, 771, 773, 775, + }}, + {{ + 777, 779, 781, 783, 785, 787, 789, 791, 793, 795, 797, + 799, 801, 803, 805, 807, 809, 811, 813, 815, 817, 819, + 821, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 823, 0, 825, 0, 827, 0, 829, 0, 831, 0, 833, + 0, 835, 0, 837, 0, 839, 0, 841, 0, 843, 0, + 845, 0, 847, 0, 849, 0, 851, 0, 853, 0, + }}, + {{ + 855, 0, 857, 0, 859, 0, 861, 0, 863, 0, 865, + 0, 867, 0, 869, 0, 871, 0, 873, 0, 875, 0, + 877, 0, 879, 0, 881, 0, 883, 0, 885, 0, + }}, + {{ + 887, 0, 889, 0, 891, 0, 893, 0, 895, 0, 897, + 0, 899, 0, 901, 0, 903, 0, 905, 0, 907, 0, + 909, 0, 911, 0, 913, 0, 915, 0, 917, 0, + }}, + {{ + 919, 0, 921, 0, 923, 0, 925, 0, 927, 0, 929, + 0, 931, 0, 933, 0, 935, 0, 937, 0, 939, 0, + 941, 0, 943, 0, 945, 0, 947, 0, 949, 0, + }}, + {{ + 951, 0, 953, 0, 955, 0, 957, 0, 959, 0, 961, + 0, 963, 0, 965, 0, 967, 0, 969, 0, 971, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 973, 0, 975, 0, 977, 0, 979, 0, 981, 0, 983, + 0, 985, 0, 987, 0, 989, 0, 991, 0, 993, 0, + 995, 0, 997, 0, 999, 0, 1001, 0, 1003, 0, + }}, + {{ + 1005, 0, 1007, 0, 1009, 0, 1011, 0, 1013, 0, 1015, + 0, 1017, 0, 1019, 0, 1021, 0, 1023, 0, 1025, 0, + 1027, 0, 1029, 0, 1031, 0, 1033, 0, 1035, 0, + }}, + {{ + 1037, 0, 1039, 0, 1041, 0, 1043, 0, 1045, 0, 1047, + 0, 1049, 0, 1051, 0, 1053, 0, 1055, 0, 1057, 0, + 1059, 0, 1061, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 1063, 1065, 1067, + 1069, 1071, 1073, 1075, 1077, 0, 0, 0, 0, 0, 0, + 0, 0, 1079, 1081, 1083, 1085, 1087, 1089, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 1091, 1093, 1095, + 1097, 1099, 1101, 1103, 1105, 0, 0, 0, 0, 0, 0, + 0, 0, 1107, 1109, 1111, 1113, 1115, 1117, 1119, 1121, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 1123, 1125, 1127, + 1129, 1131, 1133, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1135, 0, 1137, 0, 1139, 0, 1141, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 1143, 1145, 1147, + 1149, 1151, 1153, 1155, 1157, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 1159, 1163, 1167, + 1171, 1175, 1179, 1183, 1187, 0, 0, 0, 0, 0, 0, + 0, 0, 1191, 1195, 1199, 1203, 1207, 1211, 1215, 1219, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 1223, 1227, 1231, + 1235, 1239, 1243, 1247, 1251, 0, 0, 0, 0, 0, 0, + 0, 0, 1255, 1257, 1259, 1261, 1263, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 1267, 1269, 1271, + 1273, 1275, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1279, 1281, 1283, 1285, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 1287, 1289, 1291, + 1293, 1295, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1297, 1299, 1301, 1303, 1305, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 1309, 0, 0, 0, 1311, + 1313, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 1315, 1317, 1319, 1321, 1323, 1325, 1327, 1329, 1331, 1333, 1335, + 1337, 1339, 1341, 1343, 1345, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1347, 1349, 1351, 1353, 1355, 1357, 1359, 1361, 1363, 1365, + }}, + {{ + 1367, 1369, 1371, 1373, 1375, 1377, 1379, 1381, 1383, 1385, 1387, + 1389, 1391, 1393, 1395, 1397, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 1399, 1401, 1403, 1405, 1407, 1409, 1411, 1413, 1415, 1417, + 1419, 1421, 1423, 1425, 1427, 1429, 1431, 1433, 1435, 1437, 1439, + 1441, 1443, 1445, 1447, 1449, 0, 0, 0, 0, 0, + }}, + {{ + 1451, 1453, 1455, 1457, 1459, 1461, 1463, 1465, 1467, 1469, 1471, + 1473, 1475, 1477, 1479, 1481, 1483, 1485, 1487, 1489, 1491, 1493, + 1495, 1497, 1499, 1501, 1503, 1505, 1507, 1509, 1511, 1513, + }}, + {{ + 1515, 1517, 1519, 1521, 1523, 1525, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, +}; +static const unsigned long v310_toupper_seq[] = { + 0x00000000, 0x00000010, 0x80000041, 0x00000010, + 0x80000042, 0x00000010, 0x80000043, 0x00000010, + 0x80000044, 0x00000010, 0x80000045, 0x00000010, + 0x80000046, 0x00000010, 0x80000047, 0x00000010, + 0x80000048, 0x00000010, 0x80000049, 0x00000010, + 0x8000004a, 0x00000010, 0x8000004b, 0x00000010, + 0x8000004c, 0x00000010, 0x8000004d, 0x00000010, + 0x8000004e, 0x00000010, 0x8000004f, 0x00000010, + 0x80000050, 0x00000010, 0x80000051, 0x00000010, + 0x80000052, 0x00000010, 0x80000053, 0x00000010, + 0x80000054, 0x00000010, 0x80000055, 0x00000010, + 0x80000056, 0x00000010, 0x80000057, 0x00000010, + 0x80000058, 0x00000010, 0x80000059, 0x00000010, + 0x8000005a, 0x00000010, 0x8000039c, 0x00000010, + 0x00000053, 0x80000053, 0x00000010, 0x800000c0, + 0x00000010, 0x800000c1, 0x00000010, 0x800000c2, + 0x00000010, 0x800000c3, 0x00000010, 0x800000c4, + 0x00000010, 0x800000c5, 0x00000010, 0x800000c6, + 0x00000010, 0x800000c7, 0x00000010, 0x800000c8, + 0x00000010, 0x800000c9, 0x00000010, 0x800000ca, + 0x00000010, 0x800000cb, 0x00000010, 0x800000cc, + 0x00000010, 0x800000cd, 0x00000010, 0x800000ce, + 0x00000010, 0x800000cf, 0x00000010, 0x800000d0, + 0x00000010, 0x800000d1, 0x00000010, 0x800000d2, + 0x00000010, 0x800000d3, 0x00000010, 0x800000d4, + 0x00000010, 0x800000d5, 0x00000010, 0x800000d6, + 0x00000010, 0x800000d8, 0x00000010, 0x800000d9, + 0x00000010, 0x800000da, 0x00000010, 0x800000db, + 0x00000010, 0x800000dc, 0x00000010, 0x800000dd, + 0x00000010, 0x800000de, 0x00000010, 0x80000178, + 0x00000010, 0x80000100, 0x00000010, 0x80000102, + 0x00000010, 0x80000104, 0x00000010, 0x80000106, + 0x00000010, 0x80000108, 0x00000010, 0x8000010a, + 0x00000010, 0x8000010c, 0x00000010, 0x8000010e, + 0x00000010, 0x80000110, 0x00000010, 0x80000112, + 0x00000010, 0x80000114, 0x00000010, 0x80000116, + 0x00000010, 0x80000118, 0x00000010, 0x8000011a, + 0x00000010, 0x8000011c, 0x00000010, 0x8000011e, + 0x00000010, 0x80000120, 0x00000010, 0x80000122, + 0x00000010, 0x80000124, 0x00000010, 0x80000126, + 0x00000010, 0x80000128, 0x00000010, 0x8000012a, + 0x00000010, 0x8000012c, 0x00000010, 0x8000012e, + 0x00000010, 0x80000049, 0x00000010, 0x80000132, + 0x00000010, 0x80000134, 0x00000010, 0x80000136, + 0x00000010, 0x80000139, 0x00000010, 0x8000013b, + 0x00000010, 0x8000013d, 0x00000010, 0x8000013f, + 0x00000010, 0x80000141, 0x00000010, 0x80000143, + 0x00000010, 0x80000145, 0x00000010, 0x80000147, + 0x00000010, 0x000002bc, 0x8000004e, 0x00000010, + 0x8000014a, 0x00000010, 0x8000014c, 0x00000010, + 0x8000014e, 0x00000010, 0x80000150, 0x00000010, + 0x80000152, 0x00000010, 0x80000154, 0x00000010, + 0x80000156, 0x00000010, 0x80000158, 0x00000010, + 0x8000015a, 0x00000010, 0x8000015c, 0x00000010, + 0x8000015e, 0x00000010, 0x80000160, 0x00000010, + 0x80000162, 0x00000010, 0x80000164, 0x00000010, + 0x80000166, 0x00000010, 0x80000168, 0x00000010, + 0x8000016a, 0x00000010, 0x8000016c, 0x00000010, + 0x8000016e, 0x00000010, 0x80000170, 0x00000010, + 0x80000172, 0x00000010, 0x80000174, 0x00000010, + 0x80000176, 0x00000010, 0x80000179, 0x00000010, + 0x8000017b, 0x00000010, 0x8000017d, 0x00000010, + 0x80000053, 0x00000010, 0x80000182, 0x00000010, + 0x80000184, 0x00000010, 0x80000187, 0x00000010, + 0x8000018b, 0x00000010, 0x80000191, 0x00000010, + 0x800001f6, 0x00000010, 0x80000198, 0x00000010, + 0x800001a0, 0x00000010, 0x800001a2, 0x00000010, + 0x800001a4, 0x00000010, 0x800001a7, 0x00000010, + 0x800001ac, 0x00000010, 0x800001af, 0x00000010, + 0x800001b3, 0x00000010, 0x800001b5, 0x00000010, + 0x800001b8, 0x00000010, 0x800001bc, 0x00000010, + 0x800001f7, 0x00000010, 0x800001c4, 0x00000010, + 0x800001c4, 0x00000010, 0x800001c7, 0x00000010, + 0x800001c7, 0x00000010, 0x800001ca, 0x00000010, + 0x800001ca, 0x00000010, 0x800001cd, 0x00000010, + 0x800001cf, 0x00000010, 0x800001d1, 0x00000010, + 0x800001d3, 0x00000010, 0x800001d5, 0x00000010, + 0x800001d7, 0x00000010, 0x800001d9, 0x00000010, + 0x800001db, 0x00000010, 0x8000018e, 0x00000010, + 0x800001de, 0x00000010, 0x800001e0, 0x00000010, + 0x800001e2, 0x00000010, 0x800001e4, 0x00000010, + 0x800001e6, 0x00000010, 0x800001e8, 0x00000010, + 0x800001ea, 0x00000010, 0x800001ec, 0x00000010, + 0x800001ee, 0x00000010, 0x0000004a, 0x8000030c, + 0x00000010, 0x800001f1, 0x00000010, 0x800001f1, + 0x00000010, 0x800001f4, 0x00000010, 0x800001f8, + 0x00000010, 0x800001fa, 0x00000010, 0x800001fc, + 0x00000010, 0x800001fe, 0x00000010, 0x80000200, + 0x00000010, 0x80000202, 0x00000010, 0x80000204, + 0x00000010, 0x80000206, 0x00000010, 0x80000208, + 0x00000010, 0x8000020a, 0x00000010, 0x8000020c, + 0x00000010, 0x8000020e, 0x00000010, 0x80000210, + 0x00000010, 0x80000212, 0x00000010, 0x80000214, + 0x00000010, 0x80000216, 0x00000010, 0x80000218, + 0x00000010, 0x8000021a, 0x00000010, 0x8000021c, + 0x00000010, 0x8000021e, 0x00000010, 0x80000222, + 0x00000010, 0x80000224, 0x00000010, 0x80000226, + 0x00000010, 0x80000228, 0x00000010, 0x8000022a, + 0x00000010, 0x8000022c, 0x00000010, 0x8000022e, + 0x00000010, 0x80000230, 0x00000010, 0x80000232, + 0x00000010, 0x80000181, 0x00000010, 0x80000186, + 0x00000010, 0x80000189, 0x00000010, 0x8000018a, + 0x00000010, 0x8000018f, 0x00000010, 0x80000190, + 0x00000010, 0x80000193, 0x00000010, 0x80000194, + 0x00000010, 0x80000197, 0x00000010, 0x80000196, + 0x00000010, 0x8000019c, 0x00000010, 0x8000019d, + 0x00000010, 0x8000019f, 0x00000010, 0x800001a6, + 0x00000010, 0x800001a9, 0x00000010, 0x800001ae, + 0x00000010, 0x800001b1, 0x00000010, 0x800001b2, + 0x00000010, 0x800001b7, 0x00000010, 0x80000399, + 0x00000010, 0x00000399, 0x00000308, 0x80000301, + 0x00000010, 0x80000386, 0x00000010, 0x80000388, + 0x00000010, 0x80000389, 0x00000010, 0x8000038a, + 0x00000010, 0x000003a5, 0x00000308, 0x80000301, + 0x00000010, 0x80000391, 0x00000010, 0x80000392, + 0x00000010, 0x80000393, 0x00000010, 0x80000394, + 0x00000010, 0x80000395, 0x00000010, 0x80000396, + 0x00000010, 0x80000397, 0x00000010, 0x80000398, + 0x00000010, 0x80000399, 0x00000010, 0x8000039a, + 0x00000010, 0x8000039b, 0x00000010, 0x8000039c, + 0x00000010, 0x8000039d, 0x00000010, 0x8000039e, + 0x00000010, 0x8000039f, 0x00000010, 0x800003a0, + 0x00000010, 0x800003a1, 0x00000010, 0x800003a3, + 0x00000010, 0x800003a3, 0x00000010, 0x800003a4, + 0x00000010, 0x800003a5, 0x00000010, 0x800003a6, + 0x00000010, 0x800003a7, 0x00000010, 0x800003a8, + 0x00000010, 0x800003a9, 0x00000010, 0x800003aa, + 0x00000010, 0x800003ab, 0x00000010, 0x8000038c, + 0x00000010, 0x8000038e, 0x00000010, 0x8000038f, + 0x00000010, 0x80000392, 0x00000010, 0x80000398, + 0x00000010, 0x800003a6, 0x00000010, 0x800003a0, + 0x00000010, 0x800003da, 0x00000010, 0x800003dc, + 0x00000010, 0x800003de, 0x00000010, 0x800003e0, + 0x00000010, 0x800003e2, 0x00000010, 0x800003e4, + 0x00000010, 0x800003e6, 0x00000010, 0x800003e8, + 0x00000010, 0x800003ea, 0x00000010, 0x800003ec, + 0x00000010, 0x800003ee, 0x00000010, 0x8000039a, + 0x00000010, 0x800003a1, 0x00000010, 0x800003a3, + 0x00000010, 0x80000395, 0x00000010, 0x80000410, + 0x00000010, 0x80000411, 0x00000010, 0x80000412, + 0x00000010, 0x80000413, 0x00000010, 0x80000414, + 0x00000010, 0x80000415, 0x00000010, 0x80000416, + 0x00000010, 0x80000417, 0x00000010, 0x80000418, + 0x00000010, 0x80000419, 0x00000010, 0x8000041a, + 0x00000010, 0x8000041b, 0x00000010, 0x8000041c, + 0x00000010, 0x8000041d, 0x00000010, 0x8000041e, + 0x00000010, 0x8000041f, 0x00000010, 0x80000420, + 0x00000010, 0x80000421, 0x00000010, 0x80000422, + 0x00000010, 0x80000423, 0x00000010, 0x80000424, + 0x00000010, 0x80000425, 0x00000010, 0x80000426, + 0x00000010, 0x80000427, 0x00000010, 0x80000428, + 0x00000010, 0x80000429, 0x00000010, 0x8000042a, + 0x00000010, 0x8000042b, 0x00000010, 0x8000042c, + 0x00000010, 0x8000042d, 0x00000010, 0x8000042e, + 0x00000010, 0x8000042f, 0x00000010, 0x80000400, + 0x00000010, 0x80000401, 0x00000010, 0x80000402, + 0x00000010, 0x80000403, 0x00000010, 0x80000404, + 0x00000010, 0x80000405, 0x00000010, 0x80000406, + 0x00000010, 0x80000407, 0x00000010, 0x80000408, + 0x00000010, 0x80000409, 0x00000010, 0x8000040a, + 0x00000010, 0x8000040b, 0x00000010, 0x8000040c, + 0x00000010, 0x8000040d, 0x00000010, 0x8000040e, + 0x00000010, 0x8000040f, 0x00000010, 0x80000460, + 0x00000010, 0x80000462, 0x00000010, 0x80000464, + 0x00000010, 0x80000466, 0x00000010, 0x80000468, + 0x00000010, 0x8000046a, 0x00000010, 0x8000046c, + 0x00000010, 0x8000046e, 0x00000010, 0x80000470, + 0x00000010, 0x80000472, 0x00000010, 0x80000474, + 0x00000010, 0x80000476, 0x00000010, 0x80000478, + 0x00000010, 0x8000047a, 0x00000010, 0x8000047c, + 0x00000010, 0x8000047e, 0x00000010, 0x80000480, + 0x00000010, 0x8000048c, 0x00000010, 0x8000048e, + 0x00000010, 0x80000490, 0x00000010, 0x80000492, + 0x00000010, 0x80000494, 0x00000010, 0x80000496, + 0x00000010, 0x80000498, 0x00000010, 0x8000049a, + 0x00000010, 0x8000049c, 0x00000010, 0x8000049e, + 0x00000010, 0x800004a0, 0x00000010, 0x800004a2, + 0x00000010, 0x800004a4, 0x00000010, 0x800004a6, + 0x00000010, 0x800004a8, 0x00000010, 0x800004aa, + 0x00000010, 0x800004ac, 0x00000010, 0x800004ae, + 0x00000010, 0x800004b0, 0x00000010, 0x800004b2, + 0x00000010, 0x800004b4, 0x00000010, 0x800004b6, + 0x00000010, 0x800004b8, 0x00000010, 0x800004ba, + 0x00000010, 0x800004bc, 0x00000010, 0x800004be, + 0x00000010, 0x800004c1, 0x00000010, 0x800004c3, + 0x00000010, 0x800004c7, 0x00000010, 0x800004cb, + 0x00000010, 0x800004d0, 0x00000010, 0x800004d2, + 0x00000010, 0x800004d4, 0x00000010, 0x800004d6, + 0x00000010, 0x800004d8, 0x00000010, 0x800004da, + 0x00000010, 0x800004dc, 0x00000010, 0x800004de, + 0x00000010, 0x800004e0, 0x00000010, 0x800004e2, + 0x00000010, 0x800004e4, 0x00000010, 0x800004e6, + 0x00000010, 0x800004e8, 0x00000010, 0x800004ea, + 0x00000010, 0x800004ec, 0x00000010, 0x800004ee, + 0x00000010, 0x800004f0, 0x00000010, 0x800004f2, + 0x00000010, 0x800004f4, 0x00000010, 0x800004f8, + 0x00000010, 0x80000531, 0x00000010, 0x80000532, + 0x00000010, 0x80000533, 0x00000010, 0x80000534, + 0x00000010, 0x80000535, 0x00000010, 0x80000536, + 0x00000010, 0x80000537, 0x00000010, 0x80000538, + 0x00000010, 0x80000539, 0x00000010, 0x8000053a, + 0x00000010, 0x8000053b, 0x00000010, 0x8000053c, + 0x00000010, 0x8000053d, 0x00000010, 0x8000053e, + 0x00000010, 0x8000053f, 0x00000010, 0x80000540, + 0x00000010, 0x80000541, 0x00000010, 0x80000542, + 0x00000010, 0x80000543, 0x00000010, 0x80000544, + 0x00000010, 0x80000545, 0x00000010, 0x80000546, + 0x00000010, 0x80000547, 0x00000010, 0x80000548, + 0x00000010, 0x80000549, 0x00000010, 0x8000054a, + 0x00000010, 0x8000054b, 0x00000010, 0x8000054c, + 0x00000010, 0x8000054d, 0x00000010, 0x8000054e, + 0x00000010, 0x8000054f, 0x00000010, 0x80000550, + 0x00000010, 0x80000551, 0x00000010, 0x80000552, + 0x00000010, 0x80000553, 0x00000010, 0x80000554, + 0x00000010, 0x80000555, 0x00000010, 0x80000556, + 0x00000010, 0x00000535, 0x80000552, 0x00000010, + 0x80001e00, 0x00000010, 0x80001e02, 0x00000010, + 0x80001e04, 0x00000010, 0x80001e06, 0x00000010, + 0x80001e08, 0x00000010, 0x80001e0a, 0x00000010, + 0x80001e0c, 0x00000010, 0x80001e0e, 0x00000010, + 0x80001e10, 0x00000010, 0x80001e12, 0x00000010, + 0x80001e14, 0x00000010, 0x80001e16, 0x00000010, + 0x80001e18, 0x00000010, 0x80001e1a, 0x00000010, + 0x80001e1c, 0x00000010, 0x80001e1e, 0x00000010, + 0x80001e20, 0x00000010, 0x80001e22, 0x00000010, + 0x80001e24, 0x00000010, 0x80001e26, 0x00000010, + 0x80001e28, 0x00000010, 0x80001e2a, 0x00000010, + 0x80001e2c, 0x00000010, 0x80001e2e, 0x00000010, + 0x80001e30, 0x00000010, 0x80001e32, 0x00000010, + 0x80001e34, 0x00000010, 0x80001e36, 0x00000010, + 0x80001e38, 0x00000010, 0x80001e3a, 0x00000010, + 0x80001e3c, 0x00000010, 0x80001e3e, 0x00000010, + 0x80001e40, 0x00000010, 0x80001e42, 0x00000010, + 0x80001e44, 0x00000010, 0x80001e46, 0x00000010, + 0x80001e48, 0x00000010, 0x80001e4a, 0x00000010, + 0x80001e4c, 0x00000010, 0x80001e4e, 0x00000010, + 0x80001e50, 0x00000010, 0x80001e52, 0x00000010, + 0x80001e54, 0x00000010, 0x80001e56, 0x00000010, + 0x80001e58, 0x00000010, 0x80001e5a, 0x00000010, + 0x80001e5c, 0x00000010, 0x80001e5e, 0x00000010, + 0x80001e60, 0x00000010, 0x80001e62, 0x00000010, + 0x80001e64, 0x00000010, 0x80001e66, 0x00000010, + 0x80001e68, 0x00000010, 0x80001e6a, 0x00000010, + 0x80001e6c, 0x00000010, 0x80001e6e, 0x00000010, + 0x80001e70, 0x00000010, 0x80001e72, 0x00000010, + 0x80001e74, 0x00000010, 0x80001e76, 0x00000010, + 0x80001e78, 0x00000010, 0x80001e7a, 0x00000010, + 0x80001e7c, 0x00000010, 0x80001e7e, 0x00000010, + 0x80001e80, 0x00000010, 0x80001e82, 0x00000010, + 0x80001e84, 0x00000010, 0x80001e86, 0x00000010, + 0x80001e88, 0x00000010, 0x80001e8a, 0x00000010, + 0x80001e8c, 0x00000010, 0x80001e8e, 0x00000010, + 0x80001e90, 0x00000010, 0x80001e92, 0x00000010, + 0x80001e94, 0x00000010, 0x00000048, 0x80000331, + 0x00000010, 0x00000054, 0x80000308, 0x00000010, + 0x00000057, 0x8000030a, 0x00000010, 0x00000059, + 0x8000030a, 0x00000010, 0x00000041, 0x800002be, + 0x00000010, 0x80001e60, 0x00000010, 0x80001ea0, + 0x00000010, 0x80001ea2, 0x00000010, 0x80001ea4, + 0x00000010, 0x80001ea6, 0x00000010, 0x80001ea8, + 0x00000010, 0x80001eaa, 0x00000010, 0x80001eac, + 0x00000010, 0x80001eae, 0x00000010, 0x80001eb0, + 0x00000010, 0x80001eb2, 0x00000010, 0x80001eb4, + 0x00000010, 0x80001eb6, 0x00000010, 0x80001eb8, + 0x00000010, 0x80001eba, 0x00000010, 0x80001ebc, + 0x00000010, 0x80001ebe, 0x00000010, 0x80001ec0, + 0x00000010, 0x80001ec2, 0x00000010, 0x80001ec4, + 0x00000010, 0x80001ec6, 0x00000010, 0x80001ec8, + 0x00000010, 0x80001eca, 0x00000010, 0x80001ecc, + 0x00000010, 0x80001ece, 0x00000010, 0x80001ed0, + 0x00000010, 0x80001ed2, 0x00000010, 0x80001ed4, + 0x00000010, 0x80001ed6, 0x00000010, 0x80001ed8, + 0x00000010, 0x80001eda, 0x00000010, 0x80001edc, + 0x00000010, 0x80001ede, 0x00000010, 0x80001ee0, + 0x00000010, 0x80001ee2, 0x00000010, 0x80001ee4, + 0x00000010, 0x80001ee6, 0x00000010, 0x80001ee8, + 0x00000010, 0x80001eea, 0x00000010, 0x80001eec, + 0x00000010, 0x80001eee, 0x00000010, 0x80001ef0, + 0x00000010, 0x80001ef2, 0x00000010, 0x80001ef4, + 0x00000010, 0x80001ef6, 0x00000010, 0x80001ef8, + 0x00000010, 0x80001f08, 0x00000010, 0x80001f09, + 0x00000010, 0x80001f0a, 0x00000010, 0x80001f0b, + 0x00000010, 0x80001f0c, 0x00000010, 0x80001f0d, + 0x00000010, 0x80001f0e, 0x00000010, 0x80001f0f, + 0x00000010, 0x80001f18, 0x00000010, 0x80001f19, + 0x00000010, 0x80001f1a, 0x00000010, 0x80001f1b, + 0x00000010, 0x80001f1c, 0x00000010, 0x80001f1d, + 0x00000010, 0x80001f28, 0x00000010, 0x80001f29, + 0x00000010, 0x80001f2a, 0x00000010, 0x80001f2b, + 0x00000010, 0x80001f2c, 0x00000010, 0x80001f2d, + 0x00000010, 0x80001f2e, 0x00000010, 0x80001f2f, + 0x00000010, 0x80001f38, 0x00000010, 0x80001f39, + 0x00000010, 0x80001f3a, 0x00000010, 0x80001f3b, + 0x00000010, 0x80001f3c, 0x00000010, 0x80001f3d, + 0x00000010, 0x80001f3e, 0x00000010, 0x80001f3f, + 0x00000010, 0x80001f48, 0x00000010, 0x80001f49, + 0x00000010, 0x80001f4a, 0x00000010, 0x80001f4b, + 0x00000010, 0x80001f4c, 0x00000010, 0x80001f4d, + 0x00000010, 0x000003a5, 0x80000313, 0x00000010, + 0x80001f59, 0x00000010, 0x000003a5, 0x00000313, + 0x80000300, 0x00000010, 0x80001f5b, 0x00000010, + 0x000003a5, 0x00000313, 0x80000301, 0x00000010, + 0x80001f5d, 0x00000010, 0x000003a5, 0x00000313, + 0x80000342, 0x00000010, 0x80001f5f, 0x00000010, + 0x80001f68, 0x00000010, 0x80001f69, 0x00000010, + 0x80001f6a, 0x00000010, 0x80001f6b, 0x00000010, + 0x80001f6c, 0x00000010, 0x80001f6d, 0x00000010, + 0x80001f6e, 0x00000010, 0x80001f6f, 0x00000010, + 0x80001fba, 0x00000010, 0x80001fbb, 0x00000010, + 0x80001fc8, 0x00000010, 0x80001fc9, 0x00000010, + 0x80001fca, 0x00000010, 0x80001fcb, 0x00000010, + 0x80001fda, 0x00000010, 0x80001fdb, 0x00000010, + 0x80001ff8, 0x00000010, 0x80001ff9, 0x00000010, + 0x80001fea, 0x00000010, 0x80001feb, 0x00000010, + 0x80001ffa, 0x00000010, 0x80001ffb, 0x00000000, + 0x00001f08, 0x80000399, 0x00000010, 0x80001f88, + 0x00000000, 0x00001f09, 0x80000399, 0x00000010, + 0x80001f89, 0x00000000, 0x00001f0a, 0x80000399, + 0x00000010, 0x80001f8a, 0x00000000, 0x00001f0b, + 0x80000399, 0x00000010, 0x80001f8b, 0x00000000, + 0x00001f0c, 0x80000399, 0x00000010, 0x80001f8c, + 0x00000000, 0x00001f0d, 0x80000399, 0x00000010, + 0x80001f8d, 0x00000000, 0x00001f0e, 0x80000399, + 0x00000010, 0x80001f8e, 0x00000000, 0x00001f0f, + 0x80000399, 0x00000010, 0x80001f8f, 0x00000010, + 0x00001f08, 0x80000399, 0x00000010, 0x00001f09, + 0x80000399, 0x00000010, 0x00001f0a, 0x80000399, + 0x00000010, 0x00001f0b, 0x80000399, 0x00000010, + 0x00001f0c, 0x80000399, 0x00000010, 0x00001f0d, + 0x80000399, 0x00000010, 0x00001f0e, 0x80000399, + 0x00000010, 0x00001f0f, 0x80000399, 0x00000000, + 0x00001f28, 0x80000399, 0x00000010, 0x80001f98, + 0x00000000, 0x00001f29, 0x80000399, 0x00000010, + 0x80001f99, 0x00000000, 0x00001f2a, 0x80000399, + 0x00000010, 0x80001f9a, 0x00000000, 0x00001f2b, + 0x80000399, 0x00000010, 0x80001f9b, 0x00000000, + 0x00001f2c, 0x80000399, 0x00000010, 0x80001f9c, + 0x00000000, 0x00001f2d, 0x80000399, 0x00000010, + 0x80001f9d, 0x00000000, 0x00001f2e, 0x80000399, + 0x00000010, 0x80001f9e, 0x00000000, 0x00001f2f, + 0x80000399, 0x00000010, 0x80001f9f, 0x00000010, + 0x00001f28, 0x80000399, 0x00000010, 0x00001f29, + 0x80000399, 0x00000010, 0x00001f2a, 0x80000399, + 0x00000010, 0x00001f2b, 0x80000399, 0x00000010, + 0x00001f2c, 0x80000399, 0x00000010, 0x00001f2d, + 0x80000399, 0x00000010, 0x00001f2e, 0x80000399, + 0x00000010, 0x00001f2f, 0x80000399, 0x00000000, + 0x00001f68, 0x80000399, 0x00000010, 0x80001fa8, + 0x00000000, 0x00001f69, 0x80000399, 0x00000010, + 0x80001fa9, 0x00000000, 0x00001f6a, 0x80000399, + 0x00000010, 0x80001faa, 0x00000000, 0x00001f6b, + 0x80000399, 0x00000010, 0x80001fab, 0x00000000, + 0x00001f6c, 0x80000399, 0x00000010, 0x80001fac, + 0x00000000, 0x00001f6d, 0x80000399, 0x00000010, + 0x80001fad, 0x00000000, 0x00001f6e, 0x80000399, + 0x00000010, 0x80001fae, 0x00000000, 0x00001f6f, + 0x80000399, 0x00000010, 0x80001faf, 0x00000010, + 0x00001f68, 0x80000399, 0x00000010, 0x00001f69, + 0x80000399, 0x00000010, 0x00001f6a, 0x80000399, + 0x00000010, 0x00001f6b, 0x80000399, 0x00000010, + 0x00001f6c, 0x80000399, 0x00000010, 0x00001f6d, + 0x80000399, 0x00000010, 0x00001f6e, 0x80000399, + 0x00000010, 0x00001f6f, 0x80000399, 0x00000010, + 0x80001fb8, 0x00000010, 0x80001fb9, 0x00000010, + 0x00001fba, 0x80000399, 0x00000000, 0x00000391, + 0x80000399, 0x00000010, 0x80001fbc, 0x00000010, + 0x00000386, 0x80000399, 0x00000010, 0x00000391, + 0x80000342, 0x00000010, 0x00000391, 0x00000342, + 0x80000399, 0x00000010, 0x00000391, 0x80000399, + 0x00000010, 0x80000399, 0x00000010, 0x00001fca, + 0x80000399, 0x00000000, 0x00000397, 0x80000399, + 0x00000010, 0x80001fcc, 0x00000010, 0x00000389, + 0x80000399, 0x00000010, 0x00000397, 0x80000342, + 0x00000010, 0x00000397, 0x00000342, 0x80000399, + 0x00000010, 0x00000397, 0x80000399, 0x00000010, + 0x80001fd8, 0x00000010, 0x80001fd9, 0x00000010, + 0x00000399, 0x00000308, 0x80000300, 0x00000010, + 0x00000399, 0x00000308, 0x80000301, 0x00000010, + 0x00000399, 0x80000342, 0x00000010, 0x00000399, + 0x00000308, 0x80000342, 0x00000010, 0x80001fe8, + 0x00000010, 0x80001fe9, 0x00000010, 0x000003a5, + 0x00000308, 0x80000300, 0x00000010, 0x000003a5, + 0x00000308, 0x80000301, 0x00000010, 0x000003a1, + 0x80000313, 0x00000010, 0x80001fec, 0x00000010, + 0x000003a5, 0x80000342, 0x00000010, 0x000003a5, + 0x00000308, 0x80000342, 0x00000010, 0x00001ffa, + 0x80000399, 0x00000000, 0x000003a9, 0x80000399, + 0x00000010, 0x80001ffc, 0x00000010, 0x0000038f, + 0x80000399, 0x00000010, 0x000003a9, 0x80000342, + 0x00000010, 0x000003a9, 0x00000342, 0x80000399, + 0x00000010, 0x000003a9, 0x80000399, 0x00000010, + 0x80002160, 0x00000010, 0x80002161, 0x00000010, + 0x80002162, 0x00000010, 0x80002163, 0x00000010, + 0x80002164, 0x00000010, 0x80002165, 0x00000010, + 0x80002166, 0x00000010, 0x80002167, 0x00000010, + 0x80002168, 0x00000010, 0x80002169, 0x00000010, + 0x8000216a, 0x00000010, 0x8000216b, 0x00000010, + 0x8000216c, 0x00000010, 0x8000216d, 0x00000010, + 0x8000216e, 0x00000010, 0x8000216f, 0x00000010, + 0x800024b6, 0x00000010, 0x800024b7, 0x00000010, + 0x800024b8, 0x00000010, 0x800024b9, 0x00000010, + 0x800024ba, 0x00000010, 0x800024bb, 0x00000010, + 0x800024bc, 0x00000010, 0x800024bd, 0x00000010, + 0x800024be, 0x00000010, 0x800024bf, 0x00000010, + 0x800024c0, 0x00000010, 0x800024c1, 0x00000010, + 0x800024c2, 0x00000010, 0x800024c3, 0x00000010, + 0x800024c4, 0x00000010, 0x800024c5, 0x00000010, + 0x800024c6, 0x00000010, 0x800024c7, 0x00000010, + 0x800024c8, 0x00000010, 0x800024c9, 0x00000010, + 0x800024ca, 0x00000010, 0x800024cb, 0x00000010, + 0x800024cc, 0x00000010, 0x800024cd, 0x00000010, + 0x800024ce, 0x00000010, 0x800024cf, 0x00000010, + 0x00000046, 0x80000046, 0x00000010, 0x00000046, + 0x80000049, 0x00000010, 0x00000046, 0x8000004c, + 0x00000010, 0x00000046, 0x00000046, 0x80000049, + 0x00000010, 0x00000046, 0x00000046, 0x8000004c, + 0x00000010, 0x00000053, 0x80000054, 0x00000010, + 0x00000053, 0x80000054, 0x00000010, 0x00000544, + 0x80000546, 0x00000010, 0x00000544, 0x80000535, + 0x00000010, 0x00000544, 0x8000053b, 0x00000010, + 0x0000054e, 0x80000546, 0x00000010, 0x00000544, + 0x8000053d, 0x00000010, 0x8000ff21, 0x00000010, + 0x8000ff22, 0x00000010, 0x8000ff23, 0x00000010, + 0x8000ff24, 0x00000010, 0x8000ff25, 0x00000010, + 0x8000ff26, 0x00000010, 0x8000ff27, 0x00000010, + 0x8000ff28, 0x00000010, 0x8000ff29, 0x00000010, + 0x8000ff2a, 0x00000010, 0x8000ff2b, 0x00000010, + 0x8000ff2c, 0x00000010, 0x8000ff2d, 0x00000010, + 0x8000ff2e, 0x00000010, 0x8000ff2f, 0x00000010, + 0x8000ff30, 0x00000010, 0x8000ff31, 0x00000010, + 0x8000ff32, 0x00000010, 0x8000ff33, 0x00000010, + 0x8000ff34, 0x00000010, 0x8000ff35, 0x00000010, + 0x8000ff36, 0x00000010, 0x8000ff37, 0x00000010, + 0x8000ff38, 0x00000010, 0x8000ff39, 0x00000010, + 0x8000ff3a, 0x00000010, 0x80010400, 0x00000010, + 0x80010401, 0x00000010, 0x80010402, 0x00000010, + 0x80010403, 0x00000010, 0x80010404, 0x00000010, + 0x80010405, 0x00000010, 0x80010406, 0x00000010, + 0x80010407, 0x00000010, 0x80010408, 0x00000010, + 0x80010409, 0x00000010, 0x8001040a, 0x00000010, + 0x8001040b, 0x00000010, 0x8001040c, 0x00000010, + 0x8001040d, 0x00000010, 0x8001040e, 0x00000010, + 0x8001040f, 0x00000010, 0x80010410, 0x00000010, + 0x80010411, 0x00000010, 0x80010412, 0x00000010, + 0x80010413, 0x00000010, 0x80010414, 0x00000010, + 0x80010415, 0x00000010, 0x80010416, 0x00000010, + 0x80010417, 0x00000010, 0x80010418, 0x00000010, + 0x80010419, 0x00000010, 0x8001041a, 0x00000010, + 0x8001041b, 0x00000010, 0x8001041c, 0x00000010, + 0x8001041d, 0x00000010, 0x8001041e, 0x00000010, + 0x8001041f, 0x00000010, 0x80010420, 0x00000010, + 0x80010421, 0x00000010, 0x80010422, 0x00000010, + 0x80010423, 0x00000010, 0x80010424, 0x00000010, + 0x80010425, +}; + +static const unsigned long v310_tolower_seq[] = { + 0x00000000, 0x00000010, 0x80000061, 0x00000010, + 0x80000062, 0x00000010, 0x80000063, 0x00000010, + 0x80000064, 0x00000010, 0x80000065, 0x00000010, + 0x80000066, 0x00000010, 0x80000067, 0x00000010, + 0x80000068, 0x00000010, 0x80000069, 0x00000010, + 0x8000006a, 0x00000010, 0x8000006b, 0x00000010, + 0x8000006c, 0x00000010, 0x8000006d, 0x00000010, + 0x8000006e, 0x00000010, 0x8000006f, 0x00000010, + 0x80000070, 0x00000010, 0x80000071, 0x00000010, + 0x80000072, 0x00000010, 0x80000073, 0x00000010, + 0x80000074, 0x00000010, 0x80000075, 0x00000010, + 0x80000076, 0x00000010, 0x80000077, 0x00000010, + 0x80000078, 0x00000010, 0x80000079, 0x00000010, + 0x8000007a, 0x00000010, 0x800000e0, 0x00000010, + 0x800000e1, 0x00000010, 0x800000e2, 0x00000010, + 0x800000e3, 0x00000010, 0x800000e4, 0x00000010, + 0x800000e5, 0x00000010, 0x800000e6, 0x00000010, + 0x800000e7, 0x00000010, 0x800000e8, 0x00000010, + 0x800000e9, 0x00000010, 0x800000ea, 0x00000010, + 0x800000eb, 0x00000010, 0x800000ec, 0x00000010, + 0x800000ed, 0x00000010, 0x800000ee, 0x00000010, + 0x800000ef, 0x00000010, 0x800000f0, 0x00000010, + 0x800000f1, 0x00000010, 0x800000f2, 0x00000010, + 0x800000f3, 0x00000010, 0x800000f4, 0x00000010, + 0x800000f5, 0x00000010, 0x800000f6, 0x00000010, + 0x800000f8, 0x00000010, 0x800000f9, 0x00000010, + 0x800000fa, 0x00000010, 0x800000fb, 0x00000010, + 0x800000fc, 0x00000010, 0x800000fd, 0x00000010, + 0x800000fe, 0x00000010, 0x80000101, 0x00000010, + 0x80000103, 0x00000010, 0x80000105, 0x00000010, + 0x80000107, 0x00000010, 0x80000109, 0x00000010, + 0x8000010b, 0x00000010, 0x8000010d, 0x00000010, + 0x8000010f, 0x00000010, 0x80000111, 0x00000010, + 0x80000113, 0x00000010, 0x80000115, 0x00000010, + 0x80000117, 0x00000010, 0x80000119, 0x00000010, + 0x8000011b, 0x00000010, 0x8000011d, 0x00000010, + 0x8000011f, 0x00000010, 0x80000121, 0x00000010, + 0x80000123, 0x00000010, 0x80000125, 0x00000010, + 0x80000127, 0x00000010, 0x80000129, 0x00000010, + 0x8000012b, 0x00000010, 0x8000012d, 0x00000010, + 0x8000012f, 0x00000010, 0x80000069, 0x00000010, + 0x80000133, 0x00000010, 0x80000135, 0x00000010, + 0x80000137, 0x00000010, 0x8000013a, 0x00000010, + 0x8000013c, 0x00000010, 0x8000013e, 0x00000010, + 0x80000140, 0x00000010, 0x80000142, 0x00000010, + 0x80000144, 0x00000010, 0x80000146, 0x00000010, + 0x80000148, 0x00000010, 0x8000014b, 0x00000010, + 0x8000014d, 0x00000010, 0x8000014f, 0x00000010, + 0x80000151, 0x00000010, 0x80000153, 0x00000010, + 0x80000155, 0x00000010, 0x80000157, 0x00000010, + 0x80000159, 0x00000010, 0x8000015b, 0x00000010, + 0x8000015d, 0x00000010, 0x8000015f, 0x00000010, + 0x80000161, 0x00000010, 0x80000163, 0x00000010, + 0x80000165, 0x00000010, 0x80000167, 0x00000010, + 0x80000169, 0x00000010, 0x8000016b, 0x00000010, + 0x8000016d, 0x00000010, 0x8000016f, 0x00000010, + 0x80000171, 0x00000010, 0x80000173, 0x00000010, + 0x80000175, 0x00000010, 0x80000177, 0x00000010, + 0x800000ff, 0x00000010, 0x8000017a, 0x00000010, + 0x8000017c, 0x00000010, 0x8000017e, 0x00000010, + 0x80000253, 0x00000010, 0x80000183, 0x00000010, + 0x80000185, 0x00000010, 0x80000254, 0x00000010, + 0x80000188, 0x00000010, 0x80000256, 0x00000010, + 0x80000257, 0x00000010, 0x8000018c, 0x00000010, + 0x800001dd, 0x00000010, 0x80000259, 0x00000010, + 0x8000025b, 0x00000010, 0x80000192, 0x00000010, + 0x80000260, 0x00000010, 0x80000263, 0x00000010, + 0x80000269, 0x00000010, 0x80000268, 0x00000010, + 0x80000199, 0x00000010, 0x8000026f, 0x00000010, + 0x80000272, 0x00000010, 0x80000275, 0x00000010, + 0x800001a1, 0x00000010, 0x800001a3, 0x00000010, + 0x800001a5, 0x00000010, 0x80000280, 0x00000010, + 0x800001a8, 0x00000010, 0x80000283, 0x00000010, + 0x800001ad, 0x00000010, 0x80000288, 0x00000010, + 0x800001b0, 0x00000010, 0x8000028a, 0x00000010, + 0x8000028b, 0x00000010, 0x800001b4, 0x00000010, + 0x800001b6, 0x00000010, 0x80000292, 0x00000010, + 0x800001b9, 0x00000010, 0x800001bd, 0x00000010, + 0x800001c6, 0x00000010, 0x800001c6, 0x00000010, + 0x800001c9, 0x00000010, 0x800001c9, 0x00000010, + 0x800001cc, 0x00000010, 0x800001cc, 0x00000010, + 0x800001ce, 0x00000010, 0x800001d0, 0x00000010, + 0x800001d2, 0x00000010, 0x800001d4, 0x00000010, + 0x800001d6, 0x00000010, 0x800001d8, 0x00000010, + 0x800001da, 0x00000010, 0x800001dc, 0x00000010, + 0x800001df, 0x00000010, 0x800001e1, 0x00000010, + 0x800001e3, 0x00000010, 0x800001e5, 0x00000010, + 0x800001e7, 0x00000010, 0x800001e9, 0x00000010, + 0x800001eb, 0x00000010, 0x800001ed, 0x00000010, + 0x800001ef, 0x00000010, 0x800001f3, 0x00000010, + 0x800001f3, 0x00000010, 0x800001f5, 0x00000010, + 0x80000195, 0x00000010, 0x800001bf, 0x00000010, + 0x800001f9, 0x00000010, 0x800001fb, 0x00000010, + 0x800001fd, 0x00000010, 0x800001ff, 0x00000010, + 0x80000201, 0x00000010, 0x80000203, 0x00000010, + 0x80000205, 0x00000010, 0x80000207, 0x00000010, + 0x80000209, 0x00000010, 0x8000020b, 0x00000010, + 0x8000020d, 0x00000010, 0x8000020f, 0x00000010, + 0x80000211, 0x00000010, 0x80000213, 0x00000010, + 0x80000215, 0x00000010, 0x80000217, 0x00000010, + 0x80000219, 0x00000010, 0x8000021b, 0x00000010, + 0x8000021d, 0x00000010, 0x8000021f, 0x00000010, + 0x80000223, 0x00000010, 0x80000225, 0x00000010, + 0x80000227, 0x00000010, 0x80000229, 0x00000010, + 0x8000022b, 0x00000010, 0x8000022d, 0x00000010, + 0x8000022f, 0x00000010, 0x80000231, 0x00000010, + 0x80000233, 0x00000010, 0x800003ac, 0x00000010, + 0x800003ad, 0x00000010, 0x800003ae, 0x00000010, + 0x800003af, 0x00000010, 0x800003cc, 0x00000010, + 0x800003cd, 0x00000010, 0x800003ce, 0x00000010, + 0x800003b1, 0x00000010, 0x800003b2, 0x00000010, + 0x800003b3, 0x00000010, 0x800003b4, 0x00000010, + 0x800003b5, 0x00000010, 0x800003b6, 0x00000010, + 0x800003b7, 0x00000010, 0x800003b8, 0x00000010, + 0x800003b9, 0x00000010, 0x800003ba, 0x00000010, + 0x800003bb, 0x00000010, 0x800003bc, 0x00000010, + 0x800003bd, 0x00000010, 0x800003be, 0x00000010, + 0x800003bf, 0x00000010, 0x800003c0, 0x00000010, + 0x800003c1, 0x00000001, 0x800003c2, 0x00000010, + 0x800003c3, 0x00000010, 0x800003c4, 0x00000010, + 0x800003c5, 0x00000010, 0x800003c6, 0x00000010, + 0x800003c7, 0x00000010, 0x800003c8, 0x00000010, + 0x800003c9, 0x00000010, 0x800003ca, 0x00000010, + 0x800003cb, 0x00000010, 0x800003db, 0x00000010, + 0x800003dd, 0x00000010, 0x800003df, 0x00000010, + 0x800003e1, 0x00000010, 0x800003e3, 0x00000010, + 0x800003e5, 0x00000010, 0x800003e7, 0x00000010, + 0x800003e9, 0x00000010, 0x800003eb, 0x00000010, + 0x800003ed, 0x00000010, 0x800003ef, 0x00000010, + 0x800003b8, 0x00000010, 0x80000450, 0x00000010, + 0x80000451, 0x00000010, 0x80000452, 0x00000010, + 0x80000453, 0x00000010, 0x80000454, 0x00000010, + 0x80000455, 0x00000010, 0x80000456, 0x00000010, + 0x80000457, 0x00000010, 0x80000458, 0x00000010, + 0x80000459, 0x00000010, 0x8000045a, 0x00000010, + 0x8000045b, 0x00000010, 0x8000045c, 0x00000010, + 0x8000045d, 0x00000010, 0x8000045e, 0x00000010, + 0x8000045f, 0x00000010, 0x80000430, 0x00000010, + 0x80000431, 0x00000010, 0x80000432, 0x00000010, + 0x80000433, 0x00000010, 0x80000434, 0x00000010, + 0x80000435, 0x00000010, 0x80000436, 0x00000010, + 0x80000437, 0x00000010, 0x80000438, 0x00000010, + 0x80000439, 0x00000010, 0x8000043a, 0x00000010, + 0x8000043b, 0x00000010, 0x8000043c, 0x00000010, + 0x8000043d, 0x00000010, 0x8000043e, 0x00000010, + 0x8000043f, 0x00000010, 0x80000440, 0x00000010, + 0x80000441, 0x00000010, 0x80000442, 0x00000010, + 0x80000443, 0x00000010, 0x80000444, 0x00000010, + 0x80000445, 0x00000010, 0x80000446, 0x00000010, + 0x80000447, 0x00000010, 0x80000448, 0x00000010, + 0x80000449, 0x00000010, 0x8000044a, 0x00000010, + 0x8000044b, 0x00000010, 0x8000044c, 0x00000010, + 0x8000044d, 0x00000010, 0x8000044e, 0x00000010, + 0x8000044f, 0x00000010, 0x80000461, 0x00000010, + 0x80000463, 0x00000010, 0x80000465, 0x00000010, + 0x80000467, 0x00000010, 0x80000469, 0x00000010, + 0x8000046b, 0x00000010, 0x8000046d, 0x00000010, + 0x8000046f, 0x00000010, 0x80000471, 0x00000010, + 0x80000473, 0x00000010, 0x80000475, 0x00000010, + 0x80000477, 0x00000010, 0x80000479, 0x00000010, + 0x8000047b, 0x00000010, 0x8000047d, 0x00000010, + 0x8000047f, 0x00000010, 0x80000481, 0x00000010, + 0x8000048d, 0x00000010, 0x8000048f, 0x00000010, + 0x80000491, 0x00000010, 0x80000493, 0x00000010, + 0x80000495, 0x00000010, 0x80000497, 0x00000010, + 0x80000499, 0x00000010, 0x8000049b, 0x00000010, + 0x8000049d, 0x00000010, 0x8000049f, 0x00000010, + 0x800004a1, 0x00000010, 0x800004a3, 0x00000010, + 0x800004a5, 0x00000010, 0x800004a7, 0x00000010, + 0x800004a9, 0x00000010, 0x800004ab, 0x00000010, + 0x800004ad, 0x00000010, 0x800004af, 0x00000010, + 0x800004b1, 0x00000010, 0x800004b3, 0x00000010, + 0x800004b5, 0x00000010, 0x800004b7, 0x00000010, + 0x800004b9, 0x00000010, 0x800004bb, 0x00000010, + 0x800004bd, 0x00000010, 0x800004bf, 0x00000010, + 0x800004c2, 0x00000010, 0x800004c4, 0x00000010, + 0x800004c8, 0x00000010, 0x800004cc, 0x00000010, + 0x800004d1, 0x00000010, 0x800004d3, 0x00000010, + 0x800004d5, 0x00000010, 0x800004d7, 0x00000010, + 0x800004d9, 0x00000010, 0x800004db, 0x00000010, + 0x800004dd, 0x00000010, 0x800004df, 0x00000010, + 0x800004e1, 0x00000010, 0x800004e3, 0x00000010, + 0x800004e5, 0x00000010, 0x800004e7, 0x00000010, + 0x800004e9, 0x00000010, 0x800004eb, 0x00000010, + 0x800004ed, 0x00000010, 0x800004ef, 0x00000010, + 0x800004f1, 0x00000010, 0x800004f3, 0x00000010, + 0x800004f5, 0x00000010, 0x800004f9, 0x00000010, + 0x80000561, 0x00000010, 0x80000562, 0x00000010, + 0x80000563, 0x00000010, 0x80000564, 0x00000010, + 0x80000565, 0x00000010, 0x80000566, 0x00000010, + 0x80000567, 0x00000010, 0x80000568, 0x00000010, + 0x80000569, 0x00000010, 0x8000056a, 0x00000010, + 0x8000056b, 0x00000010, 0x8000056c, 0x00000010, + 0x8000056d, 0x00000010, 0x8000056e, 0x00000010, + 0x8000056f, 0x00000010, 0x80000570, 0x00000010, + 0x80000571, 0x00000010, 0x80000572, 0x00000010, + 0x80000573, 0x00000010, 0x80000574, 0x00000010, + 0x80000575, 0x00000010, 0x80000576, 0x00000010, + 0x80000577, 0x00000010, 0x80000578, 0x00000010, + 0x80000579, 0x00000010, 0x8000057a, 0x00000010, + 0x8000057b, 0x00000010, 0x8000057c, 0x00000010, + 0x8000057d, 0x00000010, 0x8000057e, 0x00000010, + 0x8000057f, 0x00000010, 0x80000580, 0x00000010, + 0x80000581, 0x00000010, 0x80000582, 0x00000010, + 0x80000583, 0x00000010, 0x80000584, 0x00000010, + 0x80000585, 0x00000010, 0x80000586, 0x00000010, + 0x80001e01, 0x00000010, 0x80001e03, 0x00000010, + 0x80001e05, 0x00000010, 0x80001e07, 0x00000010, + 0x80001e09, 0x00000010, 0x80001e0b, 0x00000010, + 0x80001e0d, 0x00000010, 0x80001e0f, 0x00000010, + 0x80001e11, 0x00000010, 0x80001e13, 0x00000010, + 0x80001e15, 0x00000010, 0x80001e17, 0x00000010, + 0x80001e19, 0x00000010, 0x80001e1b, 0x00000010, + 0x80001e1d, 0x00000010, 0x80001e1f, 0x00000010, + 0x80001e21, 0x00000010, 0x80001e23, 0x00000010, + 0x80001e25, 0x00000010, 0x80001e27, 0x00000010, + 0x80001e29, 0x00000010, 0x80001e2b, 0x00000010, + 0x80001e2d, 0x00000010, 0x80001e2f, 0x00000010, + 0x80001e31, 0x00000010, 0x80001e33, 0x00000010, + 0x80001e35, 0x00000010, 0x80001e37, 0x00000010, + 0x80001e39, 0x00000010, 0x80001e3b, 0x00000010, + 0x80001e3d, 0x00000010, 0x80001e3f, 0x00000010, + 0x80001e41, 0x00000010, 0x80001e43, 0x00000010, + 0x80001e45, 0x00000010, 0x80001e47, 0x00000010, + 0x80001e49, 0x00000010, 0x80001e4b, 0x00000010, + 0x80001e4d, 0x00000010, 0x80001e4f, 0x00000010, + 0x80001e51, 0x00000010, 0x80001e53, 0x00000010, + 0x80001e55, 0x00000010, 0x80001e57, 0x00000010, + 0x80001e59, 0x00000010, 0x80001e5b, 0x00000010, + 0x80001e5d, 0x00000010, 0x80001e5f, 0x00000010, + 0x80001e61, 0x00000010, 0x80001e63, 0x00000010, + 0x80001e65, 0x00000010, 0x80001e67, 0x00000010, + 0x80001e69, 0x00000010, 0x80001e6b, 0x00000010, + 0x80001e6d, 0x00000010, 0x80001e6f, 0x00000010, + 0x80001e71, 0x00000010, 0x80001e73, 0x00000010, + 0x80001e75, 0x00000010, 0x80001e77, 0x00000010, + 0x80001e79, 0x00000010, 0x80001e7b, 0x00000010, + 0x80001e7d, 0x00000010, 0x80001e7f, 0x00000010, + 0x80001e81, 0x00000010, 0x80001e83, 0x00000010, + 0x80001e85, 0x00000010, 0x80001e87, 0x00000010, + 0x80001e89, 0x00000010, 0x80001e8b, 0x00000010, + 0x80001e8d, 0x00000010, 0x80001e8f, 0x00000010, + 0x80001e91, 0x00000010, 0x80001e93, 0x00000010, + 0x80001e95, 0x00000010, 0x80001ea1, 0x00000010, + 0x80001ea3, 0x00000010, 0x80001ea5, 0x00000010, + 0x80001ea7, 0x00000010, 0x80001ea9, 0x00000010, + 0x80001eab, 0x00000010, 0x80001ead, 0x00000010, + 0x80001eaf, 0x00000010, 0x80001eb1, 0x00000010, + 0x80001eb3, 0x00000010, 0x80001eb5, 0x00000010, + 0x80001eb7, 0x00000010, 0x80001eb9, 0x00000010, + 0x80001ebb, 0x00000010, 0x80001ebd, 0x00000010, + 0x80001ebf, 0x00000010, 0x80001ec1, 0x00000010, + 0x80001ec3, 0x00000010, 0x80001ec5, 0x00000010, + 0x80001ec7, 0x00000010, 0x80001ec9, 0x00000010, + 0x80001ecb, 0x00000010, 0x80001ecd, 0x00000010, + 0x80001ecf, 0x00000010, 0x80001ed1, 0x00000010, + 0x80001ed3, 0x00000010, 0x80001ed5, 0x00000010, + 0x80001ed7, 0x00000010, 0x80001ed9, 0x00000010, + 0x80001edb, 0x00000010, 0x80001edd, 0x00000010, + 0x80001edf, 0x00000010, 0x80001ee1, 0x00000010, + 0x80001ee3, 0x00000010, 0x80001ee5, 0x00000010, + 0x80001ee7, 0x00000010, 0x80001ee9, 0x00000010, + 0x80001eeb, 0x00000010, 0x80001eed, 0x00000010, + 0x80001eef, 0x00000010, 0x80001ef1, 0x00000010, + 0x80001ef3, 0x00000010, 0x80001ef5, 0x00000010, + 0x80001ef7, 0x00000010, 0x80001ef9, 0x00000010, + 0x80001f00, 0x00000010, 0x80001f01, 0x00000010, + 0x80001f02, 0x00000010, 0x80001f03, 0x00000010, + 0x80001f04, 0x00000010, 0x80001f05, 0x00000010, + 0x80001f06, 0x00000010, 0x80001f07, 0x00000010, + 0x80001f10, 0x00000010, 0x80001f11, 0x00000010, + 0x80001f12, 0x00000010, 0x80001f13, 0x00000010, + 0x80001f14, 0x00000010, 0x80001f15, 0x00000010, + 0x80001f20, 0x00000010, 0x80001f21, 0x00000010, + 0x80001f22, 0x00000010, 0x80001f23, 0x00000010, + 0x80001f24, 0x00000010, 0x80001f25, 0x00000010, + 0x80001f26, 0x00000010, 0x80001f27, 0x00000010, + 0x80001f30, 0x00000010, 0x80001f31, 0x00000010, + 0x80001f32, 0x00000010, 0x80001f33, 0x00000010, + 0x80001f34, 0x00000010, 0x80001f35, 0x00000010, + 0x80001f36, 0x00000010, 0x80001f37, 0x00000010, + 0x80001f40, 0x00000010, 0x80001f41, 0x00000010, + 0x80001f42, 0x00000010, 0x80001f43, 0x00000010, + 0x80001f44, 0x00000010, 0x80001f45, 0x00000010, + 0x80001f51, 0x00000010, 0x80001f53, 0x00000010, + 0x80001f55, 0x00000010, 0x80001f57, 0x00000010, + 0x80001f60, 0x00000010, 0x80001f61, 0x00000010, + 0x80001f62, 0x00000010, 0x80001f63, 0x00000010, + 0x80001f64, 0x00000010, 0x80001f65, 0x00000010, + 0x80001f66, 0x00000010, 0x80001f67, 0x00000000, + 0x80001f80, 0x00000010, 0x80001f80, 0x00000000, + 0x80001f81, 0x00000010, 0x80001f81, 0x00000000, + 0x80001f82, 0x00000010, 0x80001f82, 0x00000000, + 0x80001f83, 0x00000010, 0x80001f83, 0x00000000, + 0x80001f84, 0x00000010, 0x80001f84, 0x00000000, + 0x80001f85, 0x00000010, 0x80001f85, 0x00000000, + 0x80001f86, 0x00000010, 0x80001f86, 0x00000000, + 0x80001f87, 0x00000010, 0x80001f87, 0x00000000, + 0x80001f90, 0x00000010, 0x80001f90, 0x00000000, + 0x80001f91, 0x00000010, 0x80001f91, 0x00000000, + 0x80001f92, 0x00000010, 0x80001f92, 0x00000000, + 0x80001f93, 0x00000010, 0x80001f93, 0x00000000, + 0x80001f94, 0x00000010, 0x80001f94, 0x00000000, + 0x80001f95, 0x00000010, 0x80001f95, 0x00000000, + 0x80001f96, 0x00000010, 0x80001f96, 0x00000000, + 0x80001f97, 0x00000010, 0x80001f97, 0x00000000, + 0x80001fa0, 0x00000010, 0x80001fa0, 0x00000000, + 0x80001fa1, 0x00000010, 0x80001fa1, 0x00000000, + 0x80001fa2, 0x00000010, 0x80001fa2, 0x00000000, + 0x80001fa3, 0x00000010, 0x80001fa3, 0x00000000, + 0x80001fa4, 0x00000010, 0x80001fa4, 0x00000000, + 0x80001fa5, 0x00000010, 0x80001fa5, 0x00000000, + 0x80001fa6, 0x00000010, 0x80001fa6, 0x00000000, + 0x80001fa7, 0x00000010, 0x80001fa7, 0x00000010, + 0x80001fb0, 0x00000010, 0x80001fb1, 0x00000010, + 0x80001f70, 0x00000010, 0x80001f71, 0x00000000, + 0x80001fb3, 0x00000010, 0x80001fb3, 0x00000010, + 0x80001f72, 0x00000010, 0x80001f73, 0x00000010, + 0x80001f74, 0x00000010, 0x80001f75, 0x00000000, + 0x80001fc3, 0x00000010, 0x80001fc3, 0x00000010, + 0x80001fd0, 0x00000010, 0x80001fd1, 0x00000010, + 0x80001f76, 0x00000010, 0x80001f77, 0x00000010, + 0x80001fe0, 0x00000010, 0x80001fe1, 0x00000010, + 0x80001f7a, 0x00000010, 0x80001f7b, 0x00000010, + 0x80001fe5, 0x00000010, 0x80001f78, 0x00000010, + 0x80001f79, 0x00000010, 0x80001f7c, 0x00000010, + 0x80001f7d, 0x00000000, 0x80001ff3, 0x00000010, + 0x80001ff3, 0x00000010, 0x800003c9, 0x00000010, + 0x8000006b, 0x00000010, 0x800000e5, 0x00000010, + 0x80002170, 0x00000010, 0x80002171, 0x00000010, + 0x80002172, 0x00000010, 0x80002173, 0x00000010, + 0x80002174, 0x00000010, 0x80002175, 0x00000010, + 0x80002176, 0x00000010, 0x80002177, 0x00000010, + 0x80002178, 0x00000010, 0x80002179, 0x00000010, + 0x8000217a, 0x00000010, 0x8000217b, 0x00000010, + 0x8000217c, 0x00000010, 0x8000217d, 0x00000010, + 0x8000217e, 0x00000010, 0x8000217f, 0x00000010, + 0x800024d0, 0x00000010, 0x800024d1, 0x00000010, + 0x800024d2, 0x00000010, 0x800024d3, 0x00000010, + 0x800024d4, 0x00000010, 0x800024d5, 0x00000010, + 0x800024d6, 0x00000010, 0x800024d7, 0x00000010, + 0x800024d8, 0x00000010, 0x800024d9, 0x00000010, + 0x800024da, 0x00000010, 0x800024db, 0x00000010, + 0x800024dc, 0x00000010, 0x800024dd, 0x00000010, + 0x800024de, 0x00000010, 0x800024df, 0x00000010, + 0x800024e0, 0x00000010, 0x800024e1, 0x00000010, + 0x800024e2, 0x00000010, 0x800024e3, 0x00000010, + 0x800024e4, 0x00000010, 0x800024e5, 0x00000010, + 0x800024e6, 0x00000010, 0x800024e7, 0x00000010, + 0x800024e8, 0x00000010, 0x800024e9, 0x00000010, + 0x8000ff41, 0x00000010, 0x8000ff42, 0x00000010, + 0x8000ff43, 0x00000010, 0x8000ff44, 0x00000010, + 0x8000ff45, 0x00000010, 0x8000ff46, 0x00000010, + 0x8000ff47, 0x00000010, 0x8000ff48, 0x00000010, + 0x8000ff49, 0x00000010, 0x8000ff4a, 0x00000010, + 0x8000ff4b, 0x00000010, 0x8000ff4c, 0x00000010, + 0x8000ff4d, 0x00000010, 0x8000ff4e, 0x00000010, + 0x8000ff4f, 0x00000010, 0x8000ff50, 0x00000010, + 0x8000ff51, 0x00000010, 0x8000ff52, 0x00000010, + 0x8000ff53, 0x00000010, 0x8000ff54, 0x00000010, + 0x8000ff55, 0x00000010, 0x8000ff56, 0x00000010, + 0x8000ff57, 0x00000010, 0x8000ff58, 0x00000010, + 0x8000ff59, 0x00000010, 0x8000ff5a, 0x00000010, + 0x80010428, 0x00000010, 0x80010429, 0x00000010, + 0x8001042a, 0x00000010, 0x8001042b, 0x00000010, + 0x8001042c, 0x00000010, 0x8001042d, 0x00000010, + 0x8001042e, 0x00000010, 0x8001042f, 0x00000010, + 0x80010430, 0x00000010, 0x80010431, 0x00000010, + 0x80010432, 0x00000010, 0x80010433, 0x00000010, + 0x80010434, 0x00000010, 0x80010435, 0x00000010, + 0x80010436, 0x00000010, 0x80010437, 0x00000010, + 0x80010438, 0x00000010, 0x80010439, 0x00000010, + 0x8001043a, 0x00000010, 0x8001043b, 0x00000010, + 0x8001043c, 0x00000010, 0x8001043d, 0x00000010, + 0x8001043e, 0x00000010, 0x8001043f, 0x00000010, + 0x80010440, 0x00000010, 0x80010441, 0x00000010, + 0x80010442, 0x00000010, 0x80010443, 0x00000010, + 0x80010444, 0x00000010, 0x80010445, 0x00000010, + 0x80010446, 0x00000010, 0x80010447, 0x00000010, + 0x80010448, 0x00000010, 0x80010449, 0x00000010, + 0x8001044a, 0x00000010, 0x8001044b, 0x00000010, + 0x8001044c, 0x00000010, 0x8001044d, +}; + + +/* + * Cased characters and non-spacing marks (for casemap context) + */ + +#define CASEMAP_CTX_BITS_0 9 +#define CASEMAP_CTX_BITS_1 7 +#define CASEMAP_CTX_BITS_2 5 + +#define CTX_CASED 1 +#define CTX_NSM 2 + +static const unsigned short v310_casemap_ctx_imap[] = { + 272, 400, 528, 656, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 912, + 1040, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 1168, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 0, 0, 1, 1, 0, 2, 3, 3, + 4, 4, 4, 4, 4, 5, 6, 4, + 4, 7, 8, 4, 4, 9, 0, 0, + 10, 10, 11, 12, 13, 14, 15, 16, + 4, 4, 4, 4, 17, 4, 18, 19, + 0, 20, 21, 22, 23, 24, 25, 0, + 0, 0, 26, 27, 0, 0, 28, 29, + 30, 31, 32, 0, 0, 33, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 34, 35, 36, 37, 38, 35, 39, 37, + 40, 35, 41, 42, 34, 35, 43, 0, + 38, 44, 45, 0, 40, 0, 46, 0, + 0, 47, 48, 0, 0, 49, 50, 0, + 0, 0, 51, 0, 0, 0, 52, 0, + 0, 53, 54, 0, 0, 55, 56, 0, + 57, 58, 0, 59, 60, 61, 62, 0, + 0, 63, 57, 0, 0, 4, 64, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 65, 66, 0, + 0, 0, 0, 0, 0, 67, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 4, 4, 4, 4, 68, 4, 4, 69, + 70, 4, 71, 72, 4, 73, 74, 75, + 0, 0, 0, 76, 0, 0, 77, 38, + 78, 79, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 80, 0, 0, 81, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 82, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 83, 0, 0, 0, 0, 0, 0, + 0, 1, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 4, 84, 9, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 85, 86, 87, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 4, 4, 88, 4, 89, 90, 91, 4, + 92, 93, 94, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 95, 96, 5, + 88, 88, 97, 97, 98, 98, 99, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, +}; + +static const struct { + unsigned char tbl[32]; +} v310_casemap_ctx_table[] = { + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + }}, + {{ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, + }}, + {{ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + }}, + {{ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, + }}, + {{ + 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + }}, + {{ + 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + }}, + {{ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + }}, + {{ + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + }}, + {{ + 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + }}, + {{ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, + 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, + }}, + {{ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 1, 1, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + }}, + {{ + 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + }}, + {{ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + }}, + {{ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + }}, + {{ + 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + }}, + {{ + 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 0, 2, + }}, + {{ + 0, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, + }}, + {{ + 2, 2, 2, 2, 2, 0, 0, 2, 2, 0, 2, 2, 2, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + }}, + {{ + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, + }}, + {{ + 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 0, 0, 0, + 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 2, 2, 0, 0, 0, 0, 2, 2, 0, 0, 2, 2, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 2, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, + }}, + {{ + 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, + }}, + {{ + 2, 0, 0, 0, 0, 0, 2, 2, 2, 0, 2, 2, 2, 2, 0, 0, 0, + 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, + }}, + {{ + 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, + 0, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 0, 0, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, + }}, + {{ + 2, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 2, + 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, + }}, + {{ + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, + 0, 2, 0, 0, 0, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, + }}, + {{ + 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, + }}, + {{ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, + }}, + {{ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, + }}, + {{ + 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, + 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, + }}, + {{ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, + }}, + {{ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, + }}, + {{ + 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, + 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, + }}, + {{ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, + 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, + }}, + {{ + 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, + }}, + {{ + 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 1, + 1, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, + }}, + {{ + 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 2, 0, + }}, + {{ + 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, + }}, + {{ + 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + }}, + {{ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, + }}, + {{ + 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, + }}, + {{ + 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + }}, + {{ + 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, + 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, + }}, + {{ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, + }}, + {{ + 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, + 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + }}, + {{ + 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + }}, + {{ + 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, + }}, + {{ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + }}, + {{ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + }}, + {{ + 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, +}; + +/* + * Case Folding + */ + +#define CASE_FOLDING_BITS_0 9 +#define CASE_FOLDING_BITS_1 7 +#define CASE_FOLDING_BITS_2 5 + +static const unsigned short v310_case_folding_imap[] = { + 272, 400, 528, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 784, + 912, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 0, 0, 1, 0, 0, 2, 3, 0, + 4, 5, 6, 7, 8, 9, 10, 11, + 12, 13, 0, 0, 0, 0, 0, 0, + 0, 0, 14, 0, 15, 16, 17, 18, + 19, 20, 0, 21, 22, 23, 24, 25, + 0, 26, 27, 0, 28, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 45, 0, 46, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 47, 48, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 49, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 50, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 51, 52, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, +}; + +static const struct { + unsigned short tbl[32]; +} v310_case_folding_table[] = { + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, + 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, + 50, 0, 51, 52, 53, 54, 55, 56, 57, 58, + }}, + {{ + 60, 0, 61, 0, 62, 0, 63, 0, 64, 0, 65, + 0, 66, 0, 67, 0, 68, 0, 69, 0, 70, 0, + 71, 0, 72, 0, 73, 0, 74, 0, 75, 0, + }}, + {{ + 76, 0, 77, 0, 78, 0, 79, 0, 80, 0, 81, + 0, 82, 0, 83, 0, 84, 85, 86, 0, 87, 0, + 88, 0, 0, 89, 0, 90, 0, 91, 0, 92, + }}, + {{ + 0, 93, 0, 94, 0, 95, 0, 96, 0, 97, 99, + 0, 100, 0, 101, 0, 102, 0, 103, 0, 104, 0, + 105, 0, 106, 0, 107, 0, 108, 0, 109, 0, + }}, + {{ + 110, 0, 111, 0, 112, 0, 113, 0, 114, 0, 115, + 0, 116, 0, 117, 0, 118, 0, 119, 0, 120, 0, + 121, 0, 122, 123, 0, 124, 0, 125, 0, 126, + }}, + {{ + 0, 127, 128, 0, 129, 0, 130, 131, 0, 132, 133, + 134, 0, 0, 135, 136, 137, 138, 0, 139, 140, 0, + 141, 142, 143, 0, 0, 0, 144, 145, 0, 146, + }}, + {{ + 147, 0, 148, 0, 149, 0, 150, 151, 0, 152, 0, + 0, 153, 0, 154, 155, 0, 156, 157, 158, 0, 159, + 0, 160, 161, 0, 0, 0, 162, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 163, 164, 0, 165, 166, 0, 167, + 168, 0, 169, 0, 170, 0, 171, 0, 172, 0, 173, + 0, 174, 0, 175, 0, 176, 0, 0, 177, 0, + }}, + {{ + 178, 0, 179, 0, 180, 0, 181, 0, 182, 0, 183, + 0, 184, 0, 185, 0, 186, 188, 189, 0, 190, 0, + 191, 192, 193, 0, 194, 0, 195, 0, 196, 0, + }}, + {{ + 197, 0, 198, 0, 199, 0, 200, 0, 201, 0, 202, + 0, 203, 0, 204, 0, 205, 0, 206, 0, 207, 0, + 208, 0, 209, 0, 210, 0, 211, 0, 212, 0, + }}, + {{ + 0, 0, 213, 0, 214, 0, 215, 0, 216, 0, 217, + 0, 218, 0, 219, 0, 220, 0, 221, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 222, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 223, 0, 224, 225, 226, + 0, 227, 0, 228, 229, 230, 233, 234, 235, 236, 237, + 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, + }}, + {{ + 248, 249, 0, 250, 251, 252, 253, 254, 255, 256, 257, + 258, 0, 0, 0, 0, 259, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 262, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 263, 264, 0, 0, 0, 265, + 266, 0, 0, 0, 267, 0, 268, 0, 269, 0, + }}, + {{ + 270, 0, 271, 0, 272, 0, 273, 0, 274, 0, 275, + 0, 276, 0, 277, 0, 278, 279, 280, 0, 281, 282, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, + 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, + }}, + {{ + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, + 326, 327, 328, 329, 330, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 331, 0, 332, 0, 333, 0, 334, 0, 335, 0, 336, + 0, 337, 0, 338, 0, 339, 0, 340, 0, 341, 0, + 342, 0, 343, 0, 344, 0, 345, 0, 346, 0, + }}, + {{ + 347, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 348, 0, 349, 0, 350, 0, 351, 0, 352, 0, + 353, 0, 354, 0, 355, 0, 356, 0, 357, 0, + }}, + {{ + 358, 0, 359, 0, 360, 0, 361, 0, 362, 0, 363, + 0, 364, 0, 365, 0, 366, 0, 367, 0, 368, 0, + 369, 0, 370, 0, 371, 0, 372, 0, 373, 0, + }}, + {{ + 0, 374, 0, 375, 0, 0, 0, 376, 0, 0, 0, + 377, 0, 0, 0, 0, 378, 0, 379, 0, 380, 0, + 381, 0, 382, 0, 383, 0, 384, 0, 385, 0, + }}, + {{ + 386, 0, 387, 0, 388, 0, 389, 0, 390, 0, 391, + 0, 392, 0, 393, 0, 394, 0, 395, 0, 396, 0, + 0, 0, 397, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 398, 399, 400, 401, 402, + 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, + }}, + {{ + 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, + 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, + 435, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 436, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 438, 0, 439, 0, 440, 0, 441, 0, 442, 0, 443, + 0, 444, 0, 445, 0, 446, 0, 447, 0, 448, 0, + 449, 0, 450, 0, 451, 0, 452, 0, 453, 0, + }}, + {{ + 454, 0, 455, 0, 456, 0, 457, 0, 458, 0, 459, + 0, 460, 0, 461, 0, 462, 0, 463, 0, 464, 0, + 465, 0, 466, 0, 467, 0, 468, 0, 469, 0, + }}, + {{ + 470, 0, 471, 0, 472, 0, 473, 0, 474, 0, 475, + 0, 476, 0, 477, 0, 478, 0, 479, 0, 480, 0, + 481, 0, 482, 0, 483, 0, 484, 0, 485, 0, + }}, + {{ + 486, 0, 487, 0, 488, 0, 489, 0, 490, 0, 491, + 0, 492, 0, 493, 0, 494, 0, 495, 0, 496, 0, + 497, 0, 498, 0, 499, 0, 500, 0, 501, 0, + }}, + {{ + 502, 0, 503, 0, 504, 0, 505, 0, 506, 0, 507, + 0, 508, 0, 509, 0, 510, 0, 511, 0, 512, 0, + 513, 515, 517, 519, 521, 523, 0, 0, 0, 0, + }}, + {{ + 524, 0, 525, 0, 526, 0, 527, 0, 528, 0, 529, + 0, 530, 0, 531, 0, 532, 0, 533, 0, 534, 0, + 535, 0, 536, 0, 537, 0, 538, 0, 539, 0, + }}, + {{ + 540, 0, 541, 0, 542, 0, 543, 0, 544, 0, 545, + 0, 546, 0, 547, 0, 548, 0, 549, 0, 550, 0, + 551, 0, 552, 0, 553, 0, 554, 0, 555, 0, + }}, + {{ + 556, 0, 557, 0, 558, 0, 559, 0, 560, 0, 561, + 0, 562, 0, 563, 0, 564, 0, 565, 0, 566, 0, + 567, 0, 568, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 569, 570, 571, + 572, 573, 574, 575, 576, 0, 0, 0, 0, 0, 0, + 0, 0, 577, 578, 579, 580, 581, 582, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 583, 584, 585, + 586, 587, 588, 589, 590, 0, 0, 0, 0, 0, 0, + 0, 0, 591, 592, 593, 594, 595, 596, 597, 598, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 599, 600, 601, + 602, 603, 604, 0, 0, 605, 0, 607, 0, 610, 0, + 613, 0, 0, 616, 0, 617, 0, 618, 0, 619, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 620, 621, 622, + 623, 624, 625, 626, 627, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 628, 630, 632, 634, 636, 638, 640, 642, 646, 649, 652, + 655, 658, 661, 664, 667, 668, 670, 672, 674, 676, 678, + 680, 682, 686, 689, 692, 695, 698, 701, 704, 707, + }}, + {{ + 708, 710, 712, 714, 716, 718, 720, 722, 726, 729, 732, + 735, 738, 741, 744, 747, 0, 0, 748, 750, 752, 0, + 754, 756, 759, 760, 761, 762, 765, 0, 766, 0, + }}, + {{ + 0, 0, 767, 769, 771, 0, 773, 775, 778, 779, 780, + 781, 784, 0, 0, 0, 0, 0, 785, 788, 0, 0, + 791, 793, 796, 797, 798, 799, 0, 0, 0, 0, + }}, + {{ + 0, 0, 800, 803, 806, 0, 808, 810, 813, 814, 815, + 816, 817, 0, 0, 0, 0, 0, 818, 820, 822, 0, + 824, 826, 829, 830, 831, 832, 835, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 836, 0, 0, 0, 837, + 838, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 839, 840, 841, 842, 843, 844, 845, 846, 847, 848, 849, + 850, 851, 852, 853, 854, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 855, 856, 857, 858, 859, 860, 861, 862, 863, 864, + }}, + {{ + 865, 866, 867, 868, 869, 870, 871, 872, 873, 874, 875, + 876, 877, 878, 879, 880, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 881, 883, 885, 887, 890, 893, 895, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 897, 899, 901, + 903, 905, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 907, 908, 909, 910, 911, 912, 913, 914, 915, 916, + 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, + 928, 929, 930, 931, 932, 0, 0, 0, 0, 0, + }}, + {{ + 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, 943, + 944, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, + 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, + }}, + {{ + 965, 966, 967, 968, 969, 970, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, +}; +static const unsigned long v310_case_folding_seq[] = { + 0x00000000, 0x80000061, 0x80000062, 0x80000063, + 0x80000064, 0x80000065, 0x80000066, 0x80000067, + 0x80000068, 0x80000069, 0x8000006a, 0x8000006b, + 0x8000006c, 0x8000006d, 0x8000006e, 0x8000006f, + 0x80000070, 0x80000071, 0x80000072, 0x80000073, + 0x80000074, 0x80000075, 0x80000076, 0x80000077, + 0x80000078, 0x80000079, 0x8000007a, 0x800003bc, + 0x800000e0, 0x800000e1, 0x800000e2, 0x800000e3, + 0x800000e4, 0x800000e5, 0x800000e6, 0x800000e7, + 0x800000e8, 0x800000e9, 0x800000ea, 0x800000eb, + 0x800000ec, 0x800000ed, 0x800000ee, 0x800000ef, + 0x800000f0, 0x800000f1, 0x800000f2, 0x800000f3, + 0x800000f4, 0x800000f5, 0x800000f6, 0x800000f8, + 0x800000f9, 0x800000fa, 0x800000fb, 0x800000fc, + 0x800000fd, 0x800000fe, 0x00000073, 0x80000073, + 0x80000101, 0x80000103, 0x80000105, 0x80000107, + 0x80000109, 0x8000010b, 0x8000010d, 0x8000010f, + 0x80000111, 0x80000113, 0x80000115, 0x80000117, + 0x80000119, 0x8000011b, 0x8000011d, 0x8000011f, + 0x80000121, 0x80000123, 0x80000125, 0x80000127, + 0x80000129, 0x8000012b, 0x8000012d, 0x8000012f, + 0x80000069, 0x80000069, 0x80000133, 0x80000135, + 0x80000137, 0x8000013a, 0x8000013c, 0x8000013e, + 0x80000140, 0x80000142, 0x80000144, 0x80000146, + 0x80000148, 0x000002bc, 0x8000006e, 0x8000014b, + 0x8000014d, 0x8000014f, 0x80000151, 0x80000153, + 0x80000155, 0x80000157, 0x80000159, 0x8000015b, + 0x8000015d, 0x8000015f, 0x80000161, 0x80000163, + 0x80000165, 0x80000167, 0x80000169, 0x8000016b, + 0x8000016d, 0x8000016f, 0x80000171, 0x80000173, + 0x80000175, 0x80000177, 0x800000ff, 0x8000017a, + 0x8000017c, 0x8000017e, 0x80000073, 0x80000253, + 0x80000183, 0x80000185, 0x80000254, 0x80000188, + 0x80000256, 0x80000257, 0x8000018c, 0x800001dd, + 0x80000259, 0x8000025b, 0x80000192, 0x80000260, + 0x80000263, 0x80000269, 0x80000268, 0x80000199, + 0x8000026f, 0x80000272, 0x80000275, 0x800001a1, + 0x800001a3, 0x800001a5, 0x80000280, 0x800001a8, + 0x80000283, 0x800001ad, 0x80000288, 0x800001b0, + 0x8000028a, 0x8000028b, 0x800001b4, 0x800001b6, + 0x80000292, 0x800001b9, 0x800001bd, 0x800001c6, + 0x800001c6, 0x800001c9, 0x800001c9, 0x800001cc, + 0x800001cc, 0x800001ce, 0x800001d0, 0x800001d2, + 0x800001d4, 0x800001d6, 0x800001d8, 0x800001da, + 0x800001dc, 0x800001df, 0x800001e1, 0x800001e3, + 0x800001e5, 0x800001e7, 0x800001e9, 0x800001eb, + 0x800001ed, 0x800001ef, 0x0000006a, 0x8000030c, + 0x800001f3, 0x800001f3, 0x800001f5, 0x80000195, + 0x800001bf, 0x800001f9, 0x800001fb, 0x800001fd, + 0x800001ff, 0x80000201, 0x80000203, 0x80000205, + 0x80000207, 0x80000209, 0x8000020b, 0x8000020d, + 0x8000020f, 0x80000211, 0x80000213, 0x80000215, + 0x80000217, 0x80000219, 0x8000021b, 0x8000021d, + 0x8000021f, 0x80000223, 0x80000225, 0x80000227, + 0x80000229, 0x8000022b, 0x8000022d, 0x8000022f, + 0x80000231, 0x80000233, 0x800003b9, 0x800003ac, + 0x800003ad, 0x800003ae, 0x800003af, 0x800003cc, + 0x800003cd, 0x800003ce, 0x000003b9, 0x00000308, + 0x80000301, 0x800003b1, 0x800003b2, 0x800003b3, + 0x800003b4, 0x800003b5, 0x800003b6, 0x800003b7, + 0x800003b8, 0x800003b9, 0x800003ba, 0x800003bb, + 0x800003bc, 0x800003bd, 0x800003be, 0x800003bf, + 0x800003c0, 0x800003c1, 0x800003c3, 0x800003c4, + 0x800003c5, 0x800003c6, 0x800003c7, 0x800003c8, + 0x800003c9, 0x800003ca, 0x800003cb, 0x000003c5, + 0x00000308, 0x80000301, 0x800003c3, 0x800003b2, + 0x800003b8, 0x800003c6, 0x800003c0, 0x800003db, + 0x800003dd, 0x800003df, 0x800003e1, 0x800003e3, + 0x800003e5, 0x800003e7, 0x800003e9, 0x800003eb, + 0x800003ed, 0x800003ef, 0x800003ba, 0x800003c1, + 0x800003c3, 0x800003b8, 0x800003b5, 0x80000450, + 0x80000451, 0x80000452, 0x80000453, 0x80000454, + 0x80000455, 0x80000456, 0x80000457, 0x80000458, + 0x80000459, 0x8000045a, 0x8000045b, 0x8000045c, + 0x8000045d, 0x8000045e, 0x8000045f, 0x80000430, + 0x80000431, 0x80000432, 0x80000433, 0x80000434, + 0x80000435, 0x80000436, 0x80000437, 0x80000438, + 0x80000439, 0x8000043a, 0x8000043b, 0x8000043c, + 0x8000043d, 0x8000043e, 0x8000043f, 0x80000440, + 0x80000441, 0x80000442, 0x80000443, 0x80000444, + 0x80000445, 0x80000446, 0x80000447, 0x80000448, + 0x80000449, 0x8000044a, 0x8000044b, 0x8000044c, + 0x8000044d, 0x8000044e, 0x8000044f, 0x80000461, + 0x80000463, 0x80000465, 0x80000467, 0x80000469, + 0x8000046b, 0x8000046d, 0x8000046f, 0x80000471, + 0x80000473, 0x80000475, 0x80000477, 0x80000479, + 0x8000047b, 0x8000047d, 0x8000047f, 0x80000481, + 0x8000048d, 0x8000048f, 0x80000491, 0x80000493, + 0x80000495, 0x80000497, 0x80000499, 0x8000049b, + 0x8000049d, 0x8000049f, 0x800004a1, 0x800004a3, + 0x800004a5, 0x800004a7, 0x800004a9, 0x800004ab, + 0x800004ad, 0x800004af, 0x800004b1, 0x800004b3, + 0x800004b5, 0x800004b7, 0x800004b9, 0x800004bb, + 0x800004bd, 0x800004bf, 0x800004c2, 0x800004c4, + 0x800004c8, 0x800004cc, 0x800004d1, 0x800004d3, + 0x800004d5, 0x800004d7, 0x800004d9, 0x800004db, + 0x800004dd, 0x800004df, 0x800004e1, 0x800004e3, + 0x800004e5, 0x800004e7, 0x800004e9, 0x800004eb, + 0x800004ed, 0x800004ef, 0x800004f1, 0x800004f3, + 0x800004f5, 0x800004f9, 0x80000561, 0x80000562, + 0x80000563, 0x80000564, 0x80000565, 0x80000566, + 0x80000567, 0x80000568, 0x80000569, 0x8000056a, + 0x8000056b, 0x8000056c, 0x8000056d, 0x8000056e, + 0x8000056f, 0x80000570, 0x80000571, 0x80000572, + 0x80000573, 0x80000574, 0x80000575, 0x80000576, + 0x80000577, 0x80000578, 0x80000579, 0x8000057a, + 0x8000057b, 0x8000057c, 0x8000057d, 0x8000057e, + 0x8000057f, 0x80000580, 0x80000581, 0x80000582, + 0x80000583, 0x80000584, 0x80000585, 0x80000586, + 0x00000565, 0x80000582, 0x80001e01, 0x80001e03, + 0x80001e05, 0x80001e07, 0x80001e09, 0x80001e0b, + 0x80001e0d, 0x80001e0f, 0x80001e11, 0x80001e13, + 0x80001e15, 0x80001e17, 0x80001e19, 0x80001e1b, + 0x80001e1d, 0x80001e1f, 0x80001e21, 0x80001e23, + 0x80001e25, 0x80001e27, 0x80001e29, 0x80001e2b, + 0x80001e2d, 0x80001e2f, 0x80001e31, 0x80001e33, + 0x80001e35, 0x80001e37, 0x80001e39, 0x80001e3b, + 0x80001e3d, 0x80001e3f, 0x80001e41, 0x80001e43, + 0x80001e45, 0x80001e47, 0x80001e49, 0x80001e4b, + 0x80001e4d, 0x80001e4f, 0x80001e51, 0x80001e53, + 0x80001e55, 0x80001e57, 0x80001e59, 0x80001e5b, + 0x80001e5d, 0x80001e5f, 0x80001e61, 0x80001e63, + 0x80001e65, 0x80001e67, 0x80001e69, 0x80001e6b, + 0x80001e6d, 0x80001e6f, 0x80001e71, 0x80001e73, + 0x80001e75, 0x80001e77, 0x80001e79, 0x80001e7b, + 0x80001e7d, 0x80001e7f, 0x80001e81, 0x80001e83, + 0x80001e85, 0x80001e87, 0x80001e89, 0x80001e8b, + 0x80001e8d, 0x80001e8f, 0x80001e91, 0x80001e93, + 0x80001e95, 0x00000068, 0x80000331, 0x00000074, + 0x80000308, 0x00000077, 0x8000030a, 0x00000079, + 0x8000030a, 0x00000061, 0x800002be, 0x80001e61, + 0x80001ea1, 0x80001ea3, 0x80001ea5, 0x80001ea7, + 0x80001ea9, 0x80001eab, 0x80001ead, 0x80001eaf, + 0x80001eb1, 0x80001eb3, 0x80001eb5, 0x80001eb7, + 0x80001eb9, 0x80001ebb, 0x80001ebd, 0x80001ebf, + 0x80001ec1, 0x80001ec3, 0x80001ec5, 0x80001ec7, + 0x80001ec9, 0x80001ecb, 0x80001ecd, 0x80001ecf, + 0x80001ed1, 0x80001ed3, 0x80001ed5, 0x80001ed7, + 0x80001ed9, 0x80001edb, 0x80001edd, 0x80001edf, + 0x80001ee1, 0x80001ee3, 0x80001ee5, 0x80001ee7, + 0x80001ee9, 0x80001eeb, 0x80001eed, 0x80001eef, + 0x80001ef1, 0x80001ef3, 0x80001ef5, 0x80001ef7, + 0x80001ef9, 0x80001f00, 0x80001f01, 0x80001f02, + 0x80001f03, 0x80001f04, 0x80001f05, 0x80001f06, + 0x80001f07, 0x80001f10, 0x80001f11, 0x80001f12, + 0x80001f13, 0x80001f14, 0x80001f15, 0x80001f20, + 0x80001f21, 0x80001f22, 0x80001f23, 0x80001f24, + 0x80001f25, 0x80001f26, 0x80001f27, 0x80001f30, + 0x80001f31, 0x80001f32, 0x80001f33, 0x80001f34, + 0x80001f35, 0x80001f36, 0x80001f37, 0x80001f40, + 0x80001f41, 0x80001f42, 0x80001f43, 0x80001f44, + 0x80001f45, 0x000003c5, 0x80000313, 0x000003c5, + 0x00000313, 0x80000300, 0x000003c5, 0x00000313, + 0x80000301, 0x000003c5, 0x00000313, 0x80000342, + 0x80001f51, 0x80001f53, 0x80001f55, 0x80001f57, + 0x80001f60, 0x80001f61, 0x80001f62, 0x80001f63, + 0x80001f64, 0x80001f65, 0x80001f66, 0x80001f67, + 0x00001f00, 0x800003b9, 0x00001f01, 0x800003b9, + 0x00001f02, 0x800003b9, 0x00001f03, 0x800003b9, + 0x00001f04, 0x800003b9, 0x00001f05, 0x800003b9, + 0x00001f06, 0x800003b9, 0x00001f07, 0x800003b9, + 0x00001f00, 0x800003b9, 0x80001f80, 0x00001f01, + 0x800003b9, 0x80001f81, 0x00001f02, 0x800003b9, + 0x80001f82, 0x00001f03, 0x800003b9, 0x80001f83, + 0x00001f04, 0x800003b9, 0x80001f84, 0x00001f05, + 0x800003b9, 0x80001f85, 0x00001f06, 0x800003b9, + 0x80001f86, 0x00001f07, 0x800003b9, 0x80001f87, + 0x00001f20, 0x800003b9, 0x00001f21, 0x800003b9, + 0x00001f22, 0x800003b9, 0x00001f23, 0x800003b9, + 0x00001f24, 0x800003b9, 0x00001f25, 0x800003b9, + 0x00001f26, 0x800003b9, 0x00001f27, 0x800003b9, + 0x00001f20, 0x800003b9, 0x80001f90, 0x00001f21, + 0x800003b9, 0x80001f91, 0x00001f22, 0x800003b9, + 0x80001f92, 0x00001f23, 0x800003b9, 0x80001f93, + 0x00001f24, 0x800003b9, 0x80001f94, 0x00001f25, + 0x800003b9, 0x80001f95, 0x00001f26, 0x800003b9, + 0x80001f96, 0x00001f27, 0x800003b9, 0x80001f97, + 0x00001f60, 0x800003b9, 0x00001f61, 0x800003b9, + 0x00001f62, 0x800003b9, 0x00001f63, 0x800003b9, + 0x00001f64, 0x800003b9, 0x00001f65, 0x800003b9, + 0x00001f66, 0x800003b9, 0x00001f67, 0x800003b9, + 0x00001f60, 0x800003b9, 0x80001fa0, 0x00001f61, + 0x800003b9, 0x80001fa1, 0x00001f62, 0x800003b9, + 0x80001fa2, 0x00001f63, 0x800003b9, 0x80001fa3, + 0x00001f64, 0x800003b9, 0x80001fa4, 0x00001f65, + 0x800003b9, 0x80001fa5, 0x00001f66, 0x800003b9, + 0x80001fa6, 0x00001f67, 0x800003b9, 0x80001fa7, + 0x00001f70, 0x800003b9, 0x000003b1, 0x800003b9, + 0x000003ac, 0x800003b9, 0x000003b1, 0x80000342, + 0x000003b1, 0x00000342, 0x800003b9, 0x80001fb0, + 0x80001fb1, 0x80001f70, 0x80001f71, 0x000003b1, + 0x800003b9, 0x80001fb3, 0x800003b9, 0x00001f74, + 0x800003b9, 0x000003b7, 0x800003b9, 0x000003ae, + 0x800003b9, 0x000003b7, 0x80000342, 0x000003b7, + 0x00000342, 0x800003b9, 0x80001f72, 0x80001f73, + 0x80001f74, 0x80001f75, 0x000003b7, 0x800003b9, + 0x80001fc3, 0x000003b9, 0x00000308, 0x80000300, + 0x000003b9, 0x00000308, 0x80000301, 0x000003b9, + 0x80000342, 0x000003b9, 0x00000308, 0x80000342, + 0x80001fd0, 0x80001fd1, 0x80001f76, 0x80001f77, + 0x000003c5, 0x00000308, 0x80000300, 0x000003c5, + 0x00000308, 0x80000301, 0x000003c1, 0x80000313, + 0x000003c5, 0x80000342, 0x000003c5, 0x00000308, + 0x80000342, 0x80001fe0, 0x80001fe1, 0x80001f7a, + 0x80001f7b, 0x80001fe5, 0x00001f7c, 0x800003b9, + 0x000003c9, 0x800003b9, 0x000003ce, 0x800003b9, + 0x000003c9, 0x80000342, 0x000003c9, 0x00000342, + 0x800003b9, 0x80001f78, 0x80001f79, 0x80001f7c, + 0x80001f7d, 0x000003c9, 0x800003b9, 0x80001ff3, + 0x800003c9, 0x8000006b, 0x800000e5, 0x80002170, + 0x80002171, 0x80002172, 0x80002173, 0x80002174, + 0x80002175, 0x80002176, 0x80002177, 0x80002178, + 0x80002179, 0x8000217a, 0x8000217b, 0x8000217c, + 0x8000217d, 0x8000217e, 0x8000217f, 0x800024d0, + 0x800024d1, 0x800024d2, 0x800024d3, 0x800024d4, + 0x800024d5, 0x800024d6, 0x800024d7, 0x800024d8, + 0x800024d9, 0x800024da, 0x800024db, 0x800024dc, + 0x800024dd, 0x800024de, 0x800024df, 0x800024e0, + 0x800024e1, 0x800024e2, 0x800024e3, 0x800024e4, + 0x800024e5, 0x800024e6, 0x800024e7, 0x800024e8, + 0x800024e9, 0x00000066, 0x80000066, 0x00000066, + 0x80000069, 0x00000066, 0x8000006c, 0x00000066, + 0x00000066, 0x80000069, 0x00000066, 0x00000066, + 0x8000006c, 0x00000073, 0x80000074, 0x00000073, + 0x80000074, 0x00000574, 0x80000576, 0x00000574, + 0x80000565, 0x00000574, 0x8000056b, 0x0000057e, + 0x80000576, 0x00000574, 0x8000056d, 0x8000ff41, + 0x8000ff42, 0x8000ff43, 0x8000ff44, 0x8000ff45, + 0x8000ff46, 0x8000ff47, 0x8000ff48, 0x8000ff49, + 0x8000ff4a, 0x8000ff4b, 0x8000ff4c, 0x8000ff4d, + 0x8000ff4e, 0x8000ff4f, 0x8000ff50, 0x8000ff51, + 0x8000ff52, 0x8000ff53, 0x8000ff54, 0x8000ff55, + 0x8000ff56, 0x8000ff57, 0x8000ff58, 0x8000ff59, + 0x8000ff5a, 0x80010428, 0x80010429, 0x8001042a, + 0x8001042b, 0x8001042c, 0x8001042d, 0x8001042e, + 0x8001042f, 0x80010430, 0x80010431, 0x80010432, + 0x80010433, 0x80010434, 0x80010435, 0x80010436, + 0x80010437, 0x80010438, 0x80010439, 0x8001043a, + 0x8001043b, 0x8001043c, 0x8001043d, 0x8001043e, + 0x8001043f, 0x80010440, 0x80010441, 0x80010442, + 0x80010443, 0x80010444, 0x80010445, 0x80010446, + 0x80010447, 0x80010448, 0x80010449, 0x8001044a, + 0x8001044b, 0x8001044c, 0x8001044d, +}; + diff --git a/contrib/idn/mdnkit/lib/unormalize.c b/contrib/idn/mdnkit/lib/unormalize.c index 32f9f87f65d..f6973dd62b3 100644 --- a/contrib/idn/mdnkit/lib/unormalize.c +++ b/contrib/idn/mdnkit/lib/unormalize.c @@ -1,9 +1,10 @@ #ifndef lint -static char *rcsid = "$Id: unormalize.c,v 1.14 2000/10/13 05:34:48 ishisone Exp $"; +static char *rcsid = "$Id: unormalize.c,v 1.1 2002/01/02 02:46:50 marka Exp $"; #endif /* - * Copyright (c) 2000 Japan Network Information Center. All rights reserved. + * Copyright (c) 2000,2001 Japan Network Information Center. + * All rights reserved. * * By using this file, you agree to the terms and conditions set forth bellow. * @@ -11,8 +12,8 @@ static char *rcsid = "$Id: unormalize.c,v 1.14 2000/10/13 05:34:48 ishisone Exp * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted @@ -65,9 +66,6 @@ static char *rcsid = "$Id: unormalize.c,v 1.14 2000/10/13 05:34:48 ishisone Exp #include #include #include -#ifdef DEBUG_HASHSTAT -#include -#endif #include #include @@ -85,6 +83,7 @@ static char *rcsid = "$Id: unormalize.c,v 1.14 2000/10/13 05:34:48 ishisone Exp #define WORKBUF_SIZE_MAX 10000 typedef struct { + mdn__unicode_version_t version; /* Unicode version */ int cur; /* pointing now processing character */ int last; /* pointing just after the last character */ int size; /* size of UCS and CLASS array */ @@ -94,7 +93,8 @@ typedef struct { int class_buf[WORKBUF_SIZE]; /* ditto */ } workbuf_t; -static mdn_result_t normalize(int do_composition, int compat, +static mdn_result_t normalize(mdn__unicode_version_t version, + int do_composition, int compat, const char *from, char *to, size_t tolen); static mdn_result_t decompose(workbuf_t *wb, unsigned long c, int compat); static void get_class(workbuf_t *wb); @@ -111,39 +111,47 @@ static void workbuf_removevoid(workbuf_t *wb); mdn_result_t -mdn__unormalize_formc(const char *from, char *to, size_t tolen) { - assert(from != NULL && to != NULL && tolen >= 0); +mdn__unormalize_formc(mdn__unicode_version_t version, + const char *from, char *to, size_t tolen) +{ + assert(version != NULL && from != NULL && to != NULL && tolen >= 0); TRACE(("mdn__unormalize_formc(from=\"%s\", tolen=%d)\n", - mdn_debug_xstring(from, 20), tolen)); - return (normalize(1, 0, from, to, tolen)); + mdn_debug_xstring(from, 20), tolen)); + return (normalize(version, 1, 0, from, to, tolen)); } mdn_result_t -mdn__unormalize_formd(const char *from, char *to, size_t tolen) { - assert(from != NULL && to != NULL && tolen >= 0); +mdn__unormalize_formd(mdn__unicode_version_t version, + const char *from, char *to, size_t tolen) +{ + assert(version != NULL && from != NULL && to != NULL && tolen >= 0); TRACE(("mdn__unormalize_formd(from=\"%s\", tolen=%d)\n", - mdn_debug_xstring(from, 20), tolen)); - return (normalize(0, 0, from, to, tolen)); + mdn_debug_xstring(from, 20), tolen)); + return (normalize(version, 0, 0, from, to, tolen)); } mdn_result_t -mdn__unormalize_formkc(const char *from, char *to, size_t tolen) { - assert(from != NULL && to != NULL && tolen >= 0); +mdn__unormalize_formkc(mdn__unicode_version_t version, + const char *from, char *to, size_t tolen) +{ + assert(version != NULL && from != NULL && to != NULL && tolen >= 0); TRACE(("mdn__unormalize_formkc(from=\"%s\", tolen=%d)\n", - mdn_debug_xstring(from, 20), tolen)); - return (normalize(1, 1, from, to, tolen)); + mdn_debug_xstring(from, 20), tolen)); + return (normalize(version, 1, 1, from, to, tolen)); } mdn_result_t -mdn__unormalize_formkd(const char *from, char *to, size_t tolen) { - assert(from != NULL && to != NULL && tolen >= 0); +mdn__unormalize_formkd(mdn__unicode_version_t version, + const char *from, char *to, size_t tolen) +{ + assert(version != NULL && from != NULL && to != NULL && tolen >= 0); TRACE(("mdn__unormalize_formkd(from=\"%s\", tolen=%d)\n", - mdn_debug_xstring(from, 20), tolen)); - return (normalize(0, 1, from, to, tolen)); + mdn_debug_xstring(from, 20), tolen)); + return (normalize(version, 0, 1, from, to, tolen)); } static mdn_result_t -normalize(int do_composition, int compat, +normalize(mdn__unicode_version_t version, int do_composition, int compat, const char *from, char *to, size_t tolen) { workbuf_t wb; @@ -154,6 +162,7 @@ normalize(int do_composition, int compat, * Initialize working buffer. */ workbuf_init(&wb); + wb.version = version; while (fromlen > 0) { unsigned long c; @@ -254,9 +263,8 @@ decompose(workbuf_t *wb, unsigned long c, int compat) { int dec_len; again: - r = mdn__unicode_decompose(compat, wb->ucs + wb->last, - wb->size - wb->last, - c, &dec_len); + r = mdn__unicode_decompose(wb->version, compat, wb->ucs + wb->last, + wb->size - wb->last, c, &dec_len); switch (r) { case mdn_success: wb->last += dec_len; @@ -283,7 +291,8 @@ get_class(workbuf_t *wb) { int i; for (i = wb->cur; i < wb->last; i++) - wb->class[i] = mdn__unicode_canonicalclass(wb->ucs[i]); + wb->class[i] = mdn__unicode_canonicalclass(wb->version, + wb->ucs[i]); } static void @@ -315,18 +324,20 @@ compose(workbuf_t *wb) { int last_class; int nvoids; int i; + mdn__unicode_version_t ver; assert(wb != NULL && wb->class[0] == 0); cur = wb->cur; ucs = wb->ucs; class = wb->class; + ver = wb->version; /* * If there are no decomposition sequence that begins with * the top character, composition is impossible. */ - if (!mdn__unicode_iscompositecandidate(ucs[0])) + if (!mdn__unicode_iscompositecandidate(ver, ucs[0])) return; last_class = 0; @@ -336,12 +347,13 @@ compose(workbuf_t *wb) { int cl = class[i]; if ((last_class < cl || cl == 0) && - mdn__unicode_compose(ucs[0], ucs[i], &c) == mdn_success) { + mdn__unicode_compose(ver, ucs[0], ucs[i], + &c) == mdn_success) { /* * Replace the top character with the composed one. */ ucs[0] = c; - class[0] = mdn__unicode_canonicalclass(c); + class[0] = mdn__unicode_canonicalclass(ver, c); class[i] = -1; /* void this character */ nvoids++; diff --git a/contrib/idn/mdnkit/lib/utf5.c b/contrib/idn/mdnkit/lib/utf5.c index 76db9e7c73b..45a98a13fbe 100644 --- a/contrib/idn/mdnkit/lib/utf5.c +++ b/contrib/idn/mdnkit/lib/utf5.c @@ -1,5 +1,5 @@ #ifndef lint -static char *rcsid = "$Id: utf5.c,v 1.10 2000/09/20 02:47:33 ishisone Exp $"; +static char *rcsid = "$Id: utf5.c,v 1.1 2002/01/02 02:46:51 marka Exp $"; #endif /* @@ -11,8 +11,8 @@ static char *rcsid = "$Id: utf5.c,v 1.10 2000/09/20 02:47:33 ishisone Exp $"; * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/lib/utf6.c b/contrib/idn/mdnkit/lib/utf6.c index 6f0d9423359..7639cc65215 100644 --- a/contrib/idn/mdnkit/lib/utf6.c +++ b/contrib/idn/mdnkit/lib/utf6.c @@ -1,5 +1,5 @@ #ifndef lint -static char *rcsid = "$Id: utf6.c,v 1.1 2001/06/09 00:30:30 tale Exp $"; +static char *rcsid = "$Id: utf6.c,v 1.2 2002/02/08 05:40:48 marka Exp $"; #endif /* @@ -11,8 +11,8 @@ static char *rcsid = "$Id: utf6.c,v 1.1 2001/06/09 00:30:30 tale Exp $"; * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/lib/utf8.c b/contrib/idn/mdnkit/lib/utf8.c index 2f7c353b171..0b10b192a58 100644 --- a/contrib/idn/mdnkit/lib/utf8.c +++ b/contrib/idn/mdnkit/lib/utf8.c @@ -1,5 +1,5 @@ #ifndef lint -static char *rcsid = "$Id: utf8.c,v 1.12 2000/10/25 06:43:00 ishisone Exp $"; +static char *rcsid = "$Id: utf8.c,v 1.1 2002/01/02 02:46:51 marka Exp $"; #endif /* @@ -11,8 +11,8 @@ static char *rcsid = "$Id: utf8.c,v 1.12 2000/10/25 06:43:00 ishisone Exp $"; * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/lib/util.c b/contrib/idn/mdnkit/lib/util.c index a3cad1a3051..3579cfcfc03 100644 --- a/contrib/idn/mdnkit/lib/util.c +++ b/contrib/idn/mdnkit/lib/util.c @@ -1,5 +1,5 @@ #ifndef lint -static char *rcsid = "$Id: util.c,v 1.8 2001/05/31 05:21:38 ishisone Exp $"; +static char *rcsid = "$Id: util.c,v 1.1 2002/01/02 02:46:51 marka Exp $"; #endif /* @@ -11,8 +11,8 @@ static char *rcsid = "$Id: util.c,v 1.8 2001/05/31 05:21:38 ishisone Exp $"; * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/lib/version.c b/contrib/idn/mdnkit/lib/version.c index 9c7e4893e9d..396b2b0c47b 100644 --- a/contrib/idn/mdnkit/lib/version.c +++ b/contrib/idn/mdnkit/lib/version.c @@ -1,5 +1,5 @@ #ifndef lint -static char *rcsid = "$Id: version.c,v 1.1 2001/06/09 00:30:31 tale Exp $"; +static char *rcsid = "$Id: version.c,v 1.2 2002/02/08 05:40:52 marka Exp $"; #endif /* @@ -11,8 +11,8 @@ static char *rcsid = "$Id: version.c,v 1.1 2001/06/09 00:30:31 tale Exp $"; * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/make.wnt b/contrib/idn/mdnkit/make.wnt index cac83587c4a..02af0801600 100644 --- a/contrib/idn/mdnkit/make.wnt +++ b/contrib/idn/mdnkit/make.wnt @@ -1,4 +1,4 @@ -# $Id: make.wnt,v 1.1 2001/06/09 00:29:31 tale Exp $ +# $Id: make.wnt,v 1.2 2002/02/08 05:38:45 marka Exp $ # Copyright (c) 2000 Japan Network Information Center. All rights reserved. # # By using this file, you agree to the terms and conditions set forth bellow. @@ -7,8 +7,8 @@ # # The following License Terms and Conditions apply, unless a different # license is obtained from Japan Network Information Center ("JPNIC"), -# a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, -# Tokyo, Japan. +# a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, +# Chiyoda-ku, Tokyo 101-0047, Japan. # # 1. Use, Modification and Redistribution (including distribution of any # modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/man/Makefile.in b/contrib/idn/mdnkit/man/Makefile.in index dd217127959..e62e2613d7e 100644 --- a/contrib/idn/mdnkit/man/Makefile.in +++ b/contrib/idn/mdnkit/man/Makefile.in @@ -1,4 +1,4 @@ -# $Id: Makefile.in,v 1.5 2001/05/15 04:44:18 ishisone Exp $ +# $Id: Makefile.in,v 1.1 2002/01/02 02:46:52 marka Exp $ # # Copyright (c) 2000 Japan Network Information Center. All rights reserved. # @@ -8,8 +8,8 @@ # # The following License Terms and Conditions apply, unless a different # license is obtained from Japan Network Information Center ("JPNIC"), -# a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, -# Tokyo, Japan. +# a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, +# Chiyoda-ku, Tokyo 101-0047, Japan. # # 1. Use, Modification and Redistribution (including distribution of any # modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/man/libmdn.3.in b/contrib/idn/mdnkit/man/libmdn.3.in index 9020478d00c..06efb0e3a17 100644 --- a/contrib/idn/mdnkit/man/libmdn.3.in +++ b/contrib/idn/mdnkit/man/libmdn.3.in @@ -1,4 +1,4 @@ -.\" $Id: libmdn.3.in,v 1.1 2001/06/09 00:30:33 tale Exp $ +.\" $Id: libmdn.3.in,v 1.2 2002/02/08 05:40:55 marka Exp $ .\" .\" Copyright (c) 2001 Japan Network Information Center. All rights reserved. .\" @@ -8,8 +8,8 @@ .\" .\" The following License Terms and Conditions apply, unless a different .\" license is obtained from Japan Network Information Center ("JPNIC"), -.\" a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, -.\" Tokyo, Japan. +.\" a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, +.\" Chiyoda-ku, Tokyo 101-0047, Japan. .\" .\" 1. Use, Modification and Redistribution (including distribution of any .\" modified or derived work) in source and/or binary forms is permitted @@ -150,7 +150,7 @@ the encoding process are to be employed. .nf .ft CW #define MDN_LOCALCONV 0x0001 /* Local encoding <-> UTF-8 conversion */ -#define MDN_IDNCONV 0x0002 /* UTF-8 <-> IDN encoding conversion */ +#define MDN_IDNCONV 0x0002 /* UTF-8 <-> ACE conversion */ #define MDN_NAMEPREP 0x0004 /* NAMEPREP */ #define MDN_UNASCHECK 0x0008 /* Unassigned code point check */ #define MDN_DELIMMAP 0x0100 /* Delimiter mapping */ @@ -184,14 +184,15 @@ whose length is specified by .I actions specifies which subprocesses in decoding process take place, as in .BR mdn_encodename , -except that only \f(CWMDN_IDNCONV\fP and \f(CWMDN_LOCALCONV\fP are allowed. +except that only \f(CWMDN_IDNCONV\fP, \f(CWMDN_NAMEPREP\fP and +\f(CWMDN_LOCALCONV\fP are allowed. Details of this decoding process can be found in the section ``NAME DECODING''. .PP For ordinary application, the following macro is provided for the convenience. .RS 2 .nf .ft CW -#define MDN_DECODE_APP (MDN_IDNCONV|MDN_LOCALCONV) +#define MDN_DECODE_APP (MDN_IDNCONV|MDN_NAMEPREP|MDN_LOCALCONV) .ft R .fi .RE @@ -220,11 +221,11 @@ The source encoding must be one of the two encodings below: .IP \- 2 The application's local encoding (codeset). .IP \- 2 -The alternate encoding specified by the configuration file. +ACE specified by the configuration file. .RE The latter is suppored because name decoding process may produce -strings in the alternate encoding when its attempt to convert to the -local encoding fails. See the section ``NAME DECODING'' for details. +ACE strings when its attempt to convert to the local encoding fails. +See the section ``NAME DECODING'' for details. .IP "(2) Local mapping" Apply any locale/language-specific mapping. This process is further divided into two subprocesses: @@ -259,12 +260,12 @@ UTF-8 format. .SH "NAME DECODING" Name decoding is a reverse process of the name encoding. It transforms the specified -multilingual domain name in a special encoding suitable for name +multilingual domain name in a special encoding suitable for name resolution to the normal name string in the application's current codeset. However, name encoding and name decoding are not symmetric. -Name encoding involves NAMEPREP and local mapping in order for the names -to be normalized, but name decoding presumes the name is already -in normalized form, so these subprocesses are not in the decoding process. +Name decoding doesn't perform local mapping. +Both name encoding and decoding do NAMEPREP, but decoding does +it to verfiy a name, while encoding does it to normalize a name. .PP .BR libmdn 's name decoding process consists of the following steps. @@ -272,7 +273,14 @@ name decoding process consists of the following steps. Convert the encoding of the given domain name from a special one designed for representing multilingual domain names (ACE) to Unicode/ISO10646 UTF-8. -.IP "(2) Encoding conversion (UCS to local codeset)" +.IP "(2) NAMEPREP check" +Perform name preparation (NAMEPREP) as also done in name encoding, +and compare the result of NAMEPREP and the given UCS name. +If the NAMEPREP is failed or the names are different, the given +name is considered as invalid domain name. +It contains a character which is never seen in a NAMEPREPed domain +name. +.IP "(3) Encoding conversion (UCS to local codeset)" Convert the encoding of the name from UTF-8 to the application's local codeset. The local codeset is determined by the application's locale. @@ -280,9 +288,8 @@ The local codeset is determined by the application's locale. However, it is possible that the conversion to the application's local codeset fails because the name includes some characters which don't have mappings to the local codeset. -In this case, libmdn tries instead to convert to an encoding -called ``alternate encoding,'' which is specified by the -configuration file. +In this case, libmdn tries instead to convert to ACE specified by +the configuration file. .PP The configuration parameters for this process, are also read from the configuration file diff --git a/contrib/idn/mdnkit/man/mdn.conf.5.in b/contrib/idn/mdnkit/man/mdn.conf.5.in index bb0c9fd2443..c9c17220031 100644 --- a/contrib/idn/mdnkit/man/mdn.conf.5.in +++ b/contrib/idn/mdnkit/man/mdn.conf.5.in @@ -1,4 +1,4 @@ -.\" $Id: mdn.conf.5.in,v 1.1 2001/06/09 00:30:33 tale Exp $" +.\" $Id: mdn.conf.5.in,v 1.2 2002/02/08 05:40:57 marka Exp $" .\" .\" Copyright (c) 2000,2001 Japan Network Information Center. .\" All rights reserved. @@ -9,8 +9,8 @@ .\" .\" The following License Terms and Conditions apply, unless a different .\" license is obtained from Japan Network Information Center ("JPNIC"), -.\" a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, -.\" Tokyo, Japan. +.\" a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, +.\" Chiyoda-ku, Tokyo 101-0047, Japan. .\" .\" 1. Use, Modification and Redistribution (including distribution of any .\" modified or derived work) in source and/or binary forms is permitted @@ -101,9 +101,6 @@ specifies the parameters for these tasks, such as: the encoding of internationalized domain names (IDN encoding). .IP \- 2 NAMEPREP schemes. -.IP \- 2 -the alternative encoding which is used in case the domain name in -the IDN encoding cannot be convertible to the local encoding. .RE .\" .SH SYNTAX @@ -135,24 +132,12 @@ The syntax of this entry is: names can be specified. .RS 2 .IP "\(bu" 2 -``RACE'' -.IP "\(bu" 2 -``BRACE'' +``AMC-ACE-Z'' .IP "\(bu" 2 -``LACE'' +``RACE'' .IP "\(bu" 2 ``DUDE'' .IP "\(bu" 2 -``UTF-6'' -.IP "\(bu" 2 -``AltDUDE'' -.IP "\(bu" 2 -``AMC-ACE-M'' -.IP "\(bu" 2 -``AMC-ACE-O'' -.IP "\(bu" 2 -``AMC-ACE-R'' -.IP "\(bu" 2 ``UTF-8'' .IP "\(bu" 2 Codeset names which iconv_open() library function accepts. Please @@ -185,13 +170,17 @@ the following can be specified. .RS 2 .IP "\(bu" 2 -``nameprep-02'' -.br -This version refers to Internet Draft ``draft-ietf-idn-nameprep-02.txt''. -.IP "\(bu" 2 ``nameprep-03'' .br This version refers to Internet Draft ``draft-ietf-idn-nameprep-03.txt''. +.IP "\(bu" 2 +``nameprep-05'' +.br +This version refers to Internet Draft ``draft-ietf-idn-nameprep-05.txt''. +.IP "\(bu" 2 +``nameprep-06'' +.br +This version refers to Internet Draft ``draft-ietf-idn-nameprep-06.txt''. .RE .PP The NAMEPREP process consists of the following 3 subprocesses. @@ -240,12 +229,15 @@ The syntax of this entry is: specifies the mapping scheme, and currently available schemes are: .RS 2 .TP 4 -\f(CWnameprep-02\fP -Specify mapping defined by NAMEPREP-02 draft. -.TP 4 \f(CWnameprep-03\fP Specify mapping defined by NAMEPREP-03 draft. .TP 4 +\f(CWnameprep-05\fP +Specify mapping defined by NAMEPREP-05 draft. +.TP 4 +\f(CWnameprep-06\fP +Specify mapping defined by NAMEPREP-06 draft. +.TP 4 \f(CWfilemap:\fP\fIpathname\fP Specify mapping defined by the file \fIpathname\fP. See ``MAPFILE FORMAT'' for the format of this file. @@ -271,37 +263,24 @@ is the normalization scheme, and following shows the currently available schemes: .RS 2 .TP 4 -\f(CWnameprep-02\fP -Synonim for \f(CWunicode-form-kc\fR. -.TP 4 \f(CWnameprep-03\fP -Synonim for \f(CWunicode-form-kc\fR. -.TP 4 -\f(CWascii-lowercase\fP -Convert ASCII uppercase letters to lowercase. +Synonim for \f(CWunicode-form-kc/3.0.1\fR. .TP 4 -\f(CWascii-uppercase\fP -Convert ASCII lowercase letters to uppercase. +\f(CWnameprep-05\fP +Synonim for \f(CWunicode-form-kc/3.1.0\fR. .TP 4 -\f(CWunicode-lowercase\fP -Convert Unicode uppercase letters to lowercase, based on ``Unicode -Technical Report #21: Case Mappings''. -Note that only locale-independent conversion is supported. +\f(CWnameprep-06\fP +Synonim for \f(CWunicode-form-kc/3.1.0\fR. .TP 4 -\f(CWunicode-uppercase\fP -Convert Unicode lowercase letters to uppercase, based on ``Unicode -Technical Report #21: Case Mappings''. -Note that only locale-independent conversion is supported. -.TP 4 -\f(CWunicode-foldcase\fP -Perform Unicode case-folding for case-less string matching, -which is also defined by ``Unicode Technical Report #21: Case Mappings''. +\f(CWunicode-form-kc\fP +Perform Unicode normalization called ``Unicode Normalization Form KC'', +defined by the latest standard. .TP 4 -\f(CWunicode-form-c\fP -Perform Unicode normalization called ``Unicode Normalization Form C''. +\f(CWunicode-form-kc/3.0.1\fP +Perform Unicode Normalization Form KC defined by Unicode 3.0.1. .TP 4 -\f(CWunicode-form-kc\fP -Perform Unicode normalization called ``Unicode Normalization Form KC''. +\f(CWunicode-form-kc/3.1.0\fP +Perform Unicode Normalization Form KC defined by Unicode 3.1.0. .RE .PP More than one @@ -324,12 +303,15 @@ specifies the set of prohibited characters. Currently following sets can be specified. .RS 2 .TP 4 -\f(CWnameprep-02\fP -Specify set of prohibited characters defined by NAMEPREP-02 draft. -.TP 4 \f(CWnameprep-03\fP Specify set of prohibited characters defined by NAMEPREP-03 draft. .TP 4 +\f(CWnameprep-05\fP +Specify set of prohibited characters defined by NAMEPREP-05 draft. +.TP 4 +\f(CWnameprep-06\fP +Specify set of prohibited characters defined by NAMEPREP-06 draft. +.TP 4 \f(CWfileset:\fP\fIpathname\fP Specify set of prohibited characters defined by the file \fIpathname\fP. See ``SETFILE FORMAT '' for the format of this file. @@ -355,12 +337,15 @@ specifies the set of unassigned characters. Currently following sets can be specified. .RS 2 .TP 4 -\f(CWnameprep-02\fP -Specify set of unassigned characters defined by NAMEPREP-02 draft. -.TP 4 \f(CWnameprep-03\fP Specify set of unassigned characters defined by NAMEPREP-03 draft. .TP 4 +\f(CWnameprep-05\fP +Specify set of unassigned characters defined by NAMEPREP-05 draft. +.TP 4 +\f(CWnameprep-06\fP +Specify set of unassigned characters defined by NAMEPREP-06 draft. +.TP 4 \f(CWfileset:\fP\fIpathname\fP Specify set of unassigned characters defined by the file \fIpathname\fP. See ``SETFILE FORMAT '' for the format of this file. @@ -371,31 +356,6 @@ When more than one are specified, a character is considered unassigned if it belongs to any one of those sets. .\" -.SH "ALTERNATE-ENCODING ENTRY" -mDNkit provides local codeset coversion feature, and in domain name -decoding process, multilingual domain names are converted to the -local codeset the application is using. -However, it is possible that the conversion fails because some -characters in the domain names have no mapping to the local codeset. -This occurs, for example, when a Japanese application using Japanese -codeset receives a DNS reply containing Chinese characters which -are not included in the Japanese character set. -.PP -Alternative encoding entry specifies the codeset name to be used -instead of the local codeset in case the above problem happens. -.PP -The syntax of this entry is: -.PP -.RS 4 -.nf -\f(CWalternate-encoding \fP\fIencoding\fP -.fi -.RE -.PP -.I encoding -is the name of the codeset. It must be an ASCII-compatible -encoding (ACE) such as ``RACE''. -.\" .SH "ENCODING-ALIAS-FILE ENTRY" Encoding alias entry specifies the file containing codeset name aliases. The aliases can be used just as the real names. @@ -577,11 +537,8 @@ The following shows a sample configuration file. # Use RACE as the IDN encoding. idn-encoding RACE -# Use draft-ietf-idn-nameprep-03.txt as NAMEPREP. -nameprep nameprep-03 - -# Use BRACE as the alternative encoding. -alternate-encoding BRACE +# Use draft-ietf-idn-nameprep-06.txt as NAMEPREP. +nameprep nameprep-06 # Regard U+3002 (IDEOGRAPHIC FULL STOP) and U+FF0E # (FULLWIDTH FULL STOP) as the domain component delimiter diff --git a/contrib/idn/mdnkit/map/Makefile.in b/contrib/idn/mdnkit/map/Makefile.in index 1af5998262b..d2d79452c72 100644 --- a/contrib/idn/mdnkit/map/Makefile.in +++ b/contrib/idn/mdnkit/map/Makefile.in @@ -1,4 +1,4 @@ -# $Id: Makefile.in,v 1.1 2001/06/09 00:30:34 tale Exp $ +# $Id: Makefile.in,v 1.2 2002/02/08 05:40:59 marka Exp $ # # Copyright (c) 2000 Japan Network Information Center. All rights reserved. # @@ -8,8 +8,8 @@ # # The following License Terms and Conditions apply, unless a different # license is obtained from Japan Network Information Center ("JPNIC"), -# a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, -# Tokyo, Japan. +# a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, +# Chiyoda-ku, Tokyo 101-0047, Japan. # # 1. Use, Modification and Redistribution (including distribution of any # modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/map/jp.map b/contrib/idn/mdnkit/map/jp.map index 972641ac629..bebe711bdec 100644 --- a/contrib/idn/mdnkit/map/jp.map +++ b/contrib/idn/mdnkit/map/jp.map @@ -1,4 +1,4 @@ -# $Id: jp.map,v 1.1 2001/06/09 00:30:34 tale Exp $ +# $Id: jp.map,v 1.2 2002/02/08 05:41:00 marka Exp $ # Copyright (c) 2001 Japan Network Information Center. All rights reserved. # # By using this file, you agree to the terms and conditions set forth bellow. @@ -7,8 +7,8 @@ # # The following License Terms and Conditions apply, unless a different # license is obtained from Japan Network Information Center ("JPNIC"), -# a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, -# Tokyo, Japan. +# a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, +# Chiyoda-ku, Tokyo 101-0047, Japan. # # 1. Use, Modification and Redistribution (including distribution of any # modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/mdnsproxy/Makefile.in b/contrib/idn/mdnkit/mdnsproxy/Makefile.in index bfe2e9230c5..fdad8ada405 100644 --- a/contrib/idn/mdnkit/mdnsproxy/Makefile.in +++ b/contrib/idn/mdnkit/mdnsproxy/Makefile.in @@ -1,4 +1,4 @@ -# $Id: Makefile.in,v 1.1 2001/06/09 00:30:35 tale Exp $ +# $Id: Makefile.in,v 1.2 2002/02/08 05:41:01 marka Exp $ # Makefile for mDNS Proxy Server # # Copyright (c) 2000 Japan Network Information Center. All rights reserved. @@ -9,8 +9,8 @@ # # The following License Terms and Conditions apply, unless a different # license is obtained from Japan Network Information Center ("JPNIC"), -# a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, -# Tokyo, Japan. +# a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, +# Chiyoda-ku, Tokyo 101-0047, Japan. # # 1. Use, Modification and Redistribution (including distribution of any # modified or derived work) in source and/or binary forms is permitted @@ -80,14 +80,15 @@ MKINSTALLDIRS = @top_srcdir@/mkinstalldirs SHELL = @SHELL@ LIBTOOL = @LIBTOOL@ +ICONVINC = @ICONVINC@ +ICONVLIB = @ICONVLIB@ +MDNLIB = ../lib/libmdn.la + OPTS = -INCS = -I$(srcdir)/../include -I../include +INCS = -I$(srcdir)/../include -I../include $(ICONVINC) DEFS = -DUNIX -DCONFIG_PATH="\"$(sysconfdir)\"" -DLOGDIR="\"$(logdir)\"" CFLAGS = $(OPTS) $(INCS) $(DEFS) @CFLAGS@ LDFLAGS = $(OPTS) @LDFLAGS@ - -MDNLIB = ../lib/libmdn.la -ICONVLIB = @ICONVLIB@ LIBS = @LIBS@ # diff --git a/contrib/idn/mdnkit/mdnsproxy/acl.c b/contrib/idn/mdnkit/mdnsproxy/acl.c index 8614ad95e6f..2e139dd9137 100644 --- a/contrib/idn/mdnkit/mdnsproxy/acl.c +++ b/contrib/idn/mdnkit/mdnsproxy/acl.c @@ -11,8 +11,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted @@ -61,7 +61,7 @@ */ #ifndef lint -static char *rcsid = "$Id: acl.c,v 1.1 2001/06/09 00:30:35 tale Exp $"; +static char *rcsid = "$Id: acl.c,v 1.2 2002/02/08 05:41:03 marka Exp $"; #endif #include diff --git a/contrib/idn/mdnkit/mdnsproxy/logging.c b/contrib/idn/mdnkit/mdnsproxy/logging.c index 93f528736b0..680ac5749d0 100644 --- a/contrib/idn/mdnkit/mdnsproxy/logging.c +++ b/contrib/idn/mdnkit/mdnsproxy/logging.c @@ -11,8 +11,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted @@ -61,7 +61,7 @@ */ #ifndef lint -static char *rcsid = "$Id: logging.c,v 1.1 2001/06/09 00:30:35 tale Exp $"; +static char *rcsid = "$Id: logging.c,v 1.2 2002/02/08 05:41:04 marka Exp $"; #endif #include @@ -72,6 +72,10 @@ static char *rcsid = "$Id: logging.c,v 1.1 2001/06/09 00:30:35 tale Exp $"; #include #include +#ifdef HAVE_UNISTD_H +#include +#endif + #ifdef HAVE_SYSLOG #include #endif @@ -275,63 +279,64 @@ void log_turnover(void) timeToTurnOver = 0; log_trace_printf("--- log file turned over\n"); log_terminate() ; + logFptr = fopen(logFname, "a") ; } } /* - * libmdn_logproc_file - log hander for libmdn + * libmdn_logproc - log hander for libmdn * output message to a regular log file. */ static void -libmdn_logproc_file(int level, const char *buf) +libmdn_logproc(int level, const char *message) { - switch (level) { - case mdn_log_level_fatal: - FATAL((char *)buf); - break; - case mdn_log_level_warning: - case mdn_log_level_info: - WARN((char *)buf); - break; - case mdn_log_level_trace: - case mdn_log_level_dump: - TRACE((char *)buf); - break; - } -} + char buff[512] ; + char *newline; + time_t t; -/* - * libmdn_logproc_syslog - log hander for libmdn. - * output message to syslog. - */ -static void -libmdn_logproc_syslog(int level, const char *buf) -{ + if (logMode == LOGMODE_SYSLOG) { #ifdef HAVE_SYSLOG - switch (level) { - case mdn_log_level_fatal: - syslog(LOG_ERR, "[FATAL] %s", buf); - break; - case mdn_log_level_error: - syslog(LOG_ERR, "[ERROR] %s", buf); - break; - case mdn_log_level_warning: - syslog(LOG_WARNING, "[WARNING] %s", buf); - break; - case mdn_log_level_info: - syslog(LOG_INFO, "[INFO] %s", buf); - break; - case mdn_log_level_trace: - syslog(LOG_DEBUG, "[TRACE] %s", buf); - break; - case mdn_log_level_dump: - syslog(LOG_DEBUG, "[DUMP] %s", buf); - break; - default: - syslog(LOG_NOTICE, "[LEVEL%d] %s", level, buf); - break; - } + switch (level) { + case mdn_log_level_fatal: + syslog(LOG_ERR, "[FATAL] %s", message); + break; + case mdn_log_level_error: + syslog(LOG_ERR, "[ERROR] %s", message); + break; + case mdn_log_level_warning: + syslog(LOG_WARNING, "[WARNING] %s", message); + break; + case mdn_log_level_info: + syslog(LOG_INFO, "[INFO] %s", message); + break; + case mdn_log_level_trace: + syslog(LOG_DEBUG, "[TRACE] %s", message); + break; + case mdn_log_level_dump: + syslog(LOG_DEBUG, "[DUMP] %s", message); + break; + default: + syslog(LOG_NOTICE, "[LEVEL%d] %s", level, message); + break; + } #endif /* HAVE_SYSLOG */ + + } else if (logMode == LOGMODE_STDERR) { + fputs(message, logFptr) ; + fflush(logFptr) ; + + } else if (logFptr != NULL) { + t = time(NULL); + strcpy(buff, ctime(&t)); + newline = strchr(buff, '\n'); + if (newline != NULL) + *newline = '\0'; + + fputs(buff, logFptr); + fprintf(logFptr, " [%d]: ", (int)getpid()); + fputs(message, logFptr) ; + fflush(logFptr) ; + } } /* @@ -366,6 +371,8 @@ libmdn_string_to_loglevel(char *s) static void log_vprintf(int level, char *fmt, va_list arg_ptr) { char buff[512] ; + char *newline; + time_t t; if (logLevel < level) { return; @@ -375,14 +382,9 @@ static void log_vprintf(int level, char *fmt, va_list arg_ptr) * format message */ - vsprintf(buff, fmt, arg_ptr) ; - -#ifdef DEBUG - printf("%s", buff) ; - fflush(stdout) ; -#endif - if (logMode == LOGMODE_SYSLOG) { + vsprintf(buff, fmt, arg_ptr) ; + #ifdef HAVE_SYSLOG switch (level) { case LOGLEVEL_FATAL: @@ -396,8 +398,21 @@ static void log_vprintf(int level, char *fmt, va_list arg_ptr) break; } #endif /* HAVE_SYSLOG */ + + } else if (logMode == LOGMODE_STDERR) { + vfprintf(logFptr, fmt, arg_ptr) ; + fflush(logFptr) ; + } else if (logFptr != NULL) { - fputs(buff, logFptr) ; + t = time(NULL); + strcpy(buff, ctime(&t)); + newline = strchr(buff, '\n'); + if (newline != NULL) + *newline = '\0'; + + fputs(buff, logFptr); + fprintf(logFptr, " [%d]: ", (int)getpid()); + vfprintf(logFptr, fmt, arg_ptr); fflush(logFptr) ; } @@ -462,8 +477,9 @@ BOOL log_configure(int ac, char *av[]) } } if (fn != NULL) { - if (strlen(fn) + 1 < sizeof(logFname)) { - WARN("log_configure - too long log file name \"%.100s...\"\n", + if (strlen(fn) + 1 > sizeof(logFname)) { + fprintf(stderr, + "log_configure - too long log file name \"%.100s...\"\n", fn); return FALSE; } @@ -471,7 +487,8 @@ BOOL log_configure(int ac, char *av[]) } else if (config_query_value(KW_LOG_FILE, &nArgs, &aArgs, &lineNo)) { if (nArgs != 2) { - WARN("log_configure - wrong # of args for \"%s\", line %d\n", + fprintf(stderr, + "log_configure - wrong # of args for \"%s\", line %d\n", KW_LOG_FILE, lineNo); return FALSE; } @@ -482,12 +499,14 @@ BOOL log_configure(int ac, char *av[]) int level ; if (nArgs != 2) { - WARN("log_configure - wrong # of args for \"%s\", line %d\n", + fprintf(stderr, + "log_configure - wrong # of args for \"%s\", line %d\n", KW_LOG_LEVEL, lineNo); return FALSE; } if ((level = log_strtolevel(aArgs[1])) < 0) { - WARN("log_configure - invalid log level \"%.100s\", line %d\n", + fprintf(stderr, + "log_configure - invalid log level \"%.100s\", line %d\n", aArgs[1], lineNo); return FALSE; } @@ -498,12 +517,14 @@ BOOL log_configure(int ac, char *av[]) int level; if (nArgs != 2) { - WARN("wrong # of args for \"%s\", line %d\n", KW_MDN_LOG_LEVEL, + fprintf(stderr, + "wrong # of args for \"%s\", line %d\n", KW_MDN_LOG_LEVEL, lineNo); return FALSE; } if ((level = libmdn_string_to_loglevel(aArgs[1])) < 0) { - WARN("unknown mdn log level \"%.100s\", line %d\n", aArgs[1], + fprintf(stderr, + "unknown mdn log level \"%.100s\", line %d\n", aArgs[1], lineNo); return FALSE; } @@ -514,11 +535,13 @@ BOOL log_configure(int ac, char *av[]) if (config_query_value(KW_SYSLOG_FACILITY, &nArgs, &aArgs, &lineNo) == TRUE) { if (nArgs != 2) { - WARN("log_configure - wrong # of args for \"%s\", line %d\n", + fprintf(stderr, + "log_configure - wrong # of args for \"%s\", line %d\n", KW_LOG_LEVEL, lineNo); return FALSE; } else if (!log_strtofacility(aArgs[1], &logFacility)) { - WARN("log_configure - unknown syslog facility \"%.100s\", " + fprintf(stderr, + "log_configure - unknown syslog facility \"%.100s\", " "line %d\n", aArgs[1], lineNo); return FALSE; } @@ -526,7 +549,7 @@ BOOL log_configure(int ac, char *av[]) #endif /* HAVE_SYSLOG */ if (*logFname == '\0') { - WARN("log_configure - no logging file specified\n"); + fprintf(stderr, "log_configure - no logging file specified\n"); return FALSE; } @@ -535,23 +558,27 @@ BOOL log_configure(int ac, char *av[]) logMode = LOGMODE_SYSLOG; logFptr = NULL; openlog("mdnsproxy", LOG_NDELAY | LOG_PID, logFacility); - mdn_log_setproc(libmdn_logproc_syslog); syslog(LOG_NOTICE, "** mdnsproxy version %s", mdn_version_getstring()); #else /* not HAVE_SYSLOG */ - WARN("log_configure - syslog is unavailable\n"); + fprintf(stderr, "log_configure - syslog is unavailable\n"); return FALSE; #endif /* not HAVE_SYSLOG */ + } else if (strcmp(logFname, "stderr") == 0) { + logMode = LOGMODE_STDERR; + logFptr = stderr; } else { logMode = LOGMODE_FILE; logFptr = fopen(logFname, "a") ; - mdn_log_setproc(libmdn_logproc_file); if (logFptr == NULL) { - WARN("log_configure - cannot open, the log file\"%.100s\"\n", + fprintf(stderr, + "log_configure - cannot open, the log file\"%.100s\"\n", logFname); return FALSE; } - WARN("** mdnsproxy version %s\n", mdn_version_getstring()); + fprintf(stderr, "** mdnsproxy version %s\n", mdn_version_getstring()); } + mdn_log_setproc(libmdn_logproc); + return TRUE; } diff --git a/contrib/idn/mdnkit/mdnsproxy/make.wnt b/contrib/idn/mdnkit/mdnsproxy/make.wnt index d744dd584a9..63922e9d8cf 100644 --- a/contrib/idn/mdnkit/mdnsproxy/make.wnt +++ b/contrib/idn/mdnkit/mdnsproxy/make.wnt @@ -1,7 +1,7 @@ # # Makefile for mDNS Proxy Server, WINNT version # -# $Id: make.wnt,v 1.1 2001/06/09 00:30:35 tale Exp $ +# $Id: make.wnt,v 1.2 2002/02/08 05:41:05 marka Exp $ # # Copyright (c) 2000 Japan Network Information Center. All rights reserved. # @@ -11,8 +11,8 @@ # # The following License Terms and Conditions apply, unless a different # license is obtained from Japan Network Information Center ("JPNIC"), -# a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, -# Tokyo, Japan. +# a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, +# Chiyoda-ku, Tokyo 101-0047, Japan. # # 1. Use, Modification and Redistribution (including distribution of any # modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/mdnsproxy/mdnsproxy.8.in b/contrib/idn/mdnkit/mdnsproxy/mdnsproxy.8.in index fa094b407c6..7e05ec07bdc 100644 --- a/contrib/idn/mdnkit/mdnsproxy/mdnsproxy.8.in +++ b/contrib/idn/mdnkit/mdnsproxy/mdnsproxy.8.in @@ -1,4 +1,4 @@ -.\" $Id: mdnsproxy.8.in,v 1.1 2001/06/09 00:30:35 tale Exp $ +.\" $Id: mdnsproxy.8.in,v 1.2 2002/02/08 05:41:07 marka Exp $ .\" .\" Copyright (c) 2000 Japan Network Information Center. All rights reserved. .\" @@ -8,8 +8,8 @@ .\" .\" The following License Terms and Conditions apply, unless a different .\" license is obtained from Japan Network Information Center ("JPNIC"), -.\" a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, -.\" Tokyo, Japan. +.\" a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, +.\" Chiyoda-ku, Tokyo 101-0047, Japan. .\" .\" 1. Use, Modification and Redistribution (including distribution of any .\" modified or derived work) in source and/or binary forms is permitted @@ -163,6 +163,8 @@ Sending SIGHUP causes mdnsproxy to close the log file and then reopen it. .PP If is set to ``syslog'', mdnsproxy outputs log messages with syslog. +If is set to ``stderr'', mdnsproxy outputs messages to standard +error. .RE .IP "log-level " .RS diff --git a/contrib/idn/mdnkit/mdnsproxy/mdnsproxy.conf.sample b/contrib/idn/mdnkit/mdnsproxy/mdnsproxy.conf.sample index fe344599d7c..7b5b0607b1b 100644 --- a/contrib/idn/mdnkit/mdnsproxy/mdnsproxy.conf.sample +++ b/contrib/idn/mdnkit/mdnsproxy/mdnsproxy.conf.sample @@ -1,4 +1,4 @@ -# $Id: mdnsproxy.conf.sample,v 1.1 2001/06/09 00:30:35 tale Exp $ +# $Id: mdnsproxy.conf.sample,v 1.2 2002/02/08 05:41:08 marka Exp $ # # Sample mdnsproxy configuration file 'mdnsproxy.conf'. # @@ -56,11 +56,12 @@ client-encoding Shift_JIS # # 'log-file' entry specifies the pathname of the log file. If the string -# `syslog' is given, mdnsproxy will record its events with syslog. +# `syslog' is given, mdnsproxy will record its events with syslog. If +# `stderr' is given, mdnsproxy will record events to standard error. # If the entry is not specified, default log file will be used. # # syntax) -# log-file ( | syslog) +# log-file ( | syslog | stderr) # #log-file /var/log/mdnsproxy.log diff --git a/contrib/idn/mdnkit/mdnsproxy/mdnsproxy.h b/contrib/idn/mdnkit/mdnsproxy/mdnsproxy.h index c63a8cdea3a..6231910f7d8 100644 --- a/contrib/idn/mdnkit/mdnsproxy/mdnsproxy.h +++ b/contrib/idn/mdnkit/mdnsproxy/mdnsproxy.h @@ -11,8 +11,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted @@ -60,7 +60,7 @@ * jurisdiction and venue of Tokyo District Court of Japan. */ -/* $Id: mdnsproxy.h,v 1.1 2001/06/09 00:30:35 tale Exp $ */ +/* $Id: mdnsproxy.h,v 1.2 2002/02/08 05:41:09 marka Exp $ */ #ifndef DNSPROXY_H #define DNSPROXY_H 1 @@ -93,7 +93,8 @@ enum { LOGMODE_FILE = 0, - LOGMODE_SYSLOG = 1 + LOGMODE_SYSLOG = 1, + LOGMODE_STDERR = 2 }; enum { diff --git a/contrib/idn/mdnkit/mdnsproxy/message.c b/contrib/idn/mdnkit/mdnsproxy/message.c index deba583c253..27557b22d9a 100644 --- a/contrib/idn/mdnkit/mdnsproxy/message.c +++ b/contrib/idn/mdnkit/mdnsproxy/message.c @@ -15,8 +15,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted @@ -65,7 +65,7 @@ */ #ifndef lint -static char *rcsid = "$Id: message.c,v 1.1 2001/06/09 00:30:35 tale Exp $"; +static char *rcsid = "$Id: message.c,v 1.2 2002/02/08 05:41:11 marka Exp $"; #endif #include diff --git a/contrib/idn/mdnkit/mdnsproxy/os2main.c b/contrib/idn/mdnkit/mdnsproxy/os2main.c index 30108b8da80..82d07fe534c 100644 --- a/contrib/idn/mdnkit/mdnsproxy/os2main.c +++ b/contrib/idn/mdnkit/mdnsproxy/os2main.c @@ -18,8 +18,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted @@ -68,7 +68,7 @@ */ #ifndef lint -static char *rcsid = "$Id: os2main.c,v 1.1 2001/06/09 00:30:35 tale Exp $"; +static char *rcsid = "$Id: os2main.c,v 1.2 2002/02/08 05:41:12 marka Exp $"; #endif #ifdef OS2 diff --git a/contrib/idn/mdnkit/mdnsproxy/proxycnf.c b/contrib/idn/mdnkit/mdnsproxy/proxycnf.c index b528d9fbe24..e4b53a3e178 100644 --- a/contrib/idn/mdnkit/mdnsproxy/proxycnf.c +++ b/contrib/idn/mdnkit/mdnsproxy/proxycnf.c @@ -11,8 +11,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted @@ -61,7 +61,7 @@ */ #ifndef lint -static char *rcsid = "$Id: proxycnf.c,v 1.1 2001/06/09 00:30:35 tale Exp $"; +static char *rcsid = "$Id: proxycnf.c,v 1.2 2002/02/08 05:41:14 marka Exp $"; #endif #include diff --git a/contrib/idn/mdnkit/mdnsproxy/proxycnf.h b/contrib/idn/mdnkit/mdnsproxy/proxycnf.h index c6cc6345853..fbdea293cf2 100644 --- a/contrib/idn/mdnkit/mdnsproxy/proxycnf.h +++ b/contrib/idn/mdnkit/mdnsproxy/proxycnf.h @@ -11,8 +11,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted @@ -60,7 +60,7 @@ * jurisdiction and venue of Tokyo District Court of Japan. */ -/* $Id: proxycnf.h,v 1.1 2001/06/09 00:30:35 tale Exp $ */ +/* $Id: proxycnf.h,v 1.2 2002/02/08 05:41:15 marka Exp $ */ #ifndef PROXYCNF_H #define PROXYCNF_H 1 diff --git a/contrib/idn/mdnkit/mdnsproxy/server.c b/contrib/idn/mdnkit/mdnsproxy/server.c index 222b782f65d..36b8b6c70f7 100644 --- a/contrib/idn/mdnkit/mdnsproxy/server.c +++ b/contrib/idn/mdnkit/mdnsproxy/server.c @@ -11,8 +11,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted @@ -61,7 +61,7 @@ */ #ifndef lint -static char *rcsid = "$Id: server.c,v 1.1 2001/06/09 00:30:35 tale Exp $"; +static char *rcsid = "$Id: server.c,v 1.2 2002/02/08 05:41:16 marka Exp $"; #endif #include @@ -570,7 +570,7 @@ static NETPTR initUdp(void) setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &one, sizeof(one)) ; if (bind(sock, &addr, sizeof(addr)) < 0) { - WARN("initUdp- cannot bind UDP socket\n") ; + WARN("initUdp - cannot bind UDP socket\n") ; close(sock) ; return NULL ; } diff --git a/contrib/idn/mdnkit/mdnsproxy/translate.c b/contrib/idn/mdnkit/mdnsproxy/translate.c index f3026dcda71..b3e0291f039 100644 --- a/contrib/idn/mdnkit/mdnsproxy/translate.c +++ b/contrib/idn/mdnkit/mdnsproxy/translate.c @@ -7,8 +7,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted @@ -57,7 +57,7 @@ */ #ifndef lint -static char *rcsid = "$Id: translate.c,v 1.1 2001/06/09 00:30:35 tale Exp $"; +static char *rcsid = "$Id: translate.c,v 1.2 2002/02/08 05:41:18 marka Exp $"; #endif #include @@ -149,7 +149,7 @@ translate_initialize(void) */ if (!config_query_value(KW_CLIENT_ENCODING, &ac, &av, &lineNo)) { WARN("\"%s\" not found in the configuration file\n", - KW_ALTERNATE_ENCODING); + KW_CLIENT_ENCODING); return FALSE; } if (ac != 2) { diff --git a/contrib/idn/mdnkit/mdnsproxy/unxmain.c b/contrib/idn/mdnkit/mdnsproxy/unxmain.c index be7237d9d7f..7431536d624 100644 --- a/contrib/idn/mdnkit/mdnsproxy/unxmain.c +++ b/contrib/idn/mdnkit/mdnsproxy/unxmain.c @@ -11,8 +11,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted @@ -61,7 +61,7 @@ */ #ifndef lint -static char *rcsid = "$Id: unxmain.c,v 1.1 2001/06/09 00:30:35 tale Exp $"; +static char *rcsid = "$Id: unxmain.c,v 1.2 2002/02/08 05:41:19 marka Exp $"; #endif #ifdef UNIX @@ -284,7 +284,6 @@ int main(int ac, char *av[]) setsid() ; close(0) ; close(1) ; - close(2) ; break ; default : fprintf(stderr, "start daemon PID %d\n", pid) ; diff --git a/contrib/idn/mdnkit/mdnsproxy/winmain.c b/contrib/idn/mdnkit/mdnsproxy/winmain.c index a487945279d..303ee61e3b8 100644 --- a/contrib/idn/mdnkit/mdnsproxy/winmain.c +++ b/contrib/idn/mdnkit/mdnsproxy/winmain.c @@ -28,8 +28,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted @@ -78,7 +78,7 @@ */ #ifndef lint -static char *rcsid = "$Id: winmain.c,v 1.1 2001/06/09 00:30:36 tale Exp $"; +static char *rcsid = "$Id: winmain.c,v 1.2 2002/02/08 05:41:20 marka Exp $"; #endif #ifdef WIN32 diff --git a/contrib/idn/mdnkit/mdnsproxy/winserv.c b/contrib/idn/mdnkit/mdnsproxy/winserv.c index 3e590a3824a..65a5b355f69 100644 --- a/contrib/idn/mdnkit/mdnsproxy/winserv.c +++ b/contrib/idn/mdnkit/mdnsproxy/winserv.c @@ -11,8 +11,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted @@ -61,7 +61,7 @@ */ #ifndef lint -static char *rcsid = "$Id: winserv.c,v 1.1 2001/06/09 00:30:36 tale Exp $"; +static char *rcsid = "$Id: winserv.c,v 1.2 2002/02/08 05:41:22 marka Exp $"; #endif #ifdef WIN32 diff --git a/contrib/idn/mdnkit/mdnsproxy/winserv.h b/contrib/idn/mdnkit/mdnsproxy/winserv.h index 61496dffa75..021d5b2f897 100644 --- a/contrib/idn/mdnkit/mdnsproxy/winserv.h +++ b/contrib/idn/mdnkit/mdnsproxy/winserv.h @@ -11,8 +11,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted @@ -60,7 +60,7 @@ * jurisdiction and venue of Tokyo District Court of Japan. */ -/* $Id: winserv.h,v 1.1 2001/06/09 00:30:36 tale Exp $ */ +/* $Id: winserv.h,v 1.2 2002/02/08 05:41:23 marka Exp $ */ #ifndef WINSERV_H #define WINSERV_H 1 diff --git a/contrib/idn/mdnkit/mkinstalldirs b/contrib/idn/mdnkit/mkinstalldirs index d8d17b4254b..004629612d6 100644 --- a/contrib/idn/mdnkit/mkinstalldirs +++ b/contrib/idn/mdnkit/mkinstalldirs @@ -4,7 +4,7 @@ # Created: 1993-05-16 # Public domain -# $Id: mkinstalldirs,v 1.1 2001/06/09 00:29:31 tale Exp $ +# $Id: mkinstalldirs,v 1.2 2002/02/08 05:38:46 marka Exp $ errstatus=0 diff --git a/contrib/idn/mdnkit/patch/bind9/bind-9.1.3-patch b/contrib/idn/mdnkit/patch/bind9/bind-9.1.3-patch new file mode 100644 index 00000000000..e1e8a4c9cba --- /dev/null +++ b/contrib/idn/mdnkit/patch/bind9/bind-9.1.3-patch @@ -0,0 +1,4442 @@ +MDN patch for bind-9.1.3 +======================== + +This is a patch file for ISC BIND 9.1.3 to make it work with +internationalized/multilingual domain names. With this patch you'll +get MDN-aware dig/host/nslookup. + +To apply this patch, you should go to the top directory of the BIND +distribution (where you see `README' file), then invoke `patch' +command like this: + + % patch -p0 < this-file + +Then follow the instructions described in `README.mdnkit' to compile +and install. + + +Index: README.mdnkit +diff -c /dev/null mdn/othersrc/bind9/README.mdnkit:1.9 +*** README.mdnkit Mon Aug 27 19:18:29 2001 +--- README.mdnkit Wed Aug 22 15:19:31 2001 +*************** +*** 0 **** +--- 1,124 ---- ++ ++ BIND-9 MDN patch ++ ++ Japan Network Information Center (JPNIC) ++ ++ ++ * What is this patch for? ++ ++ This patch adds multilingual domain name (MDN) support to BIND-9. ++ You'll get multilingualized version of dig/host/nslookup commands. ++ ++ + mulltilingualized dig/host/nslookup ++ dig/host/nslookup accepts non-ASCII domain names in the local ++ codeset (such as Shift JIS, Big5 or ISO8859-1) determined by ++ the locale information. The domain names are normalized and ++ converted to the encoding on the DNS protocol, and sent to DNS ++ servers. The replies are converted back to the local codeset ++ and displayed. ++ ++ ++ * Compilation & installation ++ ++ 0. Prerequisite ++ ++ You have to build and install mDNkit before building this patched version ++ of bind-9. ++ ++ 1. Running configure script ++ ++ Run `configure' in the top directory. See `README' for the ++ configuration options. ++ ++ This patch adds the following 4 options to `configure'. You should ++ at least specify `--with-mdn' option to enable MDN support. ++ ++ --with-mdn[=MDN_PREFIX] ++ To enable MDN support, you have to specify `--with-mdn' option. ++ The argument MDN_PREFIX is the install prefix of mDNkit. If ++ MDN_PREFIX is omitted, PREFIX (derived from `--prefix=PREFIX') ++ is assumed. ++ ++ --with-libiconv[=LIBICONV_PREFIX] ++ Specify this option if mDNkit you have installed links GNU ++ libiconv. The argument LIBICONV_PREFIX is install prefix of ++ GNU libiconv. If the argument is omitted, PREFIX (derived ++ from `--prefix=PREFIX') is assumed. ++ ++ `--with-libiconv' is shorthand option for GNU libiconv. ++ ++ --with-libiconv=/usr/local ++ ++ This is equivalent to: ++ ++ --with-iconv='-L/usr/local/lib -R/usr/local/lib -liconv' ++ ++ `--with-libiconv' assumes that your C compiler has `-R' ++ option, and that the option adds the specified run-time path ++ to an exacutable binary. If `-R' option of your compiler has ++ different meaning, or your compiler lacks the option, you ++ should use `--with-iconv' option instead. Binary command ++ without run-time path information might be unexecutable. ++ In that case, you would see an error message like: ++ ++ error in loading shared libraries: libiconv.so.2: cannot ++ open shared object file ++ ++ If both `--with-libiconv' and `--with-iconv' options are ++ specified, `--with-iconv' is prior to `--with-libiconv'. ++ ++ --with-iconv=ICONV_LIBSPEC ++ If your libc doens't provide iconv(), you need to specify the ++ library containing iconv() with this option. `ICONV_LIBSPEC' ++ is the argument(s) to `cc' or `ld' to link the library, for ++ example, `--with-iconv="-L/usr/local/lib -liconv"'. ++ You don't need to specify the header file directory for "iconv.h" ++ to the compiler, as it isn't included directly by bind-9 with ++ this patch. ++ ++ --with-mdnlib=MDN_LIBSPEC ++ With this option, you can explicitly specify the argument(s) ++ to `cc' or `ld' to link the mDNkit's library, `libmdn'. If ++ this option is not specified, `-L${PREFIX}/lib -lmdn' is ++ assumed, where ${PREFIX} is the installation prefix specified ++ with `--with-mdn' option above. You may need to use this ++ option to specify extra argments, for example, ++ `--with-mdnlib="-L/usr/local/lib -R/usr/local/lib -lmdn"'. ++ ++ Please consult `README' for other configuration options. ++ ++ Note that if you want to specify some extra header file directories, ++ you should use the environment variable STD_CINCLUDES instead of ++ CFLAGS, as described in README. ++ ++ 2. Compilation and installation ++ ++ After running "configure", just do ++ ++ make ++ make install ++ ++ for compiling and installing. ++ ++ 3. Resolver configuration ++ ++ To handle multilingual domain names, you have to specify the ++ properties like: ++ + name encoding used in DNS protocol data ++ + normalization (NAMEPREP) schemes ++ These properties are specified by the mDNkit's configuration file, ++ "mdn.conf". You have to create and set up the file properly. The ++ pathname of the file and contents are described in the manual ++ "mdn.conf". ++ ++ ++ * Contact information ++ ++ Please see http//www.nic.ad.jp/jp/research/idn/ for the latest news ++ about mDNkit and this patch. ++ ++ Bug reports and comments on this kit should be sent to ++ mdnkit-bugs@nic.ad.jp and idn-cmt@nic.ad.jp, respectively. ++ ++ ++ ; $Id: bind-9.1.3-patch,v 1.1 2002/02/08 05:41:25 marka Exp $ +Index: config.h.in +diff -c mdn/othersrc/bind9/config.h.in:1.1.1.5 mdn/othersrc/bind9/config.h.in:1.9 +*** config.h.in Tue Apr 17 14:17:01 2001 +--- config.h.in Thu Jul 26 16:44:20 2001 +*************** +*** 16,22 **** + * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +! /* $Id: bind-9.1.3-patch,v 1.1 2002/02/08 05:41:25 marka Exp $ */ + + /*** + *** This file is not to be included by any public header files, because +--- 16,22 ---- + * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +! /* $Id: bind-9.1.3-patch,v 1.1 2002/02/08 05:41:25 marka Exp $ */ + + /*** + *** This file is not to be included by any public header files, because +*************** +*** 132,137 **** +--- 132,140 ---- + /* define if pthread_attr_getstacksize() is available */ + #undef HAVE_PTHREAD_ATTR_GETSTACKSIZE + ++ /* Define if you have the setlocale function. */ ++ #undef HAVE_SETLOCALE ++ + /* Define if you have the header file. */ + #undef HAVE_FCNTL_H + +*************** +*** 141,146 **** +--- 144,155 ---- + /* Define if you have the header file. */ + #undef HAVE_LINUX_PRCTL_H + ++ /* Define if you have the header file. */ ++ #undef HAVE_LOCALE_H ++ ++ /* Define if you have the header file. */ ++ #undef HAVE_SYS_SELECT_H ++ + /* Define if you have the header file. */ + #undef HAVE_SYS_SOCKIO_H + +*************** +*** 158,160 **** +--- 167,173 ---- + + /* Define if you have the socket library (-lsocket). */ + #undef HAVE_LIBSOCKET ++ ++ /* define if mDNkit support is to be included. */ ++ #undef WITH_MDN ++ +Index: configure +diff -c mdn/othersrc/bind9/configure:1.1.1.7 mdn/othersrc/bind9/configure:1.10 +*** configure Thu Jul 26 15:43:19 2001 +--- configure Thu Jul 26 16:44:20 2001 +*************** +*** 15,21 **** + # NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION + # WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +! # From configure.in Revision: 1.205.2.8 + + ## libtool.m4 - Configure libtool for the target system. -*-Shell-script-*- + ## Copyright (C) 1996-1999, 2000 Free Software Foundation, Inc. +--- 15,21 ---- + # NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION + # WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +! # From configure.in Revision: 1.205.2.9 + + ## libtool.m4 - Configure libtool for the target system. -*-Shell-script-*- + ## Copyright (C) 1996-1999, 2000 Free Software Foundation, Inc. +*************** +*** 153,158 **** +--- 153,166 ---- + --enable-ipv6 use IPv6 [default=autodetect]" + ac_help="$ac_help + --with-kame[=PATH] use Kame IPv6 [default path /usr/local/v6]" ++ ac_help="$ac_help ++ --with-mdn[=MPREFIX] enable MDN support using mDNkit [default PREFIX]" ++ ac_help="$ac_help ++ --with-libiconv[=IPREFIX] GNU libiconv are in IPREFIX [default PREFIX]" ++ ac_help="$ac_help ++ --with-iconv[=LIBSPEC] specify iconv library [default -liconv]" ++ ac_help="$ac_help ++ --with-mdnlib=ARG specify libmdn" + + # Initialize some variables set by options. + # The variables have the same names as the options, with +*************** +*** 693,699 **** + fi + + echo $ac_n "checking host system type""... $ac_c" 1>&6 +! echo "configure:697: checking host system type" >&5 + + host_alias=$host + case "$host_alias" in +--- 701,707 ---- + fi + + echo $ac_n "checking host system type""... $ac_c" 1>&6 +! echo "configure:705: checking host system type" >&5 + + host_alias=$host + case "$host_alias" in +*************** +*** 715,721 **** + + + echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6 +! echo "configure:719: checking whether ${MAKE-make} sets \${MAKE}" >&5 + set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'` + if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +--- 723,729 ---- + + + echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6 +! echo "configure:727: checking whether ${MAKE-make} sets \${MAKE}" >&5 + set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'` + if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +*************** +*** 744,750 **** + # Extract the first word of "ranlib", so it can be a program name with args. + set dummy ranlib; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +! echo "configure:748: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +--- 752,758 ---- + # Extract the first word of "ranlib", so it can be a program name with args. + set dummy ranlib; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +! echo "configure:756: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +*************** +*** 783,789 **** + # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" + # ./install, which can be erroneously created by make from ./install.sh. + echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6 +! echo "configure:787: checking for a BSD compatible install" >&5 + if test -z "$INSTALL"; then + if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +--- 791,797 ---- + # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" + # ./install, which can be erroneously created by make from ./install.sh. + echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6 +! echo "configure:795: checking for a BSD compatible install" >&5 + if test -z "$INSTALL"; then + if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +*************** +*** 844,850 **** + # Extract the first word of "ar", so it can be a program name with args. + set dummy ar; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +! echo "configure:848: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_path_AR'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +--- 852,858 ---- + # Extract the first word of "ar", so it can be a program name with args. + set dummy ar; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +! echo "configure:856: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_path_AR'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +*************** +*** 900,906 **** + # Extract the first word of "$ac_prog", so it can be a program name with args. + set dummy $ac_prog; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +! echo "configure:904: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_path_ETAGS'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +--- 908,914 ---- + # Extract the first word of "$ac_prog", so it can be a program name with args. + set dummy $ac_prog; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +! echo "configure:912: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_path_ETAGS'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +*************** +*** 945,951 **** + # Extract the first word of "$ac_prog", so it can be a program name with args. + set dummy $ac_prog; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +! echo "configure:949: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_path_PERL'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +--- 953,959 ---- + # Extract the first word of "$ac_prog", so it can be a program name with args. + set dummy $ac_prog; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +! echo "configure:957: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_path_PERL'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +*************** +*** 1093,1099 **** + # was --with-openssl specified? + # + echo $ac_n "checking for compatible OpenSSL library""... $ac_c" 1>&6 +! echo "configure:1097: checking for compatible OpenSSL library" >&5 + # Check whether --with-openssl or --without-openssl was given. + if test "${with_openssl+set}" = set; then + withval="$with_openssl" +--- 1101,1107 ---- + # was --with-openssl specified? + # + echo $ac_n "checking for compatible OpenSSL library""... $ac_c" 1>&6 +! echo "configure:1105: checking for compatible OpenSSL library" >&5 + # Check whether --with-openssl or --without-openssl was given. + if test "${with_openssl+set}" = set; then + withval="$with_openssl" +*************** +*** 1184,1190 **** + # was --with-randomdev specified? + # + echo $ac_n "checking for random device""... $ac_c" 1>&6 +! echo "configure:1188: checking for random device" >&5 + # Check whether --with-randomdev or --without-randomdev was given. + if test "${with_randomdev+set}" = set; then + withval="$with_randomdev" +--- 1192,1198 ---- + # was --with-randomdev specified? + # + echo $ac_n "checking for random device""... $ac_c" 1>&6 +! echo "configure:1196: checking for random device" >&5 + # Check whether --with-randomdev or --without-randomdev was given. + if test "${with_randomdev+set}" = set; then + withval="$with_randomdev" +*************** +*** 1231,1237 **** + # Extract the first word of "gcc", so it can be a program name with args. + set dummy gcc; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +! echo "configure:1235: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +--- 1239,1245 ---- + # Extract the first word of "gcc", so it can be a program name with args. + set dummy gcc; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +! echo "configure:1243: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +*************** +*** 1261,1267 **** + # Extract the first word of "cc", so it can be a program name with args. + set dummy cc; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +! echo "configure:1265: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +--- 1269,1275 ---- + # Extract the first word of "cc", so it can be a program name with args. + set dummy cc; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +! echo "configure:1273: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +*************** +*** 1312,1318 **** + # Extract the first word of "cl", so it can be a program name with args. + set dummy cl; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +! echo "configure:1316: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +--- 1320,1326 ---- + # Extract the first word of "cl", so it can be a program name with args. + set dummy cl; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +! echo "configure:1324: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +*************** +*** 1344,1350 **** + fi + + echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 +! echo "configure:1348: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 + + ac_ext=c + # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. +--- 1352,1358 ---- + fi + + echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 +! echo "configure:1356: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 + + ac_ext=c + # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. +*************** +*** 1355,1366 **** + + cat > conftest.$ac_ext << EOF + +! #line 1359 "configure" + #include "confdefs.h" + + main(){return(0);} + EOF +! if { (eval echo configure:1364: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + ac_cv_prog_cc_works=yes + # If we can't run a trivial program, we are probably using a cross compiler. + if (./conftest; exit) 2>/dev/null; then +--- 1363,1374 ---- + + cat > conftest.$ac_ext << EOF + +! #line 1367 "configure" + #include "confdefs.h" + + main(){return(0);} + EOF +! if { (eval echo configure:1372: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + ac_cv_prog_cc_works=yes + # If we can't run a trivial program, we are probably using a cross compiler. + if (./conftest; exit) 2>/dev/null; then +*************** +*** 1386,1397 **** + { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; } + fi + echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 +! echo "configure:1390: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 + echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6 + cross_compiling=$ac_cv_prog_cc_cross + + echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6 +! echo "configure:1395: checking whether we are using GNU C" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +--- 1394,1405 ---- + { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; } + fi + echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 +! echo "configure:1398: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 + echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6 + cross_compiling=$ac_cv_prog_cc_cross + + echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6 +! echo "configure:1403: checking whether we are using GNU C" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +*************** +*** 1400,1406 **** + yes; + #endif + EOF +! if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1404: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then + ac_cv_prog_gcc=yes + else + ac_cv_prog_gcc=no +--- 1408,1414 ---- + yes; + #endif + EOF +! if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1412: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then + ac_cv_prog_gcc=yes + else + ac_cv_prog_gcc=no +*************** +*** 1419,1425 **** + ac_save_CFLAGS="$CFLAGS" + CFLAGS= + echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 +! echo "configure:1423: checking whether ${CC-cc} accepts -g" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +--- 1427,1433 ---- + ac_save_CFLAGS="$CFLAGS" + CFLAGS= + echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 +! echo "configure:1431: checking whether ${CC-cc} accepts -g" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +*************** +*** 1455,1461 **** + # Extract the first word of "$ac_prog", so it can be a program name with args. + set dummy $ac_prog; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +! echo "configure:1459: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_YACC'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +--- 1463,1469 ---- + # Extract the first word of "$ac_prog", so it can be a program name with args. + set dummy $ac_prog; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +! echo "configure:1467: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_YACC'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +*************** +*** 1490,1503 **** + # Find the machine's endian flavor. + # + echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6 +! echo "configure:1494: checking whether byte ordering is bigendian" >&5 + if eval "test \"`echo '$''{'ac_cv_c_bigendian'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + ac_cv_c_bigendian=unknown + # See if sys/param.h defines the BYTE_ORDER macro. + cat > conftest.$ac_ext < + #include +--- 1498,1511 ---- + # Find the machine's endian flavor. + # + echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6 +! echo "configure:1502: checking whether byte ordering is bigendian" >&5 + if eval "test \"`echo '$''{'ac_cv_c_bigendian'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + ac_cv_c_bigendian=unknown + # See if sys/param.h defines the BYTE_ORDER macro. + cat > conftest.$ac_ext < + #include +*************** +*** 1508,1518 **** + #endif + ; return 0; } + EOF +! if { (eval echo configure:1512: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + # It does; now see whether it defined to BIG_ENDIAN or not. + cat > conftest.$ac_ext < + #include +--- 1516,1526 ---- + #endif + ; return 0; } + EOF +! if { (eval echo configure:1520: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + # It does; now see whether it defined to BIG_ENDIAN or not. + cat > conftest.$ac_ext < + #include +*************** +*** 1523,1529 **** + #endif + ; return 0; } + EOF +! if { (eval echo configure:1527: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + ac_cv_c_bigendian=yes + else +--- 1531,1537 ---- + #endif + ; return 0; } + EOF +! if { (eval echo configure:1535: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + ac_cv_c_bigendian=yes + else +*************** +*** 1543,1549 **** + { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } + else + cat > conftest.$ac_ext <&2; exit 1; } + else + cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null + then + ac_cv_c_bigendian=no + else +--- 1564,1570 ---- + exit (u.c[sizeof (long) - 1] == 1); + } + EOF +! if { (eval echo configure:1568: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null + then + ac_cv_c_bigendian=no + else +*************** +*** 1581,1587 **** + + + echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 +! echo "configure:1585: checking how to run the C preprocessor" >&5 + # On Suns, sometimes $CPP names a directory. + if test -n "$CPP" && test -d "$CPP"; then + CPP= +--- 1589,1595 ---- + + + echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 +! echo "configure:1593: checking how to run the C preprocessor" >&5 + # On Suns, sometimes $CPP names a directory. + if test -n "$CPP" && test -d "$CPP"; then + CPP= +*************** +*** 1596,1608 **** + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. + cat > conftest.$ac_ext < + Syntax Error + EOF + ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +! { (eval echo configure:1606: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } + ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` + if test -z "$ac_err"; then + : +--- 1604,1616 ---- + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. + cat > conftest.$ac_ext < + Syntax Error + EOF + ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +! { (eval echo configure:1614: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } + ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` + if test -z "$ac_err"; then + : +*************** +*** 1613,1625 **** + rm -rf conftest* + CPP="${CC-cc} -E -traditional-cpp" + cat > conftest.$ac_ext < + Syntax Error + EOF + ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +! { (eval echo configure:1623: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } + ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` + if test -z "$ac_err"; then + : +--- 1621,1633 ---- + rm -rf conftest* + CPP="${CC-cc} -E -traditional-cpp" + cat > conftest.$ac_ext < + Syntax Error + EOF + ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +! { (eval echo configure:1631: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } + ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` + if test -z "$ac_err"; then + : +*************** +*** 1630,1642 **** + rm -rf conftest* + CPP="${CC-cc} -nologo -E" + cat > conftest.$ac_ext < + Syntax Error + EOF + ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +! { (eval echo configure:1640: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } + ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` + if test -z "$ac_err"; then + : +--- 1638,1650 ---- + rm -rf conftest* + CPP="${CC-cc} -nologo -E" + cat > conftest.$ac_ext < + Syntax Error + EOF + ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +! { (eval echo configure:1648: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } + ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` + if test -z "$ac_err"; then + : +*************** +*** 1661,1672 **** + echo "$ac_t""$CPP" 1>&6 + + echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 +! echo "configure:1665: checking for ANSI C header files" >&5 + if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + cat > conftest.$ac_ext < + #include +--- 1669,1680 ---- + echo "$ac_t""$CPP" 1>&6 + + echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 +! echo "configure:1673: checking for ANSI C header files" >&5 + if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + cat > conftest.$ac_ext < + #include +*************** +*** 1674,1680 **** + #include + EOF + ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +! { (eval echo configure:1678: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } + ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` + if test -z "$ac_err"; then + rm -rf conftest* +--- 1682,1688 ---- + #include + EOF + ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +! { (eval echo configure:1686: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } + ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` + if test -z "$ac_err"; then + rm -rf conftest* +*************** +*** 1691,1697 **** + if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat > conftest.$ac_ext < + EOF +--- 1699,1705 ---- + if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat > conftest.$ac_ext < + EOF +*************** +*** 1709,1715 **** + if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. + cat > conftest.$ac_ext < + EOF +--- 1717,1723 ---- + if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. + cat > conftest.$ac_ext < + EOF +*************** +*** 1730,1736 **** + : + else + cat > conftest.$ac_ext < + #define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +--- 1738,1744 ---- + : + else + cat > conftest.$ac_ext < + #define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +*************** +*** 1741,1747 **** + exit (0); } + + EOF +! if { (eval echo configure:1745: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null + then + : + else +--- 1749,1755 ---- + exit (0); } + + EOF +! if { (eval echo configure:1753: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null + then + : + else +*************** +*** 1769,1785 **** + do + ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` + echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 +! echo "configure:1773: checking for $ac_hdr" >&5 + if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + cat > conftest.$ac_ext < + EOF + ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +! { (eval echo configure:1783: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } + ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` + if test -z "$ac_err"; then + rm -rf conftest* +--- 1777,1793 ---- + do + ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` + echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 +! echo "configure:1781: checking for $ac_hdr" >&5 + if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + cat > conftest.$ac_ext < + EOF + ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +! { (eval echo configure:1791: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } + ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` + if test -z "$ac_err"; then + rm -rf conftest* +*************** +*** 1807,1818 **** + + + echo $ac_n "checking for working const""... $ac_c" 1>&6 +! echo "configure:1811: checking for working const" >&5 + if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + cat > conftest.$ac_ext <&6 +! echo "configure:1819: checking for working const" >&5 + if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + ac_cv_c_const=yes + else +--- 1869,1875 ---- + + ; return 0; } + EOF +! if { (eval echo configure:1873: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + ac_cv_c_const=yes + else +*************** +*** 1882,1902 **** + fi + + echo $ac_n "checking for inline""... $ac_c" 1>&6 +! echo "configure:1886: checking for inline" >&5 + if eval "test \"`echo '$''{'ac_cv_c_inline'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + ac_cv_c_inline=no + for ac_kw in inline __inline__ __inline; do + cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + ac_cv_c_inline=$ac_kw; break + else +--- 1890,1910 ---- + fi + + echo $ac_n "checking for inline""... $ac_c" 1>&6 +! echo "configure:1894: checking for inline" >&5 + if eval "test \"`echo '$''{'ac_cv_c_inline'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + ac_cv_c_inline=no + for ac_kw in inline __inline__ __inline; do + cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + ac_cv_c_inline=$ac_kw; break + else +*************** +*** 1922,1933 **** + esac + + echo $ac_n "checking for size_t""... $ac_c" 1>&6 +! echo "configure:1926: checking for size_t" >&5 + if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + cat > conftest.$ac_ext < + #if STDC_HEADERS +--- 1930,1941 ---- + esac + + echo $ac_n "checking for size_t""... $ac_c" 1>&6 +! echo "configure:1934: checking for size_t" >&5 + if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + cat > conftest.$ac_ext < + #if STDC_HEADERS +*************** +*** 1955,1966 **** + fi + + echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6 +! echo "configure:1959: checking whether time.h and sys/time.h may both be included" >&5 + if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + cat > conftest.$ac_ext < + #include +--- 1963,1974 ---- + fi + + echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6 +! echo "configure:1967: checking whether time.h and sys/time.h may both be included" >&5 + if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + cat > conftest.$ac_ext < + #include +*************** +*** 1969,1975 **** + struct tm *tp; + ; return 0; } + EOF +! if { (eval echo configure:1973: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + ac_cv_header_time=yes + else +--- 1977,1983 ---- + struct tm *tp; + ; return 0; } + EOF +! if { (eval echo configure:1981: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + ac_cv_header_time=yes + else +*************** +*** 1996,2004 **** + case $ac_cv_header_unistd_h in + yes) + echo $ac_n "checking if unistd.h defines fd_set""... $ac_c" 1>&6 +! echo "configure:2000: checking if unistd.h defines fd_set" >&5 + cat > conftest.$ac_ext < +--- 2004,2012 ---- + case $ac_cv_header_unistd_h in + yes) + echo $ac_n "checking if unistd.h defines fd_set""... $ac_c" 1>&6 +! echo "configure:2008: checking if unistd.h defines fd_set" >&5 + cat > conftest.$ac_ext < +*************** +*** 2006,2012 **** + fd_set read_set; return (0); + ; return 0; } + EOF +! if { (eval echo configure:2010: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6 + ISC_PLATFORM_NEEDSYSSELECTH="#undef ISC_PLATFORM_NEEDSYSSELECTH" +--- 2014,2020 ---- + fd_set read_set; return (0); + ; return 0; } + EOF +! if { (eval echo configure:2018: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6 + ISC_PLATFORM_NEEDSYSSELECTH="#undef ISC_PLATFORM_NEEDSYSSELECTH" +*************** +*** 2049,2055 **** + # First, decide whether to use multithreading or not. + # + echo $ac_n "checking whether to look for thread support""... $ac_c" 1>&6 +! echo "configure:2053: checking whether to look for thread support" >&5 + # Check whether --enable-threads or --disable-threads was given. + if test "${enable_threads+set}" = set; then + enableval="$enable_threads" +--- 2057,2063 ---- + # First, decide whether to use multithreading or not. + # + echo $ac_n "checking whether to look for thread support""... $ac_c" 1>&6 +! echo "configure:2061: checking whether to look for thread support" >&5 + # Check whether --enable-threads or --disable-threads was given. + if test "${enable_threads+set}" = set; then + enableval="$enable_threads" +*************** +*** 2086,2092 **** + # experiment with it. + CC="gcc" + echo $ac_n "checking which NetBSD thread library to use""... $ac_c" 1>&6 +! echo "configure:2090: checking which NetBSD thread library to use" >&5 + + # Check whether --with-ptl2 or --without-ptl2 was given. + if test "${with_ptl2+set}" = set; then +--- 2094,2100 ---- + # experiment with it. + CC="gcc" + echo $ac_n "checking which NetBSD thread library to use""... $ac_c" 1>&6 +! echo "configure:2098: checking which NetBSD thread library to use" >&5 + + # Check whether --with-ptl2 or --without-ptl2 was given. + if test "${with_ptl2+set}" = set; then +*************** +*** 2125,2131 **** + ;; + *) + echo $ac_n "checking for pthread_create in -lpthread""... $ac_c" 1>&6 +! echo "configure:2129: checking for pthread_create in -lpthread" >&5 + ac_lib_var=`echo pthread'_'pthread_create | sed 'y%./+-%__p_%'` + if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +--- 2133,2139 ---- + ;; + *) + echo $ac_n "checking for pthread_create in -lpthread""... $ac_c" 1>&6 +! echo "configure:2137: checking for pthread_create in -lpthread" >&5 + ac_lib_var=`echo pthread'_'pthread_create | sed 'y%./+-%__p_%'` + if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +*************** +*** 2133,2139 **** + ac_save_LIBS="$LIBS" + LIBS="-lpthread $LIBS" + cat > conftest.$ac_ext < conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" + else +--- 2152,2158 ---- + pthread_create() + ; return 0; } + EOF +! if { (eval echo configure:2156: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" + else +*************** +*** 2170,2176 **** + else + echo "$ac_t""no" 1>&6 + echo $ac_n "checking for __pthread_create in -lpthread""... $ac_c" 1>&6 +! echo "configure:2174: checking for __pthread_create in -lpthread" >&5 + ac_lib_var=`echo pthread'_'__pthread_create | sed 'y%./+-%__p_%'` + if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +--- 2178,2184 ---- + else + echo "$ac_t""no" 1>&6 + echo $ac_n "checking for __pthread_create in -lpthread""... $ac_c" 1>&6 +! echo "configure:2182: checking for __pthread_create in -lpthread" >&5 + ac_lib_var=`echo pthread'_'__pthread_create | sed 'y%./+-%__p_%'` + if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +*************** +*** 2178,2184 **** + ac_save_LIBS="$LIBS" + LIBS="-lpthread $LIBS" + cat > conftest.$ac_ext < conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" + else +--- 2197,2203 ---- + __pthread_create() + ; return 0; } + EOF +! if { (eval echo configure:2201: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" + else +*************** +*** 2215,2221 **** + else + echo "$ac_t""no" 1>&6 + echo $ac_n "checking for __pthread_create_system in -lpthread""... $ac_c" 1>&6 +! echo "configure:2219: checking for __pthread_create_system in -lpthread" >&5 + ac_lib_var=`echo pthread'_'__pthread_create_system | sed 'y%./+-%__p_%'` + if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +--- 2223,2229 ---- + else + echo "$ac_t""no" 1>&6 + echo $ac_n "checking for __pthread_create_system in -lpthread""... $ac_c" 1>&6 +! echo "configure:2227: checking for __pthread_create_system in -lpthread" >&5 + ac_lib_var=`echo pthread'_'__pthread_create_system | sed 'y%./+-%__p_%'` + if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +*************** +*** 2223,2229 **** + ac_save_LIBS="$LIBS" + LIBS="-lpthread $LIBS" + cat > conftest.$ac_ext < conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" + else +--- 2242,2248 ---- + __pthread_create_system() + ; return 0; } + EOF +! if { (eval echo configure:2246: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" + else +*************** +*** 2260,2266 **** + else + echo "$ac_t""no" 1>&6 + echo $ac_n "checking for pthread_create in -lc_r""... $ac_c" 1>&6 +! echo "configure:2264: checking for pthread_create in -lc_r" >&5 + ac_lib_var=`echo c_r'_'pthread_create | sed 'y%./+-%__p_%'` + if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +--- 2268,2274 ---- + else + echo "$ac_t""no" 1>&6 + echo $ac_n "checking for pthread_create in -lc_r""... $ac_c" 1>&6 +! echo "configure:2272: checking for pthread_create in -lc_r" >&5 + ac_lib_var=`echo c_r'_'pthread_create | sed 'y%./+-%__p_%'` + if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +*************** +*** 2268,2274 **** + ac_save_LIBS="$LIBS" + LIBS="-lc_r $LIBS" + cat > conftest.$ac_ext < conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" + else +--- 2287,2293 ---- + pthread_create() + ; return 0; } + EOF +! if { (eval echo configure:2291: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" + else +*************** +*** 2305,2311 **** + else + echo "$ac_t""no" 1>&6 + echo $ac_n "checking for pthread_create in -lc""... $ac_c" 1>&6 +! echo "configure:2309: checking for pthread_create in -lc" >&5 + ac_lib_var=`echo c'_'pthread_create | sed 'y%./+-%__p_%'` + if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +--- 2313,2319 ---- + else + echo "$ac_t""no" 1>&6 + echo $ac_n "checking for pthread_create in -lc""... $ac_c" 1>&6 +! echo "configure:2317: checking for pthread_create in -lc" >&5 + ac_lib_var=`echo c'_'pthread_create | sed 'y%./+-%__p_%'` + if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +*************** +*** 2313,2319 **** + ac_save_LIBS="$LIBS" + LIBS="-lc $LIBS" + cat > conftest.$ac_ext < conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" + else +--- 2332,2338 ---- + pthread_create() + ; return 0; } + EOF +! if { (eval echo configure:2336: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" + else +*************** +*** 2370,2376 **** + # We'd like to use sigwait() too + # + echo $ac_n "checking for sigwait in -lc""... $ac_c" 1>&6 +! echo "configure:2374: checking for sigwait in -lc" >&5 + ac_lib_var=`echo c'_'sigwait | sed 'y%./+-%__p_%'` + if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +--- 2378,2384 ---- + # We'd like to use sigwait() too + # + echo $ac_n "checking for sigwait in -lc""... $ac_c" 1>&6 +! echo "configure:2382: checking for sigwait in -lc" >&5 + ac_lib_var=`echo c'_'sigwait | sed 'y%./+-%__p_%'` + if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +*************** +*** 2378,2384 **** + ac_save_LIBS="$LIBS" + LIBS="-lc $LIBS" + cat > conftest.$ac_ext < conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" + else +--- 2397,2403 ---- + sigwait() + ; return 0; } + EOF +! if { (eval echo configure:2401: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" + else +*************** +*** 2411,2417 **** + else + echo "$ac_t""no" 1>&6 + echo $ac_n "checking for sigwait in -lpthread""... $ac_c" 1>&6 +! echo "configure:2415: checking for sigwait in -lpthread" >&5 + ac_lib_var=`echo pthread'_'sigwait | sed 'y%./+-%__p_%'` + if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +--- 2419,2425 ---- + else + echo "$ac_t""no" 1>&6 + echo $ac_n "checking for sigwait in -lpthread""... $ac_c" 1>&6 +! echo "configure:2423: checking for sigwait in -lpthread" >&5 + ac_lib_var=`echo pthread'_'sigwait | sed 'y%./+-%__p_%'` + if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +*************** +*** 2419,2425 **** + ac_save_LIBS="$LIBS" + LIBS="-lpthread $LIBS" + cat > conftest.$ac_ext < conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" + else +--- 2438,2444 ---- + sigwait() + ; return 0; } + EOF +! if { (eval echo configure:2442: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" + else +*************** +*** 2452,2458 **** + else + echo "$ac_t""no" 1>&6 + echo $ac_n "checking for _Psigwait in -lpthread""... $ac_c" 1>&6 +! echo "configure:2456: checking for _Psigwait in -lpthread" >&5 + ac_lib_var=`echo pthread'_'_Psigwait | sed 'y%./+-%__p_%'` + if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +--- 2460,2466 ---- + else + echo "$ac_t""no" 1>&6 + echo $ac_n "checking for _Psigwait in -lpthread""... $ac_c" 1>&6 +! echo "configure:2464: checking for _Psigwait in -lpthread" >&5 + ac_lib_var=`echo pthread'_'_Psigwait | sed 'y%./+-%__p_%'` + if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +*************** +*** 2460,2466 **** + ac_save_LIBS="$LIBS" + LIBS="-lpthread $LIBS" + cat > conftest.$ac_ext < conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" + else +--- 2479,2485 ---- + _Psigwait() + ; return 0; } + EOF +! if { (eval echo configure:2483: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" + else +*************** +*** 2501,2512 **** + + + echo $ac_n "checking for pthread_attr_getstacksize""... $ac_c" 1>&6 +! echo "configure:2505: checking for pthread_attr_getstacksize" >&5 + if eval "test \"`echo '$''{'ac_cv_func_pthread_attr_getstacksize'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + cat > conftest.$ac_ext <&6 +! echo "configure:2513: checking for pthread_attr_getstacksize" >&5 + if eval "test \"`echo '$''{'ac_cv_func_pthread_attr_getstacksize'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_pthread_attr_getstacksize=yes" + else +--- 2537,2543 ---- + + ; return 0; } + EOF +! if { (eval echo configure:2541: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_pthread_attr_getstacksize=yes" + else +*************** +*** 2561,2567 **** + # + *-freebsd*) + echo $ac_n "checking for sigwait in -lc_r""... $ac_c" 1>&6 +! echo "configure:2565: checking for sigwait in -lc_r" >&5 + ac_lib_var=`echo c_r'_'sigwait | sed 'y%./+-%__p_%'` + if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +--- 2569,2575 ---- + # + *-freebsd*) + echo $ac_n "checking for sigwait in -lc_r""... $ac_c" 1>&6 +! echo "configure:2573: checking for sigwait in -lc_r" >&5 + ac_lib_var=`echo c_r'_'sigwait | sed 'y%./+-%__p_%'` + if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +*************** +*** 2569,2575 **** + ac_save_LIBS="$LIBS" + LIBS="-lc_r $LIBS" + cat > conftest.$ac_ext < conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" + else +--- 2588,2594 ---- + sigwait() + ; return 0; } + EOF +! if { (eval echo configure:2592: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" + else +*************** +*** 2635,2646 **** + EOF + + echo $ac_n "checking for pthread_setconcurrency""... $ac_c" 1>&6 +! echo "configure:2639: checking for pthread_setconcurrency" >&5 + if eval "test \"`echo '$''{'ac_cv_func_pthread_setconcurrency'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + cat > conftest.$ac_ext <&6 +! echo "configure:2647: checking for pthread_setconcurrency" >&5 + if eval "test \"`echo '$''{'ac_cv_func_pthread_setconcurrency'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_pthread_setconcurrency=yes" + else +--- 2671,2677 ---- + + ; return 0; } + EOF +! if { (eval echo configure:2675: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_pthread_setconcurrency=yes" + else +*************** +*** 2701,2712 **** + # Look for sysconf to allow detection of the number of processors. + # + echo $ac_n "checking for sysconf""... $ac_c" 1>&6 +! echo "configure:2705: checking for sysconf" >&5 + if eval "test \"`echo '$''{'ac_cv_func_sysconf'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + cat > conftest.$ac_ext <&6 +! echo "configure:2713: checking for sysconf" >&5 + if eval "test \"`echo '$''{'ac_cv_func_sysconf'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_sysconf=yes" + else +--- 2737,2743 ---- + + ; return 0; } + EOF +! if { (eval echo configure:2741: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_sysconf=yes" + else +*************** +*** 2806,2817 **** + # even if compiled with --disable-threads. + # + echo $ac_n "checking for flockfile""... $ac_c" 1>&6 +! echo "configure:2810: checking for flockfile" >&5 + if eval "test \"`echo '$''{'ac_cv_func_flockfile'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + cat > conftest.$ac_ext <&6 +! echo "configure:2818: checking for flockfile" >&5 + if eval "test \"`echo '$''{'ac_cv_func_flockfile'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_flockfile=yes" + else +--- 2842,2848 ---- + + ; return 0; } + EOF +! if { (eval echo configure:2846: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_flockfile=yes" + else +*************** +*** 2861,2867 **** + # Indicate what the final decision was regarding threads. + # + echo $ac_n "checking whether to build with threads""... $ac_c" 1>&6 +! echo "configure:2865: checking whether to build with threads" >&5 + if $use_threads; then + echo "$ac_t""yes" 1>&6 + else +--- 2869,2875 ---- + # Indicate what the final decision was regarding threads. + # + echo $ac_n "checking whether to build with threads""... $ac_c" 1>&6 +! echo "configure:2873: checking whether to build with threads" >&5 + if $use_threads; then + echo "$ac_t""yes" 1>&6 + else +*************** +*** 2937,2948 **** + # NLS + # + echo $ac_n "checking for catgets""... $ac_c" 1>&6 +! echo "configure:2941: checking for catgets" >&5 + if eval "test \"`echo '$''{'ac_cv_func_catgets'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + cat > conftest.$ac_ext <&6 +! echo "configure:2949: checking for catgets" >&5 + if eval "test \"`echo '$''{'ac_cv_func_catgets'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_catgets=yes" + else +--- 2973,2979 ---- + + ; return 0; } + EOF +! if { (eval echo configure:2977: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_catgets=yes" + else +*************** +*** 3003,3009 **** + ;; + *) + echo $ac_n "checking for socket in -lsocket""... $ac_c" 1>&6 +! echo "configure:3007: checking for socket in -lsocket" >&5 + ac_lib_var=`echo socket'_'socket | sed 'y%./+-%__p_%'` + if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +--- 3011,3017 ---- + ;; + *) + echo $ac_n "checking for socket in -lsocket""... $ac_c" 1>&6 +! echo "configure:3015: checking for socket in -lsocket" >&5 + ac_lib_var=`echo socket'_'socket | sed 'y%./+-%__p_%'` + if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +*************** +*** 3011,3017 **** + ac_save_LIBS="$LIBS" + LIBS="-lsocket $LIBS" + cat > conftest.$ac_ext < conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" + else +--- 3030,3036 ---- + socket() + ; return 0; } + EOF +! if { (eval echo configure:3034: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" + else +*************** +*** 3050,3056 **** + fi + + echo $ac_n "checking for inet_ntoa in -lnsl""... $ac_c" 1>&6 +! echo "configure:3054: checking for inet_ntoa in -lnsl" >&5 + ac_lib_var=`echo nsl'_'inet_ntoa | sed 'y%./+-%__p_%'` + if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +--- 3058,3064 ---- + fi + + echo $ac_n "checking for inet_ntoa in -lnsl""... $ac_c" 1>&6 +! echo "configure:3062: checking for inet_ntoa in -lnsl" >&5 + ac_lib_var=`echo nsl'_'inet_ntoa | sed 'y%./+-%__p_%'` + if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +*************** +*** 3058,3064 **** + ac_save_LIBS="$LIBS" + LIBS="-lnsl $LIBS" + cat > conftest.$ac_ext < conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" + else +--- 3077,3083 ---- + inet_ntoa() + ; return 0; } + EOF +! if { (eval echo configure:3081: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" + else +*************** +*** 3184,3190 **** + fi + + echo $ac_n "checking build system type""... $ac_c" 1>&6 +! echo "configure:3188: checking build system type" >&5 + + build_alias=$build + case "$build_alias" in +--- 3192,3198 ---- + fi + + echo $ac_n "checking build system type""... $ac_c" 1>&6 +! echo "configure:3196: checking build system type" >&5 + + build_alias=$build + case "$build_alias" in +*************** +*** 3213,3219 **** + if test "$ac_cv_prog_gcc" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + echo $ac_n "checking for ld used by GCC""... $ac_c" 1>&6 +! echo "configure:3217: checking for ld used by GCC" >&5 + ac_prog=`($CC -print-prog-name=ld) 2>&5` + case "$ac_prog" in + # Accept absolute paths. +--- 3221,3227 ---- + if test "$ac_cv_prog_gcc" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + echo $ac_n "checking for ld used by GCC""... $ac_c" 1>&6 +! echo "configure:3225: checking for ld used by GCC" >&5 + ac_prog=`($CC -print-prog-name=ld) 2>&5` + case "$ac_prog" in + # Accept absolute paths. +*************** +*** 3237,3246 **** + esac + elif test "$with_gnu_ld" = yes; then + echo $ac_n "checking for GNU ld""... $ac_c" 1>&6 +! echo "configure:3241: checking for GNU ld" >&5 + else + echo $ac_n "checking for non-GNU ld""... $ac_c" 1>&6 +! echo "configure:3244: checking for non-GNU ld" >&5 + fi + if eval "test \"`echo '$''{'ac_cv_path_LD'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +--- 3245,3254 ---- + esac + elif test "$with_gnu_ld" = yes; then + echo $ac_n "checking for GNU ld""... $ac_c" 1>&6 +! echo "configure:3249: checking for GNU ld" >&5 + else + echo $ac_n "checking for non-GNU ld""... $ac_c" 1>&6 +! echo "configure:3252: checking for non-GNU ld" >&5 + fi + if eval "test \"`echo '$''{'ac_cv_path_LD'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +*************** +*** 3275,3281 **** + fi + test -z "$LD" && { echo "configure: error: no acceptable ld found in \$PATH" 1>&2; exit 1; } + echo $ac_n "checking if the linker ($LD) is GNU ld""... $ac_c" 1>&6 +! echo "configure:3279: checking if the linker ($LD) is GNU ld" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_gnu_ld'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +--- 3283,3289 ---- + fi + test -z "$LD" && { echo "configure: error: no acceptable ld found in \$PATH" 1>&2; exit 1; } + echo $ac_n "checking if the linker ($LD) is GNU ld""... $ac_c" 1>&6 +! echo "configure:3287: checking if the linker ($LD) is GNU ld" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_gnu_ld'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +*************** +*** 3291,3297 **** + + + echo $ac_n "checking for BSD-compatible nm""... $ac_c" 1>&6 +! echo "configure:3295: checking for BSD-compatible nm" >&5 + if eval "test \"`echo '$''{'ac_cv_path_NM'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +--- 3299,3305 ---- + + + echo $ac_n "checking for BSD-compatible nm""... $ac_c" 1>&6 +! echo "configure:3303: checking for BSD-compatible nm" >&5 + if eval "test \"`echo '$''{'ac_cv_path_NM'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +*************** +*** 3327,3333 **** + echo "$ac_t""$NM" 1>&6 + + echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6 +! echo "configure:3331: checking whether ln -s works" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_LN_S'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +--- 3335,3341 ---- + echo "$ac_t""$NM" 1>&6 + + echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6 +! echo "configure:3339: checking whether ln -s works" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_LN_S'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +*************** +*** 3376,3383 **** + case "$lt_target" in + *-*-irix6*) + # Find out which ABI we are using. +! echo '#line 3380 "configure"' > conftest.$ac_ext +! if { (eval echo configure:3381: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + case "`/usr/bin/file conftest.o`" in + *32-bit*) + LD="${LD-ld} -32" +--- 3384,3391 ---- + case "$lt_target" in + *-*-irix6*) + # Find out which ABI we are using. +! echo '#line 3388 "configure"' > conftest.$ac_ext +! if { (eval echo configure:3389: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + case "`/usr/bin/file conftest.o`" in + *32-bit*) + LD="${LD-ld} -32" +*************** +*** 3398,3416 **** + SAVE_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -belf" + echo $ac_n "checking whether the C compiler needs -belf""... $ac_c" 1>&6 +! echo "configure:3402: checking whether the C compiler needs -belf" >&5 + if eval "test \"`echo '$''{'lt_cv_cc_needs_belf'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + lt_cv_cc_needs_belf=yes + else +--- 3406,3424 ---- + SAVE_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -belf" + echo $ac_n "checking whether the C compiler needs -belf""... $ac_c" 1>&6 +! echo "configure:3410: checking whether the C compiler needs -belf" >&5 + if eval "test \"`echo '$''{'lt_cv_cc_needs_belf'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + lt_cv_cc_needs_belf=yes + else +*************** +*** 3561,3569 **** + # the right suffix on the files. + # + echo $ac_n "checking for IPv6 structures""... $ac_c" 1>&6 +! echo "configure:3565: checking for IPv6 structures" >&5 + cat > conftest.$ac_ext < +--- 3569,3577 ---- + # the right suffix on the files. + # + echo $ac_n "checking for IPv6 structures""... $ac_c" 1>&6 +! echo "configure:3573: checking for IPv6 structures" >&5 + cat > conftest.$ac_ext < +*************** +*** 3573,3579 **** + struct sockaddr_in6 sin6; return (0); + ; return 0; } + EOF +! if { (eval echo configure:3577: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6 + found_ipv6=yes +--- 3581,3587 ---- + struct sockaddr_in6 sin6; return (0); + ; return 0; } + EOF +! if { (eval echo configure:3585: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6 + found_ipv6=yes +*************** +*** 3591,3597 **** + # This is done before other IPv6 linking tests to LIBS is properly set. + # + echo $ac_n "checking for Kame IPv6 support""... $ac_c" 1>&6 +! echo "configure:3595: checking for Kame IPv6 support" >&5 + # Check whether --with-kame or --without-kame was given. + if test "${with_kame+set}" = set; then + withval="$with_kame" +--- 3599,3605 ---- + # This is done before other IPv6 linking tests to LIBS is properly set. + # + echo $ac_n "checking for Kame IPv6 support""... $ac_c" 1>&6 +! echo "configure:3603: checking for Kame IPv6 support" >&5 + # Check whether --with-kame or --without-kame was given. + if test "${with_kame+set}" = set; then + withval="$with_kame" +*************** +*** 3681,3689 **** + LWRES_PLATFORM_HAVEIPV6="#define LWRES_PLATFORM_HAVEIPV6 1" + + echo $ac_n "checking for in6_addr""... $ac_c" 1>&6 +! echo "configure:3685: checking for in6_addr" >&5 + cat > conftest.$ac_ext < +--- 3689,3697 ---- + LWRES_PLATFORM_HAVEIPV6="#define LWRES_PLATFORM_HAVEIPV6 1" + + echo $ac_n "checking for in6_addr""... $ac_c" 1>&6 +! echo "configure:3693: checking for in6_addr" >&5 + cat > conftest.$ac_ext < +*************** +*** 3696,3702 **** + struct in6_addr in6; return (0); + ; return 0; } + EOF +! if { (eval echo configure:3700: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6 + ISC_PLATFORM_HAVEINADDR6="#undef ISC_PLATFORM_HAVEINADDR6" +--- 3704,3710 ---- + struct in6_addr in6; return (0); + ; return 0; } + EOF +! if { (eval echo configure:3708: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6 + ISC_PLATFORM_HAVEINADDR6="#undef ISC_PLATFORM_HAVEINADDR6" +*************** +*** 3714,3722 **** + rm -f conftest* + + echo $ac_n "checking for in6addr_any""... $ac_c" 1>&6 +! echo "configure:3718: checking for in6addr_any" >&5 + cat > conftest.$ac_ext < +--- 3722,3730 ---- + rm -f conftest* + + echo $ac_n "checking for in6addr_any""... $ac_c" 1>&6 +! echo "configure:3726: checking for in6addr_any" >&5 + cat > conftest.$ac_ext < +*************** +*** 3730,3736 **** + struct in6_addr in6; in6 = in6addr_any; return (0); + ; return 0; } + EOF +! if { (eval echo configure:3734: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6 + ISC_PLATFORM_NEEDIN6ADDRANY="#undef ISC_PLATFORM_NEEDIN6ADDRANY" +--- 3738,3744 ---- + struct in6_addr in6; in6 = in6addr_any; return (0); + ; return 0; } + EOF +! if { (eval echo configure:3742: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6 + ISC_PLATFORM_NEEDIN6ADDRANY="#undef ISC_PLATFORM_NEEDIN6ADDRANY" +*************** +*** 3746,3754 **** + rm -f conftest* + + echo $ac_n "checking for sin6_scope_id in struct sockaddr_in6""... $ac_c" 1>&6 +! echo "configure:3750: checking for sin6_scope_id in struct sockaddr_in6" >&5 + cat > conftest.$ac_ext < +--- 3754,3762 ---- + rm -f conftest* + + echo $ac_n "checking for sin6_scope_id in struct sockaddr_in6""... $ac_c" 1>&6 +! echo "configure:3758: checking for sin6_scope_id in struct sockaddr_in6" >&5 + cat > conftest.$ac_ext < +*************** +*** 3761,3767 **** + struct sockaddr_in6 xyzzy; xyzzy.sin6_scope_id = 0; return (0); + ; return 0; } + EOF +! if { (eval echo configure:3765: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6 + result="#define LWRES_HAVE_SIN6_SCOPE_ID 1" +--- 3769,3775 ---- + struct sockaddr_in6 xyzzy; xyzzy.sin6_scope_id = 0; return (0); + ; return 0; } + EOF +! if { (eval echo configure:3773: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6 + result="#define LWRES_HAVE_SIN6_SCOPE_ID 1" +*************** +*** 3776,3784 **** + LWRES_HAVE_SIN6_SCOPE_ID="$result" + + echo $ac_n "checking for in6_pktinfo""... $ac_c" 1>&6 +! echo "configure:3780: checking for in6_pktinfo" >&5 + cat > conftest.$ac_ext < +--- 3784,3792 ---- + LWRES_HAVE_SIN6_SCOPE_ID="$result" + + echo $ac_n "checking for in6_pktinfo""... $ac_c" 1>&6 +! echo "configure:3788: checking for in6_pktinfo" >&5 + cat > conftest.$ac_ext < +*************** +*** 3791,3797 **** + struct in6_pktinfo xyzzy; return (0); + ; return 0; } + EOF +! if { (eval echo configure:3795: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6 + ISC_PLATFORM_HAVEIN6PKTINFO="#define ISC_PLATFORM_HAVEIN6PKTINFO 1" +--- 3799,3805 ---- + struct in6_pktinfo xyzzy; return (0); + ; return 0; } + EOF +! if { (eval echo configure:3803: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6 + ISC_PLATFORM_HAVEIN6PKTINFO="#define ISC_PLATFORM_HAVEIN6PKTINFO 1" +*************** +*** 3843,3851 **** + # which provides some (all?) of the desired functions. + # + echo $ac_n "checking for inet_ntop""... $ac_c" 1>&6 +! echo "configure:3847: checking for inet_ntop" >&5 + cat > conftest.$ac_ext < +--- 3851,3859 ---- + # which provides some (all?) of the desired functions. + # + echo $ac_n "checking for inet_ntop""... $ac_c" 1>&6 +! echo "configure:3855: checking for inet_ntop" >&5 + cat > conftest.$ac_ext < +*************** +*** 3855,3861 **** + inet_ntop(0, 0, 0, 0); return (0); + ; return 0; } + EOF +! if { (eval echo configure:3859: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6 + ISC_PLATFORM_NEEDNTOP="#undef ISC_PLATFORM_NEEDNTOP" +--- 3863,3869 ---- + inet_ntop(0, 0, 0, 0); return (0); + ; return 0; } + EOF +! if { (eval echo configure:3867: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6 + ISC_PLATFORM_NEEDNTOP="#undef ISC_PLATFORM_NEEDNTOP" +*************** +*** 3870,3878 **** + fi + rm -f conftest* + echo $ac_n "checking for inet_pton""... $ac_c" 1>&6 +! echo "configure:3874: checking for inet_pton" >&5 + cat > conftest.$ac_ext < +--- 3878,3886 ---- + fi + rm -f conftest* + echo $ac_n "checking for inet_pton""... $ac_c" 1>&6 +! echo "configure:3882: checking for inet_pton" >&5 + cat > conftest.$ac_ext < +*************** +*** 3882,3888 **** + inet_pton(0, 0, 0); return (0); + ; return 0; } + EOF +! if { (eval echo configure:3886: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6 + ISC_PLATFORM_NEEDPTON="#undef ISC_PLATFORM_NEEDPTON" +--- 3890,3896 ---- + inet_pton(0, 0, 0); return (0); + ; return 0; } + EOF +! if { (eval echo configure:3894: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6 + ISC_PLATFORM_NEEDPTON="#undef ISC_PLATFORM_NEEDPTON" +*************** +*** 3897,3905 **** + fi + rm -f conftest* + echo $ac_n "checking for inet_aton""... $ac_c" 1>&6 +! echo "configure:3901: checking for inet_aton" >&5 + cat > conftest.$ac_ext < +--- 3905,3913 ---- + fi + rm -f conftest* + echo $ac_n "checking for inet_aton""... $ac_c" 1>&6 +! echo "configure:3909: checking for inet_aton" >&5 + cat > conftest.$ac_ext < +*************** +*** 3909,3915 **** + struct in_addr in; inet_aton(0, &in); return (0); + ; return 0; } + EOF +! if { (eval echo configure:3913: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6 + ISC_PLATFORM_NEEDATON="#undef ISC_PLATFORM_NEEDATON" +--- 3917,3923 ---- + struct in_addr in; inet_aton(0, &in); return (0); + ; return 0; } + EOF +! if { (eval echo configure:3921: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6 + ISC_PLATFORM_NEEDATON="#undef ISC_PLATFORM_NEEDATON" +*************** +*** 3942,3950 **** + esac + + echo $ac_n "checking for sa_len in struct sockaddr""... $ac_c" 1>&6 +! echo "configure:3946: checking for sa_len in struct sockaddr" >&5 + cat > conftest.$ac_ext < +--- 3950,3958 ---- + esac + + echo $ac_n "checking for sa_len in struct sockaddr""... $ac_c" 1>&6 +! echo "configure:3954: checking for sa_len in struct sockaddr" >&5 + cat > conftest.$ac_ext < +*************** +*** 3953,3959 **** + struct sockaddr sa; sa.sa_len = 0; return (0); + ; return 0; } + EOF +! if { (eval echo configure:3957: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6 + ISC_PLATFORM_HAVESALEN="#define ISC_PLATFORM_HAVESALEN 1" +--- 3961,3967 ---- + struct sockaddr sa; sa.sa_len = 0; return (0); + ; return 0; } + EOF +! if { (eval echo configure:3965: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6 + ISC_PLATFORM_HAVESALEN="#define ISC_PLATFORM_HAVESALEN 1" +*************** +*** 3974,3982 **** + # Look for a 4.4BSD or 4.3BSD struct msghdr + # + echo $ac_n "checking for struct msghdr flavor""... $ac_c" 1>&6 +! echo "configure:3978: checking for struct msghdr flavor" >&5 + cat > conftest.$ac_ext < +--- 3982,3990 ---- + # Look for a 4.4BSD or 4.3BSD struct msghdr + # + echo $ac_n "checking for struct msghdr flavor""... $ac_c" 1>&6 +! echo "configure:3986: checking for struct msghdr flavor" >&5 + cat > conftest.$ac_ext < +*************** +*** 3985,3991 **** + struct msghdr msg; msg.msg_flags = 0; return (0); + ; return 0; } + EOF +! if { (eval echo configure:3989: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + echo "$ac_t""4.4BSD" 1>&6 + ISC_PLATFORM_MSGHDRFLAVOR="#define ISC_NET_BSD44MSGHDR 1" +--- 3993,3999 ---- + struct msghdr msg; msg.msg_flags = 0; return (0); + ; return 0; } + EOF +! if { (eval echo configure:3997: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + echo "$ac_t""4.4BSD" 1>&6 + ISC_PLATFORM_MSGHDRFLAVOR="#define ISC_NET_BSD44MSGHDR 1" +*************** +*** 4003,4011 **** + # Look for in_port_t. + # + echo $ac_n "checking for type in_port_t""... $ac_c" 1>&6 +! echo "configure:4007: checking for type in_port_t" >&5 + cat > conftest.$ac_ext < +--- 4011,4019 ---- + # Look for in_port_t. + # + echo $ac_n "checking for type in_port_t""... $ac_c" 1>&6 +! echo "configure:4015: checking for type in_port_t" >&5 + cat > conftest.$ac_ext < +*************** +*** 4014,4020 **** + in_port_t port = 25; return (0); + ; return 0; } + EOF +! if { (eval echo configure:4018: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6 + ISC_PLATFORM_NEEDPORTT="#undef ISC_PLATFORM_NEEDPORTT" +--- 4022,4028 ---- + in_port_t port = 25; return (0); + ; return 0; } + EOF +! if { (eval echo configure:4026: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6 + ISC_PLATFORM_NEEDPORTT="#undef ISC_PLATFORM_NEEDPORTT" +*************** +*** 4032,4040 **** + # Check for addrinfo + # + echo $ac_n "checking for struct addrinfo""... $ac_c" 1>&6 +! echo "configure:4036: checking for struct addrinfo" >&5 + cat > conftest.$ac_ext < +--- 4040,4048 ---- + # Check for addrinfo + # + echo $ac_n "checking for struct addrinfo""... $ac_c" 1>&6 +! echo "configure:4044: checking for struct addrinfo" >&5 + cat > conftest.$ac_ext < +*************** +*** 4042,4048 **** + struct addrinfo a; return (0); + ; return 0; } + EOF +! if { (eval echo configure:4046: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6 + ISC_LWRES_NEEDADDRINFO="#undef ISC_LWRES_NEEDADDRINFO" +--- 4050,4056 ---- + struct addrinfo a; return (0); + ; return 0; } + EOF +! if { (eval echo configure:4054: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6 + ISC_LWRES_NEEDADDRINFO="#undef ISC_LWRES_NEEDADDRINFO" +*************** +*** 4061,4069 **** + + + echo $ac_n "checking for int sethostent""... $ac_c" 1>&6 +! echo "configure:4065: checking for int sethostent" >&5 + cat > conftest.$ac_ext < +--- 4069,4077 ---- + + + echo $ac_n "checking for int sethostent""... $ac_c" 1>&6 +! echo "configure:4073: checking for int sethostent" >&5 + cat > conftest.$ac_ext < +*************** +*** 4071,4077 **** + int i = sethostent(0); return(0); + ; return 0; } + EOF +! if { (eval echo configure:4075: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6 + ISC_LWRES_SETHOSTENTINT="#define ISC_LWRES_SETHOSTENTINT 1" +--- 4079,4085 ---- + int i = sethostent(0); return(0); + ; return 0; } + EOF +! if { (eval echo configure:4083: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6 + ISC_LWRES_SETHOSTENTINT="#define ISC_LWRES_SETHOSTENTINT 1" +*************** +*** 4086,4094 **** + + + echo $ac_n "checking for int endhostent""... $ac_c" 1>&6 +! echo "configure:4090: checking for int endhostent" >&5 + cat > conftest.$ac_ext < +--- 4094,4102 ---- + + + echo $ac_n "checking for int endhostent""... $ac_c" 1>&6 +! echo "configure:4098: checking for int endhostent" >&5 + cat > conftest.$ac_ext < +*************** +*** 4096,4102 **** + int i = endhostent(); return(0); + ; return 0; } + EOF +! if { (eval echo configure:4100: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6 + ISC_LWRES_ENDHOSTENTINT="#define ISC_LWRES_ENDHOSTENTINT 1" +--- 4104,4110 ---- + int i = endhostent(); return(0); + ; return 0; } + EOF +! if { (eval echo configure:4108: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6 + ISC_LWRES_ENDHOSTENTINT="#define ISC_LWRES_ENDHOSTENTINT 1" +*************** +*** 4111,4119 **** + + + echo $ac_n "checking for getnetbyaddr(in_addr_t, ...)""... $ac_c" 1>&6 +! echo "configure:4115: checking for getnetbyaddr(in_addr_t, ...)" >&5 + cat > conftest.$ac_ext < +--- 4119,4127 ---- + + + echo $ac_n "checking for getnetbyaddr(in_addr_t, ...)""... $ac_c" 1>&6 +! echo "configure:4123: checking for getnetbyaddr(in_addr_t, ...)" >&5 + cat > conftest.$ac_ext < +*************** +*** 4122,4128 **** + + ; return 0; } + EOF +! if { (eval echo configure:4126: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6 + ISC_LWRES_GETNETBYADDRINADDR="#define ISC_LWRES_GETNETBYADDRINADDR 1" +--- 4130,4136 ---- + + ; return 0; } + EOF +! if { (eval echo configure:4134: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6 + ISC_LWRES_GETNETBYADDRINADDR="#define ISC_LWRES_GETNETBYADDRINADDR 1" +*************** +*** 4137,4145 **** + + + echo $ac_n "checking for int setnetent""... $ac_c" 1>&6 +! echo "configure:4141: checking for int setnetent" >&5 + cat > conftest.$ac_ext < +--- 4145,4153 ---- + + + echo $ac_n "checking for int setnetent""... $ac_c" 1>&6 +! echo "configure:4149: checking for int setnetent" >&5 + cat > conftest.$ac_ext < +*************** +*** 4147,4153 **** + int i = setnetent(0); return(0); + ; return 0; } + EOF +! if { (eval echo configure:4151: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6 + ISC_LWRES_SETNETENTINT="#define ISC_LWRES_SETNETENTINT 1" +--- 4155,4161 ---- + int i = setnetent(0); return(0); + ; return 0; } + EOF +! if { (eval echo configure:4159: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6 + ISC_LWRES_SETNETENTINT="#define ISC_LWRES_SETNETENTINT 1" +*************** +*** 4162,4170 **** + + + echo $ac_n "checking for int endnetent""... $ac_c" 1>&6 +! echo "configure:4166: checking for int endnetent" >&5 + cat > conftest.$ac_ext < +--- 4170,4178 ---- + + + echo $ac_n "checking for int endnetent""... $ac_c" 1>&6 +! echo "configure:4174: checking for int endnetent" >&5 + cat > conftest.$ac_ext < +*************** +*** 4172,4178 **** + int i = endnetent(); return(0); + ; return 0; } + EOF +! if { (eval echo configure:4176: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6 + ISC_LWRES_ENDNETENTINT="#define ISC_LWRES_ENDNETENTINT 1" +--- 4180,4186 ---- + int i = endnetent(); return(0); + ; return 0; } + EOF +! if { (eval echo configure:4184: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6 + ISC_LWRES_ENDNETENTINT="#define ISC_LWRES_ENDNETENTINT 1" +*************** +*** 4187,4195 **** + + + echo $ac_n "checking for gethostbyaddr(const void *, size_t, ...)""... $ac_c" 1>&6 +! echo "configure:4191: checking for gethostbyaddr(const void *, size_t, ...)" >&5 + cat > conftest.$ac_ext < +--- 4195,4203 ---- + + + echo $ac_n "checking for gethostbyaddr(const void *, size_t, ...)""... $ac_c" 1>&6 +! echo "configure:4199: checking for gethostbyaddr(const void *, size_t, ...)" >&5 + cat > conftest.$ac_ext < +*************** +*** 4198,4204 **** + return(0); + ; return 0; } + EOF +! if { (eval echo configure:4202: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6 + ISC_LWRES_GETHOSTBYADDRVOID="#define ISC_LWRES_GETHOSTBYADDRVOID 1" +--- 4206,4212 ---- + return(0); + ; return 0; } + EOF +! if { (eval echo configure:4210: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6 + ISC_LWRES_GETHOSTBYADDRVOID="#define ISC_LWRES_GETHOSTBYADDRVOID 1" +*************** +*** 4213,4221 **** + + + echo $ac_n "checking for h_errno in netdb.h""... $ac_c" 1>&6 +! echo "configure:4217: checking for h_errno in netdb.h" >&5 + cat > conftest.$ac_ext < +--- 4221,4229 ---- + + + echo $ac_n "checking for h_errno in netdb.h""... $ac_c" 1>&6 +! echo "configure:4225: checking for h_errno in netdb.h" >&5 + cat > conftest.$ac_ext < +*************** +*** 4223,4229 **** + h_errno = 1; return(0); + ; return 0; } + EOF +! if { (eval echo configure:4227: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6 + ISC_LWRES_NEEDHERRNO="#undef ISC_LWRES_NEEDHERRNO" +--- 4231,4237 ---- + h_errno = 1; return(0); + ; return 0; } + EOF +! if { (eval echo configure:4235: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6 + ISC_LWRES_NEEDHERRNO="#undef ISC_LWRES_NEEDHERRNO" +*************** +*** 4238,4249 **** + + + echo $ac_n "checking for getipnodebyname""... $ac_c" 1>&6 +! echo "configure:4242: checking for getipnodebyname" >&5 + if eval "test \"`echo '$''{'ac_cv_func_getipnodebyname'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + cat > conftest.$ac_ext <&6 +! echo "configure:4250: checking for getipnodebyname" >&5 + if eval "test \"`echo '$''{'ac_cv_func_getipnodebyname'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_getipnodebyname=yes" + else +--- 4274,4280 ---- + + ; return 0; } + EOF +! if { (eval echo configure:4278: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_getipnodebyname=yes" + else +*************** +*** 4287,4298 **** + fi + + echo $ac_n "checking for getnameinfo""... $ac_c" 1>&6 +! echo "configure:4291: checking for getnameinfo" >&5 + if eval "test \"`echo '$''{'ac_cv_func_getnameinfo'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + cat > conftest.$ac_ext <&6 +! echo "configure:4299: checking for getnameinfo" >&5 + if eval "test \"`echo '$''{'ac_cv_func_getnameinfo'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_getnameinfo=yes" + else +--- 4323,4329 ---- + + ; return 0; } + EOF +! if { (eval echo configure:4327: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_getnameinfo=yes" + else +*************** +*** 4336,4347 **** + fi + + echo $ac_n "checking for getaddrinfo""... $ac_c" 1>&6 +! echo "configure:4340: checking for getaddrinfo" >&5 + if eval "test \"`echo '$''{'ac_cv_func_getaddrinfo'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + cat > conftest.$ac_ext <&6 +! echo "configure:4348: checking for getaddrinfo" >&5 + if eval "test \"`echo '$''{'ac_cv_func_getaddrinfo'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_getaddrinfo=yes" + else +--- 4372,4378 ---- + + ; return 0; } + EOF +! if { (eval echo configure:4376: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_getaddrinfo=yes" + else +*************** +*** 4389,4400 **** + fi + + echo $ac_n "checking for gai_strerror""... $ac_c" 1>&6 +! echo "configure:4393: checking for gai_strerror" >&5 + if eval "test \"`echo '$''{'ac_cv_func_gai_strerror'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + cat > conftest.$ac_ext <&6 +! echo "configure:4401: checking for gai_strerror" >&5 + if eval "test \"`echo '$''{'ac_cv_func_gai_strerror'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_gai_strerror=yes" + else +--- 4425,4431 ---- + + ; return 0; } + EOF +! if { (eval echo configure:4429: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_gai_strerror=yes" + else +*************** +*** 4447,4455 **** + # Look for a sysctl call to get the list of network interfaces. + # + echo $ac_n "checking for interface list sysctl""... $ac_c" 1>&6 +! echo "configure:4451: checking for interface list sysctl" >&5 + cat > conftest.$ac_ext < +--- 4455,4463 ---- + # Look for a sysctl call to get the list of network interfaces. + # + echo $ac_n "checking for interface list sysctl""... $ac_c" 1>&6 +! echo "configure:4459: checking for interface list sysctl" >&5 + cat > conftest.$ac_ext < +*************** +*** 4479,4490 **** + # Check for some other useful functions that are not ever-present. + # + echo $ac_n "checking for strsep""... $ac_c" 1>&6 +! echo "configure:4483: checking for strsep" >&5 + if eval "test \"`echo '$''{'ac_cv_func_strsep'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + cat > conftest.$ac_ext <&6 +! echo "configure:4491: checking for strsep" >&5 + if eval "test \"`echo '$''{'ac_cv_func_strsep'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_strsep=yes" + else +--- 4515,4521 ---- + + ; return 0; } + EOF +! if { (eval echo configure:4519: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_strsep=yes" + else +*************** +*** 4528,4539 **** + fi + + echo $ac_n "checking for vsnprintf""... $ac_c" 1>&6 +! echo "configure:4532: checking for vsnprintf" >&5 + if eval "test \"`echo '$''{'ac_cv_func_vsnprintf'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + cat > conftest.$ac_ext <&6 +! echo "configure:4540: checking for vsnprintf" >&5 + if eval "test \"`echo '$''{'ac_cv_func_vsnprintf'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_vsnprintf=yes" + else +--- 4564,4570 ---- + + ; return 0; } + EOF +! if { (eval echo configure:4568: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_vsnprintf=yes" + else +*************** +*** 4585,4601 **** + + + echo $ac_n "checking for sizeof(long long int) == sizeof(long int)""... $ac_c" 1>&6 +! echo "configure:4589: checking for sizeof(long long int) == sizeof(long int)" >&5 + if test "$cross_compiling" = yes; then + echo "$ac_t""default yes" 1>&6 + ISC_PLATFORM_LONGLONGEQUALLONG="#define ISC_PLATFORM_LONGLONGEQUALLONG 1" + else + cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null + then + echo "$ac_t""yes" 1>&6 + ISC_PLATFORM_LONGLONGEQUALLONG="#define ISC_PLATFORM_LONGLONGEQUALLONG 1" +--- 4593,4609 ---- + + + echo $ac_n "checking for sizeof(long long int) == sizeof(long int)""... $ac_c" 1>&6 +! echo "configure:4597: checking for sizeof(long long int) == sizeof(long int)" >&5 + if test "$cross_compiling" = yes; then + echo "$ac_t""default yes" 1>&6 + ISC_PLATFORM_LONGLONGEQUALLONG="#define ISC_PLATFORM_LONGLONGEQUALLONG 1" + else + cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null + then + echo "$ac_t""yes" 1>&6 + ISC_PLATFORM_LONGLONGEQUALLONG="#define ISC_PLATFORM_LONGLONGEQUALLONG 1" +*************** +*** 4615,4626 **** + # Security Stuff + # + echo $ac_n "checking for chroot""... $ac_c" 1>&6 +! echo "configure:4619: checking for chroot" >&5 + if eval "test \"`echo '$''{'ac_cv_func_chroot'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + cat > conftest.$ac_ext <&6 +! echo "configure:4627: checking for chroot" >&5 + if eval "test \"`echo '$''{'ac_cv_func_chroot'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_chroot=yes" + else +--- 4651,4657 ---- + + ; return 0; } + EOF +! if { (eval echo configure:4655: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_chroot=yes" + else +*************** +*** 4669,4685 **** + do + ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` + echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 +! echo "configure:4673: checking for $ac_hdr" >&5 + if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + cat > conftest.$ac_ext < + EOF + ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +! { (eval echo configure:4683: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } + ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` + if test -z "$ac_err"; then + rm -rf conftest* +--- 4677,4693 ---- + do + ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` + echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 +! echo "configure:4681: checking for $ac_hdr" >&5 + if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + cat > conftest.$ac_ext < + EOF + ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +! { (eval echo configure:4691: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } + ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` + if test -z "$ac_err"; then + rm -rf conftest* +*************** +*** 4709,4725 **** + do + ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` + echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 +! echo "configure:4713: checking for $ac_hdr" >&5 + if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + cat > conftest.$ac_ext < + EOF + ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +! { (eval echo configure:4723: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } + ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` + if test -z "$ac_err"; then + rm -rf conftest* +--- 4717,4733 ---- + do + ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` + echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 +! echo "configure:4721: checking for $ac_hdr" >&5 + if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + cat > conftest.$ac_ext < + EOF + ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +! { (eval echo configure:4731: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } + ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` + if test -z "$ac_err"; then + rm -rf conftest* +*************** +*** 4750,4758 **** + # BSD/OS, and perhaps some others, don't define rlim_t. + # + echo $ac_n "checking for type rlim_t""... $ac_c" 1>&6 +! echo "configure:4754: checking for type rlim_t" >&5 + cat > conftest.$ac_ext < +--- 4758,4766 ---- + # BSD/OS, and perhaps some others, don't define rlim_t. + # + echo $ac_n "checking for type rlim_t""... $ac_c" 1>&6 +! echo "configure:4762: checking for type rlim_t" >&5 + cat > conftest.$ac_ext < +*************** +*** 4762,4768 **** + rlim_t rl = 19671212; return (0); + ; return 0; } + EOF +! if { (eval echo configure:4766: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6 + cat >> confdefs.h <<\EOF +--- 4770,4776 ---- + rlim_t rl = 19671212; return (0); + ; return 0; } + EOF +! if { (eval echo configure:4774: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6 + cat >> confdefs.h <<\EOF +*************** +*** 4777,4788 **** + fi + rm -f conftest* + echo $ac_n "checking sizeof rlim_cur""... $ac_c" 1>&6 +! echo "configure:4781: checking sizeof rlim_cur" >&5 + if test "$cross_compiling" = yes; then + { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } + else + cat > conftest.$ac_ext < +--- 4785,4796 ---- + fi + rm -f conftest* + echo $ac_n "checking sizeof rlim_cur""... $ac_c" 1>&6 +! echo "configure:4789: checking sizeof rlim_cur" >&5 + if test "$cross_compiling" = yes; then + { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } + else + cat > conftest.$ac_ext < +*************** +*** 4790,4796 **** + #include + main() { struct rlimit r; exit(!(sizeof(r.rlim_cur) == sizeof(int)));} + EOF +! if { (eval echo configure:4794: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null + then + echo "$ac_t""int" 1>&6 + ISC_PLATFORM_RLIMITTYPE="#define ISC_PLATFORM_RLIMITTYPE int" +--- 4798,4804 ---- + #include + main() { struct rlimit r; exit(!(sizeof(r.rlim_cur) == sizeof(int)));} + EOF +! if { (eval echo configure:4802: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null + then + echo "$ac_t""int" 1>&6 + ISC_PLATFORM_RLIMITTYPE="#define ISC_PLATFORM_RLIMITTYPE int" +*************** +*** 4803,4809 **** + { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } + else + cat > conftest.$ac_ext < +--- 4811,4817 ---- + { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } + else + cat > conftest.$ac_ext < +*************** +*** 4811,4817 **** + #include + main() { struct rlimit r; exit(!(sizeof(r.rlim_cur) == sizeof(long int)));} + EOF +! if { (eval echo configure:4815: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null + then + echo "$ac_t""long int" 1>&6 + ISC_PLATFORM_RLIMITTYPE="#define ISC_PLATFORM_RLIMITTYPE long int" +--- 4819,4825 ---- + #include + main() { struct rlimit r; exit(!(sizeof(r.rlim_cur) == sizeof(long int)));} + EOF +! if { (eval echo configure:4823: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null + then + echo "$ac_t""long int" 1>&6 + ISC_PLATFORM_RLIMITTYPE="#define ISC_PLATFORM_RLIMITTYPE long int" +*************** +*** 4824,4830 **** + { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } + else + cat > conftest.$ac_ext < +--- 4832,4838 ---- + { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } + else + cat > conftest.$ac_ext < +*************** +*** 4832,4838 **** + #include + main() { struct rlimit r; exit((!sizeof(r.rlim_cur) == sizeof(long long int)));} + EOF +! if { (eval echo configure:4836: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null + then + echo "$ac_t""long long int" 1>&6 + ISC_PLATFORM_RLIMITTYPE="#define ISC_PLATFORM_RLIMITTYPE long long int" +--- 4840,4846 ---- + #include + main() { struct rlimit r; exit((!sizeof(r.rlim_cur) == sizeof(long long int)));} + EOF +! if { (eval echo configure:4844: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null + then + echo "$ac_t""long long int" 1>&6 + ISC_PLATFORM_RLIMITTYPE="#define ISC_PLATFORM_RLIMITTYPE long long int" +*************** +*** 4935,4941 **** + # Extract the first word of "$ac_prog", so it can be a program name with args. + set dummy $ac_prog; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +! echo "configure:4939: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_path_JADE'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +--- 4943,4949 ---- + # Extract the first word of "$ac_prog", so it can be a program name with args. + set dummy $ac_prog; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +! echo "configure:4947: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_path_JADE'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +*************** +*** 4981,4987 **** + SGMLDIR="" + + echo $ac_n "checking for SGML files""... $ac_c" 1>&6 +! echo "configure:4985: checking for SGML files" >&5 + for d in /usr/pkg/share/sgml /usr/local/share/sgml + do + if test -f $d/docbook/dsssl/modular/html/docbook.dsl +--- 4989,4995 ---- + SGMLDIR="" + + echo $ac_n "checking for SGML files""... $ac_c" 1>&6 +! echo "configure:4993: checking for SGML files" >&5 + for d in /usr/pkg/share/sgml /usr/local/share/sgml + do + if test -f $d/docbook/dsssl/modular/html/docbook.dsl +*************** +*** 5007,5013 **** + XGMLDIR="" + + echo $ac_n "checking for XML files""... $ac_c" 1>&6 +! echo "configure:5011: checking for XML files" >&5 + for d in /usr/pkg/share/xml /usr/local/share/xml + do + if test -f $d/dtd/docbook/docbookx.dtd +--- 5015,5021 ---- + XGMLDIR="" + + echo $ac_n "checking for XML files""... $ac_c" 1>&6 +! echo "configure:5019: checking for XML files" >&5 + for d in /usr/pkg/share/xml /usr/local/share/xml + do + if test -f $d/dtd/docbook/docbookx.dtd +*************** +*** 5024,5029 **** +--- 5032,5224 ---- + XMLDIR=/usr/local/share/xml + fi + ++ ++ ++ # ++ # MDN support ++ # ++ # Check whether --with-mdn or --without-mdn was given. ++ if test "${with_mdn+set}" = set; then ++ withval="$with_mdn" ++ use_mdn="$withval" ++ else ++ use_mdn="no" ++ fi ++ ++ case "$use_mdn" in ++ yes) ++ if test X$prefix = XNONE ; then ++ mdn_path=/usr/local ++ else ++ mdn_path=$prefix ++ fi ++ ;; ++ no) ++ ;; ++ *) ++ mdn_path="$use_mdn" ++ ;; ++ esac ++ ++ iconvinc= ++ iconvlib= ++ # Check whether --with-libiconv or --without-libiconv was given. ++ if test "${with_libiconv+set}" = set; then ++ withval="$with_libiconv" ++ use_libiconv="$withval" ++ else ++ use_libiconv="no" ++ fi ++ ++ case "$use_libiconv" in ++ yes) ++ if test X$prefix = XNONE ; then ++ iconvlib="-L/usr/local/lib -R/usr/local/lib -liconv" ++ else ++ iconvlib="-L$prefix/lib -R$prefix/lib -liconv" ++ fi ++ ;; ++ no) ++ iconvlib= ++ ;; ++ *) ++ iconvlib="-L$use_libiconv/lib -R$use_libiconv/lib -liconv" ++ ;; ++ esac ++ ++ # Check whether --with-iconv or --without-iconv was given. ++ if test "${with_iconv+set}" = set; then ++ withval="$with_iconv" ++ iconvlib="$withval" ++ fi ++ ++ case "$iconvlib" in ++ no) ++ iconvlib= ++ ;; ++ yes) ++ iconvlib=-liconv ++ ;; ++ esac ++ ++ # Check whether --with-mdnlib or --without-mdnlib was given. ++ if test "${with_mdnlib+set}" = set; then ++ withval="$with_mdnlib" ++ mdnlib="$withval" ++ else ++ mdnlib="no" ++ fi ++ ++ if test "$mdnlib" = yes; then ++ { echo "configure: error: You must specify ARG for --with-mdnlib." 1>&2; exit 1; } ++ fi ++ ++ if test "$use_mdn" != no; then ++ cat >> confdefs.h <<\EOF ++ #define WITH_MDN 1 ++ EOF ++ ++ STD_CINCLUDES="$STD_CINCLUDES -I$mdn_path/include" ++ if test "$mdnlib" != no; then ++ LIBS="$mdnlib $iconvlib $LIBS" ++ else ++ LIBS="-L$mdn_path/lib -lmdn $iconvlib $LIBS" ++ fi ++ fi ++ for ac_hdr in locale.h ++ do ++ ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` ++ echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 ++ echo "configure:5133: checking for $ac_hdr" >&5 ++ if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then ++ echo $ac_n "(cached) $ac_c" 1>&6 ++ else ++ cat > conftest.$ac_ext < ++ EOF ++ ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ++ { (eval echo configure:5143: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ++ ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` ++ if test -z "$ac_err"; then ++ rm -rf conftest* ++ eval "ac_cv_header_$ac_safe=yes" ++ else ++ echo "$ac_err" >&5 ++ echo "configure: failed program was:" >&5 ++ cat conftest.$ac_ext >&5 ++ rm -rf conftest* ++ eval "ac_cv_header_$ac_safe=no" ++ fi ++ rm -f conftest* ++ fi ++ if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then ++ echo "$ac_t""yes" 1>&6 ++ ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` ++ cat >> confdefs.h <&6 ++ fi ++ done ++ ++ for ac_func in setlocale ++ do ++ echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ++ echo "configure:5172: checking for $ac_func" >&5 ++ if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then ++ echo $ac_n "(cached) $ac_c" 1>&6 ++ else ++ cat > conftest.$ac_ext < ++ /* Override any gcc2 internal prototype to avoid an error. */ ++ /* We use char because int might match the return type of a gcc2 ++ builtin and then its argument prototype would still apply. */ ++ char $ac_func(); ++ ++ int main() { ++ ++ /* The GNU C library defines this for functions which it implements ++ to always fail with ENOSYS. Some functions are actually named ++ something starting with __ and the normal name is an alias. */ ++ #if defined (__stub_$ac_func) || defined (__stub___$ac_func) ++ choke me ++ #else ++ $ac_func(); ++ #endif ++ ++ ; return 0; } ++ EOF ++ if { (eval echo configure:5200: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ++ rm -rf conftest* ++ eval "ac_cv_func_$ac_func=yes" ++ else ++ echo "configure: failed program was:" >&5 ++ cat conftest.$ac_ext >&5 ++ rm -rf conftest* ++ eval "ac_cv_func_$ac_func=no" ++ fi ++ rm -f conftest* ++ fi ++ ++ if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then ++ echo "$ac_t""yes" 1>&6 ++ ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` ++ cat >> confdefs.h <&6 ++ fi ++ done + + + # +Index: configure.in +diff -c mdn/othersrc/bind9/configure.in:1.1.1.7 mdn/othersrc/bind9/configure.in:1.10 +*** configure.in Thu Jul 26 15:43:20 2001 +--- configure.in Thu Jul 26 16:44:20 2001 +*************** +*** 1305,1310 **** +--- 1305,1383 ---- + AC_SUBST(XMLDIR) + + # ++ # MDN support ++ # ++ AC_ARG_WITH(mdn, ++ [ --with-mdn[=MPREFIX] enable MDN support using mDNkit [default PREFIX]], ++ use_mdn="$withval", use_mdn="no") ++ case "$use_mdn" in ++ yes) ++ if test X$prefix = XNONE ; then ++ mdn_path=/usr/local ++ else ++ mdn_path=$prefix ++ fi ++ ;; ++ no) ++ ;; ++ *) ++ mdn_path="$use_mdn" ++ ;; ++ esac ++ ++ iconvinc= ++ iconvlib= ++ AC_ARG_WITH(libiconv, ++ [ --with-libiconv[=IPREFIX] GNU libiconv are in IPREFIX [default PREFIX]], ++ use_libiconv="$withval", use_libiconv="no") ++ case "$use_libiconv" in ++ yes) ++ if test X$prefix = XNONE ; then ++ iconvlib="-L/usr/local/lib -R/usr/local/lib -liconv" ++ else ++ iconvlib="-L$prefix/lib -R$prefix/lib -liconv" ++ fi ++ ;; ++ no) ++ iconvlib= ++ ;; ++ *) ++ iconvlib="-L$use_libiconv/lib -R$use_libiconv/lib -liconv" ++ ;; ++ esac ++ ++ AC_ARG_WITH(iconv, ++ [ --with-iconv[=LIBSPEC] specify iconv library [default -liconv]], ++ iconvlib="$withval") ++ case "$iconvlib" in ++ no) ++ iconvlib= ++ ;; ++ yes) ++ iconvlib=-liconv ++ ;; ++ esac ++ ++ AC_ARG_WITH(mdnlib, ++ [ --with-mdnlib=ARG specify libmdn], ++ mdnlib="$withval", mdnlib="no") ++ if test "$mdnlib" = yes; then ++ AC_MSG_ERROR([You must specify ARG for --with-mdnlib.]) ++ fi ++ ++ if test "$use_mdn" != no; then ++ AC_DEFINE(WITH_MDN, 1, [define if mDNkit support is to be included.]) ++ STD_CINCLUDES="$STD_CINCLUDES -I$mdn_path/include" ++ if test "$mdnlib" != no; then ++ LIBS="$mdnlib $iconvlib $LIBS" ++ else ++ LIBS="-L$mdn_path/lib -lmdn $iconvlib $LIBS" ++ fi ++ fi ++ AC_CHECK_HEADERS(locale.h) ++ AC_CHECK_FUNCS(setlocale) ++ ++ # + # Substitutions + # + AC_SUBST(BIND9_TOP_BUILDDIR) +Index: bin/dig/dig.c +diff -c mdn/othersrc/bind9/bin/dig/dig.c:1.1.1.7 mdn/othersrc/bind9/bin/dig/dig.c:1.6 +*** bin/dig/dig.c Tue Apr 17 14:17:04 2001 +--- bin/dig/dig.c Wed Aug 15 11:26:01 2001 +*************** +*** 1284,1289 **** +--- 1284,1294 ---- + printgreeting(argc, argv, lookup); + ISC_LIST_APPEND(lookup_list, lookup, link); + } ++ ++ #ifdef WITH_MDN ++ if (getenv(MDN_DISABLE_ENVVAR_NAME) != NULL) ++ lookup->mdn = ISC_FALSE; ++ #endif + } + + /* +Index: bin/dig/dighost.c +diff -c mdn/othersrc/bind9/bin/dig/dighost.c:1.1.1.10 mdn/othersrc/bind9/bin/dig/dighost.c:1.23 +*** bin/dig/dighost.c Thu Jul 26 15:43:22 2001 +--- bin/dig/dighost.c Wed Aug 15 11:26:01 2001 +*************** +*** 33,38 **** +--- 33,49 ---- + #include + #include + ++ #ifdef HAVE_LOCALE_H ++ #include ++ #endif ++ ++ #ifdef WITH_MDN ++ #include ++ #include ++ #include ++ #include ++ #endif ++ + #include + #include + #include +*************** +*** 135,140 **** +--- 146,165 ---- + dig_lookup_t *current_lookup = NULL; + isc_uint32_t rr_limit = INT_MAX; + ++ #ifdef WITH_MDN ++ mdn_resconf_t mdnconf; ++ ++ static void initialize_mdn(void); ++ static isc_result_t output_filter(isc_buffer_t *buffer, ++ unsigned int used_org, ++ isc_boolean_t absolute); ++ static mdn_result_t append_textname(char *name, const char *origin, ++ size_t namesize); ++ static void mdn_check_result(mdn_result_t r, const char *msg); ++ ++ #define MAXDLEN 256 ++ #endif ++ + /* + * Apply and clear locks at the event level in global task. + * Can I get rid of these using shutdown events? XXX +*************** +*** 371,376 **** +--- 396,404 ---- + looknew->ignore = ISC_FALSE; + looknew->servfail_stops = ISC_FALSE; + looknew->besteffort = ISC_TRUE; ++ #ifdef WITH_MDN ++ looknew->mdn = ISC_TRUE; ++ #endif + looknew->dnssec = ISC_FALSE; + looknew->udpsize = 0; + looknew->recurse = ISC_TRUE; +*************** +*** 429,434 **** +--- 457,465 ---- + looknew->ignore = lookold->ignore; + looknew->servfail_stops = lookold->servfail_stops; + looknew->besteffort = lookold->besteffort; ++ #ifdef WITH_MDN ++ looknew->mdn = lookold->mdn; ++ #endif + looknew->dnssec = lookold->dnssec; + looknew->udpsize = lookold->udpsize; + looknew->recurse = lookold->recurse; +*************** +*** 697,702 **** +--- 728,737 ---- + ISC_LIST_APPEND(server_list, srv, link); + } + ++ #ifdef WITH_MDN ++ initialize_mdn(); ++ #endif ++ + if (keyfile[0] != 0) + setup_file_key(); + else if (keysecret[0] != 0) +*************** +*** 1232,1243 **** +--- 1267,1289 ---- + isc_region_t r; + isc_buffer_t b; + char store[MXNAME]; ++ #ifdef WITH_MDN ++ mdn_result_t mr; ++ char idn_textname[MXNAME], idn_origin[MXNAME], idn_tmp[MXNAME]; ++ #endif + + REQUIRE(lookup != NULL); + INSIST(!free_now); + + debug("setup_lookup(%p)", lookup); + ++ #ifdef WITH_MDN ++ if (lookup->mdn == ISC_TRUE) ++ dns_name_settotextfilter(output_filter); ++ else ++ dns_name_settotextfilter(NULL); ++ #endif ++ + result = dns_message_create(mctx, DNS_MESSAGE_INTENTRENDER, + &lookup->sendmsg); + check_result(result, "dns_message_create"); +*************** +*** 1291,1344 **** + } + if (lookup->origin != NULL) { + debug("trying origin %s", lookup->origin->origin); +! result = dns_message_gettempname(lookup->sendmsg, +! &lookup->oname); +! check_result(result, "dns_message_gettempname"); +! dns_name_init(lookup->oname, NULL); +! /* XXX Helper funct to conv char* to name? */ +! len = strlen(lookup->origin->origin); +! isc_buffer_init(&b, lookup->origin->origin, len); +! isc_buffer_add(&b, len); +! result = dns_name_fromtext(lookup->oname, &b, dns_rootname, +! ISC_FALSE, &lookup->onamebuf); +! if (result != ISC_R_SUCCESS) { +! dns_message_puttempname(lookup->sendmsg, +! &lookup->name); +! dns_message_puttempname(lookup->sendmsg, +! &lookup->oname); +! fatal("'%s' is not in legal name syntax (%s)", +! lookup->origin->origin, +! dns_result_totext(result)); +! } +! if (lookup->trace_root) { +! dns_name_clone(dns_rootname, lookup->name); + } else { +! len = strlen(lookup->textname); +! isc_buffer_init(&b, lookup->textname, len); + isc_buffer_add(&b, len); +! result = dns_name_fromtext(lookup->name, &b, +! lookup->oname, ISC_FALSE, +! &lookup->namebuf); +! } +! if (result != ISC_R_SUCCESS) { +! dns_message_puttempname(lookup->sendmsg, +! &lookup->name); + dns_message_puttempname(lookup->sendmsg, + &lookup->oname); +- fatal("'%s' is not in legal name syntax (%s)", +- lookup->textname, dns_result_totext(result)); + } +- dns_message_puttempname(lookup->sendmsg, &lookup->oname); + } else { + debug("using root origin"); + if (!lookup->trace_root) { +! len = strlen(lookup->textname); +! isc_buffer_init(&b, lookup->textname, len); +! isc_buffer_add(&b, len); +! result = dns_name_fromtext(lookup->name, &b, +! dns_rootname, +! ISC_FALSE, +! &lookup->namebuf); + } else { + dns_name_clone(dns_rootname, lookup->name); + } +--- 1337,1464 ---- + } + if (lookup->origin != NULL) { + debug("trying origin %s", lookup->origin->origin); +! #ifdef WITH_MDN +! if (lookup->mdn) { +! /* +! * We cannot convert name and origin separately and +! * combine them later, because some encoding scheme +! * (such as UTF-5) can be applied only to an entire +! * domain name, not a partial one. +! */ +! mr = mdn_res_nameconv(mdnconf, "l", lookup->textname, +! idn_textname, +! sizeof(idn_textname)); +! mdn_check_result(mr, "convert textname to UCS"); +! mr = mdn_res_nameconv(mdnconf, "l", +! lookup->origin->origin, +! idn_origin, sizeof(idn_origin)); +! mdn_check_result(mr, "convert origin to UCS"); +! mr = append_textname(idn_textname, idn_origin, +! sizeof(idn_textname)); +! mdn_check_result(mr, "append UCS origin to UCS " +! "textname"); +! mr = mdn_res_nameconv(mdnconf, "dMNI", idn_textname, +! idn_tmp, sizeof(idn_tmp)); +! mdn_check_result(mr, "convert UCS textname to IDN " +! "encoding"); +! strcpy(idn_textname, idn_tmp); +! +! if (!lookup->trace_root) { +! len = strlen(idn_textname); +! isc_buffer_init(&b, idn_textname, len); +! isc_buffer_add(&b, len); +! result = dns_name_fromtext(lookup->name, &b, +! dns_rootname, +! ISC_FALSE, +! &lookup->namebuf); +! } else { +! dns_name_clone(dns_rootname, lookup->name); +! } +! if (result != ISC_R_SUCCESS) { +! dns_message_puttempname(lookup->sendmsg, +! &lookup->name); +! isc_buffer_init(&b, store, MXNAME); +! fatal("'%s' is not a legal name syntax " +! "(%s)", lookup->textname, +! dns_result_totext(result)); +! } +! #else /* WITH_MDN */ +! if (0) { +! #endif /* WITH_MDN */ + } else { +! result = dns_message_gettempname(lookup->sendmsg, +! &lookup->oname); +! check_result(result, "dns_message_gettempname"); +! dns_name_init(lookup->oname, NULL); +! /* XXX Helper funct to conv char* to name? */ +! len = strlen(lookup->origin->origin); +! isc_buffer_init(&b, lookup->origin->origin, len); + isc_buffer_add(&b, len); +! result = dns_name_fromtext(lookup->oname, &b, +! dns_rootname, ISC_FALSE, +! &lookup->onamebuf); +! if (result != ISC_R_SUCCESS) { +! dns_message_puttempname(lookup->sendmsg, +! &lookup->name); +! dns_message_puttempname(lookup->sendmsg, +! &lookup->oname); +! fatal("'%s' is not in legal name syntax (%s)", +! lookup->origin->origin, +! dns_result_totext(result)); +! } +! if (lookup->trace_root) { +! dns_name_clone(dns_rootname, lookup->name); +! } else { +! len = strlen(lookup->textname); +! isc_buffer_init(&b, lookup->textname, len); +! isc_buffer_add(&b, len); +! result = dns_name_fromtext(lookup->name, &b, +! lookup->oname, +! ISC_FALSE, +! &lookup->namebuf); +! } +! if (result != ISC_R_SUCCESS) { +! dns_message_puttempname(lookup->sendmsg, +! &lookup->name); +! dns_message_puttempname(lookup->sendmsg, +! &lookup->oname); +! fatal("'%s' is not in legal name syntax (%s)", +! lookup->textname, +! dns_result_totext(result)); +! } + dns_message_puttempname(lookup->sendmsg, + &lookup->oname); + } + } else { + debug("using root origin"); + if (!lookup->trace_root) { +! #ifdef WITH_MDN +! if (lookup->mdn) { +! mr = mdn_res_nameconv(mdnconf, "ldMNI", +! lookup->textname, +! idn_textname, +! sizeof(idn_textname)); +! mdn_check_result(mr, "convert textname to " +! "IDN encoding"); +! len = strlen(idn_textname); +! isc_buffer_init(&b, idn_textname, len); +! isc_buffer_add(&b, len); +! result = dns_name_fromtext(lookup->name, &b, +! dns_rootname, +! ISC_FALSE, +! &lookup->namebuf); +! #else /* WITH_MDN */ +! if (0) { +! #endif /* WITH_MDN */ +! } else { +! len = strlen(lookup->textname); +! isc_buffer_init(&b, lookup->textname, len); +! isc_buffer_add(&b, len); +! result = dns_name_fromtext(lookup->name, &b, +! dns_rootname, +! ISC_FALSE, +! &lookup->namebuf); +! } + } else { + dns_name_clone(dns_rootname, lookup->name); + } +*************** +*** 2763,2765 **** +--- 2883,2998 ---- + if (mctx != NULL) + isc_mem_destroy(&mctx); + } ++ ++ #ifdef WITH_MDN ++ static void ++ initialize_mdn(void) { ++ mdn_result_t r; ++ ++ #ifdef HAVE_SETLOCALE ++ /* Set locale */ ++ (void)setlocale(LC_ALL, ""); ++ #endif ++ ++ /* General initialization. */ ++ r = mdn_resconf_initialize(); ++ if (r != mdn_success) ++ fatal("mdn initialization failed: %s", ++ mdn_result_tostring(r)); ++ ++ /* Create configuration context. */ ++ r = mdn_resconf_create(&mdnconf); ++ if (r != mdn_success) ++ fatal("mdn resconf initialization failed: %s", ++ mdn_result_tostring(r)); ++ ++ ++ /* Load mdn configuration file. */ ++ r = mdn_resconf_loadfile(mdnconf, NULL); ++ if (r != mdn_success) ++ fatal("mdn configuration loading failed: %s", ++ mdn_result_tostring(r)); ++ ++ /* Set domain name -> text post-conversion filter. */ ++ dns_name_settotextfilter(output_filter); ++ } ++ ++ static isc_result_t ++ output_filter(isc_buffer_t *buffer, unsigned int used_org, ++ isc_boolean_t absolute) ++ { ++ char tmp1[MAXDLEN], tmp2[MAXDLEN]; ++ size_t fromlen, tolen; ++ isc_boolean_t end_with_dot; ++ ++ /* ++ * Copy contents of 'buffer' to 'tmp1', supply trailing dot ++ * if 'absolute' is true, and terminate with NUL. ++ */ ++ fromlen = isc_buffer_usedlength(buffer) - used_org; ++ if (fromlen >= MAXDLEN) ++ return (ISC_R_SUCCESS); ++ memcpy(tmp1, (char *)isc_buffer_base(buffer) + used_org, fromlen); ++ end_with_dot = (tmp1[fromlen - 1] == '.') ? ISC_TRUE : ISC_FALSE; ++ if (absolute && !end_with_dot) { ++ fromlen++; ++ if (fromlen >= MAXDLEN) ++ return (ISC_R_SUCCESS); ++ tmp1[fromlen - 1] = '.'; ++ } ++ tmp1[fromlen] = '\0'; ++ ++ /* ++ * Convert contents of 'tmp1' to local encoding. ++ */ ++ if (mdn_res_nameconv(mdnconf, "i!NL", tmp1, tmp2, MAXDLEN) ++ != mdn_success) ++ return (ISC_R_SUCCESS); ++ strcpy(tmp1, tmp2); ++ ++ /* ++ * Copy the converted contents in 'tmp1' back to 'buffer'. ++ * If we have appended trailing dot, remove it. ++ */ ++ tolen = strlen(tmp1); ++ if (absolute && !end_with_dot && tmp1[tolen - 1] == '.') ++ tolen--; ++ ++ if (isc_buffer_length(buffer) < used_org + tolen) ++ return (ISC_R_NOSPACE); ++ ++ isc_buffer_subtract(buffer, isc_buffer_usedlength(buffer) - used_org); ++ memcpy(isc_buffer_used(buffer), tmp1, tolen); ++ isc_buffer_add(buffer, tolen); ++ ++ return (ISC_R_SUCCESS); ++ } ++ ++ static mdn_result_t ++ append_textname(char *name, const char *origin, size_t namesize) { ++ size_t namelen = strlen(name); ++ size_t originlen = strlen(origin); ++ ++ /* Already absolute? */ ++ if (namelen > 0 && name[namelen - 1] == '.') ++ return mdn_success; ++ ++ /* Append dot and origin */ ++ ++ if (namelen + 1 + originlen >= namesize) ++ return mdn_buffer_overflow; ++ ++ name[namelen++] = '.'; ++ (void)strcpy(name + namelen, origin); ++ return mdn_success; ++ } ++ ++ static void ++ mdn_check_result(mdn_result_t r, const char *msg) { ++ if (r != mdn_success) { ++ exitcode = 1; ++ fatal("%s: %s", msg, mdn_result_tostring(r)); ++ } ++ } ++ ++ #endif /* WITH_MDN */ +Index: bin/dig/host.c +diff -c mdn/othersrc/bind9/bin/dig/host.c:1.1.1.7 mdn/othersrc/bind9/bin/dig/host.c:1.6 +*** bin/dig/host.c Tue Apr 17 14:17:05 2001 +--- bin/dig/host.c Wed Aug 15 11:26:01 2001 +*************** +*** 669,674 **** +--- 669,679 ---- + lookup->new_search = ISC_TRUE; + ISC_LIST_APPEND(lookup_list, lookup, link); + ++ #ifdef WITH_MDN ++ if (getenv(MDN_DISABLE_ENVVAR_NAME) != NULL) ++ lookup->mdn = ISC_FALSE; ++ #endif ++ + usesearch = ISC_TRUE; + } + +Index: bin/dig/nslookup.c +diff -c mdn/othersrc/bind9/bin/dig/nslookup.c:1.1.1.7 mdn/othersrc/bind9/bin/dig/nslookup.c:1.6 +*** bin/dig/nslookup.c Tue Apr 17 14:17:05 2001 +--- bin/dig/nslookup.c Wed Aug 15 11:26:01 2001 +*************** +*** 766,771 **** +--- 766,775 ---- + ISC_LIST_APPEND(lookup_list, lookup, link); + lookup->origin = NULL; + ISC_LIST_INIT(lookup->my_server_list); ++ #ifdef WITH_MDN ++ if (getenv(MDN_DISABLE_ENVVAR_NAME) != NULL) ++ lookup->mdn = ISC_FALSE; ++ #endif + debug("looking up %s", lookup->textname); + } + +Index: bin/dig/include/dig/dig.h +diff -c mdn/othersrc/bind9/bin/dig/include/dig/dig.h:1.1.1.5 mdn/othersrc/bind9/bin/dig/include/dig/dig.h:1.6 +*** bin/dig/include/dig/dig.h Fri Jan 19 11:58:37 2001 +--- bin/dig/include/dig/dig.h Wed Aug 15 11:26:01 2001 +*************** +*** 69,74 **** +--- 69,81 ---- + * be 1. + */ + ++ /* ++ * Name of environment variable which disables MDN support if defined. ++ */ ++ #ifdef WITH_MDN ++ #define MDN_DISABLE_ENVVAR_NAME "MDN_DISABLE" ++ #endif ++ + ISC_LANG_BEGINDECLS + + typedef struct dig_lookup dig_lookup_t; +*************** +*** 103,108 **** +--- 110,118 ---- + servfail_stops, + new_search, + besteffort, ++ #ifdef WITH_MDN ++ mdn, ++ #endif + dnssec; + char textname[MXNAME]; /* Name we're going to be looking up */ + char cmdline[MXNAME]; +Index: doc/man/bin/dig.1 +diff -c mdn/othersrc/bind9/doc/man/bin/dig.1:1.1.1.4 mdn/othersrc/bind9/doc/man/bin/dig.1:1.2 +*** doc/man/bin/dig.1 Thu Jul 26 15:44:12 2001 +--- doc/man/bin/dig.1 Wed Aug 22 13:20:44 2001 +*************** +*** 450,455 **** +--- 450,469 ---- + will not print the initial query when it looks up the + NS records for + .Dv isc.org . ++ .Sh MDN SUPPORT ++ If ++ .Nm dig ++ has been built with mdn support, it can accept and display non-ASCII ++ domain names. ++ .Nm dig ++ appropriately converts character encoding of domain name before sending ++ a request to DNS server or displaying a reply from the server. ++ If you'd like to turn off the MDN support for some reason, defines the ++ .Ar MDN_DISABLE ++ environment variable. ++ The MDN support is disabled if the the variable is set when ++ .Nm dig ++ runs. + .Sh FILES + .Pa /etc/resolv.conf + .Sh SEE ALSO +Index: doc/man/bin/host.1 +diff -c mdn/othersrc/bind9/doc/man/bin/host.1:1.1.1.4 mdn/othersrc/bind9/doc/man/bin/host.1:1.2 +*** doc/man/bin/host.1 Thu Jul 26 15:44:12 2001 +--- doc/man/bin/host.1 Wed Aug 22 13:20:44 2001 +*************** +*** 206,211 **** +--- 206,225 ---- + will effectively wait forever for a reply. + The time to wait for a response will be set to the number of seconds + given by the hardware's maximum value for an integer quantity. ++ .Sh MDN SUPPORT ++ If ++ .Nm host ++ has been built with mdn support, it can accept and display non-ASCII ++ domain names. ++ .Nm host ++ appropriately converts character encoding of domain name before sending ++ a request to DNS server or displaying a reply from the server. ++ If you'd like to turn off the MDN support for some reason, defines the ++ .Ar MDN_DISABLE ++ environment variable. ++ The MDN support is disabled if the the variable is set when ++ .Nm host ++ runs. + .Sh FILES + .Pa /etc/resolv.conf + .Sh SEE ALSO +Index: lib/dns/name.c +diff -c mdn/othersrc/bind9/lib/dns/name.c:1.1.1.8 mdn/othersrc/bind9/lib/dns/name.c:1.11 +*** lib/dns/name.c Thu Jul 26 15:44:38 2001 +--- lib/dns/name.c Thu Jul 26 16:44:21 2001 +*************** +*** 205,210 **** +--- 205,217 ---- + /* XXXDCL make const? */ + dns_name_t *dns_wildcardname = &wild.name; + ++ #ifdef WITH_MDN ++ /* ++ * dns_name_t to text post-conversion procedure. ++ */ ++ static dns_name_totextfilter_t totext_filter_proc = NULL; ++ #endif ++ + static void + set_offsets(const dns_name_t *name, unsigned char *offsets, + dns_name_t *set_name); +*************** +*** 1705,1710 **** +--- 1712,1720 ---- + unsigned int labels; + isc_boolean_t saw_root = ISC_FALSE; + char num[4]; ++ #ifdef WITH_MDN ++ unsigned int oused = target->used; ++ #endif + + /* + * This function assumes the name is in proper uncompressed +*************** +*** 1882,1887 **** +--- 1892,1901 ---- + + isc_buffer_add(target, tlen - trem); + ++ #ifdef WITH_MDN ++ if (totext_filter_proc != NULL) ++ return ((*totext_filter_proc)(target, oused, saw_root)); ++ #endif + return (ISC_R_SUCCESS); + } + +*************** +*** 3153,3155 **** +--- 3167,3176 ---- + } else + snprintf(cp, size, ""); + } ++ ++ #ifdef WITH_MDN ++ void ++ dns_name_settotextfilter(dns_name_totextfilter_t proc) { ++ totext_filter_proc = proc; ++ } ++ #endif +Index: lib/dns/include/dns/name.h +diff -c mdn/othersrc/bind9/lib/dns/include/dns/name.h:1.1.1.5 mdn/othersrc/bind9/lib/dns/include/dns/name.h:1.7 +*** lib/dns/include/dns/name.h Tue Apr 17 14:18:27 2001 +--- lib/dns/include/dns/name.h Thu Apr 26 13:54:43 2001 +*************** +*** 217,222 **** +--- 217,233 ---- + */ + #define DNS_NAME_MAXWIRE 255 + ++ #ifdef WITH_MDN ++ /* ++ * Text output filter procedure. ++ * 'target' is the buffer to be converted. The region to be converted ++ * is from 'buffer'->base + 'used_org' to the end of the used region. ++ */ ++ typedef isc_result_t (*dns_name_totextfilter_t)(isc_buffer_t *target, ++ unsigned int used_org, ++ isc_boolean_t absolute); ++ #endif ++ + /*** + *** Initialization + ***/ +*************** +*** 1215,1220 **** +--- 1226,1239 ---- + * 'size' > 0. + * + */ ++ ++ #ifdef WITH_MDN ++ void ++ dns_name_settotextfilter(dns_name_totextfilter_t proc); ++ /* ++ * Call 'proc' at the end of dns_name_totext. ++ */ ++ #endif /* WITH_MDN */ + + #define DNS_NAME_FORMATSIZE (DNS_NAME_MAXTEXT + 1) + /* diff --git a/contrib/idn/mdnkit/patch/bind9/bind-9.2.0-patch b/contrib/idn/mdnkit/patch/bind9/bind-9.2.0-patch new file mode 100644 index 00000000000..509fc98e0a0 --- /dev/null +++ b/contrib/idn/mdnkit/patch/bind9/bind-9.2.0-patch @@ -0,0 +1,6047 @@ +MDN patch for bind-9.2.0 +======================== + + +This is a patch file for ISC BIND 9.2.0 to make it work with +internationalized/multilingual domain names. With this patch you'll +get MDN-aware dig/host/nslookup. + +To apply this patch, you should go to the top directory of the BIND +distribution (where you see `README' file), then invoke `patch' +command like this: + + % patch -p0 < this-file + +Then follow the instructions described in `README.mdnkit' to compile +and install. + + +Index: README.mdnkit +diff -c /dev/null mdn/othersrc/bind9/README.mdnkit:1.9 +*** README.mdnkit Thu Dec 6 13:51:44 2001 +--- README.mdnkit Wed Aug 22 15:19:31 2001 +*************** +*** 0 **** +--- 1,124 ---- ++ ++ BIND-9 MDN patch ++ ++ Japan Network Information Center (JPNIC) ++ ++ ++ * What is this patch for? ++ ++ This patch adds multilingual domain name (MDN) support to BIND-9. ++ You'll get multilingualized version of dig/host/nslookup commands. ++ ++ + mulltilingualized dig/host/nslookup ++ dig/host/nslookup accepts non-ASCII domain names in the local ++ codeset (such as Shift JIS, Big5 or ISO8859-1) determined by ++ the locale information. The domain names are normalized and ++ converted to the encoding on the DNS protocol, and sent to DNS ++ servers. The replies are converted back to the local codeset ++ and displayed. ++ ++ ++ * Compilation & installation ++ ++ 0. Prerequisite ++ ++ You have to build and install mDNkit before building this patched version ++ of bind-9. ++ ++ 1. Running configure script ++ ++ Run `configure' in the top directory. See `README' for the ++ configuration options. ++ ++ This patch adds the following 4 options to `configure'. You should ++ at least specify `--with-mdn' option to enable MDN support. ++ ++ --with-mdn[=MDN_PREFIX] ++ To enable MDN support, you have to specify `--with-mdn' option. ++ The argument MDN_PREFIX is the install prefix of mDNkit. If ++ MDN_PREFIX is omitted, PREFIX (derived from `--prefix=PREFIX') ++ is assumed. ++ ++ --with-libiconv[=LIBICONV_PREFIX] ++ Specify this option if mDNkit you have installed links GNU ++ libiconv. The argument LIBICONV_PREFIX is install prefix of ++ GNU libiconv. If the argument is omitted, PREFIX (derived ++ from `--prefix=PREFIX') is assumed. ++ ++ `--with-libiconv' is shorthand option for GNU libiconv. ++ ++ --with-libiconv=/usr/local ++ ++ This is equivalent to: ++ ++ --with-iconv='-L/usr/local/lib -R/usr/local/lib -liconv' ++ ++ `--with-libiconv' assumes that your C compiler has `-R' ++ option, and that the option adds the specified run-time path ++ to an exacutable binary. If `-R' option of your compiler has ++ different meaning, or your compiler lacks the option, you ++ should use `--with-iconv' option instead. Binary command ++ without run-time path information might be unexecutable. ++ In that case, you would see an error message like: ++ ++ error in loading shared libraries: libiconv.so.2: cannot ++ open shared object file ++ ++ If both `--with-libiconv' and `--with-iconv' options are ++ specified, `--with-iconv' is prior to `--with-libiconv'. ++ ++ --with-iconv=ICONV_LIBSPEC ++ If your libc doens't provide iconv(), you need to specify the ++ library containing iconv() with this option. `ICONV_LIBSPEC' ++ is the argument(s) to `cc' or `ld' to link the library, for ++ example, `--with-iconv="-L/usr/local/lib -liconv"'. ++ You don't need to specify the header file directory for "iconv.h" ++ to the compiler, as it isn't included directly by bind-9 with ++ this patch. ++ ++ --with-mdnlib=MDN_LIBSPEC ++ With this option, you can explicitly specify the argument(s) ++ to `cc' or `ld' to link the mDNkit's library, `libmdn'. If ++ this option is not specified, `-L${PREFIX}/lib -lmdn' is ++ assumed, where ${PREFIX} is the installation prefix specified ++ with `--with-mdn' option above. You may need to use this ++ option to specify extra argments, for example, ++ `--with-mdnlib="-L/usr/local/lib -R/usr/local/lib -lmdn"'. ++ ++ Please consult `README' for other configuration options. ++ ++ Note that if you want to specify some extra header file directories, ++ you should use the environment variable STD_CINCLUDES instead of ++ CFLAGS, as described in README. ++ ++ 2. Compilation and installation ++ ++ After running "configure", just do ++ ++ make ++ make install ++ ++ for compiling and installing. ++ ++ 3. Resolver configuration ++ ++ To handle multilingual domain names, you have to specify the ++ properties like: ++ + name encoding used in DNS protocol data ++ + normalization (NAMEPREP) schemes ++ These properties are specified by the mDNkit's configuration file, ++ "mdn.conf". You have to create and set up the file properly. The ++ pathname of the file and contents are described in the manual ++ "mdn.conf". ++ ++ ++ * Contact information ++ ++ Please see http//www.nic.ad.jp/jp/research/idn/ for the latest news ++ about mDNkit and this patch. ++ ++ Bug reports and comments on this kit should be sent to ++ mdnkit-bugs@nic.ad.jp and idn-cmt@nic.ad.jp, respectively. ++ ++ ++ ; $Id: bind-9.2.0-patch,v 1.1 2002/02/08 05:41:25 marka Exp $ +Index: config.h.in +diff -c mdn/othersrc/bind9/config.h.in:1.1.1.6 mdn/othersrc/bind9/config.h.in:1.10.2.1 +*** config.h.in Tue Nov 27 16:55:45 2001 +--- config.h.in Thu Dec 6 13:51:12 2001 +*************** +*** 141,146 **** +--- 141,149 ---- + /* define if you have strerror in the C library. */ + #undef HAVE_STRERROR + ++ /* Define if you have the setlocale function. */ ++ #undef HAVE_SETLOCALE ++ + /* Define if you have the header file. */ + #undef HAVE_DLFCN_H + +*************** +*** 150,155 **** +--- 153,161 ---- + /* Define if you have the header file. */ + #undef HAVE_LINUX_CAPABILITY_H + ++ /* Define if you have the header file. */ ++ #undef HAVE_LOCALE_H ++ + /* Define if you have the header file. */ + #undef HAVE_SYS_PRCTL_H + +*************** +*** 176,178 **** +--- 182,188 ---- + + /* Define if you have the socket library (-lsocket). */ + #undef HAVE_LIBSOCKET ++ ++ /* define if mDNkit support is to be included. */ ++ #undef WITH_MDN ++ +Index: configure +diff -c mdn/othersrc/bind9/configure:1.1.1.8 mdn/othersrc/bind9/configure:1.11 +*** configure Tue Nov 27 16:55:47 2001 +--- configure Thu Nov 29 18:45:13 2001 +*************** +*** 369,374 **** +--- 369,382 ---- + --with-kame[=PATH] use Kame IPv6 [default path /usr/local/v6]" + ac_help="$ac_help + --disable-linux-caps disable linux capabilities" ++ ac_help="$ac_help ++ --with-mdn[=MPREFIX] enable MDN support using mDNkit [default PREFIX]" ++ ac_help="$ac_help ++ --with-libiconv[=IPREFIX] GNU libiconv are in IPREFIX [default PREFIX]" ++ ac_help="$ac_help ++ --with-iconv[=LIBSPEC] specify iconv library [default -liconv]" ++ ac_help="$ac_help ++ --with-mdnlib=ARG specify libmdn" + + # Initialize some variables set by options. + # The variables have the same names as the options, with +*************** +*** 911,917 **** + fi + + echo $ac_n "checking host system type""... $ac_c" 1>&6 +! echo "configure:915: checking host system type" >&5 + + host_alias=$host + case "$host_alias" in +--- 919,925 ---- + fi + + echo $ac_n "checking host system type""... $ac_c" 1>&6 +! echo "configure:923: checking host system type" >&5 + + host_alias=$host + case "$host_alias" in +*************** +*** 933,939 **** + + + echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6 +! echo "configure:937: checking whether ${MAKE-make} sets \${MAKE}" >&5 + set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'` + if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +--- 941,947 ---- + + + echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6 +! echo "configure:945: checking whether ${MAKE-make} sets \${MAKE}" >&5 + set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'` + if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +*************** +*** 962,968 **** + # Extract the first word of "ranlib", so it can be a program name with args. + set dummy ranlib; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +! echo "configure:966: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +--- 970,976 ---- + # Extract the first word of "ranlib", so it can be a program name with args. + set dummy ranlib; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +! echo "configure:974: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +*************** +*** 1001,1007 **** + # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" + # ./install, which can be erroneously created by make from ./install.sh. + echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6 +! echo "configure:1005: checking for a BSD compatible install" >&5 + if test -z "$INSTALL"; then + if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +--- 1009,1015 ---- + # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" + # ./install, which can be erroneously created by make from ./install.sh. + echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6 +! echo "configure:1013: checking for a BSD compatible install" >&5 + if test -z "$INSTALL"; then + if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +*************** +*** 1062,1068 **** + # Extract the first word of "ar", so it can be a program name with args. + set dummy ar; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +! echo "configure:1066: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_path_AR'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +--- 1070,1076 ---- + # Extract the first word of "ar", so it can be a program name with args. + set dummy ar; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +! echo "configure:1074: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_path_AR'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +*************** +*** 1121,1127 **** + # Extract the first word of "$ac_prog", so it can be a program name with args. + set dummy $ac_prog; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +! echo "configure:1125: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_path_ETAGS'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +--- 1129,1135 ---- + # Extract the first word of "$ac_prog", so it can be a program name with args. + set dummy $ac_prog; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +! echo "configure:1133: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_path_ETAGS'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +*************** +*** 1163,1169 **** + # + if test "X$ETAGS" != "X"; then + echo $ac_n "checking for Exuberant Ctags etags""... $ac_c" 1>&6 +! echo "configure:1167: checking for Exuberant Ctags etags" >&5 + if $ETAGS --version 2>&1 | grep 'Exuberant Ctags' >/dev/null 2>&1; then + echo "$ac_t""yes" 1>&6 + ETAGS="$ETAGS -L" +--- 1171,1177 ---- + # + if test "X$ETAGS" != "X"; then + echo $ac_n "checking for Exuberant Ctags etags""... $ac_c" 1>&6 +! echo "configure:1175: checking for Exuberant Ctags etags" >&5 + if $ETAGS --version 2>&1 | grep 'Exuberant Ctags' >/dev/null 2>&1; then + echo "$ac_t""yes" 1>&6 + ETAGS="$ETAGS -L" +*************** +*** 1181,1187 **** + # Extract the first word of "$ac_prog", so it can be a program name with args. + set dummy $ac_prog; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +! echo "configure:1185: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_path_PERL'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +--- 1189,1195 ---- + # Extract the first word of "$ac_prog", so it can be a program name with args. + set dummy $ac_prog; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +! echo "configure:1193: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_path_PERL'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +*************** +*** 1328,1334 **** + # Extract the first word of "gcc", so it can be a program name with args. + set dummy gcc; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +! echo "configure:1332: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +--- 1336,1342 ---- + # Extract the first word of "gcc", so it can be a program name with args. + set dummy gcc; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +! echo "configure:1340: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +*************** +*** 1358,1364 **** + # Extract the first word of "cc", so it can be a program name with args. + set dummy cc; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +! echo "configure:1362: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +--- 1366,1372 ---- + # Extract the first word of "cc", so it can be a program name with args. + set dummy cc; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +! echo "configure:1370: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +*************** +*** 1409,1415 **** + # Extract the first word of "cl", so it can be a program name with args. + set dummy cl; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +! echo "configure:1413: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +--- 1417,1423 ---- + # Extract the first word of "cl", so it can be a program name with args. + set dummy cl; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +! echo "configure:1421: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +*************** +*** 1441,1447 **** + fi + + echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 +! echo "configure:1445: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 + + ac_ext=c + # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. +--- 1449,1455 ---- + fi + + echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 +! echo "configure:1453: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 + + ac_ext=c + # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. +*************** +*** 1452,1463 **** + + cat > conftest.$ac_ext << EOF + +! #line 1456 "configure" + #include "confdefs.h" + + main(){return(0);} + EOF +! if { (eval echo configure:1461: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + ac_cv_prog_cc_works=yes + # If we can't run a trivial program, we are probably using a cross compiler. + if (./conftest; exit) 2>/dev/null; then +--- 1460,1471 ---- + + cat > conftest.$ac_ext << EOF + +! #line 1464 "configure" + #include "confdefs.h" + + main(){return(0);} + EOF +! if { (eval echo configure:1469: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + ac_cv_prog_cc_works=yes + # If we can't run a trivial program, we are probably using a cross compiler. + if (./conftest; exit) 2>/dev/null; then +*************** +*** 1483,1494 **** + { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; } + fi + echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 +! echo "configure:1487: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 + echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6 + cross_compiling=$ac_cv_prog_cc_cross + + echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6 +! echo "configure:1492: checking whether we are using GNU C" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +--- 1491,1502 ---- + { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; } + fi + echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 +! echo "configure:1495: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 + echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6 + cross_compiling=$ac_cv_prog_cc_cross + + echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6 +! echo "configure:1500: checking whether we are using GNU C" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +*************** +*** 1497,1503 **** + yes; + #endif + EOF +! if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1501: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then + ac_cv_prog_gcc=yes + else + ac_cv_prog_gcc=no +--- 1505,1511 ---- + yes; + #endif + EOF +! if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1509: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then + ac_cv_prog_gcc=yes + else + ac_cv_prog_gcc=no +*************** +*** 1516,1522 **** + ac_save_CFLAGS="$CFLAGS" + CFLAGS= + echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 +! echo "configure:1520: checking whether ${CC-cc} accepts -g" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +--- 1524,1530 ---- + ac_save_CFLAGS="$CFLAGS" + CFLAGS= + echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 +! echo "configure:1528: checking whether ${CC-cc} accepts -g" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +*************** +*** 1549,1555 **** + + + echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 +! echo "configure:1553: checking how to run the C preprocessor" >&5 + # On Suns, sometimes $CPP names a directory. + if test -n "$CPP" && test -d "$CPP"; then + CPP= +--- 1557,1563 ---- + + + echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 +! echo "configure:1561: checking how to run the C preprocessor" >&5 + # On Suns, sometimes $CPP names a directory. + if test -n "$CPP" && test -d "$CPP"; then + CPP= +*************** +*** 1564,1576 **** + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. + cat > conftest.$ac_ext < + Syntax Error + EOF + ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +! { (eval echo configure:1574: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } + ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` + if test -z "$ac_err"; then + : +--- 1572,1584 ---- + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. + cat > conftest.$ac_ext < + Syntax Error + EOF + ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +! { (eval echo configure:1582: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } + ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` + if test -z "$ac_err"; then + : +*************** +*** 1581,1593 **** + rm -rf conftest* + CPP="${CC-cc} -E -traditional-cpp" + cat > conftest.$ac_ext < + Syntax Error + EOF + ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +! { (eval echo configure:1591: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } + ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` + if test -z "$ac_err"; then + : +--- 1589,1601 ---- + rm -rf conftest* + CPP="${CC-cc} -E -traditional-cpp" + cat > conftest.$ac_ext < + Syntax Error + EOF + ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +! { (eval echo configure:1599: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } + ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` + if test -z "$ac_err"; then + : +*************** +*** 1598,1610 **** + rm -rf conftest* + CPP="${CC-cc} -nologo -E" + cat > conftest.$ac_ext < + Syntax Error + EOF + ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +! { (eval echo configure:1608: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } + ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` + if test -z "$ac_err"; then + : +--- 1606,1618 ---- + rm -rf conftest* + CPP="${CC-cc} -nologo -E" + cat > conftest.$ac_ext < + Syntax Error + EOF + ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +! { (eval echo configure:1616: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } + ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` + if test -z "$ac_err"; then + : +*************** +*** 1629,1640 **** + echo "$ac_t""$CPP" 1>&6 + + echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 +! echo "configure:1633: checking for ANSI C header files" >&5 + if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + cat > conftest.$ac_ext < + #include +--- 1637,1648 ---- + echo "$ac_t""$CPP" 1>&6 + + echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 +! echo "configure:1641: checking for ANSI C header files" >&5 + if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + cat > conftest.$ac_ext < + #include +*************** +*** 1642,1648 **** + #include + EOF + ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +! { (eval echo configure:1646: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } + ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` + if test -z "$ac_err"; then + rm -rf conftest* +--- 1650,1656 ---- + #include + EOF + ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +! { (eval echo configure:1654: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } + ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` + if test -z "$ac_err"; then + rm -rf conftest* +*************** +*** 1659,1665 **** + if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat > conftest.$ac_ext < + EOF +--- 1667,1673 ---- + if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat > conftest.$ac_ext < + EOF +*************** +*** 1677,1683 **** + if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. + cat > conftest.$ac_ext < + EOF +--- 1685,1691 ---- + if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. + cat > conftest.$ac_ext < + EOF +*************** +*** 1698,1704 **** + : + else + cat > conftest.$ac_ext < + #define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +--- 1706,1712 ---- + : + else + cat > conftest.$ac_ext < + #define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +*************** +*** 1709,1715 **** + exit (0); } + + EOF +! if { (eval echo configure:1713: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null + then + : + else +--- 1717,1723 ---- + exit (0); } + + EOF +! if { (eval echo configure:1721: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null + then + : + else +*************** +*** 1737,1753 **** + do + ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` + echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 +! echo "configure:1741: checking for $ac_hdr" >&5 + if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + cat > conftest.$ac_ext < + EOF + ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +! { (eval echo configure:1751: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } + ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` + if test -z "$ac_err"; then + rm -rf conftest* +--- 1745,1761 ---- + do + ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` + echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 +! echo "configure:1749: checking for $ac_hdr" >&5 + if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + cat > conftest.$ac_ext < + EOF + ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +! { (eval echo configure:1759: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } + ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` + if test -z "$ac_err"; then + rm -rf conftest* +*************** +*** 1775,1786 **** + + + echo $ac_n "checking for working const""... $ac_c" 1>&6 +! echo "configure:1779: checking for working const" >&5 + if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + cat > conftest.$ac_ext <&6 +! echo "configure:1787: checking for working const" >&5 + if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + ac_cv_c_const=yes + else +--- 1837,1843 ---- + + ; return 0; } + EOF +! if { (eval echo configure:1841: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + ac_cv_c_const=yes + else +*************** +*** 1850,1870 **** + fi + + echo $ac_n "checking for inline""... $ac_c" 1>&6 +! echo "configure:1854: checking for inline" >&5 + if eval "test \"`echo '$''{'ac_cv_c_inline'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + ac_cv_c_inline=no + for ac_kw in inline __inline__ __inline; do + cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + ac_cv_c_inline=$ac_kw; break + else +--- 1858,1878 ---- + fi + + echo $ac_n "checking for inline""... $ac_c" 1>&6 +! echo "configure:1862: checking for inline" >&5 + if eval "test \"`echo '$''{'ac_cv_c_inline'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + ac_cv_c_inline=no + for ac_kw in inline __inline__ __inline; do + cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + ac_cv_c_inline=$ac_kw; break + else +*************** +*** 1890,1901 **** + esac + + echo $ac_n "checking for sysctlbyname""... $ac_c" 1>&6 +! echo "configure:1894: checking for sysctlbyname" >&5 + if eval "test \"`echo '$''{'ac_cv_func_sysctlbyname'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + cat > conftest.$ac_ext <&6 +! echo "configure:1902: checking for sysctlbyname" >&5 + if eval "test \"`echo '$''{'ac_cv_func_sysctlbyname'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_sysctlbyname=yes" + else +--- 1926,1932 ---- + + ; return 0; } + EOF +! if { (eval echo configure:1930: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_sysctlbyname=yes" + else +*************** +*** 1946,1954 **** + # is reported to not support "static inline" (RT #1212). + # + echo $ac_n "checking for static inline breakage""... $ac_c" 1>&6 +! echo "configure:1950: checking for static inline breakage" >&5 + cat > conftest.$ac_ext <&6 +! echo "configure:1958: checking for static inline breakage" >&5 + cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + echo "$ac_t""no" 1>&6 + else +--- 1973,1979 ---- + + ; return 0; } + EOF +! if { (eval echo configure:1977: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + echo "$ac_t""no" 1>&6 + else +*************** +*** 1981,1992 **** + rm -f conftest* + + echo $ac_n "checking for size_t""... $ac_c" 1>&6 +! echo "configure:1985: checking for size_t" >&5 + if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + cat > conftest.$ac_ext < + #if STDC_HEADERS +--- 1989,2000 ---- + rm -f conftest* + + echo $ac_n "checking for size_t""... $ac_c" 1>&6 +! echo "configure:1993: checking for size_t" >&5 + if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + cat > conftest.$ac_ext < + #if STDC_HEADERS +*************** +*** 2014,2025 **** + fi + + echo $ac_n "checking for ssize_t""... $ac_c" 1>&6 +! echo "configure:2018: checking for ssize_t" >&5 + if eval "test \"`echo '$''{'ac_cv_type_ssize_t'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + cat > conftest.$ac_ext < + #if STDC_HEADERS +--- 2022,2033 ---- + fi + + echo $ac_n "checking for ssize_t""... $ac_c" 1>&6 +! echo "configure:2026: checking for ssize_t" >&5 + if eval "test \"`echo '$''{'ac_cv_type_ssize_t'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + cat > conftest.$ac_ext < + #if STDC_HEADERS +*************** +*** 2047,2058 **** + fi + + echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6 +! echo "configure:2051: checking whether time.h and sys/time.h may both be included" >&5 + if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + cat > conftest.$ac_ext < + #include +--- 2055,2066 ---- + fi + + echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6 +! echo "configure:2059: checking whether time.h and sys/time.h may both be included" >&5 + if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + cat > conftest.$ac_ext < + #include +*************** +*** 2061,2067 **** + struct tm *tp; + ; return 0; } + EOF +! if { (eval echo configure:2065: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + ac_cv_header_time=yes + else +--- 2069,2075 ---- + struct tm *tp; + ; return 0; } + EOF +! if { (eval echo configure:2073: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + ac_cv_header_time=yes + else +*************** +*** 2082,2097 **** + fi + + echo $ac_n "checking for long long""... $ac_c" 1>&6 +! echo "configure:2086: checking for long long" >&5 + cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6 + ISC_PLATFORM_HAVELONGLONG="#define ISC_PLATFORM_HAVELONGLONG 1" +--- 2090,2105 ---- + fi + + echo $ac_n "checking for long long""... $ac_c" 1>&6 +! echo "configure:2094: checking for long long" >&5 + cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6 + ISC_PLATFORM_HAVELONGLONG="#define ISC_PLATFORM_HAVELONGLONG 1" +*************** +*** 2111,2119 **** + case $ac_cv_header_unistd_h in + yes) + echo $ac_n "checking if unistd.h defines fd_set""... $ac_c" 1>&6 +! echo "configure:2115: checking if unistd.h defines fd_set" >&5 + cat > conftest.$ac_ext < +--- 2119,2127 ---- + case $ac_cv_header_unistd_h in + yes) + echo $ac_n "checking if unistd.h defines fd_set""... $ac_c" 1>&6 +! echo "configure:2123: checking if unistd.h defines fd_set" >&5 + cat > conftest.$ac_ext < +*************** +*** 2121,2127 **** + fd_set read_set; return (0); + ; return 0; } + EOF +! if { (eval echo configure:2125: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6 + ISC_PLATFORM_NEEDSYSSELECTH="#undef ISC_PLATFORM_NEEDSYSSELECTH" +--- 2129,2135 ---- + fd_set read_set; return (0); + ; return 0; } + EOF +! if { (eval echo configure:2133: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6 + ISC_PLATFORM_NEEDSYSSELECTH="#undef ISC_PLATFORM_NEEDSYSSELECTH" +*************** +*** 2163,2176 **** + # Find the machine's endian flavor. + # + echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6 +! echo "configure:2167: checking whether byte ordering is bigendian" >&5 + if eval "test \"`echo '$''{'ac_cv_c_bigendian'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + ac_cv_c_bigendian=unknown + # See if sys/param.h defines the BYTE_ORDER macro. + cat > conftest.$ac_ext < + #include +--- 2171,2184 ---- + # Find the machine's endian flavor. + # + echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6 +! echo "configure:2175: checking whether byte ordering is bigendian" >&5 + if eval "test \"`echo '$''{'ac_cv_c_bigendian'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + ac_cv_c_bigendian=unknown + # See if sys/param.h defines the BYTE_ORDER macro. + cat > conftest.$ac_ext < + #include +*************** +*** 2181,2191 **** + #endif + ; return 0; } + EOF +! if { (eval echo configure:2185: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + # It does; now see whether it defined to BIG_ENDIAN or not. + cat > conftest.$ac_ext < + #include +--- 2189,2199 ---- + #endif + ; return 0; } + EOF +! if { (eval echo configure:2193: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + # It does; now see whether it defined to BIG_ENDIAN or not. + cat > conftest.$ac_ext < + #include +*************** +*** 2196,2202 **** + #endif + ; return 0; } + EOF +! if { (eval echo configure:2200: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + ac_cv_c_bigendian=yes + else +--- 2204,2210 ---- + #endif + ; return 0; } + EOF +! if { (eval echo configure:2208: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + ac_cv_c_bigendian=yes + else +*************** +*** 2216,2222 **** + { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } + else + cat > conftest.$ac_ext <&2; exit 1; } + else + cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null + then + ac_cv_c_bigendian=no + else +--- 2237,2243 ---- + exit (u.c[sizeof (long) - 1] == 1); + } + EOF +! if { (eval echo configure:2241: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null + then + ac_cv_c_bigendian=no + else +*************** +*** 2257,2263 **** + # was --with-openssl specified? + # + echo $ac_n "checking for OpenSSL library""... $ac_c" 1>&6 +! echo "configure:2261: checking for OpenSSL library" >&5 + # Check whether --with-openssl or --without-openssl was given. + if test "${with_openssl+set}" = set; then + withval="$with_openssl" +--- 2265,2271 ---- + # was --with-openssl specified? + # + echo $ac_n "checking for OpenSSL library""... $ac_c" 1>&6 +! echo "configure:2269: checking for OpenSSL library" >&5 + # Check whether --with-openssl or --without-openssl was given. + if test "${with_openssl+set}" = set; then + withval="$with_openssl" +*************** +*** 2298,2304 **** + echo "$ac_t""using openssl from $use_openssl/lib and $use_openssl/include" 1>&6 + + echo $ac_n "checking OpenSSL library version""... $ac_c" 1>&6 +! echo "configure:2302: checking OpenSSL library version" >&5 + saved_cflags="$CFLAGS" + saved_libs="$LIBS" + CFLAGS="$CFLAGS $DST_OPENSSL_INC" +--- 2306,2312 ---- + echo "$ac_t""using openssl from $use_openssl/lib and $use_openssl/include" 1>&6 + + echo $ac_n "checking OpenSSL library version""... $ac_c" 1>&6 +! echo "configure:2310: checking OpenSSL library version" >&5 + saved_cflags="$CFLAGS" + saved_libs="$LIBS" + CFLAGS="$CFLAGS $DST_OPENSSL_INC" +*************** +*** 2307,2313 **** + echo "$ac_t""assuming target platform has compatible version" 1>&6 + else + cat > conftest.$ac_ext < +--- 2315,2321 ---- + echo "$ac_t""assuming target platform has compatible version" 1>&6 + else + cat > conftest.$ac_ext < +*************** +*** 2322,2328 **** + } + + EOF +! if { (eval echo configure:2326: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null + then + echo "$ac_t""ok" 1>&6 + else +--- 2330,2336 ---- + } + + EOF +! if { (eval echo configure:2334: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null + then + echo "$ac_t""ok" 1>&6 + else +*************** +*** 2387,2393 **** + # was --with-randomdev specified? + # + echo $ac_n "checking for random device""... $ac_c" 1>&6 +! echo "configure:2391: checking for random device" >&5 + # Check whether --with-randomdev or --without-randomdev was given. + if test "${with_randomdev+set}" = set; then + withval="$with_randomdev" +--- 2395,2401 ---- + # was --with-randomdev specified? + # + echo $ac_n "checking for random device""... $ac_c" 1>&6 +! echo "configure:2399: checking for random device" >&5 + # Check whether --with-randomdev or --without-randomdev was given. + if test "${with_randomdev+set}" = set; then + withval="$with_randomdev" +*************** +*** 2411,2417 **** + + ac_safe=`echo "$devrandom" | sed 'y%./+-%__p_%'` + echo $ac_n "checking for $devrandom""... $ac_c" 1>&6 +! echo "configure:2415: checking for $devrandom" >&5 + if eval "test \"`echo '$''{'ac_cv_file_$ac_safe'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +--- 2419,2425 ---- + + ac_safe=`echo "$devrandom" | sed 'y%./+-%__p_%'` + echo $ac_n "checking for $devrandom""... $ac_c" 1>&6 +! echo "configure:2423: checking for $devrandom" >&5 + if eval "test \"`echo '$''{'ac_cv_file_$ac_safe'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +*************** +*** 2463,2469 **** + # + + echo $ac_n "checking whether to build with thread support""... $ac_c" 1>&6 +! echo "configure:2467: checking whether to build with thread support" >&5 + + case $host in + *-dec-osf*) +--- 2471,2477 ---- + # + + echo $ac_n "checking whether to build with thread support""... $ac_c" 1>&6 +! echo "configure:2475: checking whether to build with thread support" >&5 + + case $host in + *-dec-osf*) +*************** +*** 2551,2557 **** + # experiment with it. + CC="gcc" + echo $ac_n "checking which NetBSD thread library to use""... $ac_c" 1>&6 +! echo "configure:2555: checking which NetBSD thread library to use" >&5 + + # Check whether --with-ptl2 or --without-ptl2 was given. + if test "${with_ptl2+set}" = set; then +--- 2559,2565 ---- + # experiment with it. + CC="gcc" + echo $ac_n "checking which NetBSD thread library to use""... $ac_c" 1>&6 +! echo "configure:2563: checking which NetBSD thread library to use" >&5 + + # Check whether --with-ptl2 or --without-ptl2 was given. + if test "${with_ptl2+set}" = set; then +*************** +*** 2590,2596 **** + ;; + *) + echo $ac_n "checking for pthread_create in -lpthread""... $ac_c" 1>&6 +! echo "configure:2594: checking for pthread_create in -lpthread" >&5 + ac_lib_var=`echo pthread'_'pthread_create | sed 'y%./+-%__p_%'` + if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +--- 2598,2604 ---- + ;; + *) + echo $ac_n "checking for pthread_create in -lpthread""... $ac_c" 1>&6 +! echo "configure:2602: checking for pthread_create in -lpthread" >&5 + ac_lib_var=`echo pthread'_'pthread_create | sed 'y%./+-%__p_%'` + if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +*************** +*** 2598,2604 **** + ac_save_LIBS="$LIBS" + LIBS="-lpthread $LIBS" + cat > conftest.$ac_ext < conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" + else +--- 2617,2623 ---- + pthread_create() + ; return 0; } + EOF +! if { (eval echo configure:2621: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" + else +*************** +*** 2635,2641 **** + else + echo "$ac_t""no" 1>&6 + echo $ac_n "checking for __pthread_create in -lpthread""... $ac_c" 1>&6 +! echo "configure:2639: checking for __pthread_create in -lpthread" >&5 + ac_lib_var=`echo pthread'_'__pthread_create | sed 'y%./+-%__p_%'` + if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +--- 2643,2649 ---- + else + echo "$ac_t""no" 1>&6 + echo $ac_n "checking for __pthread_create in -lpthread""... $ac_c" 1>&6 +! echo "configure:2647: checking for __pthread_create in -lpthread" >&5 + ac_lib_var=`echo pthread'_'__pthread_create | sed 'y%./+-%__p_%'` + if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +*************** +*** 2643,2649 **** + ac_save_LIBS="$LIBS" + LIBS="-lpthread $LIBS" + cat > conftest.$ac_ext < conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" + else +--- 2662,2668 ---- + __pthread_create() + ; return 0; } + EOF +! if { (eval echo configure:2666: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" + else +*************** +*** 2680,2686 **** + else + echo "$ac_t""no" 1>&6 + echo $ac_n "checking for __pthread_create_system in -lpthread""... $ac_c" 1>&6 +! echo "configure:2684: checking for __pthread_create_system in -lpthread" >&5 + ac_lib_var=`echo pthread'_'__pthread_create_system | sed 'y%./+-%__p_%'` + if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +--- 2688,2694 ---- + else + echo "$ac_t""no" 1>&6 + echo $ac_n "checking for __pthread_create_system in -lpthread""... $ac_c" 1>&6 +! echo "configure:2692: checking for __pthread_create_system in -lpthread" >&5 + ac_lib_var=`echo pthread'_'__pthread_create_system | sed 'y%./+-%__p_%'` + if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +*************** +*** 2688,2694 **** + ac_save_LIBS="$LIBS" + LIBS="-lpthread $LIBS" + cat > conftest.$ac_ext < conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" + else +--- 2707,2713 ---- + __pthread_create_system() + ; return 0; } + EOF +! if { (eval echo configure:2711: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" + else +*************** +*** 2725,2731 **** + else + echo "$ac_t""no" 1>&6 + echo $ac_n "checking for pthread_create in -lc_r""... $ac_c" 1>&6 +! echo "configure:2729: checking for pthread_create in -lc_r" >&5 + ac_lib_var=`echo c_r'_'pthread_create | sed 'y%./+-%__p_%'` + if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +--- 2733,2739 ---- + else + echo "$ac_t""no" 1>&6 + echo $ac_n "checking for pthread_create in -lc_r""... $ac_c" 1>&6 +! echo "configure:2737: checking for pthread_create in -lc_r" >&5 + ac_lib_var=`echo c_r'_'pthread_create | sed 'y%./+-%__p_%'` + if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +*************** +*** 2733,2739 **** + ac_save_LIBS="$LIBS" + LIBS="-lc_r $LIBS" + cat > conftest.$ac_ext < conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" + else +--- 2752,2758 ---- + pthread_create() + ; return 0; } + EOF +! if { (eval echo configure:2756: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" + else +*************** +*** 2770,2776 **** + else + echo "$ac_t""no" 1>&6 + echo $ac_n "checking for pthread_create in -lc""... $ac_c" 1>&6 +! echo "configure:2774: checking for pthread_create in -lc" >&5 + ac_lib_var=`echo c'_'pthread_create | sed 'y%./+-%__p_%'` + if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +--- 2778,2784 ---- + else + echo "$ac_t""no" 1>&6 + echo $ac_n "checking for pthread_create in -lc""... $ac_c" 1>&6 +! echo "configure:2782: checking for pthread_create in -lc" >&5 + ac_lib_var=`echo c'_'pthread_create | sed 'y%./+-%__p_%'` + if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +*************** +*** 2778,2784 **** + ac_save_LIBS="$LIBS" + LIBS="-lc $LIBS" + cat > conftest.$ac_ext < conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" + else +--- 2797,2803 ---- + pthread_create() + ; return 0; } + EOF +! if { (eval echo configure:2801: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" + else +*************** +*** 2835,2841 **** + # We'd like to use sigwait() too + # + echo $ac_n "checking for sigwait in -lc""... $ac_c" 1>&6 +! echo "configure:2839: checking for sigwait in -lc" >&5 + ac_lib_var=`echo c'_'sigwait | sed 'y%./+-%__p_%'` + if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +--- 2843,2849 ---- + # We'd like to use sigwait() too + # + echo $ac_n "checking for sigwait in -lc""... $ac_c" 1>&6 +! echo "configure:2847: checking for sigwait in -lc" >&5 + ac_lib_var=`echo c'_'sigwait | sed 'y%./+-%__p_%'` + if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +*************** +*** 2843,2849 **** + ac_save_LIBS="$LIBS" + LIBS="-lc $LIBS" + cat > conftest.$ac_ext < conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" + else +--- 2862,2868 ---- + sigwait() + ; return 0; } + EOF +! if { (eval echo configure:2866: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" + else +*************** +*** 2876,2882 **** + else + echo "$ac_t""no" 1>&6 + echo $ac_n "checking for sigwait in -lpthread""... $ac_c" 1>&6 +! echo "configure:2880: checking for sigwait in -lpthread" >&5 + ac_lib_var=`echo pthread'_'sigwait | sed 'y%./+-%__p_%'` + if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +--- 2884,2890 ---- + else + echo "$ac_t""no" 1>&6 + echo $ac_n "checking for sigwait in -lpthread""... $ac_c" 1>&6 +! echo "configure:2888: checking for sigwait in -lpthread" >&5 + ac_lib_var=`echo pthread'_'sigwait | sed 'y%./+-%__p_%'` + if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +*************** +*** 2884,2890 **** + ac_save_LIBS="$LIBS" + LIBS="-lpthread $LIBS" + cat > conftest.$ac_ext < conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" + else +--- 2903,2909 ---- + sigwait() + ; return 0; } + EOF +! if { (eval echo configure:2907: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" + else +*************** +*** 2917,2923 **** + else + echo "$ac_t""no" 1>&6 + echo $ac_n "checking for _Psigwait in -lpthread""... $ac_c" 1>&6 +! echo "configure:2921: checking for _Psigwait in -lpthread" >&5 + ac_lib_var=`echo pthread'_'_Psigwait | sed 'y%./+-%__p_%'` + if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +--- 2925,2931 ---- + else + echo "$ac_t""no" 1>&6 + echo $ac_n "checking for _Psigwait in -lpthread""... $ac_c" 1>&6 +! echo "configure:2929: checking for _Psigwait in -lpthread" >&5 + ac_lib_var=`echo pthread'_'_Psigwait | sed 'y%./+-%__p_%'` + if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +*************** +*** 2925,2931 **** + ac_save_LIBS="$LIBS" + LIBS="-lpthread $LIBS" + cat > conftest.$ac_ext < conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" + else +--- 2944,2950 ---- + _Psigwait() + ; return 0; } + EOF +! if { (eval echo configure:2948: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" + else +*************** +*** 2966,2977 **** + + + echo $ac_n "checking for pthread_attr_getstacksize""... $ac_c" 1>&6 +! echo "configure:2970: checking for pthread_attr_getstacksize" >&5 + if eval "test \"`echo '$''{'ac_cv_func_pthread_attr_getstacksize'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + cat > conftest.$ac_ext <&6 +! echo "configure:2978: checking for pthread_attr_getstacksize" >&5 + if eval "test \"`echo '$''{'ac_cv_func_pthread_attr_getstacksize'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_pthread_attr_getstacksize=yes" + else +--- 3002,3008 ---- + + ; return 0; } + EOF +! if { (eval echo configure:3006: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_pthread_attr_getstacksize=yes" + else +*************** +*** 3026,3032 **** + # + *-freebsd*) + echo $ac_n "checking for sigwait in -lc_r""... $ac_c" 1>&6 +! echo "configure:3030: checking for sigwait in -lc_r" >&5 + ac_lib_var=`echo c_r'_'sigwait | sed 'y%./+-%__p_%'` + if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +--- 3034,3040 ---- + # + *-freebsd*) + echo $ac_n "checking for sigwait in -lc_r""... $ac_c" 1>&6 +! echo "configure:3038: checking for sigwait in -lc_r" >&5 + ac_lib_var=`echo c_r'_'sigwait | sed 'y%./+-%__p_%'` + if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +*************** +*** 3034,3040 **** + ac_save_LIBS="$LIBS" + LIBS="-lc_r $LIBS" + cat > conftest.$ac_ext < conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" + else +--- 3053,3059 ---- + sigwait() + ; return 0; } + EOF +! if { (eval echo configure:3057: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" + else +*************** +*** 3100,3111 **** + EOF + + echo $ac_n "checking for pthread_setconcurrency""... $ac_c" 1>&6 +! echo "configure:3104: checking for pthread_setconcurrency" >&5 + if eval "test \"`echo '$''{'ac_cv_func_pthread_setconcurrency'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + cat > conftest.$ac_ext <&6 +! echo "configure:3112: checking for pthread_setconcurrency" >&5 + if eval "test \"`echo '$''{'ac_cv_func_pthread_setconcurrency'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_pthread_setconcurrency=yes" + else +--- 3136,3142 ---- + + ; return 0; } + EOF +! if { (eval echo configure:3140: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_pthread_setconcurrency=yes" + else +*************** +*** 3166,3177 **** + # Look for sysconf to allow detection of the number of processors. + # + echo $ac_n "checking for sysconf""... $ac_c" 1>&6 +! echo "configure:3170: checking for sysconf" >&5 + if eval "test \"`echo '$''{'ac_cv_func_sysconf'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + cat > conftest.$ac_ext <&6 +! echo "configure:3178: checking for sysconf" >&5 + if eval "test \"`echo '$''{'ac_cv_func_sysconf'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_sysconf=yes" + else +--- 3202,3208 ---- + + ; return 0; } + EOF +! if { (eval echo configure:3206: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_sysconf=yes" + else +*************** +*** 3275,3286 **** + # be defined. + # + echo $ac_n "checking for flockfile""... $ac_c" 1>&6 +! echo "configure:3279: checking for flockfile" >&5 + if eval "test \"`echo '$''{'ac_cv_func_flockfile'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + cat > conftest.$ac_ext <&6 +! echo "configure:3287: checking for flockfile" >&5 + if eval "test \"`echo '$''{'ac_cv_func_flockfile'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_flockfile=yes" + else +--- 3311,3317 ---- + + ; return 0; } + EOF +! if { (eval echo configure:3315: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_flockfile=yes" + else +*************** +*** 3326,3337 **** + fi + + echo $ac_n "checking for getc_unlocked""... $ac_c" 1>&6 +! echo "configure:3330: checking for getc_unlocked" >&5 + if eval "test \"`echo '$''{'ac_cv_func_getc_unlocked'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + cat > conftest.$ac_ext <&6 +! echo "configure:3338: checking for getc_unlocked" >&5 + if eval "test \"`echo '$''{'ac_cv_func_getc_unlocked'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_getc_unlocked=yes" + else +--- 3362,3368 ---- + + ; return 0; } + EOF +! if { (eval echo configure:3366: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_getc_unlocked=yes" + else +*************** +*** 3381,3387 **** + # Indicate what the final decision was regarding threads. + # + echo $ac_n "checking whether to build with threads""... $ac_c" 1>&6 +! echo "configure:3385: checking whether to build with threads" >&5 + if $use_threads; then + echo "$ac_t""yes" 1>&6 + else +--- 3389,3395 ---- + # Indicate what the final decision was regarding threads. + # + echo $ac_n "checking whether to build with threads""... $ac_c" 1>&6 +! echo "configure:3393: checking whether to build with threads" >&5 + if $use_threads; then + echo "$ac_t""yes" 1>&6 + else +*************** +*** 3457,3468 **** + # NLS + # + echo $ac_n "checking for catgets""... $ac_c" 1>&6 +! echo "configure:3461: checking for catgets" >&5 + if eval "test \"`echo '$''{'ac_cv_func_catgets'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + cat > conftest.$ac_ext <&6 +! echo "configure:3469: checking for catgets" >&5 + if eval "test \"`echo '$''{'ac_cv_func_catgets'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_catgets=yes" + else +--- 3493,3499 ---- + + ; return 0; } + EOF +! if { (eval echo configure:3497: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_catgets=yes" + else +*************** +*** 3523,3529 **** + ;; + *) + echo $ac_n "checking for socket in -lsocket""... $ac_c" 1>&6 +! echo "configure:3527: checking for socket in -lsocket" >&5 + ac_lib_var=`echo socket'_'socket | sed 'y%./+-%__p_%'` + if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +--- 3531,3537 ---- + ;; + *) + echo $ac_n "checking for socket in -lsocket""... $ac_c" 1>&6 +! echo "configure:3535: checking for socket in -lsocket" >&5 + ac_lib_var=`echo socket'_'socket | sed 'y%./+-%__p_%'` + if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +*************** +*** 3531,3537 **** + ac_save_LIBS="$LIBS" + LIBS="-lsocket $LIBS" + cat > conftest.$ac_ext < conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" + else +--- 3550,3556 ---- + socket() + ; return 0; } + EOF +! if { (eval echo configure:3554: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" + else +*************** +*** 3570,3576 **** + fi + + echo $ac_n "checking for inet_ntoa in -lnsl""... $ac_c" 1>&6 +! echo "configure:3574: checking for inet_ntoa in -lnsl" >&5 + ac_lib_var=`echo nsl'_'inet_ntoa | sed 'y%./+-%__p_%'` + if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +--- 3578,3584 ---- + fi + + echo $ac_n "checking for inet_ntoa in -lnsl""... $ac_c" 1>&6 +! echo "configure:3582: checking for inet_ntoa in -lnsl" >&5 + ac_lib_var=`echo nsl'_'inet_ntoa | sed 'y%./+-%__p_%'` + if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +*************** +*** 3578,3584 **** + ac_save_LIBS="$LIBS" + LIBS="-lnsl $LIBS" + cat > conftest.$ac_ext < conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" + else +--- 3597,3603 ---- + inet_ntoa() + ; return 0; } + EOF +! if { (eval echo configure:3601: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" + else +*************** +*** 3623,3629 **** + # Purify support + # + echo $ac_n "checking whether to use purify""... $ac_c" 1>&6 +! echo "configure:3627: checking whether to use purify" >&5 + # Check whether --with-purify or --without-purify was given. + if test "${with_purify+set}" = set; then + withval="$with_purify" +--- 3631,3637 ---- + # Purify support + # + echo $ac_n "checking whether to use purify""... $ac_c" 1>&6 +! echo "configure:3635: checking whether to use purify" >&5 + # Check whether --with-purify or --without-purify was given. + if test "${with_purify+set}" = set; then + withval="$with_purify" +*************** +*** 3640,3646 **** + # Extract the first word of "purify", so it can be a program name with args. + set dummy purify; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +! echo "configure:3644: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_path_purify_path'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +--- 3648,3654 ---- + # Extract the first word of "purify", so it can be a program name with args. + set dummy purify; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +! echo "configure:3652: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_path_purify_path'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +*************** +*** 3717,3728 **** + case $use_libtool in + yes) + echo $ac_n "checking for Cygwin environment""... $ac_c" 1>&6 +! echo "configure:3721: checking for Cygwin environment" >&5 + if eval "test \"`echo '$''{'ac_cv_cygwin'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + cat > conftest.$ac_ext <&6 +! echo "configure:3729: checking for Cygwin environment" >&5 + if eval "test \"`echo '$''{'ac_cv_cygwin'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + ac_cv_cygwin=yes + else +--- 3741,3747 ---- + return __CYGWIN__; + ; return 0; } + EOF +! if { (eval echo configure:3745: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + ac_cv_cygwin=yes + else +*************** +*** 3750,3768 **** + CYGWIN= + test "$ac_cv_cygwin" = yes && CYGWIN=yes + echo $ac_n "checking for mingw32 environment""... $ac_c" 1>&6 +! echo "configure:3754: checking for mingw32 environment" >&5 + if eval "test \"`echo '$''{'ac_cv_mingw32'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + ac_cv_mingw32=yes + else +--- 3758,3776 ---- + CYGWIN= + test "$ac_cv_cygwin" = yes && CYGWIN=yes + echo $ac_n "checking for mingw32 environment""... $ac_c" 1>&6 +! echo "configure:3762: checking for mingw32 environment" >&5 + if eval "test \"`echo '$''{'ac_cv_mingw32'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + ac_cv_mingw32=yes + else +*************** +*** 3848,3854 **** + fi + + echo $ac_n "checking build system type""... $ac_c" 1>&6 +! echo "configure:3852: checking build system type" >&5 + + build_alias=$build + case "$build_alias" in +--- 3856,3862 ---- + fi + + echo $ac_n "checking build system type""... $ac_c" 1>&6 +! echo "configure:3860: checking build system type" >&5 + + build_alias=$build + case "$build_alias" in +*************** +*** 3877,3883 **** + if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + echo $ac_n "checking for ld used by GCC""... $ac_c" 1>&6 +! echo "configure:3881: checking for ld used by GCC" >&5 + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw +--- 3885,3891 ---- + if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + echo $ac_n "checking for ld used by GCC""... $ac_c" 1>&6 +! echo "configure:3889: checking for ld used by GCC" >&5 + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw +*************** +*** 3907,3916 **** + esac + elif test "$with_gnu_ld" = yes; then + echo $ac_n "checking for GNU ld""... $ac_c" 1>&6 +! echo "configure:3911: checking for GNU ld" >&5 + else + echo $ac_n "checking for non-GNU ld""... $ac_c" 1>&6 +! echo "configure:3914: checking for non-GNU ld" >&5 + fi + if eval "test \"`echo '$''{'lt_cv_path_LD'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +--- 3915,3924 ---- + esac + elif test "$with_gnu_ld" = yes; then + echo $ac_n "checking for GNU ld""... $ac_c" 1>&6 +! echo "configure:3919: checking for GNU ld" >&5 + else + echo $ac_n "checking for non-GNU ld""... $ac_c" 1>&6 +! echo "configure:3922: checking for non-GNU ld" >&5 + fi + if eval "test \"`echo '$''{'lt_cv_path_LD'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +*************** +*** 3945,3951 **** + fi + test -z "$LD" && { echo "configure: error: no acceptable ld found in \$PATH" 1>&2; exit 1; } + echo $ac_n "checking if the linker ($LD) is GNU ld""... $ac_c" 1>&6 +! echo "configure:3949: checking if the linker ($LD) is GNU ld" >&5 + if eval "test \"`echo '$''{'lt_cv_prog_gnu_ld'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +--- 3953,3959 ---- + fi + test -z "$LD" && { echo "configure: error: no acceptable ld found in \$PATH" 1>&2; exit 1; } + echo $ac_n "checking if the linker ($LD) is GNU ld""... $ac_c" 1>&6 +! echo "configure:3957: checking if the linker ($LD) is GNU ld" >&5 + if eval "test \"`echo '$''{'lt_cv_prog_gnu_ld'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +*************** +*** 3962,3968 **** + + + echo $ac_n "checking for $LD option to reload object files""... $ac_c" 1>&6 +! echo "configure:3966: checking for $LD option to reload object files" >&5 + if eval "test \"`echo '$''{'lt_cv_ld_reload_flag'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +--- 3970,3976 ---- + + + echo $ac_n "checking for $LD option to reload object files""... $ac_c" 1>&6 +! echo "configure:3974: checking for $LD option to reload object files" >&5 + if eval "test \"`echo '$''{'lt_cv_ld_reload_flag'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +*************** +*** 3974,3980 **** + test -n "$reload_flag" && reload_flag=" $reload_flag" + + echo $ac_n "checking for BSD-compatible nm""... $ac_c" 1>&6 +! echo "configure:3978: checking for BSD-compatible nm" >&5 + if eval "test \"`echo '$''{'lt_cv_path_NM'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +--- 3982,3988 ---- + test -n "$reload_flag" && reload_flag=" $reload_flag" + + echo $ac_n "checking for BSD-compatible nm""... $ac_c" 1>&6 +! echo "configure:3986: checking for BSD-compatible nm" >&5 + if eval "test \"`echo '$''{'lt_cv_path_NM'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +*************** +*** 4012,4018 **** + echo "$ac_t""$NM" 1>&6 + + echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6 +! echo "configure:4016: checking whether ln -s works" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_LN_S'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +--- 4020,4026 ---- + echo "$ac_t""$NM" 1>&6 + + echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6 +! echo "configure:4024: checking whether ln -s works" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_LN_S'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +*************** +*** 4033,4039 **** + fi + + echo $ac_n "checking how to recognise dependant libraries""... $ac_c" 1>&6 +! echo "configure:4037: checking how to recognise dependant libraries" >&5 + if eval "test \"`echo '$''{'lt_cv_deplibs_check_method'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +--- 4041,4047 ---- + fi + + echo $ac_n "checking how to recognise dependant libraries""... $ac_c" 1>&6 +! echo "configure:4045: checking how to recognise dependant libraries" >&5 + if eval "test \"`echo '$''{'lt_cv_deplibs_check_method'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +*************** +*** 4206,4218 **** + deplibs_check_method=$lt_cv_deplibs_check_method + + echo $ac_n "checking for object suffix""... $ac_c" 1>&6 +! echo "configure:4210: checking for object suffix" >&5 + if eval "test \"`echo '$''{'ac_cv_objext'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + rm -f conftest* + echo 'int i = 1;' > conftest.$ac_ext +! if { (eval echo configure:4216: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + for ac_file in conftest.*; do + case $ac_file in + *.c) ;; +--- 4214,4226 ---- + deplibs_check_method=$lt_cv_deplibs_check_method + + echo $ac_n "checking for object suffix""... $ac_c" 1>&6 +! echo "configure:4218: checking for object suffix" >&5 + if eval "test \"`echo '$''{'ac_cv_objext'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + rm -f conftest* + echo 'int i = 1;' > conftest.$ac_ext +! if { (eval echo configure:4224: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + for ac_file in conftest.*; do + case $ac_file in + *.c) ;; +*************** +*** 4232,4238 **** + + + echo $ac_n "checking for executable suffix""... $ac_c" 1>&6 +! echo "configure:4236: checking for executable suffix" >&5 + if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +--- 4240,4246 ---- + + + echo $ac_n "checking for executable suffix""... $ac_c" 1>&6 +! echo "configure:4244: checking for executable suffix" >&5 + if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +*************** +*** 4242,4251 **** + rm -f conftest* + echo 'int main () { return 0; }' > conftest.$ac_ext + ac_cv_exeext= +! if { (eval echo configure:4246: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then + for file in conftest.*; do + case $file in +! *.c | *.o | *.obj) ;; + *) ac_cv_exeext=`echo $file | sed -e s/conftest//` ;; + esac + done +--- 4250,4259 ---- + rm -f conftest* + echo 'int main () { return 0; }' > conftest.$ac_ext + ac_cv_exeext= +! if { (eval echo configure:4254: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then + for file in conftest.*; do + case $file in +! *.c | *.C | *.o | *.obj) ;; + *) ac_cv_exeext=`echo $file | sed -e s/conftest//` ;; + esac + done +*************** +*** 4273,4279 **** + + # Check for command to grab the raw symbol name followed by C symbol from nm. + echo $ac_n "checking command to parse $NM output""... $ac_c" 1>&6 +! echo "configure:4277: checking command to parse $NM output" >&5 + if eval "test \"`echo '$''{'lt_cv_sys_global_symbol_pipe'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +--- 4281,4287 ---- + + # Check for command to grab the raw symbol name followed by C symbol from nm. + echo $ac_n "checking command to parse $NM output""... $ac_c" 1>&6 +! echo "configure:4285: checking command to parse $NM output" >&5 + if eval "test \"`echo '$''{'lt_cv_sys_global_symbol_pipe'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +*************** +*** 4349,4358 **** + int main(){nm_test_var='a';nm_test_func();return(0);} + EOF + +! if { (eval echo configure:4353: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + # Now try to grab the symbols. + nlist=conftest.nm +! if { (eval echo configure:4356: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\") 1>&5; (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5; } && test -s "$nlist"; then + # Try sorting and uniquifying the output. + if sort "$nlist" | uniq > "$nlist"T; then + mv -f "$nlist"T "$nlist" +--- 4357,4366 ---- + int main(){nm_test_var='a';nm_test_func();return(0);} + EOF + +! if { (eval echo configure:4361: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + # Now try to grab the symbols. + nlist=conftest.nm +! if { (eval echo configure:4364: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\") 1>&5; (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5; } && test -s "$nlist"; then + # Try sorting and uniquifying the output. + if sort "$nlist" | uniq > "$nlist"T; then + mv -f "$nlist"T "$nlist" +*************** +*** 4403,4409 **** + save_CFLAGS="$CFLAGS" + LIBS="conftstm.$ac_objext" + CFLAGS="$CFLAGS$no_builtin_flag" +! if { (eval echo configure:4407: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then + pipe_works=yes + fi + LIBS="$save_LIBS" +--- 4411,4417 ---- + save_CFLAGS="$CFLAGS" + LIBS="conftstm.$ac_objext" + CFLAGS="$CFLAGS$no_builtin_flag" +! if { (eval echo configure:4415: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then + pipe_works=yes + fi + LIBS="$save_LIBS" +*************** +*** 4449,4465 **** + do + ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` + echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 +! echo "configure:4453: checking for $ac_hdr" >&5 + if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + cat > conftest.$ac_ext < + EOF + ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +! { (eval echo configure:4463: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } + ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` + if test -z "$ac_err"; then + rm -rf conftest* +--- 4457,4473 ---- + do + ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` + echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 +! echo "configure:4461: checking for $ac_hdr" >&5 + if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + cat > conftest.$ac_ext < + EOF + ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +! { (eval echo configure:4471: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } + ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` + if test -z "$ac_err"; then + rm -rf conftest* +*************** +*** 4494,4500 **** + file_magic*) + if test "$file_magic_cmd" = '$MAGIC_CMD'; then + echo $ac_n "checking for ${ac_tool_prefix}file""... $ac_c" 1>&6 +! echo "configure:4498: checking for ${ac_tool_prefix}file" >&5 + if eval "test \"`echo '$''{'lt_cv_path_MAGIC_CMD'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +--- 4502,4508 ---- + file_magic*) + if test "$file_magic_cmd" = '$MAGIC_CMD'; then + echo $ac_n "checking for ${ac_tool_prefix}file""... $ac_c" 1>&6 +! echo "configure:4506: checking for ${ac_tool_prefix}file" >&5 + if eval "test \"`echo '$''{'lt_cv_path_MAGIC_CMD'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +*************** +*** 4556,4562 **** + if test -z "$lt_cv_path_MAGIC_CMD"; then + if test -n "$ac_tool_prefix"; then + echo $ac_n "checking for file""... $ac_c" 1>&6 +! echo "configure:4560: checking for file" >&5 + if eval "test \"`echo '$''{'lt_cv_path_MAGIC_CMD'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +--- 4564,4570 ---- + if test -z "$lt_cv_path_MAGIC_CMD"; then + if test -n "$ac_tool_prefix"; then + echo $ac_n "checking for file""... $ac_c" 1>&6 +! echo "configure:4568: checking for file" >&5 + if eval "test \"`echo '$''{'lt_cv_path_MAGIC_CMD'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +*************** +*** 4627,4633 **** + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. + set dummy ${ac_tool_prefix}ranlib; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +! echo "configure:4631: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +--- 4635,4641 ---- + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. + set dummy ${ac_tool_prefix}ranlib; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +! echo "configure:4639: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +*************** +*** 4659,4665 **** + # Extract the first word of "ranlib", so it can be a program name with args. + set dummy ranlib; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +! echo "configure:4663: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +--- 4667,4673 ---- + # Extract the first word of "ranlib", so it can be a program name with args. + set dummy ranlib; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +! echo "configure:4671: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +*************** +*** 4694,4700 **** + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. + set dummy ${ac_tool_prefix}strip; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +! echo "configure:4698: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_STRIP'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +--- 4702,4708 ---- + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. + set dummy ${ac_tool_prefix}strip; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +! echo "configure:4706: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_STRIP'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +*************** +*** 4726,4732 **** + # Extract the first word of "strip", so it can be a program name with args. + set dummy strip; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +! echo "configure:4730: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_STRIP'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +--- 4734,4740 ---- + # Extract the first word of "strip", so it can be a program name with args. + set dummy strip; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +! echo "configure:4738: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_STRIP'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +*************** +*** 4775,4782 **** + case $host in + *-*-irix6*) + # Find out which ABI we are using. +! echo '#line 4779 "configure"' > conftest.$ac_ext +! if { (eval echo configure:4780: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -32" +--- 4783,4790 ---- + case $host in + *-*-irix6*) + # Find out which ABI we are using. +! echo '#line 4787 "configure"' > conftest.$ac_ext +! if { (eval echo configure:4788: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -32" +*************** +*** 4797,4803 **** + SAVE_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -belf" + echo $ac_n "checking whether the C compiler needs -belf""... $ac_c" 1>&6 +! echo "configure:4801: checking whether the C compiler needs -belf" >&5 + if eval "test \"`echo '$''{'lt_cv_cc_needs_belf'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +--- 4805,4811 ---- + SAVE_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -belf" + echo $ac_n "checking whether the C compiler needs -belf""... $ac_c" 1>&6 +! echo "configure:4809: checking whether the C compiler needs -belf" >&5 + if eval "test \"`echo '$''{'lt_cv_cc_needs_belf'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +*************** +*** 4810,4823 **** + cross_compiling=$ac_cv_prog_cc_cross + + cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + lt_cv_cc_needs_belf=yes + else +--- 4818,4831 ---- + cross_compiling=$ac_cv_prog_cc_cross + + cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + lt_cv_cc_needs_belf=yes + else +*************** +*** 4932,4938 **** + ## FIXME: this should be a separate macro + ## + echo $ac_n "checking for objdir""... $ac_c" 1>&6 +! echo "configure:4936: checking for objdir" >&5 + rm -f .libs 2>/dev/null + mkdir .libs 2>/dev/null + if test -d .libs; then +--- 4940,4946 ---- + ## FIXME: this should be a separate macro + ## + echo $ac_n "checking for objdir""... $ac_c" 1>&6 +! echo "configure:4944: checking for objdir" >&5 + rm -f .libs 2>/dev/null + mkdir .libs 2>/dev/null + if test -d .libs; then +*************** +*** 4963,4969 **** + # in isolation, and that seeing it set (from the cache) indicates that + # the associated values are set (in the cache) correctly too. + echo $ac_n "checking for $compiler option to produce PIC""... $ac_c" 1>&6 +! echo "configure:4967: checking for $compiler option to produce PIC" >&5 + if eval "test \"`echo '$''{'lt_cv_prog_cc_pic'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +--- 4971,4977 ---- + # in isolation, and that seeing it set (from the cache) indicates that + # the associated values are set (in the cache) correctly too. + echo $ac_n "checking for $compiler option to produce PIC""... $ac_c" 1>&6 +! echo "configure:4975: checking for $compiler option to produce PIC" >&5 + if eval "test \"`echo '$''{'lt_cv_prog_cc_pic'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +*************** +*** 5115,5135 **** + + # Check to make sure the pic_flag actually works. + echo $ac_n "checking if $compiler PIC flag $lt_cv_prog_cc_pic works""... $ac_c" 1>&6 +! echo "configure:5119: checking if $compiler PIC flag $lt_cv_prog_cc_pic works" >&5 + if eval "test \"`echo '$''{'lt_cv_prog_cc_pic_works'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS $lt_cv_prog_cc_pic -DPIC" + cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + case $host_os in + hpux9* | hpux10* | hpux11*) +--- 5123,5143 ---- + + # Check to make sure the pic_flag actually works. + echo $ac_n "checking if $compiler PIC flag $lt_cv_prog_cc_pic works""... $ac_c" 1>&6 +! echo "configure:5127: checking if $compiler PIC flag $lt_cv_prog_cc_pic works" >&5 + if eval "test \"`echo '$''{'lt_cv_prog_cc_pic_works'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS $lt_cv_prog_cc_pic -DPIC" + cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + case $host_os in + hpux9* | hpux10* | hpux11*) +*************** +*** 5185,5191 **** + ## FIXME: this should be a separate macro + ## + echo $ac_n "checking if $compiler static flag $lt_cv_prog_cc_static works""... $ac_c" 1>&6 +! echo "configure:5189: checking if $compiler static flag $lt_cv_prog_cc_static works" >&5 + if eval "test \"`echo '$''{'lt_cv_prog_cc_static_works'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +--- 5193,5199 ---- + ## FIXME: this should be a separate macro + ## + echo $ac_n "checking if $compiler static flag $lt_cv_prog_cc_static works""... $ac_c" 1>&6 +! echo "configure:5197: checking if $compiler static flag $lt_cv_prog_cc_static works" >&5 + if eval "test \"`echo '$''{'lt_cv_prog_cc_static_works'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +*************** +*** 5193,5206 **** + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $lt_cv_prog_cc_static" + cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + lt_cv_prog_cc_static_works=yes + else +--- 5201,5214 ---- + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $lt_cv_prog_cc_static" + cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + lt_cv_prog_cc_static_works=yes + else +*************** +*** 5231,5237 **** + ## + # Check to see if options -o and -c are simultaneously supported by compiler + echo $ac_n "checking if $compiler supports -c -o file.$ac_objext""... $ac_c" 1>&6 +! echo "configure:5235: checking if $compiler supports -c -o file.$ac_objext" >&5 + if eval "test \"`echo '$''{'lt_cv_compiler_c_o'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +--- 5239,5245 ---- + ## + # Check to see if options -o and -c are simultaneously supported by compiler + echo $ac_n "checking if $compiler supports -c -o file.$ac_objext""... $ac_c" 1>&6 +! echo "configure:5243: checking if $compiler supports -c -o file.$ac_objext" >&5 + if eval "test \"`echo '$''{'lt_cv_compiler_c_o'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +*************** +*** 5250,5256 **** + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -o out/conftest2.$ac_objext" + compiler_c_o=no +! if { (eval echo configure:5254: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>out/conftest.err; } && test -s out/conftest2.$ac_objext; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s out/conftest.err; then +--- 5258,5264 ---- + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -o out/conftest2.$ac_objext" + compiler_c_o=no +! if { (eval echo configure:5262: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>out/conftest.err; } && test -s out/conftest2.$ac_objext; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s out/conftest.err; then +*************** +*** 5279,5285 **** + if test x"$compiler_c_o" = x"yes"; then + # Check to see if we can write to a .lo + echo $ac_n "checking if $compiler supports -c -o file.lo""... $ac_c" 1>&6 +! echo "configure:5283: checking if $compiler supports -c -o file.lo" >&5 + if eval "test \"`echo '$''{'lt_cv_compiler_o_lo'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +--- 5287,5293 ---- + if test x"$compiler_c_o" = x"yes"; then + # Check to see if we can write to a .lo + echo $ac_n "checking if $compiler supports -c -o file.lo""... $ac_c" 1>&6 +! echo "configure:5291: checking if $compiler supports -c -o file.lo" >&5 + if eval "test \"`echo '$''{'lt_cv_compiler_o_lo'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +*************** +*** 5288,5301 **** + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -c -o conftest.lo" + cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings +--- 5296,5309 ---- + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -c -o conftest.lo" + cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings +*************** +*** 5329,5335 **** + if test "$compiler_c_o" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + echo $ac_n "checking if we can lock with hard links""... $ac_c" 1>&6 +! echo "configure:5333: checking if we can lock with hard links" >&5 + hard_links=yes + $rm conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no +--- 5337,5343 ---- + if test "$compiler_c_o" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + echo $ac_n "checking if we can lock with hard links""... $ac_c" 1>&6 +! echo "configure:5341: checking if we can lock with hard links" >&5 + hard_links=yes + $rm conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no +*************** +*** 5352,5371 **** + if test "$GCC" = yes; then + # Check to see if options -fno-rtti -fno-exceptions are supported by compiler + echo $ac_n "checking if $compiler supports -fno-rtti -fno-exceptions""... $ac_c" 1>&6 +! echo "configure:5356: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 + echo "int some_variable = 0;" > conftest.$ac_ext + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -fno-rtti -fno-exceptions -c conftest.$ac_ext" + compiler_rtti_exceptions=no + cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings +--- 5360,5379 ---- + if test "$GCC" = yes; then + # Check to see if options -fno-rtti -fno-exceptions are supported by compiler + echo $ac_n "checking if $compiler supports -fno-rtti -fno-exceptions""... $ac_c" 1>&6 +! echo "configure:5364: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 + echo "int some_variable = 0;" > conftest.$ac_ext + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -fno-rtti -fno-exceptions -c conftest.$ac_ext" + compiler_rtti_exceptions=no + cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings +*************** +*** 5396,5402 **** + ## + # See if the linker supports building shared libraries. + echo $ac_n "checking whether the linker ($LD) supports shared libraries""... $ac_c" 1>&6 +! echo "configure:5400: checking whether the linker ($LD) supports shared libraries" >&5 + + allow_undefined_flag= + no_undefined_flag= +--- 5404,5410 ---- + ## + # See if the linker supports building shared libraries. + echo $ac_n "checking whether the linker ($LD) supports shared libraries""... $ac_c" 1>&6 +! echo "configure:5408: checking whether the linker ($LD) supports shared libraries" >&5 + + allow_undefined_flag= + no_undefined_flag= +*************** +*** 6016,6022 **** + ## + # Check hardcoding attributes. + echo $ac_n "checking how to hardcode library paths into programs""... $ac_c" 1>&6 +! echo "configure:6020: checking how to hardcode library paths into programs" >&5 + hardcode_action= + if test -n "$hardcode_libdir_flag_spec" || \ + test -n "$runpath_var"; then +--- 6024,6030 ---- + ## + # Check hardcoding attributes. + echo $ac_n "checking how to hardcode library paths into programs""... $ac_c" 1>&6 +! echo "configure:6028: checking how to hardcode library paths into programs" >&5 + hardcode_action= + if test -n "$hardcode_libdir_flag_spec" || \ + test -n "$runpath_var"; then +*************** +*** 6048,6054 **** + striplib= + old_striplib= + echo $ac_n "checking whether stripping libraries is possible""... $ac_c" 1>&6 +! echo "configure:6052: checking whether stripping libraries is possible" >&5 + if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" +--- 6056,6062 ---- + striplib= + old_striplib= + echo $ac_n "checking whether stripping libraries is possible""... $ac_c" 1>&6 +! echo "configure:6060: checking whether stripping libraries is possible" >&5 + if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" +*************** +*** 6066,6072 **** + ## + # PORTME Fill in your ld.so characteristics + echo $ac_n "checking dynamic linker characteristics""... $ac_c" 1>&6 +! echo "configure:6070: checking dynamic linker characteristics" >&5 + library_names_spec= + libname_spec='lib$name' + soname_spec= +--- 6074,6080 ---- + ## + # PORTME Fill in your ld.so characteristics + echo $ac_n "checking dynamic linker characteristics""... $ac_c" 1>&6 +! echo "configure:6078: checking dynamic linker characteristics" >&5 + library_names_spec= + libname_spec='lib$name' + soname_spec= +*************** +*** 6456,6462 **** + ## + # Report the final consequences. + echo $ac_n "checking if libtool supports shared libraries""... $ac_c" 1>&6 +! echo "configure:6460: checking if libtool supports shared libraries" >&5 + echo "$ac_t""$can_build_shared" 1>&6 + ## + ## END FIXME +--- 6464,6470 ---- + ## + # Report the final consequences. + echo $ac_n "checking if libtool supports shared libraries""... $ac_c" 1>&6 +! echo "configure:6468: checking if libtool supports shared libraries" >&5 + echo "$ac_t""$can_build_shared" 1>&6 + ## + ## END FIXME +*************** +*** 6497,6503 **** + + *) + echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6 +! echo "configure:6501: checking for dlopen in -ldl" >&5 + ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'` + if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +--- 6505,6511 ---- + + *) + echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6 +! echo "configure:6509: checking for dlopen in -ldl" >&5 + ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'` + if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +*************** +*** 6505,6511 **** + ac_save_LIBS="$LIBS" + LIBS="-ldl $LIBS" + cat > conftest.$ac_ext < conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" + else +--- 6524,6530 ---- + dlopen() + ; return 0; } + EOF +! if { (eval echo configure:6528: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" + else +*************** +*** 6535,6546 **** + else + echo "$ac_t""no" 1>&6 + echo $ac_n "checking for dlopen""... $ac_c" 1>&6 +! echo "configure:6539: checking for dlopen" >&5 + if eval "test \"`echo '$''{'ac_cv_func_dlopen'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + cat > conftest.$ac_ext <&6 + echo $ac_n "checking for dlopen""... $ac_c" 1>&6 +! echo "configure:6547: checking for dlopen" >&5 + if eval "test \"`echo '$''{'ac_cv_func_dlopen'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_dlopen=yes" + else +--- 6571,6577 ---- + + ; return 0; } + EOF +! if { (eval echo configure:6575: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_dlopen=yes" + else +*************** +*** 6581,6592 **** + else + echo "$ac_t""no" 1>&6 + echo $ac_n "checking for shl_load""... $ac_c" 1>&6 +! echo "configure:6585: checking for shl_load" >&5 + if eval "test \"`echo '$''{'ac_cv_func_shl_load'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + cat > conftest.$ac_ext <&6 + echo $ac_n "checking for shl_load""... $ac_c" 1>&6 +! echo "configure:6593: checking for shl_load" >&5 + if eval "test \"`echo '$''{'ac_cv_func_shl_load'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_shl_load=yes" + else +--- 6617,6623 ---- + + ; return 0; } + EOF +! if { (eval echo configure:6621: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_shl_load=yes" + else +*************** +*** 6627,6633 **** + else + echo "$ac_t""no" 1>&6 + echo $ac_n "checking for dlopen in -lsvld""... $ac_c" 1>&6 +! echo "configure:6631: checking for dlopen in -lsvld" >&5 + ac_lib_var=`echo svld'_'dlopen | sed 'y%./+-%__p_%'` + if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +--- 6635,6641 ---- + else + echo "$ac_t""no" 1>&6 + echo $ac_n "checking for dlopen in -lsvld""... $ac_c" 1>&6 +! echo "configure:6639: checking for dlopen in -lsvld" >&5 + ac_lib_var=`echo svld'_'dlopen | sed 'y%./+-%__p_%'` + if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +*************** +*** 6635,6641 **** + ac_save_LIBS="$LIBS" + LIBS="-lsvld $LIBS" + cat > conftest.$ac_ext < conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" + else +--- 6654,6660 ---- + dlopen() + ; return 0; } + EOF +! if { (eval echo configure:6658: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" + else +*************** +*** 6665,6671 **** + else + echo "$ac_t""no" 1>&6 + echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6 +! echo "configure:6669: checking for shl_load in -ldld" >&5 + ac_lib_var=`echo dld'_'shl_load | sed 'y%./+-%__p_%'` + if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +--- 6673,6679 ---- + else + echo "$ac_t""no" 1>&6 + echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6 +! echo "configure:6677: checking for shl_load in -ldld" >&5 + ac_lib_var=`echo dld'_'shl_load | sed 'y%./+-%__p_%'` + if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +*************** +*** 6673,6679 **** + ac_save_LIBS="$LIBS" + LIBS="-ldld $LIBS" + cat > conftest.$ac_ext < conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" + else +--- 6692,6698 ---- + shl_load() + ; return 0; } + EOF +! if { (eval echo configure:6696: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" + else +*************** +*** 6737,6743 **** + LIBS="$lt_cv_dlopen_libs $LIBS" + + echo $ac_n "checking whether a program can dlopen itself""... $ac_c" 1>&6 +! echo "configure:6741: checking whether a program can dlopen itself" >&5 + if eval "test \"`echo '$''{'lt_cv_dlopen_self'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +--- 6745,6751 ---- + LIBS="$lt_cv_dlopen_libs $LIBS" + + echo $ac_n "checking whether a program can dlopen itself""... $ac_c" 1>&6 +! echo "configure:6749: checking whether a program can dlopen itself" >&5 + if eval "test \"`echo '$''{'lt_cv_dlopen_self'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +*************** +*** 6747,6753 **** + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext < conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) 2>/dev/null + lt_status=$? + case x$lt_status in +--- 6816,6822 ---- + exit (status); + } + EOF +! if { (eval echo configure:6820: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) 2>/dev/null + lt_status=$? + case x$lt_status in +*************** +*** 6831,6837 **** + if test "x$lt_cv_dlopen_self" = xyes; then + LDFLAGS="$LDFLAGS $link_static_flag" + echo $ac_n "checking whether a statically linked program can dlopen itself""... $ac_c" 1>&6 +! echo "configure:6835: checking whether a statically linked program can dlopen itself" >&5 + if eval "test \"`echo '$''{'lt_cv_dlopen_self_static'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +--- 6839,6845 ---- + if test "x$lt_cv_dlopen_self" = xyes; then + LDFLAGS="$LDFLAGS $link_static_flag" + echo $ac_n "checking whether a statically linked program can dlopen itself""... $ac_c" 1>&6 +! echo "configure:6843: checking whether a statically linked program can dlopen itself" >&5 + if eval "test \"`echo '$''{'lt_cv_dlopen_self_static'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +*************** +*** 6841,6847 **** + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext < conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) 2>/dev/null + lt_status=$? + case x$lt_status in +--- 6910,6916 ---- + exit (status); + } + EOF +! if { (eval echo configure:6914: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) 2>/dev/null + lt_status=$? + case x$lt_status in +*************** +*** 6953,6966 **** + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + echo $ac_n "checking whether -lc should be explicitly linked in""... $ac_c" 1>&6 +! echo "configure:6957: checking whether -lc should be explicitly linked in" >&5 + if eval "test \"`echo '$''{'lt_cv_archive_cmds_need_lc'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + $rm conftest* + echo 'static int dummy;' > conftest.$ac_ext + +! if { (eval echo configure:6964: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext +--- 6961,6974 ---- + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + echo $ac_n "checking whether -lc should be explicitly linked in""... $ac_c" 1>&6 +! echo "configure:6965: checking whether -lc should be explicitly linked in" >&5 + if eval "test \"`echo '$''{'lt_cv_archive_cmds_need_lc'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + $rm conftest* + echo 'static int dummy;' > conftest.$ac_ext + +! if { (eval echo configure:6972: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext +*************** +*** 6973,6979 **** + libname=conftest + save_allow_undefined_flag=$allow_undefined_flag + allow_undefined_flag= +! if { (eval echo configure:6977: \"$archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\") 1>&5; (eval $archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5; } + then + lt_cv_archive_cmds_need_lc=no + else +--- 6981,6987 ---- + libname=conftest + save_allow_undefined_flag=$allow_undefined_flag + allow_undefined_flag= +! if { (eval echo configure:6985: \"$archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\") 1>&5; (eval $archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5; } + then + lt_cv_archive_cmds_need_lc=no + else +*************** +*** 7630,7638 **** + # the right suffix on the files. + # + echo $ac_n "checking for IPv6 structures""... $ac_c" 1>&6 +! echo "configure:7634: checking for IPv6 structures" >&5 + cat > conftest.$ac_ext < +--- 7638,7646 ---- + # the right suffix on the files. + # + echo $ac_n "checking for IPv6 structures""... $ac_c" 1>&6 +! echo "configure:7642: checking for IPv6 structures" >&5 + cat > conftest.$ac_ext < +*************** +*** 7642,7648 **** + struct sockaddr_in6 sin6; return (0); + ; return 0; } + EOF +! if { (eval echo configure:7646: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6 + found_ipv6=yes +--- 7650,7656 ---- + struct sockaddr_in6 sin6; return (0); + ; return 0; } + EOF +! if { (eval echo configure:7654: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6 + found_ipv6=yes +*************** +*** 7660,7666 **** + # This is done before other IPv6 linking tests to LIBS is properly set. + # + echo $ac_n "checking for Kame IPv6 support""... $ac_c" 1>&6 +! echo "configure:7664: checking for Kame IPv6 support" >&5 + # Check whether --with-kame or --without-kame was given. + if test "${with_kame+set}" = set; then + withval="$with_kame" +--- 7668,7674 ---- + # This is done before other IPv6 linking tests to LIBS is properly set. + # + echo $ac_n "checking for Kame IPv6 support""... $ac_c" 1>&6 +! echo "configure:7672: checking for Kame IPv6 support" >&5 + # Check whether --with-kame or --without-kame was given. + if test "${with_kame+set}" = set; then + withval="$with_kame" +*************** +*** 7751,7759 **** + LWRES_PLATFORM_HAVEIPV6="#define LWRES_PLATFORM_HAVEIPV6 1" + + echo $ac_n "checking for in6_addr""... $ac_c" 1>&6 +! echo "configure:7755: checking for in6_addr" >&5 + cat > conftest.$ac_ext < +--- 7759,7767 ---- + LWRES_PLATFORM_HAVEIPV6="#define LWRES_PLATFORM_HAVEIPV6 1" + + echo $ac_n "checking for in6_addr""... $ac_c" 1>&6 +! echo "configure:7763: checking for in6_addr" >&5 + cat > conftest.$ac_ext < +*************** +*** 7766,7772 **** + struct in6_addr in6; return (0); + ; return 0; } + EOF +! if { (eval echo configure:7770: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6 + ISC_PLATFORM_HAVEINADDR6="#undef ISC_PLATFORM_HAVEINADDR6" +--- 7774,7780 ---- + struct in6_addr in6; return (0); + ; return 0; } + EOF +! if { (eval echo configure:7778: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6 + ISC_PLATFORM_HAVEINADDR6="#undef ISC_PLATFORM_HAVEINADDR6" +*************** +*** 7784,7792 **** + rm -f conftest* + + echo $ac_n "checking for in6addr_any""... $ac_c" 1>&6 +! echo "configure:7788: checking for in6addr_any" >&5 + cat > conftest.$ac_ext < +--- 7792,7800 ---- + rm -f conftest* + + echo $ac_n "checking for in6addr_any""... $ac_c" 1>&6 +! echo "configure:7796: checking for in6addr_any" >&5 + cat > conftest.$ac_ext < +*************** +*** 7800,7806 **** + struct in6_addr in6; in6 = in6addr_any; return (in6.s6_addr[0]); + ; return 0; } + EOF +! if { (eval echo configure:7804: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6 + ISC_PLATFORM_NEEDIN6ADDRANY="#undef ISC_PLATFORM_NEEDIN6ADDRANY" +--- 7808,7814 ---- + struct in6_addr in6; in6 = in6addr_any; return (in6.s6_addr[0]); + ; return 0; } + EOF +! if { (eval echo configure:7812: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6 + ISC_PLATFORM_NEEDIN6ADDRANY="#undef ISC_PLATFORM_NEEDIN6ADDRANY" +*************** +*** 7816,7824 **** + rm -f conftest* + + echo $ac_n "checking for in6addr_loopback""... $ac_c" 1>&6 +! echo "configure:7820: checking for in6addr_loopback" >&5 + cat > conftest.$ac_ext < +--- 7824,7832 ---- + rm -f conftest* + + echo $ac_n "checking for in6addr_loopback""... $ac_c" 1>&6 +! echo "configure:7828: checking for in6addr_loopback" >&5 + cat > conftest.$ac_ext < +*************** +*** 7832,7838 **** + struct in6_addr in6; in6 = in6addr_loopback; return (in6.s6_addr[0]); + ; return 0; } + EOF +! if { (eval echo configure:7836: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6 + ISC_PLATFORM_NEEDIN6ADDRLOOPBACK="#undef ISC_PLATFORM_NEEDIN6ADDRLOOPBACK" +--- 7840,7846 ---- + struct in6_addr in6; in6 = in6addr_loopback; return (in6.s6_addr[0]); + ; return 0; } + EOF +! if { (eval echo configure:7844: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6 + ISC_PLATFORM_NEEDIN6ADDRLOOPBACK="#undef ISC_PLATFORM_NEEDIN6ADDRLOOPBACK" +*************** +*** 7848,7856 **** + rm -f conftest* + + echo $ac_n "checking for sin6_scope_id in struct sockaddr_in6""... $ac_c" 1>&6 +! echo "configure:7852: checking for sin6_scope_id in struct sockaddr_in6" >&5 + cat > conftest.$ac_ext < +--- 7856,7864 ---- + rm -f conftest* + + echo $ac_n "checking for sin6_scope_id in struct sockaddr_in6""... $ac_c" 1>&6 +! echo "configure:7860: checking for sin6_scope_id in struct sockaddr_in6" >&5 + cat > conftest.$ac_ext < +*************** +*** 7863,7869 **** + struct sockaddr_in6 xyzzy; xyzzy.sin6_scope_id = 0; return (0); + ; return 0; } + EOF +! if { (eval echo configure:7867: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6 + result="#define LWRES_HAVE_SIN6_SCOPE_ID 1" +--- 7871,7877 ---- + struct sockaddr_in6 xyzzy; xyzzy.sin6_scope_id = 0; return (0); + ; return 0; } + EOF +! if { (eval echo configure:7875: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6 + result="#define LWRES_HAVE_SIN6_SCOPE_ID 1" +*************** +*** 7878,7886 **** + LWRES_HAVE_SIN6_SCOPE_ID="$result" + + echo $ac_n "checking for in6_pktinfo""... $ac_c" 1>&6 +! echo "configure:7882: checking for in6_pktinfo" >&5 + cat > conftest.$ac_ext < +--- 7886,7894 ---- + LWRES_HAVE_SIN6_SCOPE_ID="$result" + + echo $ac_n "checking for in6_pktinfo""... $ac_c" 1>&6 +! echo "configure:7890: checking for in6_pktinfo" >&5 + cat > conftest.$ac_ext < +*************** +*** 7893,7899 **** + struct in6_pktinfo xyzzy; return (0); + ; return 0; } + EOF +! if { (eval echo configure:7897: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6 + ISC_PLATFORM_HAVEIN6PKTINFO="#define ISC_PLATFORM_HAVEIN6PKTINFO 1" +--- 7901,7907 ---- + struct in6_pktinfo xyzzy; return (0); + ; return 0; } + EOF +! if { (eval echo configure:7905: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6 + ISC_PLATFORM_HAVEIN6PKTINFO="#define ISC_PLATFORM_HAVEIN6PKTINFO 1" +*************** +*** 7948,7956 **** + # + + echo $ac_n "checking for inet_ntop""... $ac_c" 1>&6 +! echo "configure:7952: checking for inet_ntop" >&5 + cat > conftest.$ac_ext < +--- 7956,7964 ---- + # + + echo $ac_n "checking for inet_ntop""... $ac_c" 1>&6 +! echo "configure:7960: checking for inet_ntop" >&5 + cat > conftest.$ac_ext < +*************** +*** 7960,7966 **** + inet_ntop(0, 0, 0, 0); return (0); + ; return 0; } + EOF +! if { (eval echo configure:7964: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6 + ISC_PLATFORM_NEEDNTOP="#undef ISC_PLATFORM_NEEDNTOP" +--- 7968,7974 ---- + inet_ntop(0, 0, 0, 0); return (0); + ; return 0; } + EOF +! if { (eval echo configure:7972: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6 + ISC_PLATFORM_NEEDNTOP="#undef ISC_PLATFORM_NEEDNTOP" +*************** +*** 7981,7993 **** + # zeros should also be rejected. + + echo $ac_n "checking for inet_pton""... $ac_c" 1>&6 +! echo "configure:7985: checking for inet_pton" >&5 + if test "$cross_compiling" = yes; then + echo "$ac_t""assuming target platform has working inet_pton" 1>&6 + ISC_PLATFORM_NEEDPTON="#undef ISC_PLATFORM_NEEDPTON" + else + cat > conftest.$ac_ext < +--- 7989,8001 ---- + # zeros should also be rejected. + + echo $ac_n "checking for inet_pton""... $ac_c" 1>&6 +! echo "configure:7993: checking for inet_pton" >&5 + if test "$cross_compiling" = yes; then + echo "$ac_t""assuming target platform has working inet_pton" 1>&6 + ISC_PLATFORM_NEEDPTON="#undef ISC_PLATFORM_NEEDPTON" + else + cat > conftest.$ac_ext < +*************** +*** 7997,8003 **** + main() { char a[4]; return (inet_pton(AF_INET, "1.2.3", a) == 1 ? 1 : + inet_pton(AF_INET, "1.2.3.04", a) == 1 ? 1 : 0); } + EOF +! if { (eval echo configure:8001: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null + then + echo "$ac_t""yes" 1>&6 + ISC_PLATFORM_NEEDPTON="#undef ISC_PLATFORM_NEEDPTON" +--- 8005,8011 ---- + main() { char a[4]; return (inet_pton(AF_INET, "1.2.3", a) == 1 ? 1 : + inet_pton(AF_INET, "1.2.3.04", a) == 1 ? 1 : 0); } + EOF +! if { (eval echo configure:8009: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null + then + echo "$ac_t""yes" 1>&6 + ISC_PLATFORM_NEEDPTON="#undef ISC_PLATFORM_NEEDPTON" +*************** +*** 8015,8023 **** + + + echo $ac_n "checking for inet_aton""... $ac_c" 1>&6 +! echo "configure:8019: checking for inet_aton" >&5 + cat > conftest.$ac_ext < +--- 8023,8031 ---- + + + echo $ac_n "checking for inet_aton""... $ac_c" 1>&6 +! echo "configure:8027: checking for inet_aton" >&5 + cat > conftest.$ac_ext < +*************** +*** 8027,8033 **** + struct in_addr in; inet_aton(0, &in); return (0); + ; return 0; } + EOF +! if { (eval echo configure:8031: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6 + ISC_PLATFORM_NEEDATON="#undef ISC_PLATFORM_NEEDATON" +--- 8035,8041 ---- + struct in_addr in; inet_aton(0, &in); return (0); + ; return 0; } + EOF +! if { (eval echo configure:8039: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6 + ISC_PLATFORM_NEEDATON="#undef ISC_PLATFORM_NEEDATON" +*************** +*** 8060,8068 **** + esac + + echo $ac_n "checking for sa_len in struct sockaddr""... $ac_c" 1>&6 +! echo "configure:8064: checking for sa_len in struct sockaddr" >&5 + cat > conftest.$ac_ext < +--- 8068,8076 ---- + esac + + echo $ac_n "checking for sa_len in struct sockaddr""... $ac_c" 1>&6 +! echo "configure:8072: checking for sa_len in struct sockaddr" >&5 + cat > conftest.$ac_ext < +*************** +*** 8071,8077 **** + struct sockaddr sa; sa.sa_len = 0; return (0); + ; return 0; } + EOF +! if { (eval echo configure:8075: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6 + ISC_PLATFORM_HAVESALEN="#define ISC_PLATFORM_HAVESALEN 1" +--- 8079,8085 ---- + struct sockaddr sa; sa.sa_len = 0; return (0); + ; return 0; } + EOF +! if { (eval echo configure:8083: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6 + ISC_PLATFORM_HAVESALEN="#define ISC_PLATFORM_HAVESALEN 1" +*************** +*** 8092,8100 **** + # Look for a 4.4BSD or 4.3BSD struct msghdr + # + echo $ac_n "checking for struct msghdr flavor""... $ac_c" 1>&6 +! echo "configure:8096: checking for struct msghdr flavor" >&5 + cat > conftest.$ac_ext < +--- 8100,8108 ---- + # Look for a 4.4BSD or 4.3BSD struct msghdr + # + echo $ac_n "checking for struct msghdr flavor""... $ac_c" 1>&6 +! echo "configure:8104: checking for struct msghdr flavor" >&5 + cat > conftest.$ac_ext < +*************** +*** 8103,8109 **** + struct msghdr msg; msg.msg_flags = 0; return (0); + ; return 0; } + EOF +! if { (eval echo configure:8107: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + echo "$ac_t""4.4BSD" 1>&6 + ISC_PLATFORM_MSGHDRFLAVOR="#define ISC_NET_BSD44MSGHDR 1" +--- 8111,8117 ---- + struct msghdr msg; msg.msg_flags = 0; return (0); + ; return 0; } + EOF +! if { (eval echo configure:8115: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + echo "$ac_t""4.4BSD" 1>&6 + ISC_PLATFORM_MSGHDRFLAVOR="#define ISC_NET_BSD44MSGHDR 1" +*************** +*** 8121,8129 **** + # Look for in_port_t. + # + echo $ac_n "checking for type in_port_t""... $ac_c" 1>&6 +! echo "configure:8125: checking for type in_port_t" >&5 + cat > conftest.$ac_ext < +--- 8129,8137 ---- + # Look for in_port_t. + # + echo $ac_n "checking for type in_port_t""... $ac_c" 1>&6 +! echo "configure:8133: checking for type in_port_t" >&5 + cat > conftest.$ac_ext < +*************** +*** 8132,8138 **** + in_port_t port = 25; return (0); + ; return 0; } + EOF +! if { (eval echo configure:8136: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6 + ISC_PLATFORM_NEEDPORTT="#undef ISC_PLATFORM_NEEDPORTT" +--- 8140,8146 ---- + in_port_t port = 25; return (0); + ; return 0; } + EOF +! if { (eval echo configure:8144: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6 + ISC_PLATFORM_NEEDPORTT="#undef ISC_PLATFORM_NEEDPORTT" +*************** +*** 8150,8158 **** + # Check for addrinfo + # + echo $ac_n "checking for struct addrinfo""... $ac_c" 1>&6 +! echo "configure:8154: checking for struct addrinfo" >&5 + cat > conftest.$ac_ext < +--- 8158,8166 ---- + # Check for addrinfo + # + echo $ac_n "checking for struct addrinfo""... $ac_c" 1>&6 +! echo "configure:8162: checking for struct addrinfo" >&5 + cat > conftest.$ac_ext < +*************** +*** 8160,8166 **** + struct addrinfo a; return (0); + ; return 0; } + EOF +! if { (eval echo configure:8164: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6 + ISC_LWRES_NEEDADDRINFO="#undef ISC_LWRES_NEEDADDRINFO" +--- 8168,8174 ---- + struct addrinfo a; return (0); + ; return 0; } + EOF +! if { (eval echo configure:8172: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6 + ISC_LWRES_NEEDADDRINFO="#undef ISC_LWRES_NEEDADDRINFO" +*************** +*** 8182,8190 **** + # Check for rrsetinfo + # + echo $ac_n "checking for struct rrsetinfo""... $ac_c" 1>&6 +! echo "configure:8186: checking for struct rrsetinfo" >&5 + cat > conftest.$ac_ext < +--- 8190,8198 ---- + # Check for rrsetinfo + # + echo $ac_n "checking for struct rrsetinfo""... $ac_c" 1>&6 +! echo "configure:8194: checking for struct rrsetinfo" >&5 + cat > conftest.$ac_ext < +*************** +*** 8192,8198 **** + struct rrsetinfo r; return (0); + ; return 0; } + EOF +! if { (eval echo configure:8196: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6 + ISC_LWRES_NEEDRRSETINFO="#undef ISC_LWRES_NEEDRRSETINFO" +--- 8200,8206 ---- + struct rrsetinfo r; return (0); + ; return 0; } + EOF +! if { (eval echo configure:8204: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6 + ISC_LWRES_NEEDRRSETINFO="#undef ISC_LWRES_NEEDRRSETINFO" +*************** +*** 8207,8215 **** + + + echo $ac_n "checking for int sethostent""... $ac_c" 1>&6 +! echo "configure:8211: checking for int sethostent" >&5 + cat > conftest.$ac_ext < +--- 8215,8223 ---- + + + echo $ac_n "checking for int sethostent""... $ac_c" 1>&6 +! echo "configure:8219: checking for int sethostent" >&5 + cat > conftest.$ac_ext < +*************** +*** 8217,8223 **** + int i = sethostent(0); return(0); + ; return 0; } + EOF +! if { (eval echo configure:8221: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6 + ISC_LWRES_SETHOSTENTINT="#define ISC_LWRES_SETHOSTENTINT 1" +--- 8225,8231 ---- + int i = sethostent(0); return(0); + ; return 0; } + EOF +! if { (eval echo configure:8229: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6 + ISC_LWRES_SETHOSTENTINT="#define ISC_LWRES_SETHOSTENTINT 1" +*************** +*** 8232,8240 **** + + + echo $ac_n "checking for int endhostent""... $ac_c" 1>&6 +! echo "configure:8236: checking for int endhostent" >&5 + cat > conftest.$ac_ext < +--- 8240,8248 ---- + + + echo $ac_n "checking for int endhostent""... $ac_c" 1>&6 +! echo "configure:8244: checking for int endhostent" >&5 + cat > conftest.$ac_ext < +*************** +*** 8242,8248 **** + int i = endhostent(); return(0); + ; return 0; } + EOF +! if { (eval echo configure:8246: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6 + ISC_LWRES_ENDHOSTENTINT="#define ISC_LWRES_ENDHOSTENTINT 1" +--- 8250,8256 ---- + int i = endhostent(); return(0); + ; return 0; } + EOF +! if { (eval echo configure:8254: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6 + ISC_LWRES_ENDHOSTENTINT="#define ISC_LWRES_ENDHOSTENTINT 1" +*************** +*** 8257,8265 **** + + + echo $ac_n "checking for getnetbyaddr(in_addr_t, ...)""... $ac_c" 1>&6 +! echo "configure:8261: checking for getnetbyaddr(in_addr_t, ...)" >&5 + cat > conftest.$ac_ext < +--- 8265,8273 ---- + + + echo $ac_n "checking for getnetbyaddr(in_addr_t, ...)""... $ac_c" 1>&6 +! echo "configure:8269: checking for getnetbyaddr(in_addr_t, ...)" >&5 + cat > conftest.$ac_ext < +*************** +*** 8268,8274 **** + + ; return 0; } + EOF +! if { (eval echo configure:8272: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6 + ISC_LWRES_GETNETBYADDRINADDR="#define ISC_LWRES_GETNETBYADDRINADDR 1" +--- 8276,8282 ---- + + ; return 0; } + EOF +! if { (eval echo configure:8280: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6 + ISC_LWRES_GETNETBYADDRINADDR="#define ISC_LWRES_GETNETBYADDRINADDR 1" +*************** +*** 8283,8291 **** + + + echo $ac_n "checking for int setnetent""... $ac_c" 1>&6 +! echo "configure:8287: checking for int setnetent" >&5 + cat > conftest.$ac_ext < +--- 8291,8299 ---- + + + echo $ac_n "checking for int setnetent""... $ac_c" 1>&6 +! echo "configure:8295: checking for int setnetent" >&5 + cat > conftest.$ac_ext < +*************** +*** 8293,8299 **** + int i = setnetent(0); return(0); + ; return 0; } + EOF +! if { (eval echo configure:8297: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6 + ISC_LWRES_SETNETENTINT="#define ISC_LWRES_SETNETENTINT 1" +--- 8301,8307 ---- + int i = setnetent(0); return(0); + ; return 0; } + EOF +! if { (eval echo configure:8305: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6 + ISC_LWRES_SETNETENTINT="#define ISC_LWRES_SETNETENTINT 1" +*************** +*** 8308,8316 **** + + + echo $ac_n "checking for int endnetent""... $ac_c" 1>&6 +! echo "configure:8312: checking for int endnetent" >&5 + cat > conftest.$ac_ext < +--- 8316,8324 ---- + + + echo $ac_n "checking for int endnetent""... $ac_c" 1>&6 +! echo "configure:8320: checking for int endnetent" >&5 + cat > conftest.$ac_ext < +*************** +*** 8318,8324 **** + int i = endnetent(); return(0); + ; return 0; } + EOF +! if { (eval echo configure:8322: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6 + ISC_LWRES_ENDNETENTINT="#define ISC_LWRES_ENDNETENTINT 1" +--- 8326,8332 ---- + int i = endnetent(); return(0); + ; return 0; } + EOF +! if { (eval echo configure:8330: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6 + ISC_LWRES_ENDNETENTINT="#define ISC_LWRES_ENDNETENTINT 1" +*************** +*** 8333,8341 **** + + + echo $ac_n "checking for gethostbyaddr(const void *, size_t, ...)""... $ac_c" 1>&6 +! echo "configure:8337: checking for gethostbyaddr(const void *, size_t, ...)" >&5 + cat > conftest.$ac_ext < +--- 8341,8349 ---- + + + echo $ac_n "checking for gethostbyaddr(const void *, size_t, ...)""... $ac_c" 1>&6 +! echo "configure:8345: checking for gethostbyaddr(const void *, size_t, ...)" >&5 + cat > conftest.$ac_ext < +*************** +*** 8344,8350 **** + return(0); + ; return 0; } + EOF +! if { (eval echo configure:8348: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6 + ISC_LWRES_GETHOSTBYADDRVOID="#define ISC_LWRES_GETHOSTBYADDRVOID 1" +--- 8352,8358 ---- + return(0); + ; return 0; } + EOF +! if { (eval echo configure:8356: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6 + ISC_LWRES_GETHOSTBYADDRVOID="#define ISC_LWRES_GETHOSTBYADDRVOID 1" +*************** +*** 8359,8367 **** + + + echo $ac_n "checking for h_errno in netdb.h""... $ac_c" 1>&6 +! echo "configure:8363: checking for h_errno in netdb.h" >&5 + cat > conftest.$ac_ext < +--- 8367,8375 ---- + + + echo $ac_n "checking for h_errno in netdb.h""... $ac_c" 1>&6 +! echo "configure:8371: checking for h_errno in netdb.h" >&5 + cat > conftest.$ac_ext < +*************** +*** 8369,8375 **** + h_errno = 1; return(0); + ; return 0; } + EOF +! if { (eval echo configure:8373: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6 + ISC_LWRES_NEEDHERRNO="#undef ISC_LWRES_NEEDHERRNO" +--- 8377,8383 ---- + h_errno = 1; return(0); + ; return 0; } + EOF +! if { (eval echo configure:8381: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6 + ISC_LWRES_NEEDHERRNO="#undef ISC_LWRES_NEEDHERRNO" +*************** +*** 8384,8395 **** + + + echo $ac_n "checking for getipnodebyname""... $ac_c" 1>&6 +! echo "configure:8388: checking for getipnodebyname" >&5 + if eval "test \"`echo '$''{'ac_cv_func_getipnodebyname'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + cat > conftest.$ac_ext <&6 +! echo "configure:8396: checking for getipnodebyname" >&5 + if eval "test \"`echo '$''{'ac_cv_func_getipnodebyname'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_getipnodebyname=yes" + else +--- 8420,8426 ---- + + ; return 0; } + EOF +! if { (eval echo configure:8424: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_getipnodebyname=yes" + else +*************** +*** 8433,8444 **** + fi + + echo $ac_n "checking for getnameinfo""... $ac_c" 1>&6 +! echo "configure:8437: checking for getnameinfo" >&5 + if eval "test \"`echo '$''{'ac_cv_func_getnameinfo'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + cat > conftest.$ac_ext <&6 +! echo "configure:8445: checking for getnameinfo" >&5 + if eval "test \"`echo '$''{'ac_cv_func_getnameinfo'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_getnameinfo=yes" + else +--- 8469,8475 ---- + + ; return 0; } + EOF +! if { (eval echo configure:8473: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_getnameinfo=yes" + else +*************** +*** 8482,8493 **** + fi + + echo $ac_n "checking for getaddrinfo""... $ac_c" 1>&6 +! echo "configure:8486: checking for getaddrinfo" >&5 + if eval "test \"`echo '$''{'ac_cv_func_getaddrinfo'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + cat > conftest.$ac_ext <&6 +! echo "configure:8494: checking for getaddrinfo" >&5 + if eval "test \"`echo '$''{'ac_cv_func_getaddrinfo'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_getaddrinfo=yes" + else +--- 8518,8524 ---- + + ; return 0; } + EOF +! if { (eval echo configure:8522: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_getaddrinfo=yes" + else +*************** +*** 8535,8546 **** + fi + + echo $ac_n "checking for gai_strerror""... $ac_c" 1>&6 +! echo "configure:8539: checking for gai_strerror" >&5 + if eval "test \"`echo '$''{'ac_cv_func_gai_strerror'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + cat > conftest.$ac_ext <&6 +! echo "configure:8547: checking for gai_strerror" >&5 + if eval "test \"`echo '$''{'ac_cv_func_gai_strerror'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_gai_strerror=yes" + else +--- 8571,8577 ---- + + ; return 0; } + EOF +! if { (eval echo configure:8575: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_gai_strerror=yes" + else +*************** +*** 8593,8601 **** + # Look for a sysctl call to get the list of network interfaces. + # + echo $ac_n "checking for interface list sysctl""... $ac_c" 1>&6 +! echo "configure:8597: checking for interface list sysctl" >&5 + cat > conftest.$ac_ext < +--- 8601,8609 ---- + # Look for a sysctl call to get the list of network interfaces. + # + echo $ac_n "checking for interface list sysctl""... $ac_c" 1>&6 +! echo "configure:8605: checking for interface list sysctl" >&5 + cat > conftest.$ac_ext < +*************** +*** 8625,8636 **** + # Check for some other useful functions that are not ever-present. + # + echo $ac_n "checking for strsep""... $ac_c" 1>&6 +! echo "configure:8629: checking for strsep" >&5 + if eval "test \"`echo '$''{'ac_cv_func_strsep'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + cat > conftest.$ac_ext <&6 +! echo "configure:8637: checking for strsep" >&5 + if eval "test \"`echo '$''{'ac_cv_func_strsep'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_strsep=yes" + else +--- 8661,8667 ---- + + ; return 0; } + EOF +! if { (eval echo configure:8665: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_strsep=yes" + else +*************** +*** 8674,8685 **** + fi + + echo $ac_n "checking for vsnprintf""... $ac_c" 1>&6 +! echo "configure:8678: checking for vsnprintf" >&5 + if eval "test \"`echo '$''{'ac_cv_func_vsnprintf'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + cat > conftest.$ac_ext <&6 +! echo "configure:8686: checking for vsnprintf" >&5 + if eval "test \"`echo '$''{'ac_cv_func_vsnprintf'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_vsnprintf=yes" + else +--- 8710,8716 ---- + + ; return 0; } + EOF +! if { (eval echo configure:8714: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_vsnprintf=yes" + else +*************** +*** 8727,8738 **** + + + echo $ac_n "checking for strerror""... $ac_c" 1>&6 +! echo "configure:8731: checking for strerror" >&5 + if eval "test \"`echo '$''{'ac_cv_func_strerror'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + cat > conftest.$ac_ext <&6 +! echo "configure:8739: checking for strerror" >&5 + if eval "test \"`echo '$''{'ac_cv_func_strerror'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_strerror=yes" + else +--- 8763,8769 ---- + + ; return 0; } + EOF +! if { (eval echo configure:8767: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_strerror=yes" + else +*************** +*** 8789,8805 **** + # but that's defined elsewhere since we don't use configure on Win32. + # + echo $ac_n "checking printf format modifier for 64-bit integers""... $ac_c" 1>&6 +! echo "configure:8793: checking printf format modifier for 64-bit integers" >&5 + if test "$cross_compiling" = yes; then + echo "$ac_t""assuming target platform uses ll" 1>&6 + ISC_PLATFORM_QUADFORMAT='#define ISC_PLATFORM_QUADFORMAT "ll"' + else + cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null + then + echo "$ac_t""l" 1>&6 + ISC_PLATFORM_QUADFORMAT='#define ISC_PLATFORM_QUADFORMAT "l"' +--- 8797,8813 ---- + # but that's defined elsewhere since we don't use configure on Win32. + # + echo $ac_n "checking printf format modifier for 64-bit integers""... $ac_c" 1>&6 +! echo "configure:8801: checking printf format modifier for 64-bit integers" >&5 + if test "$cross_compiling" = yes; then + echo "$ac_t""assuming target platform uses ll" 1>&6 + ISC_PLATFORM_QUADFORMAT='#define ISC_PLATFORM_QUADFORMAT "ll"' + else + cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null + then + echo "$ac_t""l" 1>&6 + ISC_PLATFORM_QUADFORMAT='#define ISC_PLATFORM_QUADFORMAT "l"' +*************** +*** 8819,8830 **** + # Security Stuff + # + echo $ac_n "checking for chroot""... $ac_c" 1>&6 +! echo "configure:8823: checking for chroot" >&5 + if eval "test \"`echo '$''{'ac_cv_func_chroot'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + cat > conftest.$ac_ext <&6 +! echo "configure:8831: checking for chroot" >&5 + if eval "test \"`echo '$''{'ac_cv_func_chroot'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_chroot=yes" + else +--- 8855,8861 ---- + + ; return 0; } + EOF +! if { (eval echo configure:8859: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_chroot=yes" + else +*************** +*** 8881,8897 **** + do + ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` + echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 +! echo "configure:8885: checking for $ac_hdr" >&5 + if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + cat > conftest.$ac_ext < + EOF + ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +! { (eval echo configure:8895: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } + ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` + if test -z "$ac_err"; then + rm -rf conftest* +--- 8889,8905 ---- + do + ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` + echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 +! echo "configure:8893: checking for $ac_hdr" >&5 + if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + cat > conftest.$ac_ext < + EOF + ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +! { (eval echo configure:8903: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } + ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` + if test -z "$ac_err"; then + rm -rf conftest* +*************** +*** 8925,8941 **** + do + ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` + echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 +! echo "configure:8929: checking for $ac_hdr" >&5 + if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + cat > conftest.$ac_ext < + EOF + ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +! { (eval echo configure:8939: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } + ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` + if test -z "$ac_err"; then + rm -rf conftest* +--- 8933,8949 ---- + do + ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` + echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 +! echo "configure:8937: checking for $ac_hdr" >&5 + if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + cat > conftest.$ac_ext < + EOF + ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +! { (eval echo configure:8947: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } + ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` + if test -z "$ac_err"; then + rm -rf conftest* +*************** +*** 8966,8974 **** + # BSD/OS, and perhaps some others, don't define rlim_t. + # + echo $ac_n "checking for type rlim_t""... $ac_c" 1>&6 +! echo "configure:8970: checking for type rlim_t" >&5 + cat > conftest.$ac_ext < +--- 8974,8982 ---- + # BSD/OS, and perhaps some others, don't define rlim_t. + # + echo $ac_n "checking for type rlim_t""... $ac_c" 1>&6 +! echo "configure:8978: checking for type rlim_t" >&5 + cat > conftest.$ac_ext < +*************** +*** 8978,8984 **** + rlim_t rl = 19671212; return (0); + ; return 0; } + EOF +! if { (eval echo configure:8982: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6 + ISC_PLATFORM_RLIMITTYPE="#define ISC_PLATFORM_RLIMITTYPE rlim_t" +--- 8986,8992 ---- + rlim_t rl = 19671212; return (0); + ; return 0; } + EOF +! if { (eval echo configure:8990: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6 + ISC_PLATFORM_RLIMITTYPE="#define ISC_PLATFORM_RLIMITTYPE rlim_t" +*************** +*** 8989,9000 **** + echo "$ac_t""no" 1>&6 + + echo $ac_n "checking type of rlim_cur""... $ac_c" 1>&6 +! echo "configure:8993: checking type of rlim_cur" >&5 + if test "$cross_compiling" = yes; then + { echo "configure: error: cannot determine type of rlim_cur when cross compiling - define rlim_t" 1>&2; exit 1; } + else + cat > conftest.$ac_ext < +--- 8997,9008 ---- + echo "$ac_t""no" 1>&6 + + echo $ac_n "checking type of rlim_cur""... $ac_c" 1>&6 +! echo "configure:9001: checking type of rlim_cur" >&5 + if test "$cross_compiling" = yes; then + { echo "configure: error: cannot determine type of rlim_cur when cross compiling - define rlim_t" 1>&2; exit 1; } + else + cat > conftest.$ac_ext < +*************** +*** 9002,9008 **** + #include + main() { struct rlimit r; exit(!(sizeof(r.rlim_cur) == sizeof(int)));} + EOF +! if { (eval echo configure:9006: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null + then + echo "$ac_t""int" 1>&6 + ISC_PLATFORM_RLIMITTYPE="#define ISC_PLATFORM_RLIMITTYPE int" +--- 9010,9016 ---- + #include + main() { struct rlimit r; exit(!(sizeof(r.rlim_cur) == sizeof(int)));} + EOF +! if { (eval echo configure:9014: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null + then + echo "$ac_t""int" 1>&6 + ISC_PLATFORM_RLIMITTYPE="#define ISC_PLATFORM_RLIMITTYPE int" +*************** +*** 9015,9021 **** + { echo "configure: error: this cannot happen" 1>&2; exit 1; } + else + cat > conftest.$ac_ext < +--- 9023,9029 ---- + { echo "configure: error: this cannot happen" 1>&2; exit 1; } + else + cat > conftest.$ac_ext < +*************** +*** 9023,9029 **** + #include + main() { struct rlimit r; exit(!(sizeof(r.rlim_cur) == sizeof(long int)));} + EOF +! if { (eval echo configure:9027: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null + then + echo "$ac_t""long int" 1>&6 + ISC_PLATFORM_RLIMITTYPE="#define ISC_PLATFORM_RLIMITTYPE long int" +--- 9031,9037 ---- + #include + main() { struct rlimit r; exit(!(sizeof(r.rlim_cur) == sizeof(long int)));} + EOF +! if { (eval echo configure:9035: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null + then + echo "$ac_t""long int" 1>&6 + ISC_PLATFORM_RLIMITTYPE="#define ISC_PLATFORM_RLIMITTYPE long int" +*************** +*** 9036,9042 **** + { echo "configure: error: this cannot happen" 1>&2; exit 1; } + else + cat > conftest.$ac_ext < +--- 9044,9050 ---- + { echo "configure: error: this cannot happen" 1>&2; exit 1; } + else + cat > conftest.$ac_ext < +*************** +*** 9044,9050 **** + #include + main() { struct rlimit r; exit((!sizeof(r.rlim_cur) == sizeof(long long int)));} + EOF +! if { (eval echo configure:9048: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null + then + echo "$ac_t""long long int" 1>&6 + ISC_PLATFORM_RLIMITTYPE="#define ISC_PLATFORM_RLIMITTYPE long long int" +--- 9052,9058 ---- + #include + main() { struct rlimit r; exit((!sizeof(r.rlim_cur) == sizeof(long long int)));} + EOF +! if { (eval echo configure:9056: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null + then + echo "$ac_t""long long int" 1>&6 + ISC_PLATFORM_RLIMITTYPE="#define ISC_PLATFORM_RLIMITTYPE long long int" +*************** +*** 9168,9174 **** + # Extract the first word of "$ac_prog", so it can be a program name with args. + set dummy $ac_prog; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +! echo "configure:9172: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_path_OPENJADE'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +--- 9176,9182 ---- + # Extract the first word of "$ac_prog", so it can be a program name with args. + set dummy $ac_prog; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +! echo "configure:9180: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_path_OPENJADE'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +*************** +*** 9215,9221 **** + # Extract the first word of "$ac_prog", so it can be a program name with args. + set dummy $ac_prog; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +! echo "configure:9219: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_path_JADETEX'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +--- 9223,9229 ---- + # Extract the first word of "$ac_prog", so it can be a program name with args. + set dummy $ac_prog; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +! echo "configure:9227: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_path_JADETEX'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +*************** +*** 9258,9264 **** + # Extract the first word of "$ac_prog", so it can be a program name with args. + set dummy $ac_prog; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +! echo "configure:9262: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_path_PDFJADETEX'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +--- 9266,9272 ---- + # Extract the first word of "$ac_prog", so it can be a program name with args. + set dummy $ac_prog; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +! echo "configure:9270: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_path_PDFJADETEX'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +*************** +*** 9314,9320 **** + + SGMLCATALOG="" + echo $ac_n "checking for catalog""... $ac_c" 1>&6 +! echo "configure:9318: checking for catalog" >&5 + for d in $sgmltrees + do + f=$d/catalog +--- 9322,9328 ---- + + SGMLCATALOG="" + echo $ac_n "checking for catalog""... $ac_c" 1>&6 +! echo "configure:9326: checking for catalog" >&5 + for d in $sgmltrees + do + f=$d/catalog +*************** +*** 9356,9362 **** + + HTMLSTYLE="" + echo $ac_n "checking for html/docbook.dsl""... $ac_c" 1>&6 +! echo "configure:9360: checking for html/docbook.dsl" >&5 + for d in $stylepath + do + f=$d/html/docbook.dsl +--- 9364,9370 ---- + + HTMLSTYLE="" + echo $ac_n "checking for html/docbook.dsl""... $ac_c" 1>&6 +! echo "configure:9368: checking for html/docbook.dsl" >&5 + for d in $stylepath + do + f=$d/html/docbook.dsl +*************** +*** 9377,9383 **** + + PRINTSTYLE="" + echo $ac_n "checking for print/docbook.dsl""... $ac_c" 1>&6 +! echo "configure:9381: checking for print/docbook.dsl" >&5 + for d in $stylepath + do + f=$d/print/docbook.dsl +--- 9385,9391 ---- + + PRINTSTYLE="" + echo $ac_n "checking for print/docbook.dsl""... $ac_c" 1>&6 +! echo "configure:9389: checking for print/docbook.dsl" >&5 + for d in $stylepath + do + f=$d/print/docbook.dsl +*************** +*** 9403,9409 **** + + XMLDCL="" + echo $ac_n "checking for docbook/dsssl/modular/dtds/decls/xml.dcl""... $ac_c" 1>&6 +! echo "configure:9407: checking for docbook/dsssl/modular/dtds/decls/xml.dcl" >&5 + for d in $sgmltrees + do + f=$d/docbook/dsssl/modular/dtds/decls/xml.dcl +--- 9411,9417 ---- + + XMLDCL="" + echo $ac_n "checking for docbook/dsssl/modular/dtds/decls/xml.dcl""... $ac_c" 1>&6 +! echo "configure:9415: checking for docbook/dsssl/modular/dtds/decls/xml.dcl" >&5 + for d in $sgmltrees + do + f=$d/docbook/dsssl/modular/dtds/decls/xml.dcl +*************** +*** 9429,9435 **** + + DOCBOOK2MANSPEC="" + echo $ac_n "checking for docbook2X/docbook2man-spec.pl""... $ac_c" 1>&6 +! echo "configure:9433: checking for docbook2X/docbook2man-spec.pl" >&5 + for d in $sgmltrees + do + f=$d/docbook2X/docbook2man-spec.pl +--- 9437,9443 ---- + + DOCBOOK2MANSPEC="" + echo $ac_n "checking for docbook2X/docbook2man-spec.pl""... $ac_c" 1>&6 +! echo "configure:9441: checking for docbook2X/docbook2man-spec.pl" >&5 + for d in $sgmltrees + do + f=$d/docbook2X/docbook2man-spec.pl +*************** +*** 9449,9454 **** +--- 9457,9649 ---- + + + # ++ # MDN support ++ # ++ # Check whether --with-mdn or --without-mdn was given. ++ if test "${with_mdn+set}" = set; then ++ withval="$with_mdn" ++ use_mdn="$withval" ++ else ++ use_mdn="no" ++ fi ++ ++ case "$use_mdn" in ++ yes) ++ if test X$prefix = XNONE ; then ++ mdn_path=/usr/local ++ else ++ mdn_path=$prefix ++ fi ++ ;; ++ no) ++ ;; ++ *) ++ mdn_path="$use_mdn" ++ ;; ++ esac ++ ++ iconvinc= ++ iconvlib= ++ # Check whether --with-libiconv or --without-libiconv was given. ++ if test "${with_libiconv+set}" = set; then ++ withval="$with_libiconv" ++ use_libiconv="$withval" ++ else ++ use_libiconv="no" ++ fi ++ ++ case "$use_libiconv" in ++ yes) ++ if test X$prefix = XNONE ; then ++ iconvlib="-L/usr/local/lib -R/usr/local/lib -liconv" ++ else ++ iconvlib="-L$prefix/lib -R$prefix/lib -liconv" ++ fi ++ ;; ++ no) ++ iconvlib= ++ ;; ++ *) ++ iconvlib="-L$use_libiconv/lib -R$use_libiconv/lib -liconv" ++ ;; ++ esac ++ ++ # Check whether --with-iconv or --without-iconv was given. ++ if test "${with_iconv+set}" = set; then ++ withval="$with_iconv" ++ iconvlib="$withval" ++ fi ++ ++ case "$iconvlib" in ++ no) ++ iconvlib= ++ ;; ++ yes) ++ iconvlib=-liconv ++ ;; ++ esac ++ ++ # Check whether --with-mdnlib or --without-mdnlib was given. ++ if test "${with_mdnlib+set}" = set; then ++ withval="$with_mdnlib" ++ mdnlib="$withval" ++ else ++ mdnlib="no" ++ fi ++ ++ if test "$mdnlib" = yes; then ++ { echo "configure: error: You must specify ARG for --with-mdnlib." 1>&2; exit 1; } ++ fi ++ ++ if test "$use_mdn" != no; then ++ cat >> confdefs.h <<\EOF ++ #define WITH_MDN 1 ++ EOF ++ ++ STD_CINCLUDES="$STD_CINCLUDES -I$mdn_path/include" ++ if test "$mdnlib" != no; then ++ LIBS="$mdnlib $iconvlib $LIBS" ++ else ++ LIBS="-L$mdn_path/lib -lmdn $iconvlib $LIBS" ++ fi ++ fi ++ for ac_hdr in locale.h ++ do ++ ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` ++ echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 ++ echo "configure:9555: checking for $ac_hdr" >&5 ++ if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then ++ echo $ac_n "(cached) $ac_c" 1>&6 ++ else ++ cat > conftest.$ac_ext < ++ EOF ++ ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ++ { (eval echo configure:9565: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ++ ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` ++ if test -z "$ac_err"; then ++ rm -rf conftest* ++ eval "ac_cv_header_$ac_safe=yes" ++ else ++ echo "$ac_err" >&5 ++ echo "configure: failed program was:" >&5 ++ cat conftest.$ac_ext >&5 ++ rm -rf conftest* ++ eval "ac_cv_header_$ac_safe=no" ++ fi ++ rm -f conftest* ++ fi ++ if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then ++ echo "$ac_t""yes" 1>&6 ++ ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` ++ cat >> confdefs.h <&6 ++ fi ++ done ++ ++ for ac_func in setlocale ++ do ++ echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ++ echo "configure:9594: checking for $ac_func" >&5 ++ if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then ++ echo $ac_n "(cached) $ac_c" 1>&6 ++ else ++ cat > conftest.$ac_ext < ++ /* Override any gcc2 internal prototype to avoid an error. */ ++ /* We use char because int might match the return type of a gcc2 ++ builtin and then its argument prototype would still apply. */ ++ char $ac_func(); ++ ++ int main() { ++ ++ /* The GNU C library defines this for functions which it implements ++ to always fail with ENOSYS. Some functions are actually named ++ something starting with __ and the normal name is an alias. */ ++ #if defined (__stub_$ac_func) || defined (__stub___$ac_func) ++ choke me ++ #else ++ $ac_func(); ++ #endif ++ ++ ; return 0; } ++ EOF ++ if { (eval echo configure:9622: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ++ rm -rf conftest* ++ eval "ac_cv_func_$ac_func=yes" ++ else ++ echo "configure: failed program was:" >&5 ++ cat conftest.$ac_ext >&5 ++ rm -rf conftest* ++ eval "ac_cv_func_$ac_func=no" ++ fi ++ rm -f conftest* ++ fi ++ ++ if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then ++ echo "$ac_t""yes" 1>&6 ++ ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` ++ cat >> confdefs.h <&6 ++ fi ++ done ++ ++ ++ # + # Substitutions + # + +*************** +*** 9849,9855 **** + + # Split the substitutions into bite-sized pieces for seds with + # small command number limits, like on Digital OSF/1 and HP-UX. +! ac_max_sed_cmds=50 # Maximum number of lines to put in a sed script. + ac_file=1 # Number of current file. + ac_beg=1 # First line for current file. + ac_end=$ac_max_sed_cmds # Line after last line for current file. +--- 10044,10050 ---- + + # Split the substitutions into bite-sized pieces for seds with + # small command number limits, like on Digital OSF/1 and HP-UX. +! ac_max_sed_cmds=90 # Maximum number of lines to put in a sed script. + ac_file=1 # Number of current file. + ac_beg=1 # First line for current file. + ac_end=$ac_max_sed_cmds # Line after last line for current file. +Index: configure.in +diff -c mdn/othersrc/bind9/configure.in:1.1.1.8 mdn/othersrc/bind9/configure.in:1.11 +*** configure.in Tue Nov 27 16:55:48 2001 +--- configure.in Thu Nov 29 18:45:14 2001 +*************** +*** 1605,1610 **** +--- 1605,1683 ---- + NOM_PATH_FILE(DOCBOOK2MANSPEC, docbook2X/docbook2man-spec.pl, $sgmltrees) + + # ++ # MDN support ++ # ++ AC_ARG_WITH(mdn, ++ [ --with-mdn[=MPREFIX] enable MDN support using mDNkit [default PREFIX]], ++ use_mdn="$withval", use_mdn="no") ++ case "$use_mdn" in ++ yes) ++ if test X$prefix = XNONE ; then ++ mdn_path=/usr/local ++ else ++ mdn_path=$prefix ++ fi ++ ;; ++ no) ++ ;; ++ *) ++ mdn_path="$use_mdn" ++ ;; ++ esac ++ ++ iconvinc= ++ iconvlib= ++ AC_ARG_WITH(libiconv, ++ [ --with-libiconv[=IPREFIX] GNU libiconv are in IPREFIX [default PREFIX]], ++ use_libiconv="$withval", use_libiconv="no") ++ case "$use_libiconv" in ++ yes) ++ if test X$prefix = XNONE ; then ++ iconvlib="-L/usr/local/lib -R/usr/local/lib -liconv" ++ else ++ iconvlib="-L$prefix/lib -R$prefix/lib -liconv" ++ fi ++ ;; ++ no) ++ iconvlib= ++ ;; ++ *) ++ iconvlib="-L$use_libiconv/lib -R$use_libiconv/lib -liconv" ++ ;; ++ esac ++ ++ AC_ARG_WITH(iconv, ++ [ --with-iconv[=LIBSPEC] specify iconv library [default -liconv]], ++ iconvlib="$withval") ++ case "$iconvlib" in ++ no) ++ iconvlib= ++ ;; ++ yes) ++ iconvlib=-liconv ++ ;; ++ esac ++ ++ AC_ARG_WITH(mdnlib, ++ [ --with-mdnlib=ARG specify libmdn], ++ mdnlib="$withval", mdnlib="no") ++ if test "$mdnlib" = yes; then ++ AC_MSG_ERROR([You must specify ARG for --with-mdnlib.]) ++ fi ++ ++ if test "$use_mdn" != no; then ++ AC_DEFINE(WITH_MDN, 1, [define if mDNkit support is to be included.]) ++ STD_CINCLUDES="$STD_CINCLUDES -I$mdn_path/include" ++ if test "$mdnlib" != no; then ++ LIBS="$mdnlib $iconvlib $LIBS" ++ else ++ LIBS="-L$mdn_path/lib -lmdn $iconvlib $LIBS" ++ fi ++ fi ++ AC_CHECK_HEADERS(locale.h) ++ AC_CHECK_FUNCS(setlocale) ++ ++ # + # Substitutions + # + AC_SUBST(BIND9_TOP_BUILDDIR) +Index: bin/dig/dig.1 +diff -c mdn/othersrc/bind9/bin/dig/dig.1:1.1.1.1 mdn/othersrc/bind9/bin/dig/dig.1:1.2 +*** bin/dig/dig.1 Tue Nov 27 16:55:50 2001 +--- bin/dig/dig.1 Thu Nov 29 14:36:25 2001 +*************** +*** 73,79 **** + is the name of the resource record that is to be looked up. + .TP + \fBtype\fR +! indicates what type of query is required \(em + ANY, A, MX, SIG, etc. + \fItype\fR can be any valid query type. If no + \fItype\fR argument is supplied, +--- 73,79 ---- + is the name of the resource record that is to be looked up. + .TP + \fBtype\fR +! indicates what type of query is required + ANY, A, MX, SIG, etc. + \fItype\fR can be any valid query type. If no + \fItype\fR argument is supplied, +*************** +*** 336,341 **** +--- 336,352 ---- + \fI+noqr\fR which means that \fBdig\fR + will not print the initial query when it looks up the NS records for + isc.org. ++ .SH "MDN SUPPORT" ++ .PP ++ If \fBdig\fR has been built with mdn support, it can ++ accept and display non-ASCII domain names. ++ \fBdig\fR appropriately converts character encoding of ++ domain name before sending a request to DNS server or displaying a ++ reply from the server. ++ If you'd like to turn off the MDN support for some reason, defines ++ the \fBMDN_DISABLE\fR environment variable. ++ The MDN support is disabled if the the variable is set when ++ \fBdig\fR runs. + .SH "FILES" + .PP + \fI/etc/resolv.conf\fR +Index: bin/dig/dig.c +diff -c mdn/othersrc/bind9/bin/dig/dig.c:1.1.1.8 mdn/othersrc/bind9/bin/dig/dig.c:1.7 +*** bin/dig/dig.c Tue Nov 27 16:55:50 2001 +--- bin/dig/dig.c Thu Nov 29 18:45:14 2001 +*************** +*** 1305,1310 **** +--- 1305,1315 ---- + } + ISC_LIST_APPEND(lookup_list, lookup, link); + } ++ ++ #ifdef WITH_MDN ++ if (getenv(MDN_DISABLE_ENVVAR_NAME) != NULL) ++ lookup->mdn = ISC_FALSE; ++ #endif + } + + /* +Index: bin/dig/dig.docbook +diff -c mdn/othersrc/bind9/bin/dig/dig.docbook:1.1.1.1 mdn/othersrc/bind9/bin/dig/dig.docbook:1.2 +*** bin/dig/dig.docbook Tue Nov 27 16:55:50 2001 +--- bin/dig/dig.docbook Thu Nov 29 14:36:26 2001 +*************** +*** 502,507 **** +--- 502,522 ---- + + + ++ MDN SUPPORT ++ ++ If dig has been built with mdn support, it can ++ accept and display non-ASCII domain names. ++ dig appropriately converts character encoding of ++ domain name before sending a request to DNS server or displaying a ++ reply from the server. ++ If you'd like to turn off the MDN support for some reason, defines ++ the MDN_DISABLE environment variable. ++ The MDN support is disabled if the the variable is set when ++ dig runs. ++ ++ ++ ++ + FILES + + /etc/resolv.conf +Index: bin/dig/dighost.c +diff -c mdn/othersrc/bind9/bin/dig/dighost.c:1.1.1.11 mdn/othersrc/bind9/bin/dig/dighost.c:1.26 +*** bin/dig/dighost.c Tue Nov 27 16:55:51 2001 +--- bin/dig/dighost.c Fri Nov 30 12:37:18 2001 +*************** +*** 32,37 **** +--- 32,48 ---- + #include + #include + ++ #ifdef HAVE_LOCALE_H ++ #include ++ #endif ++ ++ #ifdef WITH_MDN ++ #include ++ #include ++ #include ++ #include ++ #endif ++ + #include + #include + #include +*************** +*** 130,135 **** +--- 141,160 ---- + isc_mutex_t lookup_lock; + dig_lookup_t *current_lookup = NULL; + ++ #ifdef WITH_MDN ++ mdn_resconf_t mdnconf; ++ ++ static void initialize_mdn(void); ++ static isc_result_t output_filter(isc_buffer_t *buffer, ++ unsigned int used_org, ++ isc_boolean_t absolute); ++ static mdn_result_t append_textname(char *name, const char *origin, ++ size_t namesize); ++ static void mdn_check_result(mdn_result_t r, const char *msg); ++ ++ #define MAXDLEN 256 ++ #endif ++ + /* + * Apply and clear locks at the event level in global task. + * Can I get rid of these using shutdown events? XXX +*************** +*** 365,370 **** +--- 390,398 ---- + looknew->ignore = ISC_FALSE; + looknew->servfail_stops = ISC_FALSE; + looknew->besteffort = ISC_TRUE; ++ #ifdef WITH_MDN ++ looknew->mdn = ISC_TRUE; ++ #endif + looknew->dnssec = ISC_FALSE; + looknew->udpsize = 0; + looknew->recurse = ISC_TRUE; +*************** +*** 426,431 **** +--- 454,462 ---- + looknew->ignore = lookold->ignore; + looknew->servfail_stops = lookold->servfail_stops; + looknew->besteffort = lookold->besteffort; ++ #ifdef WITH_MDN ++ looknew->mdn = ISC_TRUE; ++ #endif + looknew->dnssec = lookold->dnssec; + looknew->udpsize = lookold->udpsize; + looknew->recurse = lookold->recurse; +*************** +*** 648,653 **** +--- 679,688 ---- + ISC_LIST_APPEND(server_list, srv, link); + } + ++ #ifdef WITH_MDN ++ initialize_mdn(); ++ #endif ++ + if (keyfile[0] != 0) + setup_file_key(); + else if (keysecret[0] != 0) +*************** +*** 1168,1174 **** +--- 1203,1220 ---- + isc_buffer_t b; + dns_compress_t cctx; + char store[MXNAME]; ++ #ifdef WITH_MDN ++ mdn_result_t mr; ++ char utf8_textname[MXNAME], utf8_origin[MXNAME], idn_textname[MXNAME]; ++ #endif + ++ #ifdef WITH_MDN ++ if (lookup->mdn == ISC_TRUE) ++ dns_name_settotextfilter(output_filter); ++ else ++ dns_name_settotextfilter(NULL); ++ #endif ++ + REQUIRE(lookup != NULL); + INSIST(!free_now); + +*************** +*** 1196,1201 **** +--- 1242,1262 ---- + isc_buffer_init(&lookup->onamebuf, lookup->onamespace, + sizeof(lookup->onamespace)); + ++ #ifdef WITH_MDN ++ if (lookup->mdn) { ++ /* ++ * We cannot convert `textname' and `origin' separately. ++ * `textname' doesn't contain TLD, but local mapping needs ++ * TLD. ++ */ ++ mr = mdn_res_nameconv(mdnconf, "ld", lookup->textname, ++ utf8_textname, sizeof(utf8_textname)); ++ mdn_check_result(mr, "convert textname to UTF-8"); ++ } else { ++ strcpy(utf8_textname, lookup->textname); ++ } ++ #endif ++ + /* + * If the name has too many dots, force the origin to be NULL + * (which produces an absolute lookup). Otherwise, take the origin +*************** +*** 1204,1215 **** +--- 1265,1307 ---- + * is TRUE or we got a domain line in the resolv.conf file. + */ + /* XXX New search here? */ ++ #ifdef WITH_MDN ++ if ((count_dots(utf8_textname) >= ndots) || !usesearch) ++ lookup->origin = NULL; /* Force abs lookup */ ++ else if (lookup->origin == NULL && lookup->new_search && usesearch) { ++ lookup->origin = ISC_LIST_HEAD(search_list); ++ } ++ #else + if ((count_dots(lookup->textname) >= ndots) || !usesearch) + lookup->origin = NULL; /* Force abs lookup */ + else if (lookup->origin == NULL && lookup->new_search && usesearch) { + lookup->origin = ISC_LIST_HEAD(search_list); + } ++ #endif ++ ++ #ifdef WITH_MDN ++ if (lookup->mdn) { ++ if (lookup->origin != NULL) { ++ mr = mdn_res_nameconv(mdnconf, "ld", ++ lookup->origin->origin, ++ utf8_origin, ++ sizeof(utf8_origin)); ++ mdn_check_result(mr, "convert origin to UTF-8"); ++ mr = append_textname(utf8_textname, utf8_origin, ++ sizeof(utf8_textname)); ++ mdn_check_result(mr, "append origin to textname"); ++ } ++ mr = mdn_res_nameconv(mdnconf, "MNI", utf8_textname, ++ idn_textname, sizeof(idn_textname)); ++ mdn_check_result(mr, "convert UTF-8 textname to IDN encoding"); ++ } ++ #endif ++ ++ #ifdef WITH_MDN ++ if (lookup->origin != NULL && !lookup->mdn) { ++ #else + if (lookup->origin != NULL) { ++ #endif + debug("trying origin %s", lookup->origin->origin); + result = dns_message_gettempname(lookup->sendmsg, + &lookup->oname); +*************** +*** 1253,1258 **** +--- 1345,1361 ---- + debug("using root origin"); + if (lookup->trace && lookup->trace_root) + dns_name_clone(dns_rootname, lookup->name); ++ #ifdef WITH_MDN ++ else if (lookup->mdn) { ++ len = strlen(idn_textname); ++ isc_buffer_init(&b, idn_textname, len); ++ isc_buffer_add(&b, len); ++ result = dns_name_fromtext(lookup->name, &b, ++ dns_rootname, ++ ISC_FALSE, ++ &lookup->namebuf); ++ } ++ #endif + else { + len = strlen(lookup->textname); + isc_buffer_init(&b, lookup->textname, len); +*************** +*** 2588,2590 **** +--- 2691,2806 ---- + if (mctx != NULL) + isc_mem_destroy(&mctx); + } ++ ++ #ifdef WITH_MDN ++ static void ++ initialize_mdn(void) { ++ mdn_result_t r; ++ ++ #ifdef HAVE_SETLOCALE ++ /* Set locale */ ++ (void)setlocale(LC_ALL, ""); ++ #endif ++ ++ /* General initialization. */ ++ r = mdn_resconf_initialize(); ++ if (r != mdn_success) ++ fatal("mdn initialization failed: %s", ++ mdn_result_tostring(r)); ++ ++ /* Create configuration context. */ ++ r = mdn_resconf_create(&mdnconf); ++ if (r != mdn_success) ++ fatal("mdn resconf initialization failed: %s", ++ mdn_result_tostring(r)); ++ ++ ++ /* Load mdn configuration file. */ ++ r = mdn_resconf_loadfile(mdnconf, NULL); ++ if (r != mdn_success) ++ fatal("mdn configuration loading failed: %s", ++ mdn_result_tostring(r)); ++ ++ /* Set domain name -> text post-conversion filter. */ ++ dns_name_settotextfilter(output_filter); ++ } ++ ++ static isc_result_t ++ output_filter(isc_buffer_t *buffer, unsigned int used_org, ++ isc_boolean_t absolute) ++ { ++ char tmp1[MAXDLEN], tmp2[MAXDLEN]; ++ size_t fromlen, tolen; ++ isc_boolean_t end_with_dot; ++ ++ /* ++ * Copy contents of 'buffer' to 'tmp1', supply trailing dot ++ * if 'absolute' is true, and terminate with NUL. ++ */ ++ fromlen = isc_buffer_usedlength(buffer) - used_org; ++ if (fromlen >= MAXDLEN) ++ return (ISC_R_SUCCESS); ++ memcpy(tmp1, (char *)isc_buffer_base(buffer) + used_org, fromlen); ++ end_with_dot = (tmp1[fromlen - 1] == '.') ? ISC_TRUE : ISC_FALSE; ++ if (absolute && !end_with_dot) { ++ fromlen++; ++ if (fromlen >= MAXDLEN) ++ return (ISC_R_SUCCESS); ++ tmp1[fromlen - 1] = '.'; ++ } ++ tmp1[fromlen] = '\0'; ++ ++ /* ++ * Convert contents of 'tmp1' to local encoding. ++ */ ++ if (mdn_res_nameconv(mdnconf, "i!NL", tmp1, tmp2, MAXDLEN) ++ != mdn_success) ++ return (ISC_R_SUCCESS); ++ strcpy(tmp1, tmp2); ++ ++ /* ++ * Copy the converted contents in 'tmp1' back to 'buffer'. ++ * If we have appended trailing dot, remove it. ++ */ ++ tolen = strlen(tmp1); ++ if (absolute && !end_with_dot && tmp1[tolen - 1] == '.') ++ tolen--; ++ ++ if (isc_buffer_length(buffer) < used_org + tolen) ++ return (ISC_R_NOSPACE); ++ ++ isc_buffer_subtract(buffer, isc_buffer_usedlength(buffer) - used_org); ++ memcpy(isc_buffer_used(buffer), tmp1, tolen); ++ isc_buffer_add(buffer, tolen); ++ ++ return (ISC_R_SUCCESS); ++ } ++ ++ static mdn_result_t ++ append_textname(char *name, const char *origin, size_t namesize) { ++ size_t namelen = strlen(name); ++ size_t originlen = strlen(origin); ++ ++ /* Already absolute? */ ++ if (namelen > 0 && name[namelen - 1] == '.') ++ return mdn_success; ++ ++ /* Append dot and origin */ ++ ++ if (namelen + 1 + originlen >= namesize) ++ return mdn_buffer_overflow; ++ ++ name[namelen++] = '.'; ++ (void)strcpy(name + namelen, origin); ++ return mdn_success; ++ } ++ ++ static void ++ mdn_check_result(mdn_result_t r, const char *msg) { ++ if (r != mdn_success) { ++ exitcode = 1; ++ fatal("%s: %s", msg, mdn_result_tostring(r)); ++ } ++ } ++ ++ #endif /* WITH_MDN */ +Index: bin/dig/host.1 +diff -c mdn/othersrc/bind9/bin/dig/host.1:1.1.1.1 mdn/othersrc/bind9/bin/dig/host.1:1.2 +*** bin/dig/host.1 Tue Nov 27 16:55:51 2001 +--- bin/dig/host.1 Thu Nov 29 14:36:26 2001 +*************** +*** 87,94 **** + retries will default to 1. + .PP + Non-recursive queries can be made via the \fB-r\fR option. +! Setting this option clears the \fBRD\fR \(em recursion +! desired \(em bit in the query which \fBhost\fR makes. + This should mean that the name server receiving the query will not + attempt to resolve \fIname\fR. The + \fB-r\fR option enables \fBhost\fR to mimic +--- 87,94 ---- + retries will default to 1. + .PP + Non-recursive queries can be made via the \fB-r\fR option. +! Setting this option clears the \fBRD\fR recursion +! desired bit in the query which \fBhost\fR makes. + This should mean that the name server receiving the query will not + attempt to resolve \fIname\fR. The + \fB-r\fR option enables \fBhost\fR to mimic +*************** +*** 120,125 **** +--- 120,136 ---- + effectively wait forever for a reply. The time to wait for a response + will be set to the number of seconds given by the hardware's maximum + value for an integer quantity. ++ .SH "MDN SUPPORT" ++ .PP ++ If \fBhost\fR has been built with mdn support, it can ++ accept and display non-ASCII domain names. ++ \fBhost\fR appropriately converts character encoding of ++ domain name before sending a request to DNS server or displaying a ++ reply from the server. ++ If you'd like to turn off the MDN support for some reason, defines ++ the \fBMDN_DISABLE\fR environment variable. ++ The MDN support is disabled if the the variable is set when ++ \fBhost\fR runs. + .SH "FILES" + .PP + \fI/etc/resolv.conf\fR +Index: bin/dig/host.c +diff -c mdn/othersrc/bind9/bin/dig/host.c:1.1.1.8 mdn/othersrc/bind9/bin/dig/host.c:1.7 +*** bin/dig/host.c Tue Nov 27 16:55:51 2001 +--- bin/dig/host.c Thu Nov 29 18:45:14 2001 +*************** +*** 666,671 **** +--- 666,676 ---- + lookup->new_search = ISC_TRUE; + ISC_LIST_APPEND(lookup_list, lookup, link); + ++ #ifdef WITH_MDN ++ if (getenv(MDN_DISABLE_ENVVAR_NAME) != NULL) ++ lookup->mdn = ISC_FALSE; ++ #endif ++ + usesearch = ISC_TRUE; + } + +Index: bin/dig/host.docbook +diff -c mdn/othersrc/bind9/bin/dig/host.docbook:1.1.1.1 mdn/othersrc/bind9/bin/dig/host.docbook:1.2 +*** bin/dig/host.docbook Tue Nov 27 16:55:51 2001 +--- bin/dig/host.docbook Thu Nov 29 14:36:26 2001 +*************** +*** 181,186 **** +--- 181,201 ---- + + + ++ MDN SUPPORT ++ ++ If host has been built with mdn support, it can ++ accept and display non-ASCII domain names. ++ host appropriately converts character encoding of ++ domain name before sending a request to DNS server or displaying a ++ reply from the server. ++ If you'd like to turn off the MDN support for some reason, defines ++ the MDN_DISABLE environment variable. ++ The MDN support is disabled if the the variable is set when ++ host runs. ++ ++ ++ ++ + FILES + + /etc/resolv.conf +Index: bin/dig/nslookup.c +diff -c mdn/othersrc/bind9/bin/dig/nslookup.c:1.1.1.8 mdn/othersrc/bind9/bin/dig/nslookup.c:1.7 +*** bin/dig/nslookup.c Tue Nov 27 16:55:51 2001 +--- bin/dig/nslookup.c Thu Nov 29 18:45:14 2001 +*************** +*** 656,661 **** +--- 656,665 ---- + ISC_LIST_APPEND(lookup_list, lookup, link); + lookup->origin = NULL; + ISC_LIST_INIT(lookup->my_server_list); ++ #ifdef WITH_MDN ++ if (getenv(MDN_DISABLE_ENVVAR_NAME) != NULL) ++ lookup->mdn = ISC_FALSE; ++ #endif + debug("looking up %s", lookup->textname); + } + +Index: bin/dig/include/dig/dig.h +diff -c mdn/othersrc/bind9/bin/dig/include/dig/dig.h:1.1.1.6 mdn/othersrc/bind9/bin/dig/include/dig/dig.h:1.7 +*** bin/dig/include/dig/dig.h Tue Nov 27 16:55:51 2001 +--- bin/dig/include/dig/dig.h Thu Nov 29 18:45:14 2001 +*************** +*** 74,79 **** +--- 74,86 ---- + * be 1. + */ + ++ /* ++ * Name of environment variable which disables MDN support if defined. ++ */ ++ #ifdef WITH_MDN ++ #define MDN_DISABLE_ENVVAR_NAME "MDN_DISABLE" ++ #endif ++ + ISC_LANG_BEGINDECLS + + typedef struct dig_lookup dig_lookup_t; +*************** +*** 109,114 **** +--- 116,124 ---- + servfail_stops, + new_search, + besteffort, ++ #ifdef WITH_MDN ++ mdn, ++ #endif + dnssec; + char textname[MXNAME]; /* Name we're going to be looking up */ + char cmdline[MXNAME]; +Index: lib/dns/name.c +diff -c mdn/othersrc/bind9/lib/dns/name.c:1.1.1.9 mdn/othersrc/bind9/lib/dns/name.c:1.12 +*** lib/dns/name.c Tue Nov 27 16:57:32 2001 +--- lib/dns/name.c Thu Nov 29 18:45:14 2001 +*************** +*** 194,199 **** +--- 194,206 ---- + /* XXXDCL make const? */ + dns_name_t *dns_wildcardname = &wild; + ++ #ifdef WITH_MDN ++ /* ++ * dns_name_t to text post-conversion procedure. ++ */ ++ static dns_name_totextfilter_t totext_filter_proc = NULL; ++ #endif ++ + static void + set_offsets(const dns_name_t *name, unsigned char *offsets, + dns_name_t *set_name); +*************** +*** 1682,1687 **** +--- 1689,1697 ---- + unsigned int labels; + isc_boolean_t saw_root = ISC_FALSE; + char num[4]; ++ #ifdef WITH_MDN ++ unsigned int oused = target->used; ++ #endif + + /* + * This function assumes the name is in proper uncompressed +*************** +*** 1859,1864 **** +--- 1869,1878 ---- + + isc_buffer_add(target, tlen - trem); + ++ #ifdef WITH_MDN ++ if (totext_filter_proc != NULL) ++ return ((*totext_filter_proc)(target, oused, saw_root)); ++ #endif + return (ISC_R_SUCCESS); + } + +*************** +*** 3315,3317 **** +--- 3329,3337 ---- + return (ISC_R_SUCCESS); + } + ++ #ifdef WITH_MDN ++ void ++ dns_name_settotextfilter(dns_name_totextfilter_t proc) { ++ totext_filter_proc = proc; ++ } ++ #endif +Index: lib/dns/include/dns/name.h +diff -c mdn/othersrc/bind9/lib/dns/include/dns/name.h:1.1.1.6 mdn/othersrc/bind9/lib/dns/include/dns/name.h:1.8 +*** lib/dns/include/dns/name.h Tue Nov 27 16:57:38 2001 +--- lib/dns/include/dns/name.h Thu Nov 29 18:45:14 2001 +*************** +*** 218,223 **** +--- 218,234 ---- + */ + #define DNS_NAME_MAXWIRE 255 + ++ #ifdef WITH_MDN ++ /* ++ * Text output filter procedure. ++ * 'target' is the buffer to be converted. The region to be converted ++ * is from 'buffer'->base + 'used_org' to the end of the used region. ++ */ ++ typedef isc_result_t (*dns_name_totextfilter_t)(isc_buffer_t *target, ++ unsigned int used_org, ++ isc_boolean_t absolute); ++ #endif ++ + /*** + *** Initialization + ***/ +*************** +*** 1243,1248 **** +--- 1254,1267 ---- + * 'size' > 0. + * + */ ++ ++ #ifdef WITH_MDN ++ void ++ dns_name_settotextfilter(dns_name_totextfilter_t proc); ++ /* ++ * Call 'proc' at the end of dns_name_totext. ++ */ ++ #endif /* WITH_MDN */ + + #define DNS_NAME_FORMATSIZE (DNS_NAME_MAXTEXT + 1) + /* diff --git a/contrib/idn/mdnkit/patch/bind9/patch.most b/contrib/idn/mdnkit/patch/bind9/patch.most index 8542bf3db63..a23bea0a0d5 100644 --- a/contrib/idn/mdnkit/patch/bind9/patch.most +++ b/contrib/idn/mdnkit/patch/bind9/patch.most @@ -1,2173 +1,910 @@ ---- ./README.mdnkit.orig Wed Jan 24 01:22:44 2001 -+++ ./README.mdnkit Wed Jan 24 01:22:44 2001 -@@ -0,0 +1,110 @@ -+ -+ BIND-9 MDN patch -+ -+ Japan Network Information Center (JPNIC) -+ -+ -+* What is this patch for? -+ -+This patch adds multilingual domain name (MDN) support to BIND-9. -+You'll get multilingualized version of light weight resolver and -+dig/host/nslookup commands. -+ -+ + multilingualized version of light weight resolver -+ The following APIs accept non-ASCII host name encoded in the -+ local codeset (such as Shift JIS, Big5 or ISO8859-1) -+ determined by the application's current locale, and return -+ host names in the local codeset. -+ lwres_gethostbyname -+ lwres_gethostbyname_r -+ lwres_gethostbyname2 -+ lwres_getipnodebyname -+ lwres_getaddrinfo -+ lwres_gethostbyaddr -+ lwres_gethostbyaddr_r -+ lwres_getipnodebyaddr -+ lwres_getnameinfo -+ -+ + mulltilingualized dig/host/nslookup -+ dig/host/nslookup accepts non-ASCII domain names in the local -+ codeset. The domain names are normalized and converted to the -+ encoding on the DNS protocol, and sent to DNS servers. The -+ replies are converted back to the local codeset and displayed. -+ -+ -+* Compilation & installation -+ -+0. Prerequisite -+ -+You have to build and install mDNkit before building this patched version -+of bind-9. -+ -+1. Running configure script -+ -+Run `configure' in the top directory. See `README' for the -+configuration options. -+ -+This patch adds the following 3 options to `configure'. You should -+at least specify `--with-mdn' option to enable MDN support. -+ -+ --with-mdn[=PREFIX] -+ To enable MDN support, you have to specify `--with-mdn' -+ option. If you specified installation prefix other than -+ `/usr/local' (which is the default) when conifguring mDNkit, -+ also specify the prefix, like `--with-mdn=/usr/local/mdnkit'. -+ -+ --with-iconv=LIBSPEC -+ If your libc doens't provide iconv(), you need to specify the -+ library containing iconv() with this option. `LIBSPEC' is the -+ argument(s) to `cc' or `ld' to link the library, for example, -+ `--with-iconv="-L/usr/local/lib -liconv"'. -+ You don't need to specify the header file directory for "iconv.h" -+ to the compiler, as it isn't included directly by bind-9 with -+ this patch. -+ -+ --with-mdnlib=LIBSPEC -+ With this option, you can explicitly specify the argument(s) -+ to `cc' or `ld' to link the mDNkit's library, `libmdn'. If -+ this option is not specified, `-L${PREFIX}/lib -lmdn' is -+ assumed, where ${PREFIX} is the installation prefix specified -+ with `--with-mdn' option above. You may need to use this -+ option to specify extra argments, for example, -+ `--with-mdnlib="-L/usr/local/lib -R/usr/local/lib -lmdn"'. -+ -+Please consult `README' for other configuration options. -+ -+Note that if you want to specify some extra header file directories, -+you should use the environment variable STD_CINCLUDES instead of -+CFLAGS, as described in README. -+ -+2. Compilation and installation -+ -+After running "configure", just do -+ -+ make -+ make install -+ -+for compiling and installing. -+ -+3. Resolver configuration -+ -+To handle multilingual domain names, you have to specify the -+properties like: -+ + name encoding used in DNS protocol data -+ + normalization schemes -+These properties are specified by the mDNkit's resolver configuration -+file, "mdnres.conf". You have to create and set up the file properly. -+The pathname of the file and contents are described in the manual -+"mdnres.conf". -+ -+ -+* Contact information -+ -+Please see http//www.nic.ad.jp/jp/research/idn/ for the latest news -+about mDNkit and this patch. -+ -+Bug reports and comments on this kit should be sent to -+mdnkit-bugs@nic.ad.jp and idn-cmt@nic.ad.jp, respectively. -+ -+ -+; $Id: README.mdnkit,v 1.5 2000/10/18 04:54:57 ishisone Exp $ ---- ./acconfig.h.orig Wed Jan 24 00:53:00 2001 -+++ ./acconfig.h Wed Jan 24 01:22:44 2001 -@@ -116,4 +116,7 @@ - #endif /* SHUTUP_STDARG_CAST && __GNUC__ */ - -+/* define if mDNkit support is to be included. */ -+#undef WITH_MDN -+ - /* define if the system has a random number generating device */ - #undef PATH_RANDOMDEV ---- ./config.h.in.orig Wed Jan 24 00:53:01 2001 -+++ ./config.h.in Wed Jan 24 01:22:44 2001 -@@ -133,4 +133,10 @@ - #undef HAVE_PTHREAD_ATTR_GETSTACKSIZE - -+/* define if mDNkit support is to be included. */ -+#undef WITH_MDN -+ -+/* Define if you have the setlocale function. */ -+#undef HAVE_SETLOCALE -+ - /* Define if you have the header file. */ - #undef HAVE_FCNTL_H -@@ -141,4 +147,7 @@ - /* Define if you have the header file. */ - #undef HAVE_LINUX_PRCTL_H -+ -+/* Define if you have the header file. */ -+#undef HAVE_LOCALE_H - - /* Define if you have the header file. */ ---- ./configure.in.orig Wed Jan 24 01:12:20 2001 -+++ ./configure.in Wed Jan 24 01:22:44 2001 -@@ -1324,4 +1324,52 @@ - - # -+# MDN support -+# -+AC_ARG_WITH(mdn, -+ [ --with-mdn[=PREFIX] enable MDN support using mDNkit [default prefix /usr/local]], -+ use_mdn="$withval", use_mdn="no") -+case "$use_mdn" in -+yes) -+ mdn_path=/usr/local -+ ;; -+no) -+ ;; -+*) -+ mdn_path="$use_mdn" -+ ;; -+esac -+ -+AC_ARG_WITH(iconv, -+ [ --with-iconv[=LIBSPEC] specify iconv library [default -liconv]], -+ iconvlib="$withval", iconvlib="no") -+case "$iconvlib" in -+no) -+ iconvlib= -+ ;; -+yes) -+ iconvlib=-liconv -+ ;; -+esac -+ -+AC_ARG_WITH(mdnlib, -+ [ --with-mdnlib=ARG specify libmdn], -+ mdnlib="$withval", mdnlib="no") -+if test "$mdnlib" = yes; then -+ AC_MSG_ERROR([You must specify ARG for --with-mdnlib.]) -+fi -+ -+if test "$use_mdn" != no; then -+ AC_DEFINE(WITH_MDN) -+ STD_CINCLUDES="$STD_CINCLUDES -I$mdn_path/include" -+ if test "$mdnlib" != no; then -+ LIBS="$mdnlib $iconvlib $LIBS" -+ else -+ LIBS="-L$mdn_path/lib -lmdn $iconvlib $LIBS" -+ fi -+fi -+AC_CHECK_HEADERS(locale.h) -+AC_CHECK_FUNCS(setlocale) -+ -+# - # Substitutions - # ---- ./lib/dns/config/confctx.c.orig Wed Jan 24 00:55:34 2001 -+++ ./lib/dns/config/confctx.c Wed Jan 24 01:22:44 2001 -@@ -1030,4 +1030,7 @@ - PRINT_AS_BOOLEAN(maintain_ixfr_base, "maintain-ixfr-base"); - PRINT_AS_BOOLEAN(has_old_clients, "has-old-clients"); -+#ifdef WITH_MDN -+ PRINT_AS_BOOLEAN(allow_utf8, "allow-utf8"); -+#endif - PRINT_AS_BOOLEAN(auth_nx_domain, "auth-nxdomain"); - PRINT_AS_BOOLEAN(multiple_cnames, "multiple-cnames"); -@@ -1565,4 +1568,7 @@ - opts->maintain_ixfr_base = NULL; - opts->has_old_clients = NULL; -+#ifdef WITH_MDN -+ opts->allow_utf8 = NULL; -+#endif - opts->auth_nx_domain = NULL; - opts->multiple_cnames = NULL; -@@ -1680,4 +1686,7 @@ - FREEFIELD(maintain_ixfr_base); - FREEFIELD(has_old_clients); -+#ifdef WITH_MDN -+ FREEFIELD(allow_utf8); -+#endif - FREEFIELD(auth_nx_domain); - FREEFIELD(multiple_cnames); -@@ -1858,4 +1867,7 @@ - BOOL_FUNCS(maintainixfrbase, maintain_ixfr_base) - BOOL_FUNCS(hasoldclients, has_old_clients) -+#ifdef WITH_MDN -+BOOL_FUNCS(allowutf8, allow_utf8) -+#endif - BOOL_FUNCS(authnxdomain, auth_nx_domain) - BOOL_FUNCS(multiplecnames, multiple_cnames) ---- ./lib/dns/config/confparser.y.orig Wed Jan 24 01:12:59 2001 -+++ ./lib/dns/config/confparser.y Wed Jan 24 01:22:44 2001 -@@ -275,4 +275,5 @@ - %token L_ALLOW_UPDATE - %token L_ALLOW_UPDATE_FORWARDING -+%token L_ALLOW_UTF8 - %token L_ALLOW_V6_SYNTHESIS - %token L_ALSO_NOTIFY -@@ -1740,4 +1741,19 @@ - } - } -+ | L_ALLOW_UTF8 yea_or_nay -+ { -+#ifdef WITH_MDN -+ tmpres = dns_c_ctx_setallowutf8(currcfg, $2); -+ if (tmpres == ISC_R_EXISTS) { -+ parser_error(ISC_FALSE, -+ "cannot redefine allow-utf8"); -+ YYABORT; -+ } -+#else -+ parser_error(ISC_FALSE, "must be configured with MDN" -+ "to use allow-utf8"); -+ YYABORT; -+#endif -+ } - | L_ADDITIONAL_DATA additional_data - { -@@ -6122,4 +6138,7 @@ - int yaccval; - }; -+#ifdef WITH_MDN -+ { "allow-utf8", L_ALLOW_UTF8 }, -+#endif - - static struct token keyword_tokens [] = { ---- ./lib/dns/include/dns/confctx.h.orig Wed Jan 24 01:02:45 2001 -+++ ./lib/dns/include/dns/confctx.h Wed Jan 24 01:22:44 2001 -@@ -185,4 +185,7 @@ - isc_sockaddr_t *transfer_source_v6; - isc_sockaddr_t *query_source; -+#ifdef WITH_MDN -+ isc_boolean_t *allow_utf8; -+#endif - isc_sockaddr_t *query_source_v6; - -@@ -631,4 +634,11 @@ - isc_result_t dns_c_ctx_gettreatcrasspace(dns_c_ctx_t *cfg, - isc_boolean_t *retval); -+#ifdef WITH_MDN -+isc_result_t dns_c_ctx_setallowutf8(dns_c_ctx_t *cfg, -+ isc_boolean_t newval); -+isc_result_t dns_c_ctx_getallowutf8(dns_c_ctx_t *cfg, -+ isc_boolean_t *retval); -+isc_result_t dns_c_ctx_unsetallowutf8(dns_c_ctx_t *cfg); -+#endif - - ---- ./lib/dns/include/dns/name.h.orig Wed Jan 24 01:03:27 2001 -+++ ./lib/dns/include/dns/name.h Wed Jan 24 01:22:44 2001 -@@ -219,4 +219,15 @@ - #define DNS_NAME_MAXWIRE 255 - -+#ifdef WITH_MDN -+/* -+ * Text output filter procedure. -+ * 'target' is the buffer to be converted. The region to be converted -+ * is from 'buffer'->base + 'used_org' to the end of the used region. -+ */ -+typedef isc_result_t (*dns_name_totextfilter_t)(isc_buffer_t *target, -+ unsigned int used_org, -+ isc_boolean_t absolute); -+#endif -+ - /*** - *** Initialization -@@ -1217,4 +1228,24 @@ - * - */ -+ -+#ifdef WITH_MDN -+void -+dns_name_allowutf8(isc_boolean_t allowutf8); -+/* -+ * If 'allowutf8' is true, UTF-8 characters are not translated into -+ * backslash escape format (\DDD) by dns_name_totext(). -+ * -+ * XXX: -+ * Setting this modifies the global state. Maybe there should be -+ * a way to set this for each name. -+ */ -+ -+void -+dns_name_settotextfilter(dns_name_totextfilter_t proc); -+/* -+ * Call 'proc' at the end of dns_name_totext. -+ */ -+ -+#endif /* WITH_MDN */ - - #define DNS_NAME_FORMATSIZE (DNS_NAME_MAXTEXT + 1) ---- ./lib/dns/name.c.orig Wed Jan 24 00:59:40 2001 -+++ ./lib/dns/name.c Wed Jan 24 01:22:44 2001 -@@ -32,4 +32,8 @@ - #include - -+#ifdef WITH_MDN -+#include -+#endif -+ - #define VALID_NAME(n) ISC_MAGIC_VALID(n, DNS_NAME_MAGIC) - -@@ -199,4 +203,17 @@ - dns_name_t *set_name); - -+#ifdef WITH_MDN -+/* -+ * If this flag is true, dns_name_totext() copies UTF-8 characters -+ * as is (ie not backslash-escaped form). -+ */ -+static isc_boolean_t allow_utf8 = ISC_FALSE; -+ -+/* -+ * dns_name_t to text post-conversion procedure. -+ */ -+static dns_name_totextfilter_t totext_filter_proc = NULL; -+#endif -+ - static void - compact(dns_name_t *name, unsigned char *offsets); -@@ -1683,4 +1700,8 @@ - isc_boolean_t saw_root = ISC_FALSE; - char num[4]; -+#ifdef WITH_MDN -+ unsigned int oused = target->used; -+ unsigned int u8len; -+#endif - - /* -@@ -1778,4 +1799,18 @@ - trem--; - nlen--; -+#ifdef WITH_MDN -+ } else if (c >= 0x80 && -+ allow_utf8 && -+ (u8len = -+ mdn_utf8_isvalidchar(ndata)) -+ > 0 && -+ u8len <= trem) { -+ memcpy(tdata, ndata, u8len); -+ ndata += u8len; -+ tdata += u8len; -+ trem -= u8len; -+ nlen -= u8len; -+ count -= u8len - 1; -+#endif - } else { - if (trem < 4) -@@ -1859,4 +1894,8 @@ - isc_buffer_add(target, tlen - trem); - -+#ifdef WITH_MDN -+ if (totext_filter_proc != NULL) -+ return ((*totext_filter_proc)(target, oused, saw_root)); -+#endif - return (ISC_R_SUCCESS); - } -@@ -3137,4 +3176,16 @@ - dns_offsets_t odata; - -+ -+#ifdef WITH_MDN -+void -+dns_name_allowutf8(isc_boolean_t allowutf8) { -+ allow_utf8 = allowutf8; -+} -+ -+void -+dns_name_settotextfilter(dns_name_totextfilter_t proc) { -+ totext_filter_proc = proc; -+} -+#endif - /* - * Make dest a copy of source. ---- ./lib/lwres/getaddrinfo.c.orig Wed Jan 24 01:11:09 2001 -+++ ./lib/lwres/getaddrinfo.c Wed Jan 24 01:22:44 2001 -@@ -54,4 +54,12 @@ - #endif - -+#ifdef WITH_MDN /* Add 'encodeflag' parameter to 3 functions. */ -+static int add_ipv4(const char *hostname, int flags, struct addrinfo **aip, -+ int socktype, int port, int encodeflg); -+static int add_ipv6(const char *hostname, int flags, struct addrinfo **aip, -+ int socktype, int port, int encodeflg); -+static void set_order(int, int (**)(const char *, int, struct addrinfo **, -+ int, int, int)); -+#else - static int add_ipv4(const char *hostname, int flags, struct addrinfo **aip, - int socktype, int port); -@@ -60,4 +68,5 @@ - static void set_order(int, int (**)(const char *, int, struct addrinfo **, - int, int)); -+#endif /* WITH_MDN */ - - #define FOUND_IPV4 0x1 -@@ -67,7 +76,22 @@ - #define ISC_AI_MASK (AI_PASSIVE|AI_CANONNAME|AI_NUMERICHOST) - -+#ifdef WITH_MDN - int - lwres_getaddrinfo(const char *hostname, const char *servname, -+ const struct addrinfo *hints, struct addrinfo **res) -+{ -+ /* The last parameter is a encoding type. Default is local encoding. */ -+ return (lwres_getaddrinfo_enc(hostname, servname, hints, res, 0)); -+} -+#endif /* WITH_MDN */ -+ -+int -+#ifdef WITH_MDN -+lwres_getaddrinfo_enc(const char *hostname, const char *servname, -+ const struct addrinfo *hints, struct addrinfo **res, int encodeflg) -+#else -+lwres_getaddrinfo(const char *hostname, const char *servname, - const struct addrinfo *hints, struct addrinfo **res) -+#endif /* WITH_MDN */ - { - struct servent *sp; -@@ -76,6 +100,11 @@ - struct addrinfo *ai, *ai_list; - int port, err, i; -+#ifdef WITH_MDN -+ int (*net_order[FOUND_MAX+1])(const char *, int, struct addrinfo **, -+ int, int, int); -+#else - int (*net_order[FOUND_MAX+1])(const char *, int, struct addrinfo **, - int, int); -+#endif /* WITH_MDN */ - - if (hostname == NULL && servname == NULL) -@@ -354,5 +383,9 @@ - break; - err = (net_order[i])(hostname, flags, &ai_list, -+#ifdef WITH_MDN -+ socktype, port, encodeflg); -+#else - socktype, port); -+#endif - if (err != 0) - return (err); -@@ -393,6 +426,11 @@ - - static void -+#ifdef WITH_MDN -+set_order(int family, int (**net_order)(const char *, int, struct addrinfo **, -+ int, int, int)) -+#else - set_order(int family, int (**net_order)(const char *, int, struct addrinfo **, - int, int)) -+#endif /* WITH_MDN */ - { - char *order, *tok; -@@ -452,6 +490,11 @@ - - static int -+#ifdef WITH_MDN -+add_ipv4(const char *hostname, int flags, struct addrinfo **aip, -+ int socktype, int port, int encodeflg) -+#else - add_ipv4(const char *hostname, int flags, struct addrinfo **aip, - int socktype, int port) -+#endif /* WITH_MDN */ - { - struct addrinfo *ai; -@@ -477,6 +520,12 @@ - SIN(ai->ai_addr)->sin_port = port; - memcpy(&SIN(ai->ai_addr)->sin_addr, v4_loop, 4); -+#ifdef WITH_MDN -+ } else if (lwres_getaddrsbyname_enc(lwrctx, hostname, -+ LWRES_ADDRTYPE_V4, -+ &by, encodeflg) == 0) { -+#else - } else if (lwres_getaddrsbyname(lwrctx, hostname, - LWRES_ADDRTYPE_V4, &by) == 0) { -+#endif /* WITH_MDN */ - addr = LWRES_LIST_HEAD(by->addrs); - while (addr != NULL) { -@@ -512,6 +561,11 @@ - - static int -+#ifdef WITH_MDN -+add_ipv6(const char *hostname, int flags, struct addrinfo **aip, -+ int socktype, int port, int encodeflg) -+#else - add_ipv6(const char *hostname, int flags, struct addrinfo **aip, - int socktype, int port) -+#endif /* WITH_MDN */ - { - struct addrinfo *ai; -@@ -538,6 +592,12 @@ - SIN6(ai->ai_addr)->sin6_port = port; - memcpy(&SIN6(ai->ai_addr)->sin6_addr, v6_loop, 16); -+#ifdef WITH_MDN -+ } else if (lwres_getaddrsbyname_enc(lwrctx, hostname, -+ LWRES_ADDRTYPE_V6, -+ &by, encodeflg) == 0) { -+#else - } else if (lwres_getaddrsbyname(lwrctx, hostname, - LWRES_ADDRTYPE_V6, &by) == 0) { -+#endif /* WITH_MDN */ - addr = LWRES_LIST_HEAD(by->addrs); - while (addr != NULL) { ---- ./lib/lwres/gethost.c.orig Wed Jan 24 01:11:10 2001 -+++ ./lib/lwres/gethost.c Wed Jan 24 01:22:44 2001 -@@ -26,4 +26,7 @@ - #include - -+#ifdef WITH_MDN -+#include -+#endif /* WITH_MDN */ - #include - -@@ -37,30 +40,81 @@ - static int copytobuf(struct hostent *, struct hostent *, char *, int); - -+#ifdef WITH_MDN - struct hostent * - lwres_gethostbyname(const char *name) { -+ /* The last parameter is a encoding type. Default is local encoding. */ -+ return (lwres_gethostbyname_enc(name, LWRES_ENCODING_LOCAL)); -+} -+#endif /* WITH_MDN */ -+ -+struct hostent * -+#ifdef WITH_MDN -+lwres_gethostbyname_enc(const char *name, int encodeflg) { -+#else -+lwres_gethostbyname(const char *name) { -+#endif /* WITH_MDN */ - - if (he != NULL) - lwres_freehostent(he); - -+#ifdef WITH_MDN -+ he = lwres_getipnodebyname_enc(name, AF_INET, 0, &lwres_h_errno, -+ encodeflg); -+#else - he = lwres_getipnodebyname(name, AF_INET, 0, &lwres_h_errno); -+#endif /* WITH_MDN */ - return (he); - } - -+#ifdef WITH_MDN - struct hostent * - lwres_gethostbyname2(const char *name, int af) { -+ /* The last parameter is a encoding type. Default is local encoding. */ -+ return (lwres_gethostbyname2_enc(name, af, LWRES_ENCODING_LOCAL)); -+} -+#endif /* WITH_MDN */ -+ -+struct hostent * -+#ifdef WITH_MDN -+lwres_gethostbyname2_enc(const char *name, int af, int encodeflg) { -+#else -+lwres_gethostbyname2(const char *name, int af) { -+#endif /* WITH_MDN */ - if (he != NULL) - lwres_freehostent(he); - -+#ifdef WITH_MDN -+ he = lwres_getipnodebyname_enc(name, af, 0, &lwres_h_errno, encodeflg); -+#else - he = lwres_getipnodebyname(name, af, 0, &lwres_h_errno); -+#endif /* WITH_MDN */ - return (he); - } - -+#ifdef WITH_MDN -+struct hostent * -+lwres_gethostbyaddr(const char *addr, int len, int type) { -+ /* The last parameter is a encoding type. Default is local encoding. */ -+ return (lwres_gethostbyaddr_enc(addr, len, type, -+ LWRES_ENCODING_LOCAL)); -+} -+#endif /* WITH_MDN */ -+ - struct hostent * -+#ifdef WITH_MDN -+lwres_gethostbyaddr_enc(const char *addr, int len, int type, int encodeflg) { -+#else - lwres_gethostbyaddr(const char *addr, int len, int type) { -+#endif /* WITH_MDN */ - - if (he != NULL) - lwres_freehostent(he); - -+#ifdef WITH_MDN -+ he = lwres_getipnodebyaddr_enc(addr, len, type, &lwres_h_errno, -+ encodeflg); -+#else - he = lwres_getipnodebyaddr(addr, len, type, &lwres_h_errno); -+#endif /* WITH_MDN */ - return (he); - } -@@ -89,12 +143,32 @@ - } - -+#ifdef WITH_MDN - struct hostent * - lwres_gethostbyname_r(const char *name, struct hostent *resbuf, - char *buf, int buflen, int *error) - { -+ /* The last parameter is a encoding type. Default is local encoding. */ -+ return (lwres_gethostbyname_r_enc(name, resbuf, buf, buflen, error, -+ LWRES_ENCODING_LOCAL)); -+} -+#endif /* WITH_MDN */ -+ -+struct hostent * -+#ifdef WITH_MDN -+lwres_gethostbyname_r_enc(const char *name, struct hostent *resbuf, -+ char *buf, int buflen, int *error, int encodeflg) -+#else -+lwres_gethostbyname_r(const char *name, struct hostent *resbuf, -+ char *buf, int buflen, int *error) -+#endif /* WITH_MDN */ -+{ - struct hostent *he; - int res; - -+#ifdef WITH_MDN -+ he = lwres_getipnodebyname_enc(name, AF_INET, 0, error, encodeflg); -+#else - he = lwres_getipnodebyname(name, AF_INET, 0, error); -+#endif /* WITH_MDN */ - if (he == NULL) - return (NULL); -@@ -108,13 +182,35 @@ - } - -+#ifdef WITH_MDN -+struct hostent * -+lwres_gethostbyaddr_r(const char *addr, int len, int type, -+ struct hostent *resbuf, char *buf, int buflen, -+ int *error) -+{ -+ /* The last parameter is a encoding type. Default is local encoding. */ -+ return (lwres_gethostbyaddr_r_enc(addr, len, type, resbuf, buf, buflen, -+ error, LWRES_ENCODING_LOCAL)); -+} -+#endif /* WITH_MDN */ -+ - struct hostent * -+#ifdef WITH_MDN -+lwres_gethostbyaddr_r_enc(const char *addr, int len, int type, -+ struct hostent *resbuf, char *buf, int buflen, -+ int *error, int encodeflg) -+#else - lwres_gethostbyaddr_r(const char *addr, int len, int type, - struct hostent *resbuf, char *buf, int buflen, - int *error) -+#endif /* WITH_MDN */ - { - struct hostent *he; - int res; - -+#ifdef WITH_MDN -+ he = lwres_getipnodebyaddr_enc(addr, len, type, error, encodeflg); -+#else - he = lwres_getipnodebyaddr(addr, len, type, error); -+#endif /* WITH_MDN */ - if (he == NULL) - return (NULL); ---- ./lib/lwres/getipnode.c.orig Wed Jan 24 01:11:14 2001 -+++ ./lib/lwres/getipnode.c Wed Jan 24 01:22:44 2001 -@@ -99,6 +99,22 @@ - */ - -+#ifdef WITH_MDN - struct hostent * -+lwres_getipnodebyname(const char *name, int af, int flags, int *error_num) -+{ -+ /* The last parameter is a encoding type. Default is local encoding. */ -+ return (lwres_getipnodebyname_enc(name, af, flags, error_num, -+ LWRES_ENCODING_LOCAL)); -+} -+#endif /* WITH_MDN */ -+ -+struct hostent * -+#ifdef WITH_MDN -+lwres_getipnodebyname_enc(const char *name, int af, int flags, int *error_num, -+ int encodeflg) -+{ -+#else - lwres_getipnodebyname(const char *name, int af, int flags, int *error_num) { -+#endif /* WITH_MDN */ - int have_v4 = 1, have_v6 = 1; - struct in_addr in4; -@@ -171,5 +187,10 @@ - if (have_v6 && af == AF_INET6) { - -+#ifdef WITH_MDN -+ n = lwres_getaddrsbyname_enc(lwrctx, name, LWRES_ADDRTYPE_V6, -+ &by, encodeflg); -+#else - n = lwres_getaddrsbyname(lwrctx, name, LWRES_ADDRTYPE_V6, &by); -+#endif /* WITH_MDN */ - if (n == 0) { - he1 = hostfromname(by, AF_INET6); -@@ -188,5 +209,10 @@ - (af == AF_INET6 && (flags & AI_V4MAPPED) != 0 && - (he1 == NULL || (flags & AI_ALL) != 0)))) { -+#ifdef WITH_MDN -+ n = lwres_getaddrsbyname_enc(lwrctx, name, LWRES_ADDRTYPE_V4, -+ &by, encodeflg); -+#else - n = lwres_getaddrsbyname(lwrctx, name, LWRES_ADDRTYPE_V4, &by); -+#endif /* WITH_MDN */ - if (n == 0) { - he2 = hostfromname(by, AF_INET); -@@ -220,6 +246,20 @@ - } - -+#ifdef WITH_MDN -+struct hostent * -+lwres_getipnodebyaddr(const void *src, size_t len, int af, int *error_num) { -+ /* The last parameter is a encoding type. Default is local encoding. */ -+ return (lwres_getipnodebyaddr_enc(src, len, af, error_num, -+ LWRES_ENCODING_LOCAL)); -+} -+#endif /* WITH_MDN */ - struct hostent * -+#ifdef WITH_MDN -+lwres_getipnodebyaddr_enc(const void *src, size_t len, int af, int *error_num, -+ int encodeflg) -+{ -+#else - lwres_getipnodebyaddr(const void *src, size_t len, int af, int *error_num) { -+#endif /* WITH_MDN */ - struct hostent *he1, *he2; - lwres_context_t *lwrctx = NULL; -@@ -282,6 +322,12 @@ - (void) lwres_conf_parse(lwrctx, lwres_resolv_conf); - if (n == LWRES_R_SUCCESS) -+#ifdef WITH_MDN -+ n = lwres_getnamebyaddr_enc(lwrctx, LWRES_ADDRTYPE_V4, -+ INADDRSZ, cp, &by, -+ encodeflg); -+#else - n = lwres_getnamebyaddr(lwrctx, LWRES_ADDRTYPE_V4, - INADDRSZ, cp, &by); -+#endif /* WITH_MDN */ - if (n != LWRES_R_SUCCESS) { - lwres_conf_clear(lwrctx); -@@ -326,6 +372,11 @@ - (void) lwres_conf_parse(lwrctx, lwres_resolv_conf); - if (n == LWRES_R_SUCCESS) -+#ifdef WITH_MDN -+ n = lwres_getnamebyaddr_enc(lwrctx, LWRES_ADDRTYPE_V6, -+ IN6ADDRSZ, src, &by, encodeflg); -+#else - n = lwres_getnamebyaddr(lwrctx, LWRES_ADDRTYPE_V6, IN6ADDRSZ, - src, &by); -+#endif /* WITH_MDN */ - if (n != 0) { - *error_num = HOST_NOT_FOUND; ---- ./lib/lwres/getnameinfo.c.orig Wed Jan 24 01:11:15 2001 -+++ ./lib/lwres/getnameinfo.c Wed Jan 24 01:22:44 2001 -@@ -106,8 +106,24 @@ - } while (0) - -+#ifdef WITH_MDN - int - lwres_getnameinfo(const struct sockaddr *sa, size_t salen, char *host, - size_t hostlen, char *serv, size_t servlen, int flags) - { -+ /* The last parameter is a encoding type. Default is local encoding. */ -+ return (lwres_getnameinfo_enc(sa, salen, host, hostlen, serv, servlen, -+ flags, LWRES_ENCODING_LOCAL)); -+} -+#endif /* WITH_MDN */ -+int -+#ifdef WITH_MDN -+lwres_getnameinfo_enc(const struct sockaddr *sa, size_t salen, char *host, -+ size_t hostlen, char *serv, size_t servlen, int flags, -+ int encodeflg) -+#else -+lwres_getnameinfo(const struct sockaddr *sa, size_t salen, char *host, -+ size_t hostlen, char *serv, size_t servlen, int flags) -+#endif /* WITH_MDN */ -+{ - struct afd *afd; - struct servent *sp; -@@ -259,6 +275,12 @@ - - if (n == 0) -+#ifdef WITH_MDN -+ n = lwres_getnamebyaddr_enc(lwrctx, lwf, -+ afd->a_addrlen, addr, &by, -+ encodeflg); -+#else - n = lwres_getnamebyaddr(lwrctx, lwf, afd->a_addrlen, - addr, &by); -+#endif /* WITH_MDN */ - if (n == 0) { - if (flags & NI_NOFQDN) { ---- ./lib/lwres/include/lwres/lwres.h.orig Wed Jan 24 01:10:57 2001 -+++ ./lib/lwres/include/lwres/lwres.h Wed Jan 24 01:22:44 2001 -@@ -27,4 +27,7 @@ - #include - #include -+#ifdef WITH_MDN -+#include -+#endif /* WITH_MDN */ - - /* -@@ -247,4 +250,7 @@ - lwres_uint8_t ndots; /* set to n in 'options ndots:n' */ - lwres_uint8_t no_tld_query; /* non-zero if 'options no_tld_query' */ -+#ifdef WITH_MDN -+ mdn_resconf_t mdnctx; /* structure for mdn configuration */ -+#endif /* WITH_MDN */ - } lwres_conf_t; - -@@ -255,4 +261,10 @@ - #define LWRES_MAX_ADDRS 64 /* max # of addrs */ - -+#ifdef WITH_MDN -+/* These are used for specifying encoding of the domain names */ -+#define LWRES_ENCODING_LOCAL 0 /* local encoding */ -+#define LWRES_ENCODING_UCS 1 /* UTF-8 encoding */ -+#endif /* WITH_MDN */ -+ - LWRES_LANG_BEGINDECLS - -@@ -264,4 +276,30 @@ - extern const char *lwres_resolv_conf; - -+#ifdef WITH_MDN -+/* -+ * Forward declarations -+ */ -+struct addrinfo; -+struct sockaddr; -+ -+int lwres_getaddrinfo_enc(const char *, const char *, -+ const struct addrinfo *, -+ struct addrinfo **, -+ int encodeflg); -+int lwres_getnameinfo_enc(const struct sockaddr *, size_t, char *, -+ size_t, char *, size_t, int, int); -+struct hostent *lwres_gethostbyaddr_enc(const char *, int, int, int); -+struct hostent *lwres_gethostbyname_enc(const char *, int); -+struct hostent *lwres_gethostbyname2_enc(const char *, int, int); -+struct hostent *lwres_getipnodebyname_enc(const char *, int, int, int *, int); -+struct hostent *lwres_getipnodebyaddr_enc(const void *, size_t, int, int *, -+ int); -+struct hostent *lwres_gethostbyaddr_r_enc(const char *, int, int, -+ struct hostent *, char *, int, -+ int *, int); -+struct hostent *lwres_gethostbyname_r_enc(const char *, struct hostent *, -+ char *, int, int *, int); -+#endif /* WITH_MDN */ -+ - lwres_result_t - lwres_gabnrequest_render(lwres_context_t *ctx, lwres_gabnrequest_t *req, -@@ -277,7 +315,13 @@ - - lwres_result_t -+#ifdef WITH_MDN -+lwres_gabnresponse_parse(lwres_context_t *ctx, lwres_buffer_t *b, -+ lwres_lwpacket_t *pkt, -+ lwres_gabnresponse_t **structp, int encodeflg); -+#else - lwres_gabnresponse_parse(lwres_context_t *ctx, lwres_buffer_t *b, - lwres_lwpacket_t *pkt, - lwres_gabnresponse_t **structp); -+#endif /* WITH_MDN */ - - void -@@ -332,8 +376,15 @@ - lwres_lwpacket_t *pkt, lwres_gnbarequest_t **structp); - -+#ifdef WITH_MDN -+lwres_result_t -+lwres_gnbaresponse_parse(lwres_context_t *ctx, lwres_buffer_t *b, -+ lwres_lwpacket_t *pkt, -+ lwres_gnbaresponse_t **structp, int encodeflg); -+#else - lwres_result_t - lwres_gnbaresponse_parse(lwres_context_t *ctx, lwres_buffer_t *b, - lwres_lwpacket_t *pkt, - lwres_gnbaresponse_t **structp); -+#endif /* WITH_MDN */ - - void -@@ -570,4 +621,10 @@ - lwres_getaddrsbyname(lwres_context_t *ctx, const char *name, - lwres_uint32_t addrtypes, lwres_gabnresponse_t **structp); -+#ifdef WITH_MDN -+lwres_result_t -+lwres_getaddrsbyname_enc(lwres_context_t *ctx, const char *name, -+ lwres_uint32_t addrtypes, -+ lwres_gabnresponse_t **structp, int encodeflg); -+#endif /* WITH_MDN */ - - lwres_result_t -@@ -575,4 +632,10 @@ - lwres_uint16_t addrlen, const unsigned char *addr, - lwres_gnbaresponse_t **structp); -+#ifdef WITH_MDN -+lwres_result_t -+lwres_getnamebyaddr_enc(lwres_context_t *ctx, lwres_uint32_t addrtype, -+ lwres_uint16_t addrlen, const unsigned char *addr, -+ lwres_gnbaresponse_t **structp, int encodeflg); -+#endif /* WITH_MDN */ - - lwres_result_t -@@ -580,4 +643,9 @@ - lwres_uint16_t rdclass, lwres_uint16_t rdtype, - lwres_uint32_t flags, lwres_grbnresponse_t **structp); -+ -+#ifdef WITH_MDN -+lwres_result_t -+lwres_result_frommdn(mdn_result_t r); -+#endif - - LWRES_LANG_ENDDECLS ---- ./lib/lwres/lwconfig.c.orig Wed Jan 24 01:11:20 2001 -+++ ./lib/lwres/lwconfig.c Wed Jan 24 01:22:45 2001 -@@ -56,4 +56,7 @@ - #include - #include -+#ifdef WITH_MDN -+#include -+#endif /* WITH_MDN */ - - #include "assert_p.h" -@@ -241,4 +244,13 @@ - lwres_resetaddr(&confdata->sortlist[i].mask); - } -+#ifdef WITH_MDN -+ /* -+ * Initialize the context for MDN. -+ */ -+ confdata->mdnctx = NULL; -+ if (mdn_resconf_initialize() == mdn_success) { -+ (void)mdn_resconf_create(&confdata->mdnctx); -+ } -+#endif /* WITH_MDN */ - } - -@@ -606,4 +618,9 @@ - fclose(fp); - -+#ifdef WITH_MDN -+ /* Read mdn configuration file. */ -+ if (confdata->mdnctx != NULL) -+ (void)mdn_resconf_loadfile(confdata->mdnctx, NULL); -+#endif - return (ret); - } ---- ./lib/lwres/lwres_gabn.c.orig Wed Jan 24 01:11:25 2001 -+++ ./lib/lwres/lwres_gabn.c Wed Jan 24 01:22:45 2001 -@@ -28,4 +28,7 @@ - #include - #include -+#ifdef WITH_MDN -+#include -+#endif /* WITH_MDN */ - - #include "context_p.h" -@@ -245,6 +248,12 @@ - - lwres_result_t -+#ifdef WITH_MDN -+lwres_gabnresponse_parse(lwres_context_t *ctx, lwres_buffer_t *b, -+ lwres_lwpacket_t *pkt, lwres_gabnresponse_t **structp, -+ int encodeflg) -+#else - lwres_gabnresponse_parse(lwres_context_t *ctx, lwres_buffer_t *b, - lwres_lwpacket_t *pkt, lwres_gabnresponse_t **structp) -+#endif /* WITH_MDN */ - { - lwres_result_t ret; -@@ -256,4 +265,9 @@ - lwres_addrlist_t addrlist; - lwres_addr_t *addr; -+#ifdef WITH_MDN -+ char *tmp_realname; -+ char *tmp_aliases; -+ mdn_result_t r; -+#endif /* WITH_MDN */ - - REQUIRE(ctx != NULL); -@@ -319,4 +333,26 @@ - if (ret != LWRES_R_SUCCESS) - goto out; -+#ifdef WITH_MDN -+ /* -+ * Convert from UCS to local encoding if needed. -+ */ -+ tmp_realname = (char *)malloc(1024); -+ switch (encodeflg) { -+ case LWRES_ENCODING_LOCAL: /* from UCS to local encoding */ -+ r = mdn_res_ucstolocal(ctx->confdata.mdnctx, gabn->realname, -+ tmp_realname, 1024); -+ if (r != mdn_success) { -+ free(tmp_realname); -+ tmp_realname = NULL; -+ ret = lwres_result_frommdn(r); -+ goto out; -+ } -+ break; -+ default: -+ strcpy(tmp_realname, gabn->realname); -+ break; -+ } -+ gabn->realname = tmp_realname; -+#endif /* WITH_MDN */ - - /* -@@ -328,4 +364,27 @@ - if (ret != LWRES_R_SUCCESS) - goto out; -+#ifdef WITH_MDN -+ /* -+ * Convert from UCS to local encoding. -+ */ -+ tmp_aliases = (char *)malloc(1024); -+ switch (encodeflg) { -+ case LWRES_ENCODING_LOCAL: /* from UCS to local encoding */ -+ r = mdn_res_ucstolocal(ctx->confdata.mdnctx, -+ gabn->aliases[x], -+ tmp_aliases, 1024); -+ if (r != mdn_success) { -+ free(tmp_aliases); -+ tmp_aliases = NULL; -+ ret = lwres_result_frommdn(r); -+ goto out; -+ } -+ break; -+ default: /* When encoding on DNS protocol */ -+ strcpy(tmp_aliases, gabn->aliases[x]); -+ break; -+ } -+ gabn->aliases[x] = tmp_aliases; -+#endif /* WITH_MDN */ - } - -@@ -391,4 +450,7 @@ - lwres_gabnresponse_t *gabn; - lwres_addr_t *addr; -+#ifdef WITH_MDN -+ unsigned int x; -+#endif /* WITH_MDN */ - - REQUIRE(ctx != NULL); -@@ -398,4 +460,12 @@ - *structp = NULL; - -+#ifdef WITH_MDN -+ free(gabn->realname); -+ gabn->realname = NULL; -+ for (x = 0 ; x < gabn->naliases ; x++) { -+ free(gabn->aliases[x]); -+ gabn->aliases[x] = NULL; -+ } -+#endif /* WITH_MDN */ - if (gabn->naliases > 0) { - CTXFREE(gabn->aliases, sizeof(char *) * gabn->naliases); ---- ./lib/lwres/lwres_gnba.c.orig Wed Jan 24 01:11:26 2001 -+++ ./lib/lwres/lwres_gnba.c Wed Jan 24 01:22:45 2001 -@@ -28,4 +28,7 @@ - #include - #include -+#ifdef WITH_MDN -+#include -+#endif /* WITH_MDN */ - - #include "context_p.h" -@@ -204,6 +207,12 @@ - - lwres_result_t -+#ifdef WITH_MDN -+lwres_gnbaresponse_parse(lwres_context_t *ctx, lwres_buffer_t *b, -+ lwres_lwpacket_t *pkt, lwres_gnbaresponse_t **structp, -+ int encodeflg) -+#else - lwres_gnbaresponse_parse(lwres_context_t *ctx, lwres_buffer_t *b, - lwres_lwpacket_t *pkt, lwres_gnbaresponse_t **structp) -+#endif /* WITH_MDN */ - { - int ret; -@@ -212,4 +221,9 @@ - lwres_uint16_t naliases; - lwres_gnbaresponse_t *gnba; -+#ifdef WITH_MDN -+ char *tmp_realname; -+ char *tmp_aliases; -+ mdn_result_t r; -+#endif /* WITH_MDN */ - - REQUIRE(ctx != NULL); -@@ -261,4 +275,26 @@ - if (ret != LWRES_R_SUCCESS) - goto out; -+#ifdef WITH_MDN -+ /* -+ * Convert from UCS to local encoding if needed. -+ */ -+ tmp_realname = (char *)malloc(1024); -+ switch (encodeflg) { -+ case LWRES_ENCODING_LOCAL: /* from UCS to local encoding */ -+ r = mdn_res_ucstolocal(ctx->confdata.mdnctx, gnba->realname, -+ tmp_realname, 1024); -+ if (r != mdn_success) { -+ free(tmp_realname); -+ tmp_realname = NULL; -+ ret = lwres_result_frommdn(r); -+ goto out; -+ } -+ break; -+ default: -+ strcpy(tmp_realname, gnba->realname); -+ break; -+ } -+ gnba->realname = tmp_realname; -+#endif /* WITH_MDN */ - - /* -@@ -270,4 +306,27 @@ - if (ret != LWRES_R_SUCCESS) - goto out; -+#ifdef WITH_MDN -+ /* -+ * Convert from UCS to local encoding. -+ */ -+ tmp_aliases = (char *)malloc(1024); -+ switch (encodeflg) { -+ case LWRES_ENCODING_LOCAL: /* from UCS to local encoding */ -+ r = mdn_res_ucstolocal(ctx->confdata.mdnctx, -+ gnba->aliases[x], -+ tmp_aliases, 1024); -+ if (r != mdn_success) { -+ free(tmp_aliases); -+ tmp_aliases = NULL; -+ ret = lwres_result_frommdn(r); -+ goto out; -+ } -+ break; -+ default: /* When encoding on DNS protocol */ -+ strcpy(tmp_aliases, gnba->aliases[x]); -+ break; -+ } -+ gnba->aliases[x] = tmp_aliases; -+#endif /* WITH_MDN */ - } - -@@ -311,4 +370,7 @@ - { - lwres_gnbaresponse_t *gnba; -+#ifdef WITH_MDN -+ unsigned int x; -+#endif /* WITH_MDN */ - - REQUIRE(ctx != NULL); -@@ -318,4 +380,12 @@ - *structp = NULL; - -+#ifdef WITH_MDN -+ free(gnba->realname); -+ gnba->realname = NULL; -+ for (x = 0 ; x < gnba->naliases ; x++) { -+ free(gnba->aliases[x]); -+ gnba->aliases[x] = NULL; -+ } -+#endif /* WITH_MDN */ - if (gnba->naliases > 0) { - CTXFREE(gnba->aliases, sizeof(char *) * gnba->naliases); ---- ./lib/lwres/lwresutil.c.orig Wed Jan 24 01:11:30 2001 -+++ ./lib/lwres/lwresutil.c Wed Jan 24 01:22:45 2001 -@@ -33,4 +33,7 @@ - #include - #include -+#ifdef WITH_MDN -+#include -+#endif /* WITH_MDN */ - - #include "assert_p.h" -@@ -160,8 +163,24 @@ - } - -+#ifdef WITH_MDN - lwres_result_t - lwres_getaddrsbyname(lwres_context_t *ctx, const char *name, - lwres_uint32_t addrtypes, lwres_gabnresponse_t **structp) - { -+ /* The last parameter is a encoding type. Default is local encoding. */ -+ return (lwres_getaddrsbyname_enc(ctx, name, addrtypes, structp, 0)); -+} -+#endif /* WITH_MDN */ -+ -+lwres_result_t -+#ifdef WITH_MDN -+lwres_getaddrsbyname_enc(lwres_context_t *ctx, const char *name, -+ lwres_uint32_t addrtypes, lwres_gabnresponse_t **structp, -+ int encodeflg) -+#else -+lwres_getaddrsbyname(lwres_context_t *ctx, const char *name, -+ lwres_uint32_t addrtypes, lwres_gabnresponse_t **structp) -+#endif /* WITH_MDN */ -+{ - lwres_gabnrequest_t request; - lwres_gabnresponse_t *response; -@@ -174,4 +193,8 @@ - char target_name[1024]; - unsigned int target_length; -+#ifdef WITH_MDN -+ mdn_result_t r; -+ char request_name[1024]; -+#endif /* WITH_MDN */ - - REQUIRE(ctx != NULL); -@@ -201,6 +224,35 @@ - */ - request.addrtypes = addrtypes; -+#ifdef WITH_MDN -+ /* -+ * Convert from local encoding to UCS, then perform normalization. -+ */ -+ switch (encodeflg) { -+ case LWRES_ENCODING_LOCAL: /* from local encoding */ -+ r = mdn_res_localtoucs(ctx->confdata.mdnctx, target_name, -+ request_name, sizeof(request_name)); -+ if (r == mdn_success) { -+ r = mdn_res_normalize(ctx->confdata.mdnctx, -+ request_name, -+ target_name, -+ sizeof(target_name)); -+ } -+ request.name = target_name; -+ break; -+ default: -+ r = mdn_res_normalize(ctx->confdata.mdnctx, target_name, -+ request_name, sizeof(request_name)); -+ request.name = request_name; -+ break; -+ } -+ if (r != mdn_success) { -+ ret = lwres_result_frommdn(r); -+ goto out; -+ } -+ request.namelen = strlen(request.name); -+#else - request.name = target_name; - request.namelen = target_length; -+#endif /* WITH_MDN */ - pkt.pktflags = 0; - pkt.serial = serial; -@@ -251,5 +303,9 @@ - * Parse the response. - */ -+#ifdef WITH_MDN -+ ret = lwres_gabnresponse_parse(ctx, &b_in, &pkt, &response, encodeflg); -+#else - ret = lwres_gabnresponse_parse(ctx, &b_in, &pkt, &response); -+#endif /* WITH_MDN */ - if (ret != LWRES_R_SUCCESS) - goto out; -@@ -273,8 +329,25 @@ - - -+#ifdef WITH_MDN -+lwres_result_t -+lwres_getnamebyaddr(lwres_context_t *ctx, lwres_uint32_t addrtype, -+ lwres_uint16_t addrlen, const unsigned char *addr, -+ lwres_gnbaresponse_t **structp) -+{ -+ /* The last parameter is a encoding type. Default is local encoding. */ -+ return (lwres_getnamebyaddr_enc(ctx, addrtype, addrlen, addr, structp, -+ LWRES_ENCODING_LOCAL)); -+} -+#endif /* WITH_MDN */ - lwres_result_t -+#ifdef WITH_MDN -+lwres_getnamebyaddr_enc(lwres_context_t *ctx, lwres_uint32_t addrtype, -+ lwres_uint16_t addrlen, const unsigned char *addr, -+ lwres_gnbaresponse_t **structp, int encodeflg) -+#else - lwres_getnamebyaddr(lwres_context_t *ctx, lwres_uint32_t addrtype, - lwres_uint16_t addrlen, const unsigned char *addr, - lwres_gnbaresponse_t **structp) -+#endif /* WITH_MDN */ - { - lwres_gnbarequest_t request; -@@ -359,5 +432,9 @@ - * Parse the response. - */ -+#ifdef WITH_MDN -+ ret = lwres_gnbaresponse_parse(ctx, &b_in, &pkt, &response, encodeflg); -+#else - ret = lwres_gnbaresponse_parse(ctx, &b_in, &pkt, &response); -+#endif /* WITH_MDN */ - if (ret != LWRES_R_SUCCESS) - goto out; -@@ -379,4 +456,21 @@ - return (ret); - } -+ -+#ifdef WITH_MDN -+lwres_result_t -+lwres_result_frommdn(mdn_result_t r) { -+ /* -+ * Convert mDNkit's result code to lwres's one. -+ */ -+ switch (r) { -+ case mdn_success: -+ return (LWRES_R_SUCCESS); -+ case mdn_nomemory: -+ return (LWRES_R_NOMEMORY); -+ default: -+ return (LWRES_R_FAILURE); -+ } -+} -+#endif - - lwres_result_t ---- ./bin/dig/dighost.c.orig Wed Jan 24 00:48:34 2001 -+++ ./bin/dig/dighost.c Wed Jan 24 01:24:34 2001 -@@ -33,4 +33,14 @@ - #include - #include -+#ifdef HAVE_LOCALE_H -+#include -+#endif -+ -+#ifdef WITH_MDN -+#include -+#include -+#include -+#include -+#endif - - #include -@@ -133,4 +143,18 @@ - isc_uint32_t rr_limit = INT_MAX; - -+#ifdef WITH_MDN -+mdn_resconf_t mdnconf; -+ -+static void initialize_mdn(void); -+static isc_result_t output_filter(isc_buffer_t *buffer, -+ unsigned int used_org, -+ isc_boolean_t absolute); -+static mdn_result_t append_textname(char *name, const char *origin, -+ size_t namesize); -+static void mdn_check_result(mdn_result_t r, const char *msg); -+ -+#define MAXDLEN 256 -+#endif -+ - /* - * Apply and clear locks at the event level in global task. -@@ -675,4 +699,8 @@ - } - -+#ifdef WITH_MDN -+ initialize_mdn(); -+#endif -+ - if (keyfile[0] != 0) - setup_file_key(); -@@ -1221,4 +1249,9 @@ - isc_buffer_t b; - char store[MXNAME]; -+ char *textname; -+#ifdef WITH_MDN -+ mdn_result_t mr; -+ char ucs_name[MXNAME], ucs_tmp[MXNAME]; -+#endif - - REQUIRE(lookup != NULL); -@@ -1274,4 +1307,13 @@ - result = dns_name_fromtext(lookup->oname, &b, dns_rootname, - ISC_FALSE, &lookup->onamebuf); -+#ifdef WITH_MDN -+ mr = mdn_res_localtoucs(mdnconf, lookup->textname, ucs_name, -+ sizeof(ucs_name)); -+ mdn_check_result(mr, "local to UCS conversion"); -+ textname = ucs_name; -+#else -+ textname = lookup->textname; -+#endif -+ - if (result != ISC_R_SUCCESS) { - dns_message_puttempname(lookup->sendmsg, -@@ -1281,4 +1323,22 @@ - fatal("'%s' is not in legal name syntax (%s)", - lookup->origin->origin, -+#ifdef WITH_MDN -+ /* -+ * We cannot convert name and origin separately and combine -+ * them later, because some encoding scheme (such as UTF-5) -+ * can be applied only to an entire domain name, not a -+ * partial one. -+ */ -+ mr = append_textname(ucs_name, lookup->origin->origin, -+ sizeof(ucs_name)); -+ mdn_check_result(mr, "concatenation with origin"); -+ mr = mdn_res_normalize(mdnconf, ucs_name, ucs_tmp, -+ sizeof(ucs_tmp)); -+ mdn_check_result(mr, "normalization"); -+ mr = mdn_res_ucstodns(mdnconf, ucs_tmp, ucs_name, -+ sizeof(ucs_name)); -+ mdn_check_result(mr, "UCS to DNS encoding conversion"); -+ goto no_origin; -+#else - dns_result_totext(result)); - } -@@ -1302,7 +1362,26 @@ - } - dns_message_puttempname(lookup->sendmsg, &lookup->oname); -+#endif - } else { - debug("using root origin"); -+#ifdef WITH_MDN -+ no_origin: -+#endif - if (!lookup->trace_root) { -+#ifdef WITH_MDN -+ mr = mdn_res_normalize(mdnconf, ucs_name, ucs_tmp, -+ sizeof(ucs_tmp)); -+ mdn_check_result(mr, "normalization"); -+ mr = mdn_res_ucstodns(mdnconf, ucs_tmp, ucs_name, -+ sizeof(ucs_name)); -+ mdn_check_result(mr, "UCS to DNS encoding conversion"); -+ len = strlen(ucs_name); -+ isc_buffer_init(&b, ucs_name, len); -+ isc_buffer_add(&b, len); -+ result = dns_name_fromtext(lookup->name, &b, -+ dns_rootname, -+ ISC_FALSE, -+ &lookup->namebuf); -+#else - len = strlen(lookup->textname); - isc_buffer_init(&b, lookup->textname, len); -@@ -1312,4 +1391,5 @@ - ISC_FALSE, - &lookup->namebuf); -+#endif - } else { - dns_name_clone(dns_rootname, lookup->name); -@@ -2711,2 +2791,123 @@ - isc_mem_destroy(&mctx); - } -+ -+#ifdef WITH_MDN -+static void -+initialize_mdn(void) { -+ mdn_result_t r; -+ mdn_converter_t conv; -+ -+#ifdef HAVE_SETLOCALE -+ /* Set locale */ -+ (void)setlocale(LC_ALL, ""); -+#endif -+ -+ /* General initialization. */ -+ r = mdn_resconf_initialize(); -+ if (r != mdn_success) -+ fatal("mdn initialization failed: %s", -+ mdn_result_tostring(r)); -+ -+ /* Create configuration context. */ -+ r = mdn_resconf_create(&mdnconf); -+ if (r != mdn_success) -+ fatal("mdn resconf initialization failed: %s", -+ mdn_result_tostring(r)); -+ -+ -+ /* Load mdn configuration file. */ -+ r = mdn_resconf_loadfile(mdnconf, NULL); -+ if (r != mdn_success) -+ fatal("mdn configuration loading failed: %s", -+ mdn_result_tostring(r)); -+ -+ /* Allow utf-8 characters in domain names if necessary. */ -+ if ((conv = mdn_resconf_serverconverter(mdnconf)) != NULL && -+ !mdn_converter_isasciicompatible(conv)) { -+ debug("allowing UTF-8 characters in domain names"); -+ dns_name_allowutf8(ISC_TRUE); -+ } -+ /* Set domain name -> text post-conversion filter. */ -+ dns_name_settotextfilter(output_filter); -+} -+ -+static isc_result_t -+output_filter(isc_buffer_t *buffer, unsigned int used_org, -+ isc_boolean_t absolute) -+{ -+ char tmp1[MAXDLEN], tmp2[MAXDLEN]; -+ size_t fromlen, tolen; -+ isc_boolean_t end_with_dot; -+ -+ /* -+ * Copy contents of 'buffer' to 'tmp1', supply trailing dot -+ * if 'absolute' is true, and terminate with NUL. -+ */ -+ fromlen = isc_buffer_usedlength(buffer) - used_org; -+ if (fromlen >= MAXDLEN) -+ return (ISC_R_SUCCESS); -+ memcpy(tmp1, (char *)isc_buffer_base(buffer) + used_org, fromlen); -+ end_with_dot = (tmp1[fromlen - 1] == '.') ? ISC_TRUE : ISC_FALSE; -+ if (absolute && !end_with_dot) { -+ fromlen++; -+ if (fromlen >= MAXDLEN) -+ return (ISC_R_SUCCESS); -+ tmp1[fromlen - 1] = '.'; -+ } -+ tmp1[fromlen] = '\0'; -+ -+ /* -+ * Convert contents of 'tmp1' to local encoding. -+ */ -+ if (mdn_res_dnstoucs(mdnconf, tmp1, tmp2, MAXDLEN) -+ != mdn_success || -+ mdn_res_ucstolocal(mdnconf, tmp2, tmp1, MAXDLEN) -+ != mdn_success) -+ return (ISC_R_SUCCESS); -+ -+ /* -+ * Copy the converted contents in 'tmp1' back to 'buffer'. -+ * If we have appended trailing dot, remove it. -+ */ -+ tolen = strlen(tmp1); -+ if (absolute && !end_with_dot && tmp1[tolen - 1] == '.') -+ tolen--; -+ -+ if (isc_buffer_length(buffer) < used_org + tolen) -+ return (ISC_R_NOSPACE); -+ -+ isc_buffer_subtract(buffer, isc_buffer_usedlength(buffer) - used_org); -+ memcpy(isc_buffer_used(buffer), tmp1, tolen); -+ isc_buffer_add(buffer, tolen); -+ -+ return (ISC_R_SUCCESS); -+} -+ -+static mdn_result_t -+append_textname(char *name, const char *origin, size_t namesize) { -+ size_t namelen = strlen(name); -+ size_t originlen = strlen(origin); -+ -+ /* Already absolute? */ -+ if (namelen > 0 && name[namelen - 1] == '.') -+ return mdn_success; -+ -+ /* Append dot and origin */ -+ -+ if (namelen + 1 + originlen >= namesize) -+ return mdn_buffer_overflow; -+ -+ name[namelen++] = '.'; -+ (void)strcpy(name + namelen, origin); -+ return mdn_success; -+} -+ -+static void -+mdn_check_result(mdn_result_t r, const char *msg) { -+ if (r != mdn_success) { -+ exitcode = 1; -+ fatal("%s: %s", msg, mdn_result_tostring(r)); -+ } -+} -+ -+#endif /* WITH_MDN */ ---- ./bin/named/Makefile.in.orig Wed Jan 24 00:49:10 2001 -+++ ./bin/named/Makefile.in Wed Jan 24 01:22:45 2001 -@@ -34,5 +34,5 @@ - CINCLUDES = -I${srcdir}/include -I${srcdir}/unix/include \ - ${LWRES_INCLUDES} ${DNS_INCLUDES} ${ISC_INCLUDES} \ -- ${OMAPI_INCLUDES} ${DBDRIVER_INCLUDES} -+ ${OMAPI_INCLUDES} ${DBDRIVER_INCLUDES} \ - - CDEFINES = -@@ -52,5 +52,5 @@ - - LIBS = ${LWRESLIBS} ${OMAPILIBS} ${DNSLIBS} ${ISCLIBS} \ -- ${DBDRIVER_LIBS} @LIBS@ -+ ${DBDRIVER_LIBS} ${ICONVLIB} @LIBS@ - - SUBDIRS = unix -@@ -64,5 +64,5 @@ - zoneconf.@O@ \ - lwaddr.@O@ lwresd.@O@ lwdclient.@O@ lwderror.@O@ lwdgabn.@O@ \ -- lwdgnba.@O@ lwdgrbn.@O@ lwdnoop.@O@ lwsearch.@O@ \ -+ lwdgnba.@O@ lwdgrbn.@O@ lwdmdn.@O@ lwdnoop.@O@ lwsearch.@O@ \ - $(DBDRIVER_OBJS) - -@@ -75,5 +75,5 @@ - zoneconf.c \ - lwaddr.c lwresd.c lwdclient.c lwderror.c lwdgabn.c \ -- lwdgnba.c lwdgrbn.c lwdnoop.c lwsearch.c \ -+ lwdgnba.c lwdgrbn.c lwdmdn.c lwdnoop.c lwsearch.c \ - $(DBDRIVER_SRCS) - ---- ./bin/named/include/named/globals.h.orig Wed Jan 24 00:49:01 2001 -+++ ./bin/named/include/named/globals.h Wed Jan 24 01:22:45 2001 -@@ -104,4 +104,12 @@ - EXTERN const char * ns_g_username INIT(NULL); - -+#ifdef WITH_MDN -+/* -+ * MDN configuration. -+ */ -+EXTERN char * lwresd_g_mdnconffile; -+EXTERN isc_boolean_t lwresd_g_mdnreloadwanted; -+#endif -+ - #undef EXTERN - #undef INIT ---- ./bin/named/include/named/lwdmdn.h.orig Wed Jan 24 01:22:45 2001 -+++ ./bin/named/include/named/lwdmdn.h Wed Jan 24 01:22:45 2001 -@@ -0,0 +1,23 @@ -+/* $Id: lwdmdn.h,v 1.1 2000/08/16 08:55:32 ishisone Exp $ */ -+ -+#ifndef NAMED_LWDMDN_H -+#define NAMED_LWDMDN_H -+ -+#include -+#include -+ -+ISC_LANG_BEGINDECLS -+ -+void -+ns_lwdmdn_initialize(void); -+ -+isc_result_t -+ns_lwdmdn_convertfromutf8(isc_buffer_t *from_buffer, isc_buffer_t *to_buffer); -+ -+isc_result_t -+ns_lwdmdn_converttoutf8(isc_buffer_t *from_buffer, isc_buffer_t *to_buffer); -+ -+ISC_LANG_ENDDECLS -+ -+#endif /* NAMED_LWDMDN_H */ -+ ---- ./bin/named/lwdgabn.c.orig Wed Jan 24 00:49:30 2001 -+++ ./bin/named/lwdgabn.c Wed Jan 24 01:22:45 2001 -@@ -35,4 +35,7 @@ - #include - #include -+#ifdef WITH_MDN -+#include -+#endif - #include - #include -@@ -277,4 +280,7 @@ - isc_result_t result; - isc_uint16_t naliases; -+#ifdef WITH_MDN -+ isc_buffer_t *tbufp; -+#endif - - b = client->recv_buffer; -@@ -283,8 +289,25 @@ - * Render the new name to the buffer. - */ -+#ifdef WITH_MDN -+ tbufp = NULL; -+ result = isc_buffer_allocate(client->clientmgr->mctx, &tbufp, 256); -+ if (result != ISC_R_SUCCESS) -+ return (result); -+ result = dns_name_totext(dns_fixedname_name(&client->target_name), -+ ISC_TRUE, tbufp); -+ if (result != ISC_R_SUCCESS) { -+ isc_buffer_free(&tbufp); -+ return (result); -+ } -+ result = ns_lwdmdn_converttoutf8(tbufp, &client->recv_buffer); -+ isc_buffer_free(&tbufp); -+ if (result != ISC_R_SUCCESS) -+ return (result); -+#else - result = dns_name_totext(dns_fixedname_name(&client->target_name), - ISC_TRUE, &client->recv_buffer); - if (result != ISC_R_SUCCESS) - return (result); -+#endif - - /* -@@ -312,4 +335,7 @@ - isc_result_t result; - dns_name_t *tname; -+#ifdef WITH_MDN -+ isc_buffer_t *tbufp; -+#endif - - b = client->recv_buffer; -@@ -323,5 +349,19 @@ - * Render the new name to the buffer. - */ -+#ifdef WITH_MDN -+ tbufp = NULL; -+ result = isc_buffer_allocate(client->clientmgr->mctx, &tbufp, 256); -+ if (result != ISC_R_SUCCESS) -+ return (result); -+ result = dns_name_totext(tname, ISC_TRUE, tbufp); -+ if (result != ISC_R_SUCCESS) { -+ isc_buffer_free(&tbufp); -+ return (result); -+ } -+ result = ns_lwdmdn_converttoutf8(tbufp, &client->recv_buffer); -+ isc_buffer_free(&tbufp); -+#else - result = dns_name_totext(tname, ISC_TRUE, &client->recv_buffer); -+#endif - if (result != ISC_R_SUCCESS) - return (result); -@@ -599,4 +639,7 @@ - ns_lwdclientmgr_t *cm; - isc_buffer_t namebuf; -+#ifdef WITH_MDN -+ isc_buffer_t *tnamebufp; -+#endif - - REQUIRE(NS_LWDCLIENT_ISRECVDONE(client)); -@@ -612,11 +655,39 @@ - goto out; - -+#ifdef WITH_MDN -+ /* -+ * XXX Assuming allocation size for req->name is larger than -+ * req->namelen by at least one, which is true in the current -+ * implementation. -+ */ -+ isc_buffer_init(&namebuf, req->name, req->namelen + 1); -+ isc_buffer_add(&namebuf, req->namelen); -+ tnamebufp = NULL; -+ result = isc_buffer_allocate(client->clientmgr->mctx, &tnamebufp, 256); -+ if (result != ISC_R_SUCCESS) -+ goto out; -+ /* -+ * Convert UTF-8 string in namebuf into DNS protocol encoding. -+ */ -+ result = ns_lwdmdn_convertfromutf8(&namebuf, tnamebufp); -+ if (result != ISC_R_SUCCESS) { -+ isc_buffer_free(&tnamebufp); -+ goto out; -+ } -+#else - isc_buffer_init(&namebuf, req->name, req->namelen); - isc_buffer_add(&namebuf, req->namelen); -+#endif - - dns_fixedname_init(&client->target_name); - dns_fixedname_init(&client->query_name); -+#ifdef WITH_MDN -+ result = dns_name_fromtext(dns_fixedname_name(&client->query_name), -+ tnamebufp, dns_rootname, ISC_FALSE, NULL); -+ isc_buffer_free(&tnamebufp); -+#else - result = dns_name_fromtext(dns_fixedname_name(&client->query_name), - &namebuf, NULL, ISC_FALSE, NULL); -+#endif - if (result != ISC_R_SUCCESS) - goto out; ---- ./bin/named/lwdgnba.c.orig Wed Jan 24 00:49:32 2001 -+++ ./bin/named/lwdgnba.c Wed Jan 24 01:22:45 2001 -@@ -30,4 +30,7 @@ - #include - #include -+#ifdef WITH_MDN -+#include -+#endif - - static void start_byaddr(ns_lwdclient_t *); -@@ -48,4 +51,7 @@ - isc_uint16_t naliases; - -+#ifdef WITH_MDN -+ isc_buffer_t *tbufp; -+#endif - UNUSED(task); - -@@ -95,7 +101,23 @@ - b = client->recv_buffer; - -+#ifdef WITH_MDN -+ tbufp = NULL; -+ result = isc_buffer_allocate(cm->mctx, &tbufp, 256); -+ if (result != ISC_R_SUCCESS) -+ goto out; -+ result = dns_name_totext(name, ISC_TRUE, tbufp); -+ if (result != ISC_R_SUCCESS) { -+ isc_buffer_free(&tbufp); -+ goto out; -+ } -+ result = ns_lwdmdn_converttoutf8(tbufp, &client->recv_buffer); -+ isc_buffer_free(&tbufp); -+ if (result != ISC_R_SUCCESS) -+ goto out; -+#else - result = dns_name_totext(name, ISC_TRUE, &client->recv_buffer); - if (result != ISC_R_SUCCESS) - goto out; -+#endif - ns_lwdclient_log(50, "found name '%.*s'", - client->recv_buffer.used - b.used, ---- ./bin/named/lwdmdn.c.orig Wed Jan 24 01:22:45 2001 -+++ ./bin/named/lwdmdn.c Wed Jan 24 01:22:45 2001 -@@ -0,0 +1,283 @@ -+/* $Id: lwdmdn.c,v 1.6 2000/09/07 06:27:40 ishisone Exp $ */ -+ -+#include -+ -+#include -+#include -+#include -+ -+#ifdef WITH_MDN -+#include -+#include -+#include -+#include -+#endif -+ -+#include -+#include -+#include -+ -+#include -+#include -+#ifdef WITH_MDN -+#include -+#endif -+#include -+#include -+ -+#ifdef WITH_MDN -+ -+typedef enum { -+ convert_from_utf8, -+ convert_to_utf8 -+} convert_direction_t; -+ -+static isc_logmodule_t modules[] = { -+ { "mdn", 0 }, -+ { NULL, 0 } -+}; -+#define NS_LOGMODULE_MDN (&modules[0]) -+ -+static isc_rwlock_t mdnconflock; -+static mdn_resconf_t mdnconf = NULL; -+ -+static isc_result_t convert_buffer(isc_buffer_t *from_buffer, -+ isc_buffer_t *to_buffer, -+ convert_direction_t dir); -+static isc_result_t load_mdnconfiguration(const char *filename); -+static isc_result_t mdnresult_to_iscresult(mdn_result_t r); -+static void set_log_level(int level); -+static void logger(int level, const char *msg); -+static void logwrite(int level, const char *fmt, ...); -+ -+void -+ns_lwdmdn_initialize(void) { -+ mdn_result_t r; -+ isc_result_t result; -+ -+ logwrite(ISC_LOG_DEBUG(50), "initializing mdn"); -+ -+ /* Register MDN module for logging. */ -+ isc_log_registermodules(ns_g_lctx, modules); -+ -+ /* Set libmdn log hander. */ -+ mdn_log_setproc(logger); -+ -+ /* Set log level. */ -+ set_log_level(ns_g_debuglevel); -+ -+ /* General initialization. */ -+ r = mdn_resconf_initialize(); -+ RUNTIME_CHECK(r == mdn_success); -+ -+ /* Create configuration context. */ -+ r = mdn_resconf_create(&mdnconf); -+ RUNTIME_CHECK(r == mdn_success); -+ -+ /* Initialize configuration lock variable. */ -+ result = isc_rwlock_init(&mdnconflock, 1, 1); -+ RUNTIME_CHECK(result == ISC_R_SUCCESS); -+ -+ /* Load configuration file. */ -+ lwresd_g_mdnreloadwanted = 1; -+ (void)load_mdnconfiguration(lwresd_g_mdnconffile); -+} -+ -+isc_result_t -+ns_lwdmdn_convertfromutf8(isc_buffer_t *from_buffer, isc_buffer_t *to_buffer) { -+ return convert_buffer(from_buffer, to_buffer, convert_from_utf8); -+} -+ -+isc_result_t -+ns_lwdmdn_converttoutf8(isc_buffer_t *from_buffer, isc_buffer_t *to_buffer) { -+ return convert_buffer(from_buffer, to_buffer, convert_to_utf8); -+} -+ -+static isc_result_t -+convert_buffer(isc_buffer_t *from_buffer, isc_buffer_t *to_buffer, -+ convert_direction_t dir) -+{ -+ isc_result_t result; -+ mdn_result_t r; -+ char *fromstr, *tostr; -+ char tmp[256]; -+ size_t tolen; -+ -+ /* -+ * Reload MDN configuration file, if necessary. -+ */ -+ if (lwresd_g_mdnreloadwanted) { -+ result = load_mdnconfiguration(lwresd_g_mdnconffile); -+ } -+ -+ /* -+ * Since libmdn assumes all the strings are NUL-terminated, -+ * teminate the input string. If the buffer has some free space, -+ * utilize it. Otherwise, make a local copy. -+ */ -+ if (isc_buffer_remaininglength(from_buffer) > 0) { -+ fromstr = isc_buffer_used(from_buffer); /* temporary */ -+ *fromstr = '\0'; -+ fromstr = isc_buffer_base(from_buffer); -+ } else { -+ size_t fromlen = isc_buffer_usedlength(from_buffer); -+ -+ if (fromlen >= sizeof(tmp)) -+ fromlen = sizeof(tmp) - 1; -+ fromstr = tmp; -+ memcpy(fromstr, isc_buffer_base(from_buffer), fromlen); -+ fromstr[fromlen] = '\0'; -+ } -+ tostr = isc_buffer_used(to_buffer); -+ tolen = isc_buffer_availablelength(to_buffer); -+ -+ RWLOCK(&mdnconflock, isc_rwlocktype_read); -+ -+ if (dir == convert_from_utf8) -+ r = mdn_res_ucstodns(mdnconf, fromstr, tostr, tolen); -+ else -+ r = mdn_res_dnstoucs(mdnconf, fromstr, tostr, tolen); -+ -+ RWUNLOCK(&mdnconflock, isc_rwlocktype_read); -+ -+ if (r != mdn_success) -+ return (mdnresult_to_iscresult(r)); -+ -+ isc_buffer_add(to_buffer, strlen(tostr)); -+ -+ return (ISC_R_SUCCESS); -+} -+ -+static isc_result_t -+load_mdnconfiguration(const char *filename) { -+ isc_result_t result = ISC_R_SUCCESS; -+ mdn_result_t r; -+ mdn_converter_t conv; -+ isc_boolean_t loaded = ISC_FALSE; -+ isc_boolean_t allow_utf8; -+ -+ RWLOCK(&mdnconflock, isc_rwlocktype_write); -+ -+ logwrite(ISC_LOG_DEBUG(50), "loading mdn configuration %s", -+ filename == NULL ? mdn_resconf_defaultfile() : filename); -+ -+ if (lwresd_g_mdnreloadwanted) { -+ r = mdn_resconf_loadfile(mdnconf, filename); -+ if (r == mdn_success) -+ loaded = ISC_TRUE; -+ else -+ result = mdnresult_to_iscresult(r); -+ } -+ lwresd_g_mdnreloadwanted = 0; -+ logwrite(ISC_LOG_DEBUG(100), "finish loading mdn configuration"); -+ -+ RWUNLOCK(&mdnconflock, isc_rwlocktype_write); -+ -+ if (loaded) { -+ if ((conv = mdn_resconf_serverconverter(mdnconf)) != NULL && -+ !mdn_converter_isasciicompatible(conv)) { -+ logwrite(ISC_LOG_DEBUG(50), -+ "allowing UTF-8 domain names"); -+ allow_utf8 = ISC_TRUE; -+ } else { -+ allow_utf8 = ISC_FALSE; -+ } -+ dns_name_allowutf8(allow_utf8); -+ } -+ -+ return (result); -+} -+ -+static isc_result_t -+mdnresult_to_iscresult(mdn_result_t r) { -+ switch (r) { -+ case mdn_success: -+ return (ISC_R_SUCCESS); -+ case mdn_notfound: -+ case mdn_noentry: -+ case mdn_invalid_name: -+ return (ISC_R_NOTFOUND); -+ case mdn_buffer_overflow: -+ return (ISC_R_NOSPACE); -+ case mdn_nomemory: -+ return (ISC_R_NOMEMORY); -+ case mdn_nofile: -+ return (ISC_R_FILENOTFOUND); -+ default: -+ return (ISC_R_FAILURE); -+ } -+} -+ -+static void -+set_log_level(int level) { -+ int loglevel; -+ -+ if (level < ISC_LOG_ERROR) { -+ loglevel = mdn_log_level_fatal; -+ } else if (level < ISC_LOG_WARNING) { -+ loglevel = mdn_log_level_error; -+ } else if (level < ISC_LOG_INFO) { -+ loglevel = mdn_log_level_warning; -+ } else if (level < ISC_LOG_DEBUG(50)) { -+ loglevel = mdn_log_level_info; -+ } else if (level < ISC_LOG_DEBUG(100)) { -+ loglevel = mdn_log_level_trace; -+ } else { -+ loglevel = mdn_log_level_dump; -+ } -+ mdn_log_setlevel(loglevel); -+} -+ -+static void -+logger(int level, const char *msg) { -+ int loglevel; -+ int msglen; -+ -+ /* -+ * Convert libmdn's log level to bind's log level. -+ */ -+ switch (level) { -+ case mdn_log_level_fatal: -+ loglevel = ISC_LOG_CRITICAL; -+ break; -+ case mdn_log_level_error: -+ loglevel = ISC_LOG_ERROR; -+ break; -+ case mdn_log_level_warning: -+ loglevel = ISC_LOG_WARNING; -+ break; -+ case mdn_log_level_info: -+ loglevel = ISC_LOG_INFO; -+ break; -+ case mdn_log_level_trace: -+ loglevel = ISC_LOG_DEBUG(50); /* XXX */ -+ break; -+ case mdn_log_level_dump: -+ default: -+ loglevel = ISC_LOG_DEBUG(100); /* XXX */ -+ break; -+ } -+ -+ /* -+ * Since libmdn's messages are end with newline, we have to -+ * remove it. -+ */ -+ msglen = strlen(msg); -+ if (msglen > 0 && msg[msglen - 1] == '\n') -+ msglen--; -+ -+ isc_log_write(ns_g_lctx, NS_LOGCATEGORY_CLIENT, NS_LOGMODULE_MDN, -+ loglevel, "%.*s", msglen, msg); -+} -+ -+static void -+logwrite(int level, const char *fmt, ...) { -+ va_list args; -+ -+ va_start(args, fmt); -+ isc_log_vwrite(ns_g_lctx, NS_LOGCATEGORY_CLIENT, NS_LOGMODULE_MDN, -+ level, fmt, args); -+ va_end(args); -+} -+ -+#endif /* WITH_MDN */ ---- ./bin/named/lwresd.c.orig Wed Jan 24 00:49:36 2001 -+++ ./bin/named/lwresd.c Wed Jan 24 01:22:45 2001 -@@ -47,4 +47,7 @@ - #include - #include -+#ifdef WITH_MDN -+#include -+#endif - #include - #include -@@ -351,4 +354,11 @@ - goto fail; - } -+ -+#ifdef WITH_MDN -+ /* -+ * Initialize MDN stuff. -+ */ -+ ns_lwdmdn_initialize(); -+#endif - - if (lwres->searchlist != NULL) { ---- ./bin/named/main.c.orig Wed Jan 24 00:49:40 2001 -+++ ./bin/named/main.c Wed Jan 24 01:22:45 2001 -@@ -278,5 +278,9 @@ - isc_commandline_errprint = ISC_FALSE; - while ((ch = isc_commandline_parse(argc, argv, -+#ifdef WITH_MDN /* Additional option 'M'. */ -+ "c:C:d:fgi:lM:n:N:p:P:st:u:vx:")) != -+#else - "c:C:d:fgi:ln:N:p:P:st:u:vx:")) != -+#endif - -1) { - switch (ch) { -@@ -312,4 +316,9 @@ - ns_g_lwresdonly = ISC_TRUE; - break; -+#ifdef WITH_MDN -+ case 'M': -+ lwresd_g_mdnconffile = isc_commandline_argument; -+ break; -+#endif - case 'N': /* Deprecated. */ - case 'n': +MDN patch for bind-9.2.0 +======================== + + +This is a patch file for ISC BIND 9.2.0 to make it work with +internationalized/multilingual domain names. With this patch you'll +get MDN-aware dig/host/nslookup. + +To apply this patch, you should go to the top directory of the BIND +distribution (where you see `README' file), then invoke `patch' +command like this: + + % patch -p0 < this-file + +Then follow the instructions described in `README.mdnkit' to compile +and install. + + +Index: README.mdnkit +diff -c /dev/null mdn/othersrc/bind9/README.mdnkit:1.9 +*** README.mdnkit Thu Dec 6 13:51:44 2001 +--- README.mdnkit Wed Aug 22 15:19:31 2001 +*************** +*** 0 **** +--- 1,124 ---- ++ ++ BIND-9 MDN patch ++ ++ Japan Network Information Center (JPNIC) ++ ++ ++ * What is this patch for? ++ ++ This patch adds multilingual domain name (MDN) support to BIND-9. ++ You'll get multilingualized version of dig/host/nslookup commands. ++ ++ + mulltilingualized dig/host/nslookup ++ dig/host/nslookup accepts non-ASCII domain names in the local ++ codeset (such as Shift JIS, Big5 or ISO8859-1) determined by ++ the locale information. The domain names are normalized and ++ converted to the encoding on the DNS protocol, and sent to DNS ++ servers. The replies are converted back to the local codeset ++ and displayed. ++ ++ ++ * Compilation & installation ++ ++ 0. Prerequisite ++ ++ You have to build and install mDNkit before building this patched version ++ of bind-9. ++ ++ 1. Running configure script ++ ++ Run `configure' in the top directory. See `README' for the ++ configuration options. ++ ++ This patch adds the following 4 options to `configure'. You should ++ at least specify `--with-mdn' option to enable MDN support. ++ ++ --with-mdn[=MDN_PREFIX] ++ To enable MDN support, you have to specify `--with-mdn' option. ++ The argument MDN_PREFIX is the install prefix of mDNkit. If ++ MDN_PREFIX is omitted, PREFIX (derived from `--prefix=PREFIX') ++ is assumed. ++ ++ --with-libiconv[=LIBICONV_PREFIX] ++ Specify this option if mDNkit you have installed links GNU ++ libiconv. The argument LIBICONV_PREFIX is install prefix of ++ GNU libiconv. If the argument is omitted, PREFIX (derived ++ from `--prefix=PREFIX') is assumed. ++ ++ `--with-libiconv' is shorthand option for GNU libiconv. ++ ++ --with-libiconv=/usr/local ++ ++ This is equivalent to: ++ ++ --with-iconv='-L/usr/local/lib -R/usr/local/lib -liconv' ++ ++ `--with-libiconv' assumes that your C compiler has `-R' ++ option, and that the option adds the specified run-time path ++ to an exacutable binary. If `-R' option of your compiler has ++ different meaning, or your compiler lacks the option, you ++ should use `--with-iconv' option instead. Binary command ++ without run-time path information might be unexecutable. ++ In that case, you would see an error message like: ++ ++ error in loading shared libraries: libiconv.so.2: cannot ++ open shared object file ++ ++ If both `--with-libiconv' and `--with-iconv' options are ++ specified, `--with-iconv' is prior to `--with-libiconv'. ++ ++ --with-iconv=ICONV_LIBSPEC ++ If your libc doens't provide iconv(), you need to specify the ++ library containing iconv() with this option. `ICONV_LIBSPEC' ++ is the argument(s) to `cc' or `ld' to link the library, for ++ example, `--with-iconv="-L/usr/local/lib -liconv"'. ++ You don't need to specify the header file directory for "iconv.h" ++ to the compiler, as it isn't included directly by bind-9 with ++ this patch. ++ ++ --with-mdnlib=MDN_LIBSPEC ++ With this option, you can explicitly specify the argument(s) ++ to `cc' or `ld' to link the mDNkit's library, `libmdn'. If ++ this option is not specified, `-L${PREFIX}/lib -lmdn' is ++ assumed, where ${PREFIX} is the installation prefix specified ++ with `--with-mdn' option above. You may need to use this ++ option to specify extra argments, for example, ++ `--with-mdnlib="-L/usr/local/lib -R/usr/local/lib -lmdn"'. ++ ++ Please consult `README' for other configuration options. ++ ++ Note that if you want to specify some extra header file directories, ++ you should use the environment variable STD_CINCLUDES instead of ++ CFLAGS, as described in README. ++ ++ 2. Compilation and installation ++ ++ After running "configure", just do ++ ++ make ++ make install ++ ++ for compiling and installing. ++ ++ 3. Resolver configuration ++ ++ To handle multilingual domain names, you have to specify the ++ properties like: ++ + name encoding used in DNS protocol data ++ + normalization (NAMEPREP) schemes ++ These properties are specified by the mDNkit's configuration file, ++ "mdn.conf". You have to create and set up the file properly. The ++ pathname of the file and contents are described in the manual ++ "mdn.conf". ++ ++ ++ * Contact information ++ ++ Please see http//www.nic.ad.jp/jp/research/idn/ for the latest news ++ about mDNkit and this patch. ++ ++ Bug reports and comments on this kit should be sent to ++ mdnkit-bugs@nic.ad.jp and idn-cmt@nic.ad.jp, respectively. ++ ++ ++ ; $Id: bind-9.2.0-patch,v 1.1 2002/01/02 02:46:59 marka Exp $ +Index: config.h.in +diff -c mdn/othersrc/bind9/config.h.in:1.1.1.6 mdn/othersrc/bind9/config.h.in:1.10.2.1 +*** config.h.in Tue Nov 27 16:55:45 2001 +--- config.h.in Thu Dec 6 13:51:12 2001 +*************** +*** 141,146 **** +--- 141,149 ---- + /* define if you have strerror in the C library. */ + #undef HAVE_STRERROR + ++ /* Define if you have the setlocale function. */ ++ #undef HAVE_SETLOCALE ++ + /* Define if you have the header file. */ + #undef HAVE_DLFCN_H + +*************** +*** 150,155 **** +--- 153,161 ---- + /* Define if you have the header file. */ + #undef HAVE_LINUX_CAPABILITY_H + ++ /* Define if you have the header file. */ ++ #undef HAVE_LOCALE_H ++ + /* Define if you have the header file. */ + #undef HAVE_SYS_PRCTL_H + +*************** +*** 176,178 **** +--- 182,188 ---- + + /* Define if you have the socket library (-lsocket). */ + #undef HAVE_LIBSOCKET ++ ++ /* define if mDNkit support is to be included. */ ++ #undef WITH_MDN ++ +Index: configure.in +diff -c mdn/othersrc/bind9/configure.in:1.1.1.8 mdn/othersrc/bind9/configure.in:1.11 +*** configure.in Tue Nov 27 16:55:48 2001 +--- configure.in Thu Nov 29 18:45:14 2001 +*************** +*** 1605,1610 **** +--- 1605,1683 ---- + NOM_PATH_FILE(DOCBOOK2MANSPEC, docbook2X/docbook2man-spec.pl, $sgmltrees) + + # ++ # MDN support ++ # ++ AC_ARG_WITH(mdn, ++ [ --with-mdn[=MPREFIX] enable MDN support using mDNkit [default PREFIX]], ++ use_mdn="$withval", use_mdn="no") ++ case "$use_mdn" in ++ yes) ++ if test X$prefix = XNONE ; then ++ mdn_path=/usr/local ++ else ++ mdn_path=$prefix ++ fi ++ ;; ++ no) ++ ;; ++ *) ++ mdn_path="$use_mdn" ++ ;; ++ esac ++ ++ iconvinc= ++ iconvlib= ++ AC_ARG_WITH(libiconv, ++ [ --with-libiconv[=IPREFIX] GNU libiconv are in IPREFIX [default PREFIX]], ++ use_libiconv="$withval", use_libiconv="no") ++ case "$use_libiconv" in ++ yes) ++ if test X$prefix = XNONE ; then ++ iconvlib="-L/usr/local/lib -R/usr/local/lib -liconv" ++ else ++ iconvlib="-L$prefix/lib -R$prefix/lib -liconv" ++ fi ++ ;; ++ no) ++ iconvlib= ++ ;; ++ *) ++ iconvlib="-L$use_libiconv/lib -R$use_libiconv/lib -liconv" ++ ;; ++ esac ++ ++ AC_ARG_WITH(iconv, ++ [ --with-iconv[=LIBSPEC] specify iconv library [default -liconv]], ++ iconvlib="$withval") ++ case "$iconvlib" in ++ no) ++ iconvlib= ++ ;; ++ yes) ++ iconvlib=-liconv ++ ;; ++ esac ++ ++ AC_ARG_WITH(mdnlib, ++ [ --with-mdnlib=ARG specify libmdn], ++ mdnlib="$withval", mdnlib="no") ++ if test "$mdnlib" = yes; then ++ AC_MSG_ERROR([You must specify ARG for --with-mdnlib.]) ++ fi ++ ++ if test "$use_mdn" != no; then ++ AC_DEFINE(WITH_MDN, 1, [define if mDNkit support is to be included.]) ++ STD_CINCLUDES="$STD_CINCLUDES -I$mdn_path/include" ++ if test "$mdnlib" != no; then ++ LIBS="$mdnlib $iconvlib $LIBS" ++ else ++ LIBS="-L$mdn_path/lib -lmdn $iconvlib $LIBS" ++ fi ++ fi ++ AC_CHECK_HEADERS(locale.h) ++ AC_CHECK_FUNCS(setlocale) ++ ++ # + # Substitutions + # + AC_SUBST(BIND9_TOP_BUILDDIR) +Index: bin/dig/dig.1 +diff -c mdn/othersrc/bind9/bin/dig/dig.1:1.1.1.1 mdn/othersrc/bind9/bin/dig/dig.1:1.2 +*** bin/dig/dig.1 Tue Nov 27 16:55:50 2001 +--- bin/dig/dig.1 Thu Nov 29 14:36:25 2001 +*************** +*** 73,79 **** + is the name of the resource record that is to be looked up. + .TP + \fBtype\fR +! indicates what type of query is required \(em + ANY, A, MX, SIG, etc. + \fItype\fR can be any valid query type. If no + \fItype\fR argument is supplied, +--- 73,79 ---- + is the name of the resource record that is to be looked up. + .TP + \fBtype\fR +! indicates what type of query is required + ANY, A, MX, SIG, etc. + \fItype\fR can be any valid query type. If no + \fItype\fR argument is supplied, +*************** +*** 336,341 **** +--- 336,352 ---- + \fI+noqr\fR which means that \fBdig\fR + will not print the initial query when it looks up the NS records for + isc.org. ++ .SH "MDN SUPPORT" ++ .PP ++ If \fBdig\fR has been built with mdn support, it can ++ accept and display non-ASCII domain names. ++ \fBdig\fR appropriately converts character encoding of ++ domain name before sending a request to DNS server or displaying a ++ reply from the server. ++ If you'd like to turn off the MDN support for some reason, defines ++ the \fBMDN_DISABLE\fR environment variable. ++ The MDN support is disabled if the the variable is set when ++ \fBdig\fR runs. + .SH "FILES" + .PP + \fI/etc/resolv.conf\fR +Index: bin/dig/dig.c +diff -c mdn/othersrc/bind9/bin/dig/dig.c:1.1.1.8 mdn/othersrc/bind9/bin/dig/dig.c:1.7 +*** bin/dig/dig.c Tue Nov 27 16:55:50 2001 +--- bin/dig/dig.c Thu Nov 29 18:45:14 2001 +*************** +*** 1305,1310 **** +--- 1305,1315 ---- + } + ISC_LIST_APPEND(lookup_list, lookup, link); + } ++ ++ #ifdef WITH_MDN ++ if (getenv(MDN_DISABLE_ENVVAR_NAME) != NULL) ++ lookup->mdn = ISC_FALSE; ++ #endif + } + + /* +Index: bin/dig/dig.docbook +diff -c mdn/othersrc/bind9/bin/dig/dig.docbook:1.1.1.1 mdn/othersrc/bind9/bin/dig/dig.docbook:1.2 +*** bin/dig/dig.docbook Tue Nov 27 16:55:50 2001 +--- bin/dig/dig.docbook Thu Nov 29 14:36:26 2001 +*************** +*** 502,507 **** +--- 502,522 ---- + + + ++ MDN SUPPORT ++ ++ If dig has been built with mdn support, it can ++ accept and display non-ASCII domain names. ++ dig appropriately converts character encoding of ++ domain name before sending a request to DNS server or displaying a ++ reply from the server. ++ If you'd like to turn off the MDN support for some reason, defines ++ the MDN_DISABLE environment variable. ++ The MDN support is disabled if the the variable is set when ++ dig runs. ++ ++ ++ ++ + FILES + + /etc/resolv.conf +Index: bin/dig/dighost.c +diff -c mdn/othersrc/bind9/bin/dig/dighost.c:1.1.1.11 mdn/othersrc/bind9/bin/dig/dighost.c:1.26 +*** bin/dig/dighost.c Tue Nov 27 16:55:51 2001 +--- bin/dig/dighost.c Fri Nov 30 12:37:18 2001 +*************** +*** 32,37 **** +--- 32,48 ---- + #include + #include + ++ #ifdef HAVE_LOCALE_H ++ #include ++ #endif ++ ++ #ifdef WITH_MDN ++ #include ++ #include ++ #include ++ #include ++ #endif ++ + #include + #include + #include +*************** +*** 130,135 **** +--- 141,160 ---- + isc_mutex_t lookup_lock; + dig_lookup_t *current_lookup = NULL; + ++ #ifdef WITH_MDN ++ mdn_resconf_t mdnconf; ++ ++ static void initialize_mdn(void); ++ static isc_result_t output_filter(isc_buffer_t *buffer, ++ unsigned int used_org, ++ isc_boolean_t absolute); ++ static mdn_result_t append_textname(char *name, const char *origin, ++ size_t namesize); ++ static void mdn_check_result(mdn_result_t r, const char *msg); ++ ++ #define MAXDLEN 256 ++ #endif ++ + /* + * Apply and clear locks at the event level in global task. + * Can I get rid of these using shutdown events? XXX +*************** +*** 365,370 **** +--- 390,398 ---- + looknew->ignore = ISC_FALSE; + looknew->servfail_stops = ISC_FALSE; + looknew->besteffort = ISC_TRUE; ++ #ifdef WITH_MDN ++ looknew->mdn = ISC_TRUE; ++ #endif + looknew->dnssec = ISC_FALSE; + looknew->udpsize = 0; + looknew->recurse = ISC_TRUE; +*************** +*** 426,431 **** +--- 454,462 ---- + looknew->ignore = lookold->ignore; + looknew->servfail_stops = lookold->servfail_stops; + looknew->besteffort = lookold->besteffort; ++ #ifdef WITH_MDN ++ looknew->mdn = ISC_TRUE; ++ #endif + looknew->dnssec = lookold->dnssec; + looknew->udpsize = lookold->udpsize; + looknew->recurse = lookold->recurse; +*************** +*** 648,653 **** +--- 679,688 ---- + ISC_LIST_APPEND(server_list, srv, link); + } + ++ #ifdef WITH_MDN ++ initialize_mdn(); ++ #endif ++ + if (keyfile[0] != 0) + setup_file_key(); + else if (keysecret[0] != 0) +*************** +*** 1168,1174 **** +--- 1203,1220 ---- + isc_buffer_t b; + dns_compress_t cctx; + char store[MXNAME]; ++ #ifdef WITH_MDN ++ mdn_result_t mr; ++ char utf8_textname[MXNAME], utf8_origin[MXNAME], idn_textname[MXNAME]; ++ #endif + ++ #ifdef WITH_MDN ++ if (lookup->mdn == ISC_TRUE) ++ dns_name_settotextfilter(output_filter); ++ else ++ dns_name_settotextfilter(NULL); ++ #endif ++ + REQUIRE(lookup != NULL); + INSIST(!free_now); + +*************** +*** 1196,1201 **** +--- 1242,1262 ---- + isc_buffer_init(&lookup->onamebuf, lookup->onamespace, + sizeof(lookup->onamespace)); + ++ #ifdef WITH_MDN ++ if (lookup->mdn) { ++ /* ++ * We cannot convert `textname' and `origin' separately. ++ * `textname' doesn't contain TLD, but local mapping needs ++ * TLD. ++ */ ++ mr = mdn_res_nameconv(mdnconf, "ld", lookup->textname, ++ utf8_textname, sizeof(utf8_textname)); ++ mdn_check_result(mr, "convert textname to UTF-8"); ++ } else { ++ strcpy(utf8_textname, lookup->textname); ++ } ++ #endif ++ + /* + * If the name has too many dots, force the origin to be NULL + * (which produces an absolute lookup). Otherwise, take the origin +*************** +*** 1204,1215 **** +--- 1265,1307 ---- + * is TRUE or we got a domain line in the resolv.conf file. + */ + /* XXX New search here? */ ++ #ifdef WITH_MDN ++ if ((count_dots(utf8_textname) >= ndots) || !usesearch) ++ lookup->origin = NULL; /* Force abs lookup */ ++ else if (lookup->origin == NULL && lookup->new_search && usesearch) { ++ lookup->origin = ISC_LIST_HEAD(search_list); ++ } ++ #else + if ((count_dots(lookup->textname) >= ndots) || !usesearch) + lookup->origin = NULL; /* Force abs lookup */ + else if (lookup->origin == NULL && lookup->new_search && usesearch) { + lookup->origin = ISC_LIST_HEAD(search_list); + } ++ #endif ++ ++ #ifdef WITH_MDN ++ if (lookup->mdn) { ++ if (lookup->origin != NULL) { ++ mr = mdn_res_nameconv(mdnconf, "ld", ++ lookup->origin->origin, ++ utf8_origin, ++ sizeof(utf8_origin)); ++ mdn_check_result(mr, "convert origin to UTF-8"); ++ mr = append_textname(utf8_textname, utf8_origin, ++ sizeof(utf8_textname)); ++ mdn_check_result(mr, "append origin to textname"); ++ } ++ mr = mdn_res_nameconv(mdnconf, "MNI", utf8_textname, ++ idn_textname, sizeof(idn_textname)); ++ mdn_check_result(mr, "convert UTF-8 textname to IDN encoding"); ++ } ++ #endif ++ ++ #ifdef WITH_MDN ++ if (lookup->origin != NULL && !lookup->mdn) { ++ #else + if (lookup->origin != NULL) { ++ #endif + debug("trying origin %s", lookup->origin->origin); + result = dns_message_gettempname(lookup->sendmsg, + &lookup->oname); +*************** +*** 1253,1258 **** +--- 1345,1361 ---- + debug("using root origin"); + if (lookup->trace && lookup->trace_root) + dns_name_clone(dns_rootname, lookup->name); ++ #ifdef WITH_MDN ++ else if (lookup->mdn) { ++ len = strlen(idn_textname); ++ isc_buffer_init(&b, idn_textname, len); ++ isc_buffer_add(&b, len); ++ result = dns_name_fromtext(lookup->name, &b, ++ dns_rootname, ++ ISC_FALSE, ++ &lookup->namebuf); ++ } ++ #endif + else { + len = strlen(lookup->textname); + isc_buffer_init(&b, lookup->textname, len); +*************** +*** 2588,2590 **** +--- 2691,2806 ---- + if (mctx != NULL) + isc_mem_destroy(&mctx); + } ++ ++ #ifdef WITH_MDN ++ static void ++ initialize_mdn(void) { ++ mdn_result_t r; ++ ++ #ifdef HAVE_SETLOCALE ++ /* Set locale */ ++ (void)setlocale(LC_ALL, ""); ++ #endif ++ ++ /* General initialization. */ ++ r = mdn_resconf_initialize(); ++ if (r != mdn_success) ++ fatal("mdn initialization failed: %s", ++ mdn_result_tostring(r)); ++ ++ /* Create configuration context. */ ++ r = mdn_resconf_create(&mdnconf); ++ if (r != mdn_success) ++ fatal("mdn resconf initialization failed: %s", ++ mdn_result_tostring(r)); ++ ++ ++ /* Load mdn configuration file. */ ++ r = mdn_resconf_loadfile(mdnconf, NULL); ++ if (r != mdn_success) ++ fatal("mdn configuration loading failed: %s", ++ mdn_result_tostring(r)); ++ ++ /* Set domain name -> text post-conversion filter. */ ++ dns_name_settotextfilter(output_filter); ++ } ++ ++ static isc_result_t ++ output_filter(isc_buffer_t *buffer, unsigned int used_org, ++ isc_boolean_t absolute) ++ { ++ char tmp1[MAXDLEN], tmp2[MAXDLEN]; ++ size_t fromlen, tolen; ++ isc_boolean_t end_with_dot; ++ ++ /* ++ * Copy contents of 'buffer' to 'tmp1', supply trailing dot ++ * if 'absolute' is true, and terminate with NUL. ++ */ ++ fromlen = isc_buffer_usedlength(buffer) - used_org; ++ if (fromlen >= MAXDLEN) ++ return (ISC_R_SUCCESS); ++ memcpy(tmp1, (char *)isc_buffer_base(buffer) + used_org, fromlen); ++ end_with_dot = (tmp1[fromlen - 1] == '.') ? ISC_TRUE : ISC_FALSE; ++ if (absolute && !end_with_dot) { ++ fromlen++; ++ if (fromlen >= MAXDLEN) ++ return (ISC_R_SUCCESS); ++ tmp1[fromlen - 1] = '.'; ++ } ++ tmp1[fromlen] = '\0'; ++ ++ /* ++ * Convert contents of 'tmp1' to local encoding. ++ */ ++ if (mdn_res_nameconv(mdnconf, "i!NL", tmp1, tmp2, MAXDLEN) ++ != mdn_success) ++ return (ISC_R_SUCCESS); ++ strcpy(tmp1, tmp2); ++ ++ /* ++ * Copy the converted contents in 'tmp1' back to 'buffer'. ++ * If we have appended trailing dot, remove it. ++ */ ++ tolen = strlen(tmp1); ++ if (absolute && !end_with_dot && tmp1[tolen - 1] == '.') ++ tolen--; ++ ++ if (isc_buffer_length(buffer) < used_org + tolen) ++ return (ISC_R_NOSPACE); ++ ++ isc_buffer_subtract(buffer, isc_buffer_usedlength(buffer) - used_org); ++ memcpy(isc_buffer_used(buffer), tmp1, tolen); ++ isc_buffer_add(buffer, tolen); ++ ++ return (ISC_R_SUCCESS); ++ } ++ ++ static mdn_result_t ++ append_textname(char *name, const char *origin, size_t namesize) { ++ size_t namelen = strlen(name); ++ size_t originlen = strlen(origin); ++ ++ /* Already absolute? */ ++ if (namelen > 0 && name[namelen - 1] == '.') ++ return mdn_success; ++ ++ /* Append dot and origin */ ++ ++ if (namelen + 1 + originlen >= namesize) ++ return mdn_buffer_overflow; ++ ++ name[namelen++] = '.'; ++ (void)strcpy(name + namelen, origin); ++ return mdn_success; ++ } ++ ++ static void ++ mdn_check_result(mdn_result_t r, const char *msg) { ++ if (r != mdn_success) { ++ exitcode = 1; ++ fatal("%s: %s", msg, mdn_result_tostring(r)); ++ } ++ } ++ ++ #endif /* WITH_MDN */ +Index: bin/dig/host.1 +diff -c mdn/othersrc/bind9/bin/dig/host.1:1.1.1.1 mdn/othersrc/bind9/bin/dig/host.1:1.2 +*** bin/dig/host.1 Tue Nov 27 16:55:51 2001 +--- bin/dig/host.1 Thu Nov 29 14:36:26 2001 +*************** +*** 87,94 **** + retries will default to 1. + .PP + Non-recursive queries can be made via the \fB-r\fR option. +! Setting this option clears the \fBRD\fR \(em recursion +! desired \(em bit in the query which \fBhost\fR makes. + This should mean that the name server receiving the query will not + attempt to resolve \fIname\fR. The + \fB-r\fR option enables \fBhost\fR to mimic +--- 87,94 ---- + retries will default to 1. + .PP + Non-recursive queries can be made via the \fB-r\fR option. +! Setting this option clears the \fBRD\fR recursion +! desired bit in the query which \fBhost\fR makes. + This should mean that the name server receiving the query will not + attempt to resolve \fIname\fR. The + \fB-r\fR option enables \fBhost\fR to mimic +*************** +*** 120,125 **** +--- 120,136 ---- + effectively wait forever for a reply. The time to wait for a response + will be set to the number of seconds given by the hardware's maximum + value for an integer quantity. ++ .SH "MDN SUPPORT" ++ .PP ++ If \fBhost\fR has been built with mdn support, it can ++ accept and display non-ASCII domain names. ++ \fBhost\fR appropriately converts character encoding of ++ domain name before sending a request to DNS server or displaying a ++ reply from the server. ++ If you'd like to turn off the MDN support for some reason, defines ++ the \fBMDN_DISABLE\fR environment variable. ++ The MDN support is disabled if the the variable is set when ++ \fBhost\fR runs. + .SH "FILES" + .PP + \fI/etc/resolv.conf\fR +Index: bin/dig/host.c +diff -c mdn/othersrc/bind9/bin/dig/host.c:1.1.1.8 mdn/othersrc/bind9/bin/dig/host.c:1.7 +*** bin/dig/host.c Tue Nov 27 16:55:51 2001 +--- bin/dig/host.c Thu Nov 29 18:45:14 2001 +*************** +*** 666,671 **** +--- 666,676 ---- + lookup->new_search = ISC_TRUE; + ISC_LIST_APPEND(lookup_list, lookup, link); + ++ #ifdef WITH_MDN ++ if (getenv(MDN_DISABLE_ENVVAR_NAME) != NULL) ++ lookup->mdn = ISC_FALSE; ++ #endif ++ + usesearch = ISC_TRUE; + } + +Index: bin/dig/host.docbook +diff -c mdn/othersrc/bind9/bin/dig/host.docbook:1.1.1.1 mdn/othersrc/bind9/bin/dig/host.docbook:1.2 +*** bin/dig/host.docbook Tue Nov 27 16:55:51 2001 +--- bin/dig/host.docbook Thu Nov 29 14:36:26 2001 +*************** +*** 181,186 **** +--- 181,201 ---- + + + ++ MDN SUPPORT ++ ++ If host has been built with mdn support, it can ++ accept and display non-ASCII domain names. ++ host appropriately converts character encoding of ++ domain name before sending a request to DNS server or displaying a ++ reply from the server. ++ If you'd like to turn off the MDN support for some reason, defines ++ the MDN_DISABLE environment variable. ++ The MDN support is disabled if the the variable is set when ++ host runs. ++ ++ ++ ++ + FILES + + /etc/resolv.conf +Index: bin/dig/nslookup.c +diff -c mdn/othersrc/bind9/bin/dig/nslookup.c:1.1.1.8 mdn/othersrc/bind9/bin/dig/nslookup.c:1.7 +*** bin/dig/nslookup.c Tue Nov 27 16:55:51 2001 +--- bin/dig/nslookup.c Thu Nov 29 18:45:14 2001 +*************** +*** 656,661 **** +--- 656,665 ---- + ISC_LIST_APPEND(lookup_list, lookup, link); + lookup->origin = NULL; + ISC_LIST_INIT(lookup->my_server_list); ++ #ifdef WITH_MDN ++ if (getenv(MDN_DISABLE_ENVVAR_NAME) != NULL) ++ lookup->mdn = ISC_FALSE; ++ #endif + debug("looking up %s", lookup->textname); + } + +Index: bin/dig/include/dig/dig.h +diff -c mdn/othersrc/bind9/bin/dig/include/dig/dig.h:1.1.1.6 mdn/othersrc/bind9/bin/dig/include/dig/dig.h:1.7 +*** bin/dig/include/dig/dig.h Tue Nov 27 16:55:51 2001 +--- bin/dig/include/dig/dig.h Thu Nov 29 18:45:14 2001 +*************** +*** 74,79 **** +--- 74,86 ---- + * be 1. + */ + ++ /* ++ * Name of environment variable which disables MDN support if defined. ++ */ ++ #ifdef WITH_MDN ++ #define MDN_DISABLE_ENVVAR_NAME "MDN_DISABLE" ++ #endif ++ + ISC_LANG_BEGINDECLS + + typedef struct dig_lookup dig_lookup_t; +*************** +*** 109,114 **** +--- 116,124 ---- + servfail_stops, + new_search, + besteffort, ++ #ifdef WITH_MDN ++ mdn, ++ #endif + dnssec; + char textname[MXNAME]; /* Name we're going to be looking up */ + char cmdline[MXNAME]; +Index: lib/dns/name.c +diff -c mdn/othersrc/bind9/lib/dns/name.c:1.1.1.9 mdn/othersrc/bind9/lib/dns/name.c:1.12 +*** lib/dns/name.c Tue Nov 27 16:57:32 2001 +--- lib/dns/name.c Thu Nov 29 18:45:14 2001 +*************** +*** 194,199 **** +--- 194,206 ---- + /* XXXDCL make const? */ + dns_name_t *dns_wildcardname = &wild; + ++ #ifdef WITH_MDN ++ /* ++ * dns_name_t to text post-conversion procedure. ++ */ ++ static dns_name_totextfilter_t totext_filter_proc = NULL; ++ #endif ++ + static void + set_offsets(const dns_name_t *name, unsigned char *offsets, + dns_name_t *set_name); +*************** +*** 1682,1687 **** +--- 1689,1697 ---- + unsigned int labels; + isc_boolean_t saw_root = ISC_FALSE; + char num[4]; ++ #ifdef WITH_MDN ++ unsigned int oused = target->used; ++ #endif + + /* + * This function assumes the name is in proper uncompressed +*************** +*** 1859,1864 **** +--- 1869,1878 ---- + + isc_buffer_add(target, tlen - trem); + ++ #ifdef WITH_MDN ++ if (totext_filter_proc != NULL) ++ return ((*totext_filter_proc)(target, oused, saw_root)); ++ #endif + return (ISC_R_SUCCESS); + } + +*************** +*** 3315,3317 **** +--- 3329,3337 ---- + return (ISC_R_SUCCESS); + } + ++ #ifdef WITH_MDN ++ void ++ dns_name_settotextfilter(dns_name_totextfilter_t proc) { ++ totext_filter_proc = proc; ++ } ++ #endif +Index: lib/dns/include/dns/name.h +diff -c mdn/othersrc/bind9/lib/dns/include/dns/name.h:1.1.1.6 mdn/othersrc/bind9/lib/dns/include/dns/name.h:1.8 +*** lib/dns/include/dns/name.h Tue Nov 27 16:57:38 2001 +--- lib/dns/include/dns/name.h Thu Nov 29 18:45:14 2001 +*************** +*** 218,223 **** +--- 218,234 ---- + */ + #define DNS_NAME_MAXWIRE 255 + ++ #ifdef WITH_MDN ++ /* ++ * Text output filter procedure. ++ * 'target' is the buffer to be converted. The region to be converted ++ * is from 'buffer'->base + 'used_org' to the end of the used region. ++ */ ++ typedef isc_result_t (*dns_name_totextfilter_t)(isc_buffer_t *target, ++ unsigned int used_org, ++ isc_boolean_t absolute); ++ #endif ++ + /*** + *** Initialization + ***/ +*************** +*** 1243,1248 **** +--- 1254,1267 ---- + * 'size' > 0. + * + */ ++ ++ #ifdef WITH_MDN ++ void ++ dns_name_settotextfilter(dns_name_totextfilter_t proc); ++ /* ++ * Call 'proc' at the end of dns_name_totext. ++ */ ++ #endif /* WITH_MDN */ + + #define DNS_NAME_FORMATSIZE (DNS_NAME_MAXTEXT + 1) + /* diff --git a/contrib/idn/mdnkit/tools/Makefile.in b/contrib/idn/mdnkit/tools/Makefile.in index ee67587959f..c23f5fb8de1 100644 --- a/contrib/idn/mdnkit/tools/Makefile.in +++ b/contrib/idn/mdnkit/tools/Makefile.in @@ -1,4 +1,4 @@ -# $Id: Makefile.in,v 1.9 2001/04/06 07:53:12 ishisone Exp $ +# $Id: Makefile.in,v 1.1 2002/01/02 02:47:00 marka Exp $ # Copyright (c) 2000 Japan Network Information Center. All rights reserved. # # By using this file, you agree to the terms and conditions set forth bellow. @@ -7,8 +7,8 @@ # # The following License Terms and Conditions apply, unless a different # license is obtained from Japan Network Information Center ("JPNIC"), -# a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, -# Tokyo, Japan. +# a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, +# Chiyoda-ku, Tokyo 101-0047, Japan. # # 1. Use, Modification and Redistribution (including distribution of any # modified or derived work) in source and/or binary forms is permitted @@ -61,7 +61,7 @@ VPATH = @srcdir@ prefix = @prefix@ exec_prefix = @exec_prefix@ -SUBDIRS = mdnconv runmdn +SUBDIRS = mdnconv @RUNMDN_SUBDIR@ SHELL = @SHELL@ diff --git a/contrib/idn/mdnkit/tools/mdnconv/Makefile.in b/contrib/idn/mdnkit/tools/mdnconv/Makefile.in index d6f4ab8e317..e2af9b56354 100644 --- a/contrib/idn/mdnkit/tools/mdnconv/Makefile.in +++ b/contrib/idn/mdnkit/tools/mdnconv/Makefile.in @@ -1,4 +1,4 @@ -# $Id: Makefile.in,v 1.15 2001/03/28 02:12:37 m-kasahr Exp $ +# $Id: Makefile.in,v 1.1 2002/01/02 02:47:01 marka Exp $ # Copyright (c) 2000 Japan Network Information Center. All rights reserved. # # By using this file, you agree to the terms and conditions set forth bellow. @@ -7,8 +7,8 @@ # # The following License Terms and Conditions apply, unless a different # license is obtained from Japan Network Information Center ("JPNIC"), -# a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, -# Tokyo, Japan. +# a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, +# Chiyoda-ku, Tokyo 101-0047, Japan. # # 1. Use, Modification and Redistribution (including distribution of any # modified or derived work) in source and/or binary forms is permitted @@ -75,22 +75,29 @@ MKINSTALLDIRS = @top_srcdir@/mkinstalldirs SHELL = @SHELL@ LIBTOOL = @LIBTOOL@ +ICONVINC = @ICONVINC@ +ICONVLIB = @ICONVLIB@ +MDNLIB = ../../lib/libmdn.la + OPTS = -INCS = -I$(srcdir)/../../include -I../../include +INCS = -I$(srcdir)/../../include -I../../include $(ICONVINC) DEFS = CFLAGS = $(OPTS) $(INCS) $(DEFS) @CFLAGS@ +LDFLAGS = $(OPTS) @LDFLAGS@ SRCS = mdnconv.c util.c OBJS = mdnconv.o util.o -ICONVLIB = @ICONVLIB@ -MDNLIB = ../../lib/libmdn.la - -all: mdnconv +all: mdnconv mdnslookup mdnconv: $(OBJS) $(MDNLIB) - $(LIBTOOL) --mode=link $(CC) -o $@ $(OBJS) $(MDNLIB) $(ICONVLIB) + $(LIBTOOL) --mode=link $(CC) $(LDFLAGS) -o $@ \ + $(OBJS) $(MDNLIB) $(ICONVLIB) + +mdnslookup: $(srcdir)/mdnslookup.in + sed -e 's%[@]bindir[@]%$(bindir)%' $(srcdir)/mdnslookup.in > mdnslookup + chmod 0755 mdnslookup install: install-prog install-man @@ -103,5 +110,5 @@ install-man: $(INSTALL_DATA) $(srcdir)/mdnconv.1 $(mandir)/man1 clean: - rm -f *.o mdnconv *.core core *~ + rm -f *.o mdnconv mdnslookup *.core core *~ rm -fr .libs/ diff --git a/contrib/idn/mdnkit/tools/mdnconv/mdnconv.1 b/contrib/idn/mdnkit/tools/mdnconv/mdnconv.1 index 13bb3936c23..c79116a298c 100644 --- a/contrib/idn/mdnkit/tools/mdnconv/mdnconv.1 +++ b/contrib/idn/mdnkit/tools/mdnconv/mdnconv.1 @@ -1,4 +1,4 @@ -.\" $Id: mdnconv.1,v 1.17 2001/05/18 04:16:27 ishisone Exp $ +.\" $Id: mdnconv.1,v 1.1 2002/01/02 02:47:01 marka Exp $ .\" .\" Copyright (c) 2000,2001 Japan Network Information Center. .\" All rights reserved. @@ -9,8 +9,8 @@ .\" .\" The following License Terms and Conditions apply, unless a different .\" license is obtained from Japan Network Information Center ("JPNIC"), -.\" a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, -.\" Tokyo, Japan. +.\" a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, +.\" Chiyoda-ku, Tokyo 101-0047, Japan. .\" .\" 1. Use, Modification and Redistribution (including distribution of any .\" modified or derived work) in source and/or binary forms is permitted @@ -104,10 +104,13 @@ standard domain name preperation (NAMEPREP) Furthermore, delimiter mapping is also performed in case \-delimitermap command line option is specified. .PP -The other mode is a reverse convertion, from IDN-encoded domain name to +The other mode is a reverse conversion, from IDN-encoded domain name to local-encoded domain names. -Since IDN-ecoded names are usually already normalized by local mapping and -NAMEPREP process, only codeset conversion is performed in this mode. +In this mode, local mapping and NAMEPREP are not performed since +IDN-encoded names should already be normalized. +Instead, a check is done in order to make sure the IDN-encoded domain name +is properly NAMEPREP'ed. If it is not, the name will be output in +IDN encoding, not in the local encoding. .\" .SH OPTIONS Normally @@ -124,25 +127,13 @@ Any of the following codeset names can be specified. .IP "\(bu" 2 Any codeset names which \fIiconv_open()\fP library function accepts .IP "\(bu" 2 -\f(CWRACE\fR -.IP "\(bu" 2 -\f(CWBRACE\fR +\f(CWAMC-ACE-Z\fR .IP "\(bu" 2 -\f(CWLACE\fR +\f(CWRACE\fR .IP "\(bu" 2 \f(CWDUDE\fR .IP "\(bu" 2 -\f(CWUTF-5\fR -.IP "\(bu" 2 -\f(CWUTF-6\fR -.IP "\(bu" 2 -\f(CWAltDUDE\fR -.IP "\(bu" 2 -\f(CWAMC-ACE-O\fR -.IP "\(bu" 2 -\f(CWAMC-ACE-M\fR -.IP "\(bu" 2 -\f(CWAMC-ACE-R\fR +\f(CWUTF-8\fR .IP "\(bu" 2 Any alias names for the above, defined by the codeset alias file. .RE @@ -182,12 +173,15 @@ Specify the version of NAMEPREP. The following is a list of currently available .IR version s. .RS 4 -.IP \f(CWnameprep-02\fR 4 -Perform NAMEPREP according to the Internet Draft -``draft-ietf-idn-nameprep-02.txt'' (NAMEPREP-02). .IP \f(CWnameprep-03\fR 4 Perform NAMEPREP according to the Internet Draft ``draft-ietf-idn-nameprep-03.txt'' (NAMEPREP-03). +.IP \f(CWnameprep-05\fR 4 +Perform NAMEPREP according to the Internet Draft +``draft-ietf-idn-nameprep-05.txt'' (NAMEPREP-05). +.IP \f(CWnameprep-06\fR 4 +Perform NAMEPREP according to the Internet Draft +``draft-ietf-idn-nameprep-06.txt'' (NAMEPREP-06). .RE .IP "" 4 This option is a shorthand for specifying the 4 options below. @@ -207,13 +201,10 @@ This option is a shorthand for specifying the 4 options below. .I version .ft R .RE -.IP "" 4 -This option is only meaningful in the normal conversion mode. .TP 4 \fB\-nonameprep\fR, \fB\-N\fR -Specify to skip NAMEPREP process in the normal conversion mode. -.br -This option is only meaningful in the normal conversion mode. +Specify to skip NAMEPREP process (or NAMEPREP verification process +in the reverse conversion mode). .TP 4 \fB\-map\fR \fImap\fR Specify the name of the mapping rule for NAMEPREP mapping process. @@ -221,10 +212,12 @@ Currently, following .IR map s are available. .RS 4 -.IP \f(CWnameprep-02\fR 4 -Use the list of mappings specified by NAMEPREP-02 draft. .IP \f(CWnameprep-03\fR 4 Use the list of mappings specified by NAMEPREP-03 draft. +.IP \f(CWnameprep-05\fR 4 +Use the list of mappings specified by NAMEPREP-05 draft. +.IP \f(CWnameprep-06\fR 4 +Use the list of mappings specified by NAMEPREP-06 draft. .IP \f(CWfilemap:\fR\fIpath\fR 4 Use list of mappings specified by mapfile .IR path . @@ -238,37 +231,25 @@ specification. If neither this option nor ``\-nameprep'' are specified, the schemes specified in the configuration file (``nameprep-map'' entry) are used. -.br -This option is only meaningful in the normal conversion mode. .TP 4 \fB\-normalize\fP \fIscheme\fP Specify the normalization scheme for NAMEPREP normalization process. Currently, following \fIscheme\fPs are available: .RS 4 -.IP \f(CWascii-uppercase\fR -ASCII lowercase to uppercase mapping. -.IP \f(CWascii-lowercase\fR -ASCII uppercase to lowercase mapping. -.IP \f(CWunicode-uppercase\fR -Unicode lowercase to uppercase mapping, which is described in -``Unicode Technical Report #21: Case Mappings'', -available from unicode.org. -.IP \f(CWunicode-lowercase\fR -Unicode uppercase to lowercase mapping, according ``Case Mappings''. -.IP \f(CWunicode-foldcase\fR -Unicode case-folding for case-less string matching, -also described in the above document. -.IP \f(CWunicode-form-c\fR -Unicode Normlization Form C, which is described in -``Unicode Technical Report #15: Unicode Normalization Forms'', -also available from unicode.org. .IP \f(CWunicode-form-kc\fR -Unicode Normlization Form KC, also described in the above -document. -.IP \f(CWnameprep-02\fR -Synonim for ``unicode-form-kc''. +Unicode Normlization Form KC, also described in +``Unicode Technical Report #15: Unicode Normalization Forms'', +available from unicode.org. +.IP \f(CWunicode-form-kc/3.0.1\fR +Unicode Normlization Form KC, version 3.0.1 +.IP \f(CWunicode-form-kc/3.1.0\fR +Unicode Normlization Form KC, version 3.1.0 .IP \f(CWnameprep-03\fR -Synonim for ``unicode-form-kc''. +Synonim for ``unicode-form-kc/3.0.1''. +.IP \f(CWnameprep-05\fR +Synonim for ``unicode-form-kc/3.1.0''. +.IP \f(CWnameprep-06\fR +Synonim for ``unicode-form-kc/3.1.0''. .RE .IP "" 4 This option can be specified more than once. @@ -278,8 +259,6 @@ specification. If neither this option nor ``\-nameprep'' are specified, the schemes specified in the configuration file (``nameprep-normalize'' entry) are used. -.br -This option is only meaningful in the normal conversion mode. .TP 4 \fB\-prohibit\fR \fIset\fR Specify the set of prohibited characters. @@ -287,10 +266,12 @@ Currently, following .IR set s are available. .RS 4 -.IP \f(CWnameprep-02\fR 4 -Use list of prohibit characters specified by NAMEPREP-02 draft. .IP \f(CWnameprep-03\fR 4 Use list of prohibit characters specified by NAMEPREP-03 draft. +.IP \f(CWnameprep-05\fR 4 +Use list of prohibit characters specified by NAMEPREP-05 draft. +.IP \f(CWnameprep-06\fR 4 +Use list of prohibit characters specified by NAMEPREP-06 draft. .IP \f(CWfileset:\fR\fIpath\fR 4 Use list of characters specified by setfile .IR path . @@ -303,8 +284,6 @@ prohibited characters is the union of the specified sets. If neither this option nor ``\-nameprep'' is specified, list of characters specified by the configuration file (``nameprep-prohibit'' entry) is used. -.br -This option is only meaningful in the normal conversion mode. .TP 4 \fB\-unassigned\fR \fIset\fR Specify the set of unassigned codepoints. @@ -312,10 +291,12 @@ Currently, following .IR set s are available. .RS 4 -.IP \f(CWnameprep-02\fR 4 -Use the list of unassigned characters specified by NAMEPREP-02 draft. .IP \f(CWnameprep-03\fR 4 Use the list of unassigned characters specified by NAMEPREP-03 draft. +.IP \f(CWnameprep-05\fR 4 +Use the list of unassigned characters specified by NAMEPREP-05 draft. +.IP \f(CWnameprep-06\fR 4 +Use the list of unassigned characters specified by NAMEPREP-06 draft. .IP \f(CWfileset:\fR\fIpath\fR 4 Use list of characters specified by setfile .IR path . @@ -331,14 +312,10 @@ prohibited characters is the union of the specified sets. If neither this option nor ``\-nameprep'' is specified, list of characters specified by the configuration file (``nameprep-unassigned'' entry) is used. -.br -This option is only meaningful in the normal conversion mode. .TP 4 \fB\-unassigncheck\fR, \fB\-u\fR Specify unassigned codepoint check should be performed. Unassigned codepoint check is disabled by default. -.br -This option is only meaningful in the normal conversion mode. .TP 4 \fB\-delimiter\fR \fIcodepoint\fP Specify the character to be mapped to domain name delimiter (period). @@ -384,6 +361,10 @@ Force line-buffering mode. \fB\-version\fP, \fB\-v\fP Print version information and quit. .\" +.SH LOCAL CODESET +mdnconv guesses local codeset from locale and environment variables. +See the ``LOCAL CODESET'' section in mdn.conf(5) for more details. +.\" .SH CONVERSION MECHANISM Here is a brief step-by-step description of how .B mdnconv @@ -464,6 +445,14 @@ Perform name preparation (NAMEPREP). This is a following 3-step process. 3) Prohibited/unassigned character checking .fi .RE +.IP "" 4 +When +.B mdnconv +operates in the reverse conversion mode, this process checks that the +given domain name is properly NAMEPREP'ed. If it is not properly +NAMEPREP'ed and the input codeset is an ACE, the domain name is +converted back to the input codeset in the following process, instead +of the output codeset. .IP "6. output-side conversion" 4 Finally, .B mdnconv @@ -472,7 +461,7 @@ And it writes them to stdout together with the rest of the line. .PP If .B mdnconv -operates in the reverse conversion mode, step 3, 4 and 5 above are skipped. +operates in the reverse conversion mode, step 3 and 4 above are skipped. .\" .SH FILE MANAGEMENT Maybe the best way to manage named.conf or zone master files that contains diff --git a/contrib/idn/mdnkit/tools/mdnconv/mdnconv.c b/contrib/idn/mdnkit/tools/mdnconv/mdnconv.c index 3d424b5afcd..0e75d7ee85b 100644 --- a/contrib/idn/mdnkit/tools/mdnconv/mdnconv.c +++ b/contrib/idn/mdnkit/tools/mdnconv/mdnconv.c @@ -1,5 +1,5 @@ #ifndef lint -static char *rcsid = "$Id: mdnconv.c,v 1.32 2001/05/18 04:16:28 ishisone Exp $"; +static char *rcsid = "$Id: mdnconv.c,v 1.1 2002/01/02 02:47:02 marka Exp $"; #endif /* @@ -12,8 +12,8 @@ static char *rcsid = "$Id: mdnconv.c,v 1.32 2001/05/18 04:16:28 ishisone Exp $"; * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted @@ -256,7 +256,7 @@ main(int ac, char **av) { /* Create resource context. */ resconf = NULL; if ((r = mdn_resconf_create(&resconf)) != mdn_success) { - errormsg("error initilizing configuration parameters\n"); + errormsg("error initializing configuration parameters\n"); return (1); } @@ -278,13 +278,21 @@ main(int ac, char **av) { if (flags & FLAG_REVERSE) { if (in_code != NULL) set_idncode(resconf, in_code); + else + check_defaultidncode(resconf, "-in"); if (out_code != NULL) set_localcode(resconf, out_code); + else + check_defaultlocalcode(resconf, "-out"); } else { if (in_code != NULL) set_localcode(resconf, in_code); + else + check_defaultlocalcode(resconf, "-in"); if (out_code != NULL) set_idncode(resconf, out_code); + else + check_defaultidncode(resconf, "-out"); } /* Set delimiter map(s). */ @@ -355,7 +363,19 @@ convert_file(mdn_resconf_t conf, FILE *fp, int flags) { mdn_converter_destroy(conv); if (flags & FLAG_REVERSE) { - strcpy(insn1, "i"); + char *insnp = insn1; + + *insnp++ = 'i'; + if (flags & FLAG_NAMEPREP) { + *insnp++ = '!'; + *insnp++ = 'N'; + } + if (flags & FLAG_UNASSIGNCHECK) { + *insnp++ = '!'; + *insnp++ = 'u'; + } + *insnp = '\0'; + strcpy(insn2, "L"); } else { char *insnp = insn2; @@ -392,7 +412,7 @@ convert_file(mdn_resconf_t conf, FILE *fp, int flags) { /* * Convert input line to UTF-8. */ - if (ace_hack) { + if (ace_hack && (flags & FLAG_SELECTIVE)) { /* * Selectively decode those portions. */ @@ -418,7 +438,7 @@ convert_file(mdn_resconf_t conf, FILE *fp, int flags) { * Perform local mapping and NAMEPREP, and convert to * the output codeset. */ - if (flags & FLAG_SELECTIVE) { + if (!(flags & FLAG_REVERSE) && (flags & FLAG_SELECTIVE)) { r = selective_encode(conf, insn2, line2, line1, sizeof(line1)); } else { diff --git a/contrib/idn/mdnkit/tools/mdnconv/mdnslookup.in b/contrib/idn/mdnkit/tools/mdnconv/mdnslookup.in new file mode 100644 index 00000000000..84b6e62c2d2 --- /dev/null +++ b/contrib/idn/mdnkit/tools/mdnconv/mdnslookup.in @@ -0,0 +1,132 @@ +#! /bin/sh +# $Id: mdnslookup.in,v 1.1 2002/02/08 05:41:33 marka Exp $ +# +# Copyright (c) 2000 Japan Network Information Center. All rights reserved. +# +# By using this file, you agree to the terms and conditions set forth bellow. +# +# LICENSE TERMS AND CONDITIONS +# +# The following License Terms and Conditions apply, unless a different +# license is obtained from Japan Network Information Center ("JPNIC"), +# a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, +# Tokyo, Japan. +# +# 1. Use, Modification and Redistribution (including distribution of any +# modified or derived work) in source and/or binary forms is permitted +# under this License Terms and Conditions. +# +# 2. Redistribution of source code must retain the copyright notices as they +# appear in each source code file, this License Terms and Conditions. +# +# 3. Redistribution in binary form must reproduce the Copyright Notice, +# this License Terms and Conditions, in the documentation and/or other +# materials provided with the distribution. For the purposes of binary +# distribution the "Copyright Notice" refers to the following language: +# "Copyright (c) Japan Network Information Center. All rights reserved." +# +# 4. Neither the name of JPNIC may be used to endorse or promote products +# derived from this Software without specific prior written approval of +# JPNIC. +# +# 5. Disclaimer/Limitation of Liability: THIS SOFTWARE IS PROVIDED BY JPNIC +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A +# PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JPNIC BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +# BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. +# +# 6. Indemnification by Licensee +# Any person or entities using and/or redistributing this Software under +# this License Terms and Conditions shall defend indemnify and hold +# harmless JPNIC from and against any and all judgements damages, +# expenses, settlement liabilities, cost and other liabilities of any +# kind as a result of use and redistribution of this Software or any +# claim, suite, action, litigation or proceeding by any third party +# arising out of or relates to this License Terms and Conditions. +# +# 7. Governing Law, Jurisdiction and Venue +# This License Terms and Conditions shall be governed by and and +# construed in accordance with the law of Japan. Any person or entities +# using and/or redistributing this Software under this License Terms and +# Conditions hereby agrees and consent to the personal and exclusive +# jurisdiction and venue of Tokyo District Court of Japan. + +USAGE="Usage: $0 domain-name DNS-server" + +# +# Parse command line arguments. +# +if [ $# -lt 2 ] ; then + echo "$0: too few argument" 1>&2 + echo $USAGE 1>&2 + exit 1 +fi + +if [ $# -gt 2 ] ; then + echo "$0: too many argument" 1>&2 + echo $USAGE 1>&2 + exit 1 +fi + +case "$1" in +-*) echo "$0: unknown option $1" 1>&2 + echo $USAGE 1>&2 + exit 1 + ;; +esac + +LOCAL_DOMAIN_NAME="$1" +NAME_SERVER="$2" + +# +# Append some directories to PATH. +# +[ -d /usr/sbin ] && PATH=$PATH:/usr/sbin +[ -d /sbin ] && PATH=$PATH:/sbin + +# +# Find `nslookup' command. +# +if [ x"$NSLOOKUP" = x ] ; then + for I in `echo $PATH | sed -e 's/:/ /g'` ; do + if [ -x $I/nslookup ] ; then + NSLOOKUP="$I/nslookup" + break + fi + done + if [ "$NSLOOKUP" = "" ] ; then + echo "$0: nslookup not found" 1>&2 + exit 1 + fi +fi +if [ ! -x "$NSLOOKUP" ] ; then + echo "$0: nslookup not found" 1>&2 + exit 1 +fi + +# +# Check if `mdnconv' command exists. +# +MDNCONV=${MDNCONV-"@bindir@/mdnconv"} +if [ ! -x "$MDNCONV" ] ; then + echo "$0: mdnconv not found" 1>&2 + exit 1 +fi + +# +# Convert domain name to IDN encoding. +# +IDN_DOMAIN_NAME="`echo $LOCAL_DOMAIN_NAME | $MDNCONV -w`" || exit 1 + +# +# Invoke nslookup. +# +$NSLOOKUP $IDN_DOMAIN_NAME $NAME_SERVER < /dev/null || exit 1 + +exit 0 diff --git a/contrib/idn/mdnkit/tools/mdnconv/util.c b/contrib/idn/mdnkit/tools/mdnconv/util.c index 08d22f9cadd..6ffec735eae 100644 --- a/contrib/idn/mdnkit/tools/mdnconv/util.c +++ b/contrib/idn/mdnkit/tools/mdnconv/util.c @@ -1,5 +1,5 @@ #ifndef lint -static char *rcsid = "$Id: util.c,v 1.17 2001/04/16 02:18:15 m-kasahr Exp $"; +static char *rcsid = "$Id: util.c,v 1.1 2002/01/02 02:47:02 marka Exp $"; #endif /* @@ -11,8 +11,8 @@ static char *rcsid = "$Id: util.c,v 1.17 2001/04/16 02:18:15 m-kasahr Exp $"; * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted @@ -168,7 +168,7 @@ selective_decode(mdn_resconf_t conf, char *insn, domain_name = NULL; /* - * We ignores a chunk maching to the regular expression: + * We ignore chunks matching to the regular expression: * [\-\.][0-9A-Za-z\-\.]* * * While `*from' points to a character in such a chunk, @@ -247,7 +247,6 @@ selective_decode(mdn_resconf_t conf, char *insn, } to += len; tolen -= len; - } /* @@ -404,6 +403,32 @@ set_unassigned_checkers(mdn_resconf_t conf, char **unassigns, int nunassigns) { } } +void +check_defaultlocalcode(mdn_resconf_t conf, const char *opt) { + mdn_converter_t conv = mdn_resconf_getlocalconverter(conf); + + if (conv == NULL) { + errormsg("cannot get the default local encoding.\n" + "please specify an appropriate one " + "with `%s' option.\n", opt); + exit(1); + } else + mdn_converter_destroy(conv); +} + +void +check_defaultidncode(mdn_resconf_t conf, const char *opt) { + mdn_converter_t conv = mdn_resconf_getidnconverter(conf); + + if (conv == NULL) { + errormsg("cannot get the default IDN encoding.\n" + "please specify an appropriate one " + "with `%s' option.\n", opt); + exit(1); + } else + mdn_converter_destroy(conv); +} + void errormsg(const char *fmt, ...) { va_list args; diff --git a/contrib/idn/mdnkit/tools/mdnconv/util.h b/contrib/idn/mdnkit/tools/mdnconv/util.h index 2ec6aa6c4b4..3a86e1fa2c8 100644 --- a/contrib/idn/mdnkit/tools/mdnconv/util.h +++ b/contrib/idn/mdnkit/tools/mdnconv/util.h @@ -1,4 +1,4 @@ -/* $Id: util.h,v 1.7 2001/02/23 10:36:52 m-kasahr Exp $ */ +/* $Id: util.h,v 1.1 2002/01/02 02:47:02 marka Exp $ */ /* * Copyright (c) 2000,2001 Japan Network Information Center. * All rights reserved. @@ -9,8 +9,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted @@ -81,5 +81,9 @@ extern void set_prohibit_checkers(mdn_resconf_t conf, extern void set_unassigned_checkers(mdn_resconf_t conf, char **unassigns, int nunassigns); +extern void check_defaultlocalcode(mdn_resconf_t conf, + const char *opt); +extern void check_defaultidncode(mdn_resconf_t conf, + const char *opt); extern void errormsg(const char *fmt, ...); diff --git a/contrib/idn/mdnkit/tools/runmdn/Makefile.in b/contrib/idn/mdnkit/tools/runmdn/Makefile.in index b2c8c660b92..ea892d0bded 100644 --- a/contrib/idn/mdnkit/tools/runmdn/Makefile.in +++ b/contrib/idn/mdnkit/tools/runmdn/Makefile.in @@ -1,4 +1,4 @@ -# $Id: Makefile.in,v 1.32 2001/05/22 03:00:23 m-kasahr Exp $ +# $Id: Makefile.in,v 1.1 2002/01/02 02:47:03 marka Exp $ # Copyright (c) 2000 Japan Network Information Center. All rights reserved. # # By using this file, you agree to the terms and conditions set forth bellow. @@ -7,8 +7,8 @@ # # The following License Terms and Conditions apply, unless a different # license is obtained from Japan Network Information Center ("JPNIC"), -# a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, -# Tokyo, Japan. +# a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, +# Chiyoda-ku, Tokyo 101-0047, Japan. # # 1. Use, Modification and Redistribution (including distribution of any # modified or derived work) in source and/or binary forms is permitted @@ -55,13 +55,14 @@ # Conditions hereby agrees and consent to the personal and exclusive # jurisdiction and venue of Tokyo District Court of Japan. -LIB_CURRENT=7 -LIB_REVISION=0 -LIB_AGE=0 +LIB_CURRENT = 7 +LIB_REVISION = 3 +LIB_AGE = 0 .SUFFIXES: .lo top_builddir = ../.. +subdir = tools/runmdn srcdir = @srcdir@ VPATH = @srcdir@ @@ -81,9 +82,12 @@ MKINSTALLDIRS = @top_srcdir@/mkinstalldirs SHELL = @SHELL@ LIBTOOL = @LIBTOOL@ +ICONVINC = @ICONVINC@ +ICONVLIB = @ICONVLIB@ + OPTS = -INCS = -I$(srcdir)/../../include -I../../include -DEFS = +INCS = -I$(srcdir)/../../include -I../../include $(ICONVINC) +DEFS = CFLAGS = $(INCS) $(OPTS) $(DEFS) @CFLAGS@ LDFLAGS = @LDFLAGS@ @@ -99,6 +103,9 @@ MDNOBJS = \ $(MDNDIR)/amcacem.lo \ $(MDNDIR)/amcaceo.lo \ $(MDNDIR)/amcacer.lo \ + $(MDNDIR)/amcacev.lo \ + $(MDNDIR)/amcacew.lo \ + $(MDNDIR)/amcacez.lo \ $(MDNDIR)/api.lo \ $(MDNDIR)/brace.lo \ $(MDNDIR)/checker.lo \ @@ -112,6 +119,7 @@ MDNOBJS = \ $(MDNDIR)/lace.lo \ $(MDNDIR)/localencoding.lo \ $(MDNDIR)/log.lo \ + $(MDNDIR)/mace.lo \ $(MDNDIR)/mapper.lo \ $(MDNDIR)/mapselector.lo \ $(MDNDIR)/nameprep.lo \ @@ -131,12 +139,10 @@ MDNOBJS = \ $(MDNDIR)/util.lo \ $(MDNDIR)/version.lo -ICONVLIB = @ICONVLIB@ - .c.lo: $(LIBTOOL) --mode=compile $(CC) $(CFLAGS) -c $< -all: $(LIB).la +all: $(LIB).la runmdn rtresolver.lo: $(srcdir)/resolver.c $(LIBTOOL) --mode=compile $(CC) $(CFLAGS) -DFOR_RUNMDN -o $@ \ @@ -147,6 +153,11 @@ $(LIB).la: $(OBJS) -version-info $(LIB_CURRENT):$(LIB_REVISION):$(LIB_AGE) \ -module -rpath $(libdir) $(OBJS) $(LIBDL) +runmdn: $(srcdir)/runmdn.in + cd $(top_builddir) && \ + CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= CONFIG_LINKS= \ + $(SHELL) ./config.status + install: install-lib install-script install-man install-script: diff --git a/contrib/idn/mdnkit/tools/runmdn/resolver.c b/contrib/idn/mdnkit/tools/runmdn/resolver.c index e545218ae63..b86762c88cb 100644 --- a/contrib/idn/mdnkit/tools/runmdn/resolver.c +++ b/contrib/idn/mdnkit/tools/runmdn/resolver.c @@ -1,5 +1,5 @@ #ifndef lint -static char *rcsid = "$Id: resolver.c,v 1.1 2001/06/09 00:30:50 tale Exp $"; +static char *rcsid = "$Id: resolver.c,v 1.2 2002/02/08 05:41:38 marka Exp $"; #endif /* @@ -11,8 +11,8 @@ static char *rcsid = "$Id: resolver.c,v 1.1 2001/06/09 00:30:50 tale Exp $"; * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted @@ -593,7 +593,7 @@ ENTRY(gethostbyname2)(const char *name, int af) { #ifdef HAVE_GETHOSTBYADDR struct hostent * -ENTRY(gethostbyaddr)(const char *addr, GHBA_ADDRLEN_T len, int type) { +ENTRY(gethostbyaddr)(GHBA_ADDR_T addr, GHBA_ADDRLEN_T len, int type) { static hostbuf_t buf; static struct hostent he; struct hostent *hp; @@ -727,7 +727,7 @@ ENTRY(gethostbyname2_r)(const char *name, int af, struct hostent *result, #ifdef HAVE_GETHOSTBYADDR_R int -ENTRY(gethostbyaddr_r)(const char *addr, GHBA_ADDRLEN_T len, int type, +ENTRY(gethostbyaddr_r)(GHBA_ADDR_T addr, GHBA_ADDRLEN_T len, int type, struct hostent *result, char *buffer, size_t buflen, struct hostent **rp, int *errp) @@ -830,7 +830,7 @@ ENTRY(gethostbyname_r)(const char *name, struct hostent *result, #ifdef HAVE_GETHOSTBYADDR_R struct hostent * -ENTRY(gethostbyaddr_r)(const char *addr, GHBA_ADDRLEN_T len, int type, +ENTRY(gethostbyaddr_r)(GHBA_ADDR_T addr, GHBA_ADDRLEN_T len, int type, struct hostent *result, char *buffer, int buflen, int *errp) { @@ -1009,9 +1009,9 @@ ENTRY(freeaddrinfo)(struct addrinfo *aip) { #ifdef HAVE_GETNAMEINFO int -ENTRY(getnameinfo)(const struct sockaddr *sa, socklen_t salen, - char *host, size_t hostlen, char *serv, size_t servlen, - int flags) +ENTRY(getnameinfo)(const struct sockaddr *sa, GNI_SALEN_T salen, + char *host, GNI_HOSTLEN_T hostlen, char *serv, + GNI_SERVLEN_T servlen, GNI_FLAGS_T flags) { char name[MDN_NAME_SIZE]; size_t namelen = sizeof(name); diff --git a/contrib/idn/mdnkit/tools/runmdn/runmdn.1 b/contrib/idn/mdnkit/tools/runmdn/runmdn.1 index c21c32ac066..8fc0bb3f34e 100644 --- a/contrib/idn/mdnkit/tools/runmdn/runmdn.1 +++ b/contrib/idn/mdnkit/tools/runmdn/runmdn.1 @@ -1,4 +1,4 @@ -.\" $Id: runmdn.1,v 1.7 2001/04/23 05:56:27 ishisone Exp $ +.\" $Id: runmdn.1,v 1.1 2002/01/02 02:47:04 marka Exp $ .\" .\" Copyright (c) 2000,2001 Japan Network Information Center. .\" All rights reserved. @@ -9,8 +9,8 @@ .\" .\" The following License Terms and Conditions apply, unless a different .\" license is obtained from Japan Network Information Center ("JPNIC"), -.\" a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, -.\" Tokyo, Japan. +.\" a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, +.\" Chiyoda-ku, Tokyo 101-0047, Japan. .\" .\" 1. Use, Modification and Redistribution (including distribution of any .\" modified or derived work) in source and/or binary forms is permitted @@ -63,7 +63,7 @@ runmdn \- A script to allow applications to use multilingual domain names. .\" .SH SYNOPSIS -\fBrunmdn\fP \fIprogram-name\fP [\fIargs..\fP] +\fBrunmdn\fP [\fB-e\fP \fIlocal-codeset\fP] \fIprogram-name\fP [\fIargs..\fP] .\" .SH DESCRIPTION .B runmdn @@ -82,6 +82,16 @@ multilingual DNS by configuring mDNkit's configuration file \fBmdn.conf\fP. See mdn.conf(5) which describes the configuration. .\" +.SH OPTION +The following option is available: +.TP 4 +\fB\-e\fP \fIlocal-codeset\fP +Specify the application's local codeset. +If the option is not specified, +.B runmdn +guesses the codeset from the current locale. +See the ``NOTE'' section for more details about local codeset. +.\" .SH IMPLEMENTATION .B runmdn is a small shell script that sets up an environment variable called @@ -135,10 +145,13 @@ configuration file ( ). See mdn.conf(5) for details. .\" .SH NOTE -By default, +Unless +\fB\-e\fP +option is specified, .B runmdn tries to guess the application's local codeset from the application's current -locale. However, sometimes it cannot guess the codeset correctly, for example +locale. +However, sometimes it cannot guess the codeset correctly, for example if the application does not set the locale appropriately by calling `setlocale()'. In that case, you can explicitly specify the local codeset by setting an diff --git a/contrib/idn/mdnkit/tools/runmdn/runmdn.in b/contrib/idn/mdnkit/tools/runmdn/runmdn.in index 11d04f78de4..81e0f5203d3 100644 --- a/contrib/idn/mdnkit/tools/runmdn/runmdn.in +++ b/contrib/idn/mdnkit/tools/runmdn/runmdn.in @@ -1,5 +1,5 @@ #! /bin/sh -# $Id: runmdn.in,v 1.8 2000/09/28 01:37:22 ishisone Exp $ +# $Id: runmdn.in,v 1.1 2002/01/02 02:47:04 marka Exp $ # # Copyright (c) 2000 Japan Network Information Center. All rights reserved. # @@ -57,14 +57,44 @@ # Conditions hereby agrees and consent to the personal and exclusive # jurisdiction and venue of Tokyo District Court of Japan. -preload= +# Parse command line options. +usage="Usage: `basename $0` [-e local-encoding] command [argument..]" +while test $# -gt 0; do + case "$1" in + -e) + if test $# -le 1; then + echo $usage 1>&2 + exit 1 + fi + MDN_LOCAL_CODESET="$2" + export MDN_LOCAL_CODESET + shift + ;; + -) + break + ;; + -*) + echo $usage 1>&2 + exit 1 + ;; + *) + break + ;; + esac + shift +done +if test $# -eq 0; then + echo $usage 1>&2 + exit 1 +fi +# Load library info. +preload= iconv_file=@ICONVSOFILE@ if test "$iconv_file" != none; then preload="$iconv_file@PRELOAD_SEP@" fi -# Load library info. prefix=@prefix@ exec_prefix=@exec_prefix@ libdir=`echo @libdir@` diff --git a/contrib/idn/mdnkit/tools/runmdn/stub.c b/contrib/idn/mdnkit/tools/runmdn/stub.c index 5264f612250..6e11b71c085 100644 --- a/contrib/idn/mdnkit/tools/runmdn/stub.c +++ b/contrib/idn/mdnkit/tools/runmdn/stub.c @@ -1,5 +1,5 @@ #ifndef lint -static char *rcsid = "$Id: stub.c,v 1.1 2001/06/09 00:30:51 tale Exp $"; +static char *rcsid = "$Id: stub.c,v 1.2 2002/02/08 05:41:42 marka Exp $"; #endif /* @@ -11,8 +11,8 @@ static char *rcsid = "$Id: stub.c,v 1.1 2001/06/09 00:30:51 tale Exp $"; * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted @@ -195,8 +195,8 @@ mdn_stub_gethostbyname2(const char *name, int af) { #ifdef HAVE_GETHOSTBYADDR struct hostent * -mdn_stub_gethostbyaddr(const char *addr, GHBA_ADDRLEN_T len, int type) { - static struct hostent *(*fp)(const char *name, +mdn_stub_gethostbyaddr(GHBA_ADDR_T addr, GHBA_ADDRLEN_T len, int type) { + static struct hostent *(*fp)(GHBA_ADDR_T name, GHBA_ADDRLEN_T len, int type); if (fp == NULL) @@ -247,11 +247,11 @@ mdn_stub_gethostbyname2_r(const char *name, int af, struct hostent *result, #ifdef HAVE_GETHOSTBYADDR_R int -mdn_stub_gethostbyaddr_r(const char *addr, GHBA_ADDRLEN_T len, int type, +mdn_stub_gethostbyaddr_r(GHBA_ADDR_T addr, GHBA_ADDRLEN_T len, int type, struct hostent *result, char *buffer, size_t buflen, struct hostent **rp, int *errp) { - static int (*fp)(const char *addr, GHBA_ADDRLEN_T len, int type, + static int (*fp)(GHBA_ADDR_T addr, GHBA_ADDRLEN_T len, int type, struct hostent *result, char *buffer, size_t buflen, struct hostent **rp, int *errp); @@ -284,11 +284,11 @@ mdn_stub_gethostbyname_r(const char *name, struct hostent *result, #ifdef HAVE_GETHOSTBYADDR_R struct hostent * -mdn_stub_gethostbyaddr_r(const char *addr, int len, int type, +mdn_stub_gethostbyaddr_r(GHBA_ADDR_T addr, int len, int type, struct hostent *result, char *buffer, int buflen, int *errp) { - static struct hostent *(*fp)(const char *addr, int len, int type, + static struct hostent *(*fp)(GHBA_ADDR_T addr, int len, int type, struct hostent *result, char *buffer, int buflen, int *errp); @@ -372,14 +372,13 @@ mdn_stub_freeaddrinfo(struct addrinfo *aip) { #ifdef HAVE_GETNAMEINFO int -mdn_stub_getnameinfo(const struct sockaddr *sa, socklen_t salen, - char *host, size_t hostlen, char *serv, size_t servlen, - int flags) -{ - static int (*fp)(const struct sockaddr *sa, socklen_t salen, - char *host, size_t hostlen, - char *serv, size_t servlen, - int flags); +mdn_stub_getnameinfo(const struct sockaddr *sa, GNI_SALEN_T salen, + char *host, GNI_HOSTLEN_T hostlen, + char *serv, GNI_SERVLEN_T servlen, GNI_FLAGS_T flags) { + static int (*fp)(const struct sockaddr *sa, GNI_SALEN_T salen, + char *host, GNI_HOSTLEN_T hostlen, + char *serv, GNI_SERVLEN_T servlen, + GNI_FLAGS_T flags); if (fp == NULL) fp = get_func_addr("getnameinfo"); diff --git a/contrib/idn/mdnkit/tools/runmdn/stub.h b/contrib/idn/mdnkit/tools/runmdn/stub.h index ffe417716fa..dcfff6b48e7 100644 --- a/contrib/idn/mdnkit/tools/runmdn/stub.h +++ b/contrib/idn/mdnkit/tools/runmdn/stub.h @@ -1,4 +1,4 @@ -/* $Id: stub.h,v 1.1 2001/06/09 00:30:51 tale Exp $ */ +/* $Id: stub.h,v 1.2 2002/02/08 05:41:43 marka Exp $ */ #ifndef STUB_H #define STUB_H @@ -39,20 +39,20 @@ mdn_stub_gethostbyname2_r(const char *name, int af, struct hostent *result, #ifdef HAVE_GETHOSTBYADDR extern struct hostent * -mdn_stub_gethostbyaddr(const char *addr, GHBA_ADDRLEN_T len, int type); +mdn_stub_gethostbyaddr(GHBA_ADDR_T addr, GHBA_ADDRLEN_T len, int type); #endif #ifdef GETHOST_R_GLIBC_FLAVOR #ifdef HAVE_GETHOSTBYADDR_R extern int -mdn_stub_gethostbyaddr_r(const char *addr, GHBA_ADDRLEN_T len, int type, +mdn_stub_gethostbyaddr_r(GHBA_ADDR_T addr, GHBA_ADDRLEN_T len, int type, struct hostent *result, char *buffer, size_t buflen, struct hostent **rp, int *errp); #endif #else /* GETHOST_R_GLIBC_FLAVOR */ #ifdef HAVE_GETHOSTBYADDR_R extern struct hostent * -mdn_stub_gethostbyaddr_r(const char *addr, GHBA_ADDRLEN_T len, int type, +mdn_stub_gethostbyaddr_r(GHBA_ADDR_T addr, GHBA_ADDRLEN_T len, int type, struct hostent *result, char *buffer, int buflen, int *errp); #endif @@ -86,9 +86,9 @@ mdn_stub_freeaddrinfo(struct addrinfo *aip); #ifdef HAVE_GETNAMEINFO extern int -mdn_stub_getnameinfo(const struct sockaddr *sa, socklen_t salen, - char *host, size_t hostlen, char *serv, size_t servlen, - int flags); +mdn_stub_getnameinfo(const struct sockaddr *sa, GNI_SALEN_T salen, + char *host, GNI_HOSTLEN_T hostlen, char *serv, + GNI_SERVLEN_T servlen, GNI_FLAGS_T flags); #endif #endif /* STUB_H */ diff --git a/contrib/idn/mdnkit/util/SparseMap.pm b/contrib/idn/mdnkit/util/SparseMap.pm index 94742ab51ab..0261874eb0a 100644 --- a/contrib/idn/mdnkit/util/SparseMap.pm +++ b/contrib/idn/mdnkit/util/SparseMap.pm @@ -1,4 +1,4 @@ -# $Id: SparseMap.pm,v 1.1 2001/06/09 00:30:51 tale Exp $ +# $Id: SparseMap.pm,v 1.2 2002/02/08 05:41:45 marka Exp $ # # Copyright (c) 2001 Japan Network Information Center. All rights reserved. # @@ -8,8 +8,8 @@ # # The following License Terms and Conditions apply, unless a different # license is obtained from Japan Network Information Center ("JPNIC"), -# a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, -# Tokyo, Japan. +# a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, +# Chiyoda-ku, Tokyo 101-0047, Japan. # # 1. Use, Modification and Redistribution (including distribution of any # modified or derived work) in source and/or binary forms is under this @@ -220,7 +220,7 @@ sub cprog_imap { $idcol = 4; $idwid = 10; } - $prog = "static unsigned $idtype ${name}_imap[] = {\n"; + $prog = "static const unsigned $idtype ${name}_imap[] = {\n"; $i = 0; foreach my $v (@indirect) { if ($i % $idcol == 0) { @@ -426,7 +426,7 @@ sub cprog_dmap { my $bmsize = 1 << ($self->{BITS}->[-1] - 3); $prog = <<"END"; -static struct { +static const struct { unsigned char bm[$bmsize]; } ${name}_bitmap[] = { END @@ -541,7 +541,7 @@ sub cprog_dmap { $idwid = decimalwidth($min) if decimalwidth($min) > $idwid; $prog = <<"END"; -static struct { +static const struct { $idtype tbl[$tblsize]; } ${name}_table[] = { END diff --git a/contrib/idn/mdnkit/util/UCD.pm b/contrib/idn/mdnkit/util/UCD.pm index 6307554781a..33eb8eeb34e 100644 --- a/contrib/idn/mdnkit/util/UCD.pm +++ b/contrib/idn/mdnkit/util/UCD.pm @@ -1,4 +1,4 @@ -# $Id: UCD.pm,v 1.1 2001/06/09 00:30:51 tale Exp $ +# $Id: UCD.pm,v 1.2 2002/02/08 05:41:46 marka Exp $ # # Copyright (c) 2000,2001 Japan Network Information Center. # All rights reserved. @@ -9,8 +9,8 @@ # # The following License Terms and Conditions apply, unless a different # license is obtained from Japan Network Information Center ("JPNIC"), -# a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, -# Tokyo, Japan. +# a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, +# Chiyoda-ku, Tokyo 101-0047, Japan. # # 1. Use, Modification and Redistribution (including distribution of any # modified or derived work) in source and/or binary forms is under this diff --git a/contrib/idn/mdnkit/util/generate_nameprep_data.pl b/contrib/idn/mdnkit/util/generate_nameprep_data.pl index 96165b4fd74..c3830b8b858 100644 --- a/contrib/idn/mdnkit/util/generate_nameprep_data.pl +++ b/contrib/idn/mdnkit/util/generate_nameprep_data.pl @@ -1,5 +1,5 @@ #! /usr/local/bin/perl -w -# $Id: generate_nameprep_data.pl,v 1.1 2001/06/09 00:30:51 tale Exp $ +# $Id: generate_nameprep_data.pl,v 1.2 2002/02/08 05:41:47 marka Exp $ # # Copyright (c) 2001 Japan Network Information Center. All rights reserved. # @@ -9,8 +9,8 @@ # # The following License Terms and Conditions apply, unless a different # license is obtained from Japan Network Information Center ("JPNIC"), -# a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, -# Tokyo, Japan. +# a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, +# Chiyoda-ku, Tokyo 101-0047, Japan. # # 1. Use, Modification and Redistribution (including distribution of any # modified or derived work) in source and/or binary forms is under this @@ -59,13 +59,14 @@ # use v5.6.0; # for pack('U') +use bytes; use lib qw(.); use SparseMap; use Getopt::Long; -(my $myid = '$Id: generate_nameprep_data.pl,v 1.1 2001/06/09 00:30:51 tale Exp $') =~ s/\$([^\$]+)\$/\$-$1-\$/; +(my $myid = '$Id: generate_nameprep_data.pl,v 1.2 2002/02/08 05:41:47 marka Exp $') =~ s/\$([^\$]+)\$/\$-$1-\$/; my @map_bits = (9, 7, 5); my @proh_bits = (7, 7, 7); @@ -229,7 +230,7 @@ sub generate_map { $map->fix(); print $map->cprog(NAME => "nameprep_${version}_map"); - print "\nstatic unsigned char nameprep_${version}_map_data[] = \{\n"; + print "\nstatic const unsigned char nameprep_${version}_map_data[] = \{\n"; print_uchararray($$bufref); print "};\n\n"; } diff --git a/contrib/idn/mdnkit/util/generate_normalize_data.pl b/contrib/idn/mdnkit/util/generate_normalize_data.pl index 27d78452ea4..bfb5b8a4945 100644 --- a/contrib/idn/mdnkit/util/generate_normalize_data.pl +++ b/contrib/idn/mdnkit/util/generate_normalize_data.pl @@ -1,5 +1,5 @@ #! /usr/local/bin/perl -w -# $Id: generate_normalize_data.pl,v 1.5 2001/02/13 07:34:02 ishisone Exp $ +# $Id: generate_normalize_data.pl,v 1.1 2002/01/02 02:47:06 marka Exp $ # # Copyright (c) 2000,2001 Japan Network Information Center. # All rights reserved. @@ -10,8 +10,8 @@ # # The following License Terms and Conditions apply, unless a different # license is obtained from Japan Network Information Center ("JPNIC"), -# a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, -# Tokyo, Japan. +# a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, +# Chiyoda-ku, Tokyo 101-0047, Japan. # # 1. Use, Modification and Redistribution (including distribution of any # modified or derived work) in source and/or binary forms is under this @@ -84,7 +84,7 @@ my $CASEMAP_LAST_BIT = 0x10; my $LETTER_BIT = 1; my $NSPMARK_BIT = 2; -(my $myid = '$Id: generate_normalize_data.pl,v 1.5 2001/02/13 07:34:02 ishisone Exp $') =~ s/\$([^\$]+)\$/\$-$1-\$/; +(my $myid = '$Id: generate_normalize_data.pl,v 1.1 2002/01/02 02:47:06 marka Exp $') =~ s/\$([^\$]+)\$/\$-$1-\$/; my @default_bits = (9, 7, 5); #my @default_bits = (7, 7, 7); @@ -95,9 +95,10 @@ my @folding_bits = @default_bits; my @casemap_bits = @default_bits; my @casemap_ctx_bits = @default_bits; +my $prefix = ''; my $dir = '.'; my $unicodedatafile = 'UnicodeData.txt'; -my $exclusionfile = 'CompositionExclusions-1.txt'; +my $exclusionfile = 'CompositionExclusions.txt'; my $specialcasefile = 'SpecialCasing.txt'; my $casefoldingfile = 'CaseFolding.txt'; my $verbose; @@ -107,6 +108,7 @@ GetOptions('dir|d=s' => \$dir, 'exclude|e=s' => \$exclusionfile, 'specialcase|s=s' => \$specialcasefile, 'casefold|c=s' => \$casefoldingfile, + 'prefix|p=s' => \$prefix, 'verbose|v' => \$verbose, ) or usage(); @@ -415,7 +417,7 @@ sub print_canon_class { END print_bits("CANON_CLASS", @canon_class_bits); print "\n"; - print $canon_class->cprog(NAME => "canon_class"); + print $canon_class->cprog(NAME => "${prefix}canon_class"); } # @@ -434,13 +436,10 @@ sub print_composition { END print_bits("CANON_COMPOSE", @comp_bits); print "\n"; - print $comp->cprog(NAME => "compose"); + print $comp->cprog(NAME => "${prefix}compose"); print <<"END"; -static struct composition { - unsigned long c2; /* 2nd character */ - unsigned long comp; /* composed character */ -} compose_seq[] = { +static const struct composition ${prefix}compose_seq[] = { END my $i = 0; foreach my $r (@comp_data) { @@ -472,9 +471,9 @@ END print_bits("DECOMP", @decomp_bits); print "#define DECOMP_COMPAT\t$DECOMP_COMPAT_BIT\n\n"; - print $decomp->cprog(NAME => "decompose"); + print $decomp->cprog(NAME => "${prefix}decompose"); - print "static unsigned long decompose_seq[] = {\n"; + print "static const unsigned long ${prefix}decompose_seq[] = {\n"; print_ulseq(@decomp_data); print "};\n\n"; } @@ -505,14 +504,14 @@ sub print_casemap { END print_bits("CASEMAP", @casemap_bits); print "\n"; - print $upper->cprog(NAME => "toupper"); - print $lower->cprog(NAME => "tolower"); + print $upper->cprog(NAME => "${prefix}toupper"); + print $lower->cprog(NAME => "${prefix}tolower"); - print "static unsigned long toupper_seq[] = {\n"; + print "static const unsigned long ${prefix}toupper_seq[] = {\n"; print_ulseq(@toupper_data); print "};\n\n"; - print "static unsigned long tolower_seq[] = {\n"; + print "static const unsigned long ${prefix}tolower_seq[] = {\n"; print_ulseq(@tolower_data); print "};\n\n"; } @@ -533,9 +532,9 @@ sub print_casefolding { END print_bits("CASE_FOLDING", @folding_bits); print "\n"; - print $folding->cprog(NAME => "case_folding"); + print $folding->cprog(NAME => "${prefix}case_folding"); - print "static unsigned long case_folding_seq[] = {\n"; + print "static const unsigned long ${prefix}case_folding_seq[] = {\n"; print_ulseq(@folding_data); print "};\n\n"; } @@ -563,7 +562,7 @@ END #define CTX_NSM $NSPMARK_BIT END - print $casemap_ctx->cprog(NAME => "casemap_ctx"); + print $casemap_ctx->cprog(NAME => "${prefix}casemap_ctx"); } sub sprint_composition_hash { diff --git a/contrib/idn/mdnkit/win/README.WIN b/contrib/idn/mdnkit/win/README.WIN index 663bcaa8977..bd7a4e3c478 100644 --- a/contrib/idn/mdnkit/win/README.WIN +++ b/contrib/idn/mdnkit/win/README.WIN @@ -21,4 +21,4 @@ Then go to the top directory and run the following command to compile On Windows NT you can run 'mdnsproxy' as a service, while on Windows 95/98 'mdnsproxy' can be run but not as a service. -; $Id: README.WIN,v 1.1 2001/06/09 00:30:53 tale Exp $ +; $Id: README.WIN,v 1.2 2002/02/08 05:41:50 marka Exp $ diff --git a/contrib/idn/mdnkit/wsock/common/checkdll.c b/contrib/idn/mdnkit/wsock/common/checkdll.c index 1f267ebb120..5b3fd74a155 100644 --- a/contrib/idn/mdnkit/wsock/common/checkdll.c +++ b/contrib/idn/mdnkit/wsock/common/checkdll.c @@ -11,8 +11,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/wsock/common/convert.c b/contrib/idn/mdnkit/wsock/common/convert.c index f4e565eb997..257e7a7bf96 100644 --- a/contrib/idn/mdnkit/wsock/common/convert.c +++ b/contrib/idn/mdnkit/wsock/common/convert.c @@ -11,8 +11,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/wsock/common/dllmain.c b/contrib/idn/mdnkit/wsock/common/dllmain.c index c81f013f859..d888e00a36b 100644 --- a/contrib/idn/mdnkit/wsock/common/dllmain.c +++ b/contrib/idn/mdnkit/wsock/common/dllmain.c @@ -17,8 +17,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/wsock/common/dump.c b/contrib/idn/mdnkit/wsock/common/dump.c index 94086ad74f3..7ef92273b26 100644 --- a/contrib/idn/mdnkit/wsock/common/dump.c +++ b/contrib/idn/mdnkit/wsock/common/dump.c @@ -11,8 +11,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/wsock/common/encoding.c b/contrib/idn/mdnkit/wsock/common/encoding.c index 92082e12083..fef6ea6b8ec 100644 --- a/contrib/idn/mdnkit/wsock/common/encoding.c +++ b/contrib/idn/mdnkit/wsock/common/encoding.c @@ -19,8 +19,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/wsock/common/hook.c b/contrib/idn/mdnkit/wsock/common/hook.c index 9cf09567623..80f6b3fcf34 100644 --- a/contrib/idn/mdnkit/wsock/common/hook.c +++ b/contrib/idn/mdnkit/wsock/common/hook.c @@ -11,8 +11,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/wsock/common/jpnicmdn.h b/contrib/idn/mdnkit/wsock/common/jpnicmdn.h index 63ea9b2358e..fe781921700 100644 --- a/contrib/idn/mdnkit/wsock/common/jpnicmdn.h +++ b/contrib/idn/mdnkit/wsock/common/jpnicmdn.h @@ -11,8 +11,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/wsock/common/make.wnt b/contrib/idn/mdnkit/wsock/common/make.wnt index 17b0a1076ab..260050801bd 100644 --- a/contrib/idn/mdnkit/wsock/common/make.wnt +++ b/contrib/idn/mdnkit/wsock/common/make.wnt @@ -10,8 +10,8 @@ # # The following License Terms and Conditions apply, unless a different # license is obtained from Japan Network Information Center ("JPNIC"), -# a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, -# Tokyo, Japan. +# a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, +# Chiyoda-ku, Tokyo 101-0047, Japan. # # 1. Use, Modification and Redistribution (including distribution of any # modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/wsock/common/printf.c b/contrib/idn/mdnkit/wsock/common/printf.c index 6c711a70e65..1a12d8a7d45 100644 --- a/contrib/idn/mdnkit/wsock/common/printf.c +++ b/contrib/idn/mdnkit/wsock/common/printf.c @@ -11,8 +11,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/wsock/config/make.wnt b/contrib/idn/mdnkit/wsock/config/make.wnt index dd6e6369382..0969cf022ef 100644 --- a/contrib/idn/mdnkit/wsock/config/make.wnt +++ b/contrib/idn/mdnkit/wsock/config/make.wnt @@ -10,8 +10,8 @@ # # The following License Terms and Conditions apply, unless a different # license is obtained from Japan Network Information Center ("JPNIC"), -# a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, -# Tokyo, Japan. +# a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, +# Chiyoda-ku, Tokyo 101-0047, Japan. # # 1. Use, Modification and Redistribution (including distribution of any # modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/wsock/config/mdnconf.tcl b/contrib/idn/mdnkit/wsock/config/mdnconf.tcl index 068aa16f904..f8af6c402c6 100644 --- a/contrib/idn/mdnkit/wsock/config/mdnconf.tcl +++ b/contrib/idn/mdnkit/wsock/config/mdnconf.tcl @@ -1,4 +1,4 @@ -# $Id: mdnconf.tcl,v 1.1 2001/06/09 00:30:55 tale Exp $ +# $Id: mdnconf.tcl,v 1.2 2002/02/08 05:42:08 marka Exp $ # # mdnconf.tcl - configure mDN Wrapper # @@ -12,8 +12,8 @@ # # The following License Terms and Conditions apply, unless a different # license is obtained from Japan Network Information Center ("JPNIC"), -# a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, -# Tokyo, Japan. +# a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, +# Chiyoda-ku, Tokyo 101-0047, Japan. # # 1. Use, Modification and Redistribution (including distribution of any # modified or derived work) in source and/or binary forms is permitted @@ -66,7 +66,7 @@ global registryKey registryEnc registryDef global filesCpy filesRen filesDel # mDNkit version -set version "2.1" +set version "2.2.2" set configFile "mdnconf.lst" ;# list of wrapped program set configBack "mdnconf.bak" ;# backup of previous data diff --git a/contrib/idn/mdnkit/wsock/make.wnt b/contrib/idn/mdnkit/wsock/make.wnt index 9608722c20b..71855af2523 100644 --- a/contrib/idn/mdnkit/wsock/make.wnt +++ b/contrib/idn/mdnkit/wsock/make.wnt @@ -10,8 +10,8 @@ # # The following License Terms and Conditions apply, unless a different # license is obtained from Japan Network Information Center ("JPNIC"), -# a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, -# Tokyo, Japan. +# a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, +# Chiyoda-ku, Tokyo 101-0047, Japan. # # 1. Use, Modification and Redistribution (including distribution of any # modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/wsock/wsock11/dlldef.h b/contrib/idn/mdnkit/wsock/wsock11/dlldef.h index b66989ecca0..14fa633edf6 100644 --- a/contrib/idn/mdnkit/wsock/wsock11/dlldef.h +++ b/contrib/idn/mdnkit/wsock/wsock11/dlldef.h @@ -11,8 +11,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/wsock/wsock11/dllfunc.c b/contrib/idn/mdnkit/wsock/wsock11/dllfunc.c index d5c7a57662d..b4755b22214 100644 --- a/contrib/idn/mdnkit/wsock/wsock11/dllfunc.c +++ b/contrib/idn/mdnkit/wsock/wsock11/dllfunc.c @@ -11,8 +11,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/wsock/wsock11/dllload.c b/contrib/idn/mdnkit/wsock/wsock11/dllload.c index f01c20e1966..929b1890d4c 100644 --- a/contrib/idn/mdnkit/wsock/wsock11/dllload.c +++ b/contrib/idn/mdnkit/wsock/wsock11/dllload.c @@ -11,8 +11,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/wsock/wsock11/dllmain.c b/contrib/idn/mdnkit/wsock/wsock11/dllmain.c index 5665b69ff23..9ef58006bc1 100644 --- a/contrib/idn/mdnkit/wsock/wsock11/dllmain.c +++ b/contrib/idn/mdnkit/wsock/wsock11/dllmain.c @@ -11,8 +11,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/wsock/wsock11/dllstub.c b/contrib/idn/mdnkit/wsock/wsock11/dllstub.c index 6fa21a1bbf7..d560cf9dc69 100644 --- a/contrib/idn/mdnkit/wsock/wsock11/dllstub.c +++ b/contrib/idn/mdnkit/wsock/wsock11/dllstub.c @@ -1,4 +1,4 @@ -/* $Id: dllstub.c,v 1.1 2001/06/09 00:30:55 tale Exp $ */ +/* $Id: dllstub.c,v 1.2 2002/02/08 05:42:14 marka Exp $ */ SOCKET PASCAL accept(SOCKET a0, struct sockaddr* a1, int* a2) diff --git a/contrib/idn/mdnkit/wsock/wsock11/make.wnt b/contrib/idn/mdnkit/wsock/wsock11/make.wnt index b634603c4bb..ddabc1224aa 100644 --- a/contrib/idn/mdnkit/wsock/wsock11/make.wnt +++ b/contrib/idn/mdnkit/wsock/wsock11/make.wnt @@ -10,8 +10,8 @@ # # The following License Terms and Conditions apply, unless a different # license is obtained from Japan Network Information Center ("JPNIC"), -# a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, -# Tokyo, Japan. +# a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, +# Chiyoda-ku, Tokyo 101-0047, Japan. # # 1. Use, Modification and Redistribution (including distribution of any # modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/wsock/wsock20/dlldef.h b/contrib/idn/mdnkit/wsock/wsock20/dlldef.h index 4c7496f47dd..17bd74727f0 100644 --- a/contrib/idn/mdnkit/wsock/wsock20/dlldef.h +++ b/contrib/idn/mdnkit/wsock/wsock20/dlldef.h @@ -11,8 +11,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/wsock/wsock20/dllfunc.c b/contrib/idn/mdnkit/wsock/wsock20/dllfunc.c index bb3fd1c6fab..3d794b2f4ee 100644 --- a/contrib/idn/mdnkit/wsock/wsock20/dllfunc.c +++ b/contrib/idn/mdnkit/wsock/wsock20/dllfunc.c @@ -11,8 +11,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/wsock/wsock20/dllload.c b/contrib/idn/mdnkit/wsock/wsock20/dllload.c index 7846c8c8a05..9e12d9df7df 100644 --- a/contrib/idn/mdnkit/wsock/wsock20/dllload.c +++ b/contrib/idn/mdnkit/wsock/wsock20/dllload.c @@ -11,8 +11,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/wsock/wsock20/dllmain.c b/contrib/idn/mdnkit/wsock/wsock20/dllmain.c index be0595bfdef..0fd3a4bd94b 100644 --- a/contrib/idn/mdnkit/wsock/wsock20/dllmain.c +++ b/contrib/idn/mdnkit/wsock/wsock20/dllmain.c @@ -11,8 +11,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/wsock/wsock20/dllstub.c b/contrib/idn/mdnkit/wsock/wsock20/dllstub.c index b1d99675d25..24bf0c1697a 100644 --- a/contrib/idn/mdnkit/wsock/wsock20/dllstub.c +++ b/contrib/idn/mdnkit/wsock/wsock20/dllstub.c @@ -1,4 +1,4 @@ -/* $Id: dllstub.c,v 1.1 2001/06/09 00:30:55 tale Exp $ */ +/* $Id: dllstub.c,v 1.2 2002/02/08 05:42:23 marka Exp $ */ SOCKET PASCAL accept(SOCKET a0, struct sockaddr* a1, int* a2) diff --git a/contrib/idn/mdnkit/wsock/wsock20/make.wnt b/contrib/idn/mdnkit/wsock/wsock20/make.wnt index 2c2a6e1b6b6..e9d8985a1a6 100644 --- a/contrib/idn/mdnkit/wsock/wsock20/make.wnt +++ b/contrib/idn/mdnkit/wsock/wsock20/make.wnt @@ -10,8 +10,8 @@ # # The following License Terms and Conditions apply, unless a different # license is obtained from Japan Network Information Center ("JPNIC"), -# a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, -# Tokyo, Japan. +# a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, +# Chiyoda-ku, Tokyo 101-0047, Japan. # # 1. Use, Modification and Redistribution (including distribution of any # modified or derived work) in source and/or binary forms is permitted