+++ /dev/null
-
- BIND 9 IDN support
-
- Japan Network Information Center (JPNIC)
-
-
-* Compilation & installation
-
-0. Prerequisite
-
-You have to build and install idnkit before building bind9.
-
-1. Running configure script
-
-Run `configure' in the top directory. See `README' for the
-configuration options.
-
-The following four options to `configure' are relevant to IDN. You
-should at least specify `--with-idn' option to enable IDN support.
-
- --with-idn[=IDN_PREFIX]
- To enable IDN support, you have to specify `--with-idn' option.
- The argument IDN_PREFIX is the install prefix of idnkit. If
- IDN_PREFIX is omitted, PREFIX (derived from `--prefix=PREFIX')
- is assumed.
-
- --with-libiconv[=LIBICONV_PREFIX]
- Specify this option if idnkit 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 executable 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 doesn'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 bind9.
-
- --with-idnlib=IDN_LIBSPEC
- With this option, you can explicitly specify the argument(s)
- to `cc' or `ld' to link the idnkit's library, `libidnkit'. If
- this option is not specified, `-L${PREFIX}/lib -lidnkit' is
- assumed, where ${PREFIX} is the installation prefix specified
- with `--with-idn' option above. You may need to use this
- option to specify extra arguments, for example,
- `--with-idnlib="-L/usr/local/lib -R/usr/local/lib -lidnkit"'.
-
-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.
-
-
-* Contact information
-
-Please see http://www.nic.ad.jp/en/idn/ for the latest news
-about idnkit.
-
-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.idnkit,v 1.1 2009/12/04 20:14:28 each Exp $
+++ /dev/null
-idn.conf.sample
-idnalias.conf.sample
-idn.conf.5
-idnalias.conf.5
-idnrc.5
-libidnkit.3
-libidnkitlite.3
-/idnconv
-/idnslookup
-/runidn
+++ /dev/null
-2003-03-16
- * idnkit 1.0 release.
-
- * DISTFILES, README, README.ja, INSTALL, INSTALL.ja: delete BIND8,
- Squid and libiconv patches.
-
-2003-03-13
- * wsock/config/idnconf.tcl: change the version number to '1.0'.
-
-2003-03-12
- * Makefile.in, lib/Makefile.in: Add 'make install-config' to
- Makefile target.
-
-2003-03-11
- * patch/bind9/bind-9.2.2-patch: created.
-
-2003-03-06
- * lib/punycode.c: idn__punycode_encode() outputs an error message
- if the input string is over PUNYCODE_MAXINPUT (the value is 3800).
-
-2003-03-05
- * include/idn/api.h, include/idn/checker.h,
- include/idn/nameprep.h, include/idn/res.h, include/idn/version.h,
- lib/Makefile.in, lib/checker.c, lib/idn.conf.sample.in,
- lib/mapper.c, lib/nameprep.c, lib/nameprepdata.c,
- lib/normalizer.c, lib/tests/checker.tsy, lib/tests/mapper.tsy,
- lib/tests/nameprep.tsy, lib/tests/normalizer.tsy,
- man/idn.conf.5.in, tools/idnconv/idnconv.1, wsock/bin/idn.conf:
- Add NAMEPREP version 'RFC3491', and remove 'nameprep-11'.
-
-2003-02-18
- * lib/tests/api-init1.tsy, lib/tests/api-init2.tsy,
- lib/tests/api-init3.tsy, lib/tests/api-init4-1.tsy,
- lib/tests/api-init4-2.tsy, lib/tests/api-init4-3.tsy,
- lib/tests/api-init5-1.tsy, lib/tests/api-init5-2.tsy,
- lib/tests/api-init5-3.tsy, lib/tests/api.tsy, lib/tests/converter.tsy,
- lib/tests/res.tsy, lib/tests/punycode.c: Change ACE prefix of Punycode
- from `zq--' to `xn--'.
-
-2003-02-13
- * lib/make.wnt: remove dependencies on obsolete files.
-
- * INSTALL, INSTALL.ja, configure.in, aclocal.m4: Delete configure's
- --with-punycode-prefix option.
-
-2003-02-05
- * lib/res.c: improve performance when encoding/decoding
- loooooooong domain names.
-
-2003-01-22
- * lib/res.c: idn_res_encodename() and idn_res_decodename() in
- libidnkit returns `idn_invalid_name' if local converter is not
- available.
-
-2003-01-20
- * lib/normalize.c, lib/unormalize.c, include/idn/unormalize.h,
- lib/tests/normalizer.tsy: unicode-form-c or unicode-form-c/3.2.0 is
- no longer supported.
-
- * lib/mapselector.c, lib/tests/mapselector.tsy:
- idn_mapselector_add() outputs an error message if invalid scheme
- name or TLD is given.
-
- * lib/checker.c, lib/normalizer.c, lib/mapselector.c, lib/res.c:
- modify error messages.
-
- * lib/result.c: modify an error message for `idn_invalid_length'.
-
-2003-01-16
- * lib/checker.c, lib/idn.conf.sample.in, lib/mapper.c, lib/nameprep.c,
- lib/normalizer.c, lib/unicode.c, lib/tests/checker.tsy,
- lib/tests/mapper.tsy, lib/tests/nameprep.tsy, lib/tests/normalizer.tsy,
- man/idn.conf.5.in, tools/idnconv/idnconv.1:
- delete support for nameprep-03 and nameprep-09.
-
- * lib/unicodedata_301.c, lib/unicodedata_310.c, DISTFILES:
- unicodedata_301.c and unicodedata_310.c are removed.
-
-2003-01-14
- * tools/idnconv/idnconv.c, tools/idnconv/util.c, tools/idnconv/util.h:
- remove the restriction on the length of input lines. idnconv can
- now handle very long lines.
-
-2003-01-10
- * lib/converter.c: fix a bug in extending intermediate buffer
- in converter_iconv_convtoucs4(), which causes incorrect
- codeset conversion when the input string is very long.
-
-2002-12-06
- * idnkit 1.0pr2 release (preview release).
-
-2002-12-03
- * lib/mapper.c, lib/normalize.c: Don't check whether an input string
- is STD3 ASCII label.
- lib/res.c: Skip localmap if the string is STD3 ASCII label.
-
-2002-12-02
- * lib/tests/iconvchk.c, lib/tests/Makefile.in: enable to check
- whether codeset names "eucJP" and "SJIS" are available in iconv.
-
-2002-12-01
- * tools/runidn/stub.c: use RTLD_NEXT for dlsym() if it is available.
-
-2002-11-29
- * almost all files: change the license terms.
-
-2002-11-25
- * lib/tests/codeset.h: define character encoding names here.
- * lib/tests/api-init1.tsy, lib/tests/api-init2.tsy,
- lib/tests/api-init3.tsy, lib/tests/api-init4-3.tsy,
- lib/tests/api-init5-3.tsy, lib/tests/converter.tsy,
- lib/tests/mapselector.tsy, lib/tests/resconf.tsy: include `codeset.h'.
- lib/tests/api-init4-1.tsy, lib/tests/api-init4-2.tsy,
- lib/tests/api-init5-1.tsy, lib/tests/api-init5-2.tsy,
- lib/tests/mapselector.tsy, lib/tests/resconf.tsy:
- Delete the unused cpp macro EUCJP_ENCODING_NAME.
- * INSTALL, INSTALL.ja: describe `lib/tests/codeset.h'.
-
- * lib/converter.c: Fix bugs in converter_uescape_convfromucs4()
- and converter_uescape_convtoucs4() that libidnkit might crash
- when `from' is very long.
-
-2002-11-15
- * Makefile.in: `make distclean' also removes `libtool'.
-
-2002-10-25
- * lib/resconf.c: enable the IDN_CONVERTER_RTCHECK flag when it
- calls idn_converter_create().
- * tools/idnconv/util.c: enable the IDN_CONVERTER_RTCHECK flag
- when it calls idn_converter_setlocalconvertername() or
- idn_converter_setidnconvertername().
-
-2002-09-20
- * wsock/README.txt, wsock/README_j.txt: add description on
- "Force local DLL reference" button.
-
-2002-09-19
- * idnkit 1.0pr1 release (preview release).
-
-2002-09-13
- * README, README.ja: update URIs.
-
- * lib/Makefile.in, lib/tests/Makefile.in: generate libidntest and
- libidntestlite for test programs.
-
-2002-09-09
- * wsock/wsock11/dlldef.h, wsock/wsock11/dllfunc.c,
- wsock/wsock11/dllload.c, wsock/wsock11/dllmain.c,
- wsock/wsock20/dlldef.h, wsock/wsock20/dllfunc.c,
- wsock/wsock20/dllload.c, wsock/wsock20/dllmain.c: take out
- DLL load/unload from DllMain(). load/unload is delayed until
- it is really necessary.
- * wsock/common/checkdll.c, wsock/common/wrapcommon.h: move DLL
- load/unload functions from wsock/{ws11,ws20}/dllmain.c.
- * wsock/printf.c: make logging more effective.
-
- * DISTFILES: remove wsock/common/dllmain.c, which is no longer used.
-
-2002-09-05
- * lib/mapper.c: fix a bug that idn_mapper_add(ctx, "filemap") aborts.
-
-2002-09-04
- * lib/nameprep.c: GCC says that a variable declared in
- idn_nameprep_isvalidbidi() might be used uninitialized. Fixed.
-
- * wsock/common/convert.c, wsock/common/printf.c,
- wsock/common/wrapcommon.h: always reset log output callback procedure
- before calling idnkit library functions.
- * wsock/wsock11/dllmain.c, wsock/wsock20/dllmain.c: reset
- log output callback before unloading.
-
-2002-09-03
- * lib/tests/testygen, lib/tests/testsuite.c, lib/tests/testsuite.h:
- add verbose and partial exec modes.
-
-2002-08-29
- * idnkit 020829 snapshot release.
-
-2002-08-28
- * lib/tests/testygen: fix generation of main(). It didn't destroy
- a testsuite context.
- * lib/tests/testsuite.c: fix a double free bug in
- idn_testsuite_destroy().
-
- * lib/filemapper.c: fix one memory leak in read_file().
- * lib/filemapper.c: fix buffer expansion bug in ucsbuf_grow().
- * lib/res.c: plug up memory leak in idn_res_decodename().
-
- * lib/tests/setenv.c: fix memory leak bug.
-
- * lib/filemapper.c, lib/ucsmap.c, lib/ucsset.c: fix misuse of
- realloc().
-
- * lib/converter.c: plug up memory leak in
- converter_iconv_openfromucs4() and converter_iconv_opentoucs4().
-
-2002-08-27
- * lib/tests/Makefile.in: support the case where the build directory
- is different from the source directory.
-
- * lib/tests/Makefile.in: perform tests for lite library only if
- `--enable-liteonly' has been specified at configuration.
-
- * lib/tests/setenv.c, lib/tests/setenv.h, lib/tests/Makefile.in,
- configure.in: support systems which lack setenv() and/or unsetenv().
-
- * configure.in, lib/Makefile.in, lib/idn.conf.sample, INSTALL,
- INSTALL.ja: delete `--with-preference'.
-
-2002-08-26
- * lib/tests/testygen: new option `-L', which suppresses `#line'
- cpp lines on output.
-
- * DISTFILES: Add files for tests.
- * INSTALL, INSTALL.ja: add the `Test' section.
-
- * lib/resconf.c: fix trace message of idn_resconf_create().
-
- * win/README.WIN: update the contents.
-
- * wsock/config/idnconf.tcl: do not display `force local DLL
- reference' button on Windows 95 and NT, since it is meaningless
- for these old OSes.
-
-2002-08-22
- * lib/mapper.c, lib/normalizer.c: add the procedure for the case
- that ctx->nschems is 0 to idn_mapper_map() and
- idn_normalizer_normalize().
-
- * lib/delimitermap.c: idn_delimitermap_add() and
- idn_delimitermap_addall() reject a request to add an invalid
- codepoint.
-
-2002-08-21
- * lib/api.c: fix a bug that api_nameinit() didn't call
- idn_resconf_initialize().
- * lib/api.c: don't set the `ininitialized' flag if idn_nameinit()
- returns with an error.
- * lib/api.c, include/idn/api.h: add idn__setconffile().
-
- * lib/mapselector.c: idn_mapselector_map() and idn_mapselector_map2()
- now accept `tld' beginning with a dot.
-
-2002-08-20
- * wsock/common/checkdll.c: back out 0812 change because the check
- method doesn't seem to work correctly on WinMe.
- * wsock/wsock11/dllload.c, wsock/wsock20/dllload.c: add some trace
- statements.
- * wsock/config/idnconf.tcl: do not install winsock2 wrapper on
- Win98/Me.
-
- * lib/tests/testsuite.c, lib/tests/testsuite.h, lib/tests/testygen:
- exit the testcase if ASSERT fails.
-
- * lib/tests/testsuite.c, lib/tests/testsuite.h:
- replace ASSERT_PTRNOTNULL with ASSERT_PTR_NE.
-
- * lib/tests/testutil.c, lib/testuil.h: new file.
- It provides create_conf_file().
-
-2002-08-19
- * lib/resconf.c: if application calls idn_resconf_create() before
- idn_resconf_initialize(), idnkit returns `idn_failure'.
-
-2002-08-15
- * lib/tests/testsuite.c, lib/tests/testsuite.h, lib/tests/testygen:
- add two assertion macros: ASSERT_PTR and ASSERT_PTRNOTNULL.
-
- * lib/converter.c: fix some warning messages.
-
-2002-08-14
- * lib/resconf.c: fix a but that idnkit aborts if a line in config
- file lacks an argument.
-
- * wsock/common/hook.c, wsock/wsock11/dllfunc.c, wsock/wsock20/dllfunc.c
- : make name resolver APIs return the domain name verbatim (instead
- of returning error) when name decoding fails.
-
-2002-08-13
- * lib/Makefile.in, lib/checker.c, lib/converter.c, lib/delimitermap.c,
- lib/filechecker.c, lib/filemapper.c, lib/mapper.c, lib/mapselector.c,
- lib/nameprep.c, lib/normalizer.c, lib/punycode.c, lib/race.c,
- lib/resconf.c, lib/unormalize.c: delete main routines for test.
-
- * lib/tests/: new directory.
- * configure.in: Check for path of perl command.
-
- * wsock/config/idnconf.tcl: correct OS version check routine.
-
-2002-08-12
- * lib/make.wnt: change amcacez.* to punycode.*.
- * wsock/common/encoding.c, wsock/common/dump.c, wsock/common/convert.c,
- wsock/commn/hook.c, wsock/common/printf.c, wsock/common/wrapcommon.h,
- wsock/wsock11/dllfunc.c, wsock/wsock11/dllload.c,
- wsock/wsock20/dllfunc.c, wsock/wsock20/dllload.c: add extra argument
- (specifying buffer length) to some interface functions, in order to
- prevent possible buffer overflow.
- * wsock/common/printf.c: increase message buffer size.
- * wsock/wsock11/dllmain.c, wsock/wsock20/dllmain.c: call initialize
- routine before first log output.
- * wsock/common/checkdll.c: use light-weight DLL checking using
- LoadLibraryEx.
-
- * lib/res.c: fix bugs in idn_res_encodename(), idn_res_decodename()
- and idn_res_decodename2(). They fell into infinite loops when
- given `tolen' is 0.
-
-2002-08-08
- * lib/resconf.c, lib/res.c: remove unused functions and variables.
-
- * lib/Makefile.in tools/idnconv/Makefile.in,
- tools/runidn/Makefile.in: add @CPPFLAGS@ to $(CFLAGS).
-
- * lib/res.c: idn_res_decodename2() copies `from' to `to' and
- returns immediately when the `actions' argument is 0.
-
-2002-08-07
- * lib/resconf.c: fix a bug in parse_conf() that if `nameprep' or
- `idn-encoding' directive is defined twice, default value is set
- to the directive.
- * lib/resconf.c: cosmetic changes.
- delete parse_map(), parse_normalize(), parse_prohibit(),
- parse_unassigned() and parse_bidi().
-
- * lib/amcacez.c, include/idn/amcacez.h: renamed to lib/punycode.c
- and include/idn/punycode.h.
-
- * include/idn/converter.h, lib/converter.h: define
- idn_converter_getrealname() externally instead of statically
- defined get_realname().
-
-2002-08-06
- * lib/resconf.c: arrange processes of obsolete commands in
- idn_res_loadfile().
-
- * INSTALL, INSTALL.ja, man/idn.conf.5.in, tools/idnconv/idnconv.1:
- remove description of RACE and AMC-ACE-Z.
-
- * lib/resconf.c: fix a bug in handling of local-converter.
-
- * lib/converter.c: add initialization check in
- idn_converter_aliasfile() and idn_converter_resetalias().
-
- * lib/converter.c: free context memory at some right places in
- idn_converter_create().
-
-2002-08-05
- * configure.in, lib/Makefile.in, lib/aliaslist.sh: also add the
- "UTF-8" entry if --with-utf8=NAME option of configure is specified,
- and NAME is not "UTF-8".
-
- * tools/idnconv/idnconv.c: call idn_converter_destroy() after
- idn_resconf_getidnconverter() and idn_resconf_getlocalconverter()
- in main().
-
- * lib/res.c: fix a bug in idn_res_decodename2().
- When the function called idn_res_decodename(), assertion check in
- idn_res_decodename() may have failed.
-
- * lib/res.c: call idn_delimitermap_destroy() after
- idn_resconf_getdelimitermap() in idn_res_encodename() and
- idn_res_decodename().
-
-2002-08-02
- * lib/res.c: fix mismatched pointer type in idn_res_decodename2().
- * lib/res.c: fix a bug in handling of `auxencoding', in
- idn_res_decodename2().
-
-2002-08-01
- * lib/resconf.c: fix two memory leaks in parse_conf().
-
- * lib/aliaslist.c: fix an error of size measurement in
- create_item().
-
-2002-07-31
- * lib/converter.c: AMC-ACE-Z and RACE are now extra ACE.
-
-2002-07-30
- * idnkit 020730 snapshot release.
-
- * lib/resconf.c: fix a bug in idn_resconf_create() that it
- misses initializing `ctx->bidi_checker'.
-
-2002-07-29
- * tools/idnconv/idnconv.1: describe bidi character check.
-
-2002-07-24
- * lib/resconf.c: force to add bidi checker at parsing nameprep
- entry in config file.
-
-2002-07-19
- * include/idn/checker.h, include/idn/nameprep.h,
- include/idn/res.h, include/idn/resconf.h, man/idn.conf.5.in,
- man/libidnkit.3.in, lib/checker.c, lib/nameprep.c, lib/res.c,
- lib/resconf.c, tools/idnconv/idnconv.c: add bidirectional label
- check routine.
-
- * include/idn/api.h, include/idn/res.h, lib/api.c, lib/res.c,
- tools/idnconv/idnconv.c, tools/idnconv/util.c,
- tools/idnconv/util.h: change the type of action flag at conversion
- functions and define it as ``idn_action_t''.
-
-2002-07-18
- * wsock/config/idnconf.tcl: implement .exe.local file
- creation/deletion feature.
- * lib/make.wnt: update list of files according to the recent
- changes of the library.
-
-2002-07-12
- * include/idn/nameprpe.h: define idn_biditype_t.
- * lib/nameprep_template.c, lib/nameprep.c: support for bidi type
- check is added.
-
-2002-07-11
- * idnkit 020711 snapshot release.
-
-2002-07-09
- * man/Makefile.in, man/idn.conf.5.in: force to make and install
- manpage of idnalias.conf (merely a copy of idn.conf's manpage).
-
-2002-07-08
- * DISTFILES: `lib/dude.c' and `include/idn/dude.h' are removed.
- * DISTFILES: `util/Makefile' is added.
-
- * tools/idnconv/idnconv.c: fix typo in decode_file().
-
- * tools/idnconv/idnconv.c: Support "-reverse -out ACE".
-
- * lib/res.c: fix bugs in label_idndecode() and label_idnencode_ace().
- If UCS4 to UTF-8 conversion is failed with idn_buffer_overflow,
- we must extends the size of local buffer and try the conversion
- again.
-
-2002-07-05
- * tools/idnconv/idnconv.c: treat input as the string of the local
- encoding specified by "-out" option at reverse conversion.
-
- * include/idn/api.h, lib/api.c: add idn_decodename2() function.
-
- * include/idn/res.h, lib/res.c: add idn_res_decodename2()
- function.
-
- * include/idn/res.h, lib/res.c: restore IDN_DELIMMAP flag.
-
-2002-07-02
- * lib/unicodedata_320.c, lib/checker.c, lib/idn.conf.sample.in,
- lib/mapper.c, lib/nameprep.c, lib/nameprepdata.c, lib/normalizer.c,
- lib/unicode.c, unicodedata_320.c, include/idn/nameprep.c, DISTFILES,
- man/idn.conf.5.in: Support NAMEPREP-11 which adopts Unicode-3.2.
- Support for NAMEPREP-06, -08, -09 are removed.
-
-2002-07-01
- * tools/idnconv/idnconv.1: added `-A' option.
-
- * include/idn/res.h, lib/res.c: redefine IDN_ENCODE_QUERY,
- IDN_DECODE_QUERY, IDN_ENCODE_STORED, IDN_DECODE_STORED, IDN_ENCODE_APP
- and IDN_DECODE_APP.
-
-2002-06-26
- * lib/resconf.c, include/idn/resconf.h: define
- idn_resconf_getauxidnconverter(), idn_resconf_setauxidnconverter()
- and idn_resconf_setauxidnconvertername().
-
-2002-06-20
- * lib/res.c: use action flags at round trip check.
-
-2002-06-19
- * include/idn/res.h, lib/res.c: remove IDN_UNASCHECK flag from
- IDN_NAMEPREP.
-
- * include/idn/res.h, lib/res.c: add IDN_ENCODE_QUERY,
- IDN_DECODE_QUERY, IDN_ENCODE_STORED, and IDN_DECODE_STORED flags.
-
- * include/idn/res.h, lib/res.c: IDN_ENCODE_APP and IDN_DECODE_APP
- have same value as flags for conversion of the query string
- (IDN_ENCODE_QUERY and IDN_DECODE_QUERY) now.
-
-2002-06-17
- * include/idn/Makefile.in, lib/Makefile.in, lib/converter.c,
- tools/runidn/Makefile.in, configure, INSTALL, INSTALL.ja:
- delete DUDE support.
- * include/idn/dude.h, lib/dude.c: deleted.
-
- * README, README.ja: update URL of mdnkit FAQ.
-
- * include/idn/res.h, lib/res.c, lib/idn.conf.sample.in,
- lib/delimitermap.c, man/libidnkit.3.in: add default delimiters
- defined in IDNA specification and always forced to do delimiter
- mapping.
-
- * lib/resconf.c, man/idn.conf.5.in: remove "delimiter-map" entry
- support of configuration file.
-
- * tools/idnconv/idnconv.c, tools/idnconv/idnconv.1: remove
- "-delimiter-map" and "-d" options.
-
-2002-06-13
- * wsock/common/encoding.c: fix registry key setting so that
- it matches what documents say.
-
-2002-06-11
- * include/idn/delimitermap.h: remove idn_delimitermap_fix()
- declaration.
-
-2002-06-10
- * wsock/wsock2/dllfunc.c: fix a bug which makes wrapping of
- getaddrinfo()/getnameinfo() always fail.
-
-2002-06-05
- * wsock/wsock2/dllfunc.c, wsock/wsock2/dllstub.c,
- wsock/wsock2/ws2_32.def: add new APIs introduced by WinXP.
-
-2002-05-22
- * tools/idnconv/util.c: reset alias information before loading
- alias information file.
-
-2002-05-20
- * idnkit 1.0rc1 release.
-
- * include/idn/res.h: fix typo in a comment.
-
-2002-05-17
- * include/idn/version.h: set IDNKIT_VERSION to "1.0rc1".
-
-2002-05-13
- * tools/rpm/mdnkit.spec: renamed to idnkit.spec, and revised
- for idnkit-1.0.
-
-2002-05-09
- * tools/idnconv/idnconv.c: now `idnconv -r' can convert a file
- from ACE to ACE.
-
-2002-05-08
- * lib/idn.conf.sample.in: delete "encoding-alias-file" entry
- because idnkit does not support it any longer.
-
- * lib/nameprepdata.c lib/nameprep.c, lib/mapper.c, lib/normalizer.c,
- lib/checker.c, lib/idn.conf.sample.in, man/idn.conf.5.in,
- tools/idnconv/idnconv.1: support NAMEPREP-09.
-
- * lib/mapper.c, lib/normalizer.c, lib/checker.c, lib/mapselector.c,
- * lib/res.c, lib/race.c: spmplify local buffer managements.
-
- * tools/idnconv/idnconv.c, tools/idnconv/util.c, tools/idnconv/util.h:
- fix a bug that wrong local encoding is set to a resconf context.
-
-2002-05-07
- * tools/idnconv/util.c: delete set_reverse_context().
- * tools/idnconv/idnconv.c: fix a serious bug in -reverse conversion.
-
-2002-05-04
- * include/idn/util.h, lib/converter.c, lib/resconf.c, lib/util.c:
- simplify Windows registry retrieval function interface.
- * wsock/common/convert.c, wsock/common/dump.c,
- wsock/common/encoding.c, wsock/common/wrapcommon.h: fix type
- conflicts.
- * wsock/wsock11/dlldef.h, wsock/wsock11/dllmain.c,
- wsock/wsock20/dlldef.h, wsock/wsock20/dllmain.c: fix typo.
- * wsock/common/jpnicmdn.def, wsock/common/jpnicmdn.h,
- wsock/config/mdnconf.tcl: removed.
- * DISTFILES: add new files, remove obsolete files.
-
-2002-05-02
- * tools/idnconv/util.c: create a new function set_reverse_context().
- * tools/idnconv/idnconv.c: fix a bug in handing of reference count
- of idn_resconf_t contexts.
-
- * lib/amcacez.c, lib/race.c, lib/dude.c, lib/delimitermap.c,
- lib/checker.c, lib/mapper.c, lib/mapselector.c, lib/converter.c,
- lib/normalizer.c, lib/res.c, lib/ucs4.c, lib/debug.c,
- include/idn/debug.h: output valuable trace logs for developpers.
-
- * lib/res.c: fix double free bugs.
-
- * lib/checker.c, include/idn/checker.h: for symbols of the checker
- module, use `idn_' prefix instead of `idn__' by default.
-
- * wsock/common/checkdll.c, wsock/common/convert.c,
- wsock/common/dump.c, wsock/common/encoding.c, wsock/common/hook.c,
- wsock/common/printf.c, wsock/common/make.wnt,
- 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/wsock20/dlldef.h, wsock/wsock20/dllfunc.c,
- wsock/wsock20/dllload.c , wsock/wsock20/dllmain.c,
- wsock/wsock20/dllstub.c, wsock/wsock20/make.wnt: adapt idnkit
- interface, change name from `mDN Wrapper' to `idn wrapper'.
- * wsock/common/wrapcommon.h: created.
- * wsock/config/idnconf.tcl: created.
-
-2002-05-01
- * include/idn/util.h, lib/converter.c, lib/resonf.c, lib/util.c:
- Move alias information initialization scheme from the resconf
- context initialization to the converter module initialization.
-
- * tools/idnconv/idnconv.c: fix a bug in main().
- Wrong localconverer/idnconverter may be set to resconf2.
-
-2002-04-30
- * lib/res.c, tools/idnconv/idnconv.c: accept non-ace encoding as
- idn-encoding and ace encoding as local-encoding at normal conversion.
-
-2002-04-23
- * man/idn.conf.5.in: use the term "unassigned codepoint", not
- "unassigned character".
-
-2002-04-19
- * include/idn/api.h, include/idn/res.h:
- delete cpp macros for backward compatibility, since they are defined
- in include/mdn/api.h and include/mdn/res.h.
-
- * include/idn/checker.h, include/idn/converter.h,
- include/idn/delimitermap.h, include/idn/filechecker.h,
- include/idn/filemapper.h, include/idn/mapper.h,
- include/idn/mapselector.h, include/idn/nameprep.h,
- include/idn/normalizer.h, include/idn/unormalize.h:
- fix obsolete descriptions.
-
-2002-04-17
- * idnkit 1.0beta2 release.
-
-2002-04-16
- * configure.in: check AC_FIND_SYSTEM_SHOBJ(libnsl),
- AC_CHECK_LIB(socket, socket) and AC_CHECK_LIB(nsl, inet_addr)
- in case of --enable-runidn.
-
-2002-04-15
- * tools/idnconv/idnconv.1: fix the "REVERSE CONVERSION MECHANISM"
- section.
-
-2002-04-12
- * lib/res.c, include/idn/res.h: rename `idn_res_actionstostring()'
- to `idn__res_actionstostring()'.
- * lib/mapper.c, lib/checker.c, lib/converter.c: output trace log
- which shows scheme a name the module is going to perform.
-
-2002-04-10
- * man/idn.conf.5.in: delete the "SETFILE SECTION".
-
-2002-04-09
- * tools/runidn/resolver.c: call idn_nameinit() and then call
- idn_encodename() or idn_decodename().
-
-2002-04-08
- * include/idn/export.h: created.
- * include/idn/Makefile.h, DISTFILES: add export.h.
- * include/idn/api.h, include/idn/converter.h, include/idn/debug.h,
- include/idn/delimitermap.h, include/idn/localencoding.h,
- include/idn/log.h, include/idn/mapper.h, include/idn/mapselector.h,
- include/idn/nameprep.h, include/idn/normalizer.h, include/idn/res.h,
- include/idn/resconf.h, include/idn/result.h, include/idn/ucs4.h,
- include/idn/ucsmap.h, include/idn/ucsset.h, include/idn/unormalize.h,
- include/idn/utf8.h, include/idn/version.h: include export.h. mark
- exportable functions with IDN_EXPORT macro.
- * lib/make.wnt: modify to create DLLs.
- * configure.in: add existance check for pwd.h.
- * configure, include/config.h.in: rebuilt.
- * lib/resconf.c, lib/localencoding.c: port to Win32.
- * include/mdn/version.h: include <idn/version.h> for the declaration
- of idn_version_getstring().
- * tools/make.wnt, tools/idnconv/make.wnt: created.
- * make.wnt: add tools subdirectory.
- * DISTFILES: add tools/make.wnt and tools/idnconv/make.wnt.
-
- * include/idn/mapselector.h, lib/mapselector.c:
- add idn_mapselector_getnotld() and idn_mapselector_getdefaulttld().
- Instead delete idn_mapselector_no_tld and idn_mapselector_default.
-
- * lib/api.c, include/mdn/api.h: define mdn_nameinit(),
- mdn_encodename() and mdn_decodename().
-
- * DISTFILES: delete `patch/bind8/bind-8.2.3-patch' and
- `tools/rpm/mdnsproxy.init'.
-
- * include/idn/aliaslist.h, include/idn/converter.h,
- lib/aliaslist.c, lib/converter.c: enable to add an alias
- information item to either top or bottom of the alias information
- list.
-
-2002-04-05
- * include/idn/resconf.h, lib/resconf.c: add
- idn_resconf_setdefaults().
- * lib/resconf.c: call idn_converter_aliasfile() at parsing the
- default alias information file automatically.
- * include/idn/api.h, lib/api.c: modify api_nameinit() to enable to
- choose initialization scheme.
-
- * tools/idnconv/idnconv.c, tools/idnconv/idnconv.1: delete `-map',
- `-normalize', `-prohibit' and `-unassigned' options.
- * tools/idnconv/idnconv.c: use default configuration if `-noconf'
- is specified.
-
-2002-04-04
- * tools/idnconv/idnconv.1: fix obsolete description.
- * tools/runidn/runidn.1: likewise.
-
-2002-04-02
- * configure.in: add --enable-mdnkit-compat option.
- * include/mdn/Makefile.in, include/mdn/api.h,
- include/mdn/localencoding.h, include/mdn/log.h, include/mdn/res.h,
- include/mdn/resconf.h, include/mdn/result.h, include/mdn/utf8.h,
- include/mdn/version.h: re-added.
- * include/Makefile.in: add `idn' to SUBDIRS.
- * lib/Makefile.in, tools/idnconv/Makefile.in, tools/runidn/Makefile.in,
- man/Makefile.in: support --enable-mdnkit-compat.
- * lib/localencoding.c, lib/resconf.c: ditto.
- * INSTALL: ditto.
-
- * Makefile.in, include/Makefile.in, include/idn/Makefile.in,
- include/mdn/Makefile, lib/Makefile.in, tools/Makefile.in,
- tools/idnconv/Makefile.in, tools/runidn/Makefile.in,
- man/Makefile.in, map/Makefile.in: support DESTDIR and distclean.
-
-2002-03-28
- * include/idn/api.h: enclose the contents with `extern "C" {...}'
- if C++ compiler is used.
-
-2002-03-27
- * man/Makefile.in: generate and install idnrc.5.
- * man/idn.conf.5.in: describe the user configuration file ~/.idnrc.
-
- * tools/idnconv/idnconv.1: add missing description of -nolengthcheck,
- -noasciicheck and -noroundtrip options.
-
- * lib/checker.c, lib/mapper.c, lib/normalizer.c,
- lib/idn.conf.sample.in, tools/idnconv/idnconv.1, man/idn.conf.5.in:
- Add nameprep-08 support, and delete -05 and -07 instead.
-
-2002-03-26
- * idnkit 1.0beta1 release.
-
- * NEWS: add description about Major changes in mDNkit 2.3, 2.3.1,
- 2.4.
- * NEWS: add description about Major changes in idnkit
- version1.0beta1.
-
-2002-03-25
- * DISTFILES: add bind-8.3.1-patch and bind-9.2.0-patch.
- delete bind-9.1.3-patch.
-
-2002-03-22
- * lib/mapselector.c: fix a bug in handling of the special TLD `-'.
-
-2002-03-20
- * lib/converter.c: fix a bug in idn_converter_convtoucs4().
-
- * lib/res.c: fix a bug that IDN_LENCHECK overlook an empty label
- generated by nameprep-map or localmap (e.g. "XXX.\u{200b}").
- * lib/res.c: fix a bug that libidnkit aborts when it decodes "."
-
- * lib/Makefile.in, tools/runidn/Makefile.in: change library
- version.
- * include/idn/version.h: set version `1.0beta1'.
-
- * configure, configure.in: modify some error messages.
-
-2002-03-19
- * man/idn.conf.5.in, lib/idn.conf.sample.in, tools/idnconv/idnconv.1:
- delete DUDE from a list of supported encodings.
-
- * lib/aliaslist.c, lib/debug.c, lib/strhash.c, lib/ucs4.c: they are
- private modules.
-
- * include/idn/resolver.h: moved to tools/runidn/resolver.h.
-
- * tools/runidn/Makefile.in, tools/idnconv/Makefile.in:
- insert `-I$(srcdir)' into INCS.
-
-2002-03-18
- * aclocal.m4, configure, configure.in, include/config.h.in,
- Makefile.in, map/Makefile.in, src/lib/idn.conf.sample.in,
- tools/idnconv/selectiveencode.h: replace `MDN' with `IDN'.
-
- * lib/aliaslist.c: change WARNING message into INFO message when
- idn_aliaslist_aliasfile() finds an error in alias information
- file.
- * lib/resconf.c: change user configuration file name.
- * lib/resconf.c: add procedure to check the existence of default
- alias information file before letting converter parse the file.
- * lib/resconf.c: call idn_converter_aliasfile() even when basic
- configuration files are not found at all.
-
- * tools/idnconv/idnconv.c: use hexadecimal numbers for values
- associated with FLAGS_ macros.
-
- * include/idn/result.h, lib/result.c: rename `idn_too_long' to
- `idn_invalid_length'.
- * lib/res.c: In IDN_LENCHECK, return `idn_invalid_length' for an
- empty label, but return `idn_success'' for the "." domain name.
-
- * lib/converter.c: DUDE is now extra ACE.
-
- * lib/mapselector.c, include/idn/mapselector.h: change types of
- `idn_mapselector_no_tld' and `idn_mapselector_default' from
- (const unsigned long []) to (const unsigned long *).
-
- * DISTFILES: syncronize current source structure.
-
-2002-03-14
- * configure, configure.in, include/config.h.in: add
- `--enable-runidn' option to configure script. Unless the value
- for this option is set to `yes', runidn command will not be
- complied and installed.
-
-2002-03-13
- * man/libidnkit.3.in: describe new idnkit API.
- * man/idn.conf.5.in: use the term `internationalized' rather than
- `multilingual'.
- * lib/Makefile.in: create idnalias.conf.sample correctly even if
- the object directory is different from the source directory.
-
-2002-03-12
- * configure, configure.in, lib/Makefile.in: add
- `--enable-liteonly' option to configure script and change
- description of lib/Makefile.in for designating compilation and
- installation of libidnkitlite alone.
-
-2002-03-08
- * mDNkit is now renamed to idnkit. Also files, directories,
- commands and function names are renamed (e.g. mdnconv -> idnconv).
-
-2002-03-07
- * include/mdn/nameprep.h, lib/nameprep.c, lib/resconf.c: enable
- libmdn(lite) to run without configuration file and alias file, and
- also enable to support user configuration file.
-
-2002-03-05
- * include/mdn/aliaslist.h, lib/aliaslist.c: change year
- description to `2002' in copyright notice.
- * lib/aliaslist.c: fix the initialization scheme of structure's
- members at creation of both list item and list itself.
- * lib/aliaslist.c: fix the order of function free() call when
- an error occurs at list item creation.
- * make.wnt: remove descriptions related to mdnsproxy.
-
-2002-03-04
- * include/mdn/aliaslist.h, include/mdn/amcacez.h, include/mdn/assert.h,
- include/mdn/checker.h, include/mdn/converter.h, include/mdn/debug.h,
- include/mdn/delimitermap.h, include/mdn/dude.h,
- include/mdn/filechecker.h, include/mdn/filemapper.h,
- include/mdn/localencoding.h, include/mdn/log.h, include/mdn/logmacro.h,
- include/mdn/mapper.h, include/mdn/mapselector.h,
- include/mdn/nameprep.h, include/mdn/normalizer.h, include/mdn/race.h,
- include/mdn/res.h, include/mdn/resconf.h, include/mdn/resolver.h,
- include/mdn/result.h, include/mdn/strhash.h, include/mdn/ucs4.h,
- include/mdn/ucsmap.h, include/mdn/ucsset.h, include/mdn/unicode.h,
- include/mdn/unormalize.h, include/mdn/utf8.h, include/mdn/util.h,
- include/mdn/version.h: enclose the contents with `extern "C" {...}'
- if C++ compiler is used.
- * DISTFILES, Makefile.in, configure, configure.in:
- remove descriptions related to mdnsproxy.
-
-2002-03-01
- * include/mdn/result.h, lib/result.h: define new error code
- `mdn_too_long'.
- * lib/res.c: return `mdn_too_long' if MDN_LENCHECK is failed.
+++ /dev/null
-# $Id: DISTFILES,v 1.1 2003/06/04 00:25:02 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/idn/Makefile.in
-include/idn/aliaslist.h
-include/idn/api.h
-include/idn/assert.h
-include/idn/checker.h
-include/idn/converter.h
-include/idn/debug.h
-include/idn/delimitermap.h
-include/idn/export.h
-include/idn/filechecker.h
-include/idn/filemapper.h
-include/idn/localencoding.h
-include/idn/log.h
-include/idn/logmacro.h
-include/idn/mapper.h
-include/idn/mapselector.h
-include/idn/nameprep.h
-include/idn/normalizer.h
-include/idn/punycode.h
-include/idn/race.h
-include/idn/res.h
-include/idn/resconf.h
-include/idn/result.h
-include/idn/strhash.h
-include/idn/ucs4.h
-include/idn/ucsmap.h
-include/idn/ucsset.h
-include/idn/unicode.h
-include/idn/unormalize.h
-include/idn/utf8.h
-include/idn/util.h
-include/idn/version.h
-include/mdn/Makefile.in
-include/mdn/api.h
-include/mdn/localencoding.h
-include/mdn/log.h
-include/mdn/res.h
-include/mdn/resconf.h
-include/mdn/result.h
-include/mdn/utf8.h
-include/mdn/version.h
-lib/Makefile.in
-lib/aliaslist.c
-lib/api.c
-lib/checker.c
-lib/converter.c
-lib/debug.c
-lib/delimitermap.c
-lib/filechecker.c
-lib/filemapper.c
-lib/localencoding.c
-lib/log.c
-lib/make.wnt
-lib/mapper.c
-lib/mapselector.c
-lib/nameprep.c
-lib/nameprep_template.c
-lib/nameprepdata.c
-lib/normalizer.c
-lib/punycode.c
-lib/race.c
-lib/res.c
-lib/resconf.c
-lib/result.c
-lib/strhash.c
-lib/ucs4.c
-lib/ucsmap.c
-lib/ucsset.c
-lib/unicode.c
-lib/unicode_template.c
-lib/unicodedata_320.c
-lib/unormalize.c
-lib/utf8.c
-lib/util.c
-lib/version.c
-lib/idn.conf.sample.in
-lib/aliaslist.sh
-lib/tests/Makefile.in
-lib/tests/api-init1.tsy
-lib/tests/api-init2.tsy
-lib/tests/api-init3.tsy
-lib/tests/api-init4-1.tsy
-lib/tests/api-init4-2.tsy
-lib/tests/api-init4-3.tsy
-lib/tests/api-init5-1.tsy
-lib/tests/api-init5-2.tsy
-lib/tests/api-init5-3.tsy
-lib/tests/api.tsy
-lib/tests/checker.tsy
-lib/tests/codeset.h
-lib/tests/converter.tsy
-lib/tests/delimitermap.tsy
-lib/tests/iconvchk.c
-lib/tests/mapper.tsy
-lib/tests/mapselector.tsy
-lib/tests/nameprep.tsy
-lib/tests/normalizer.tsy
-lib/tests/res.tsy
-lib/tests/resconf.tsy
-lib/tests/setenv.c
-lib/tests/setenv.h
-lib/tests/testsuite.c
-lib/tests/testsuite.h
-lib/tests/testutil.c
-lib/tests/testutil.h
-lib/tests/testygen
-lib/tests/ucs4.tsy
-lib/tests/utffilter
-tools/Makefile.in
-tools/idnconv/Makefile.in
-tools/idnconv/make.wnt
-tools/idnconv/idnconv.c
-tools/idnconv/selectiveencode.c
-tools/idnconv/selectiveencode.h
-tools/idnconv/util.c
-tools/idnconv/util.h
-tools/idnconv/idnconv.1
-tools/idnconv/idnslookup.in
-tools/make.wnt
-tools/rpm/idnkit.spec
-tools/runidn/Makefile.in
-tools/runidn/resolver.c
-tools/runidn/resolver.h
-tools/runidn/stub.c
-tools/runidn/stub.h
-tools/runidn/runidn.1
-tools/runidn/runidn.in
-man/Makefile.in
-man/libidnkit.3.in
-man/idn.conf.5.in
-patch/bind9/bind-9.2.1-patch
-patch/bind9/bind-9.2.2-patch
-win/README.WIN
-wsock/README.txt
-wsock/README_j.txt
-wsock/make.wnt
-wsock/common/checkdll.c
-wsock/common/convert.c
-wsock/common/dump.c
-wsock/common/encoding.c
-wsock/common/hook.c
-wsock/common/make.wnt
-wsock/common/printf.c
-wsock/common/wrapcommon.h
-wsock/config/make.wnt
-wsock/config/idnconf.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/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
-util/Makefile
-util/SparseMap.pm
-util/UCD.pm
-util/generate_nameprep_data.pl
-util/generate_normalize_data.pl
-map/Makefile.in
-map/jp.map
+++ /dev/null
-
- idnkit
- 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'
- + Test: running `make test' (optional)
- + Installation: running `make install'
- + Site Configuration: tailoring `idn.conf'
- + Configuration Check (optional)
- + Clean up (optional)
-
-See also the following section if you'd like to apply patch and install
-BIND9.
-
- + Applying patches
-
-0. Prerequisite
-
-If you want to install generic idnkit library with code conversion
-support, and also if your system's library does not have iconv()
-function, which is a general codeset conversion utility, install iconv
-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:
-
- ftp://ftp.gnu.org/gnu/libiconv/
- and mirrors of that site.
-
-But if you don't want code conversion support and you want to install
-idnkitlite library without iconv support alone, you have not install
-external library. Instead, set `--enable-liteonly' value to "yes" at
-configure script execution.
-
-
-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 idnkit. The
- default is /usr/local.
-
- --enable-runidn
- Build `runidn' command. The default is "no".
-
- You cannot set this option "yes" when `--enable-liteonly' is
- also set "yes".
-
- --with-libiconv=LIBICONV_PREFIX
- If you have installed GNU libiconv and would like to link it
- to idnkit, 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.
-
- You cannot set this option when --enable-liteonly is set
- "yes", because libidnkitlite library doesn't need iconv
- support.
-
- --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
-
- You cannot set this option when `--enable-liteonly' is set
- "yes", because libidnkitlite library doesn't need iconv
- support.
-
- --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"
-
- You cannot set this option when `--enable-liteonly' is set
- "yes", because libidnkitlite library doesn't need iconv
- support.
-
- --with-iconv-sofile=SOFILE_PATH
- The runidn command in this kit needs to know the pathname of
- shared library file that contains iconv(), if iconv() is not
- part of libc. idnkit 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
-
- You cannot set this option when `--enable-liteonly' is set
- "yes", because libidnkitlite library doesn't need iconv
- support.
-
- --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:
-
- --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).
-
- --bindir=BINDIR
- Specifies the install directory for idnconv and runidn.
- The default is EXEC_PREFIX/bin.
-
- --libdir=LIBDIR
- Specifies the install directory for the libraries (libidnkit
- and libidnkitlite). The default is EXEC_PREFIX/lib.
-
- --includedir=INCDIR
- Specifies the install directory for the header files of the
- libraries. The default is PREFIX/include.
-
- --sysconfdir=SYSCONFDIR
- Specifies the install directory for sample configuration files
- of the libraries. 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
- idnkit will be put under the DATADIR/idnkit directory.
-
- --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".
-
- --enable-liteonly
- Build the `libidnlkitite' library only. Do not build the
- `libidnkit' library, idnconv and runidn. The fault is "no".
-
- If you want to set "yes" to this option, you cannot specify it
- together with `--enable-runidn', `--with-libiconv',
- `--with-iconv-include', `--with-iconv' or `--with-iconv-sofile'.
-
-To see the list of available options, you should run it with --help
-option.
-
- % ./configure --help
-
-
-3. Compiling
-
-Run `make' for compilation.
-
- % make
-
-
-4. Test
-
-Optionally, type `make test' to compile and run test programs.
-Note that Perl 5 is required for comipilation of the test programs.
-
- % make test
-
-The test programs assume that iconv() on the system recognizes the
-encoding name "EUC-JP" as Japanese EUC, and "SJIS" as Japanese Shift
-JIS. If iconv() on the system doesn't support the encoding name,
-please edit `lib/tests/codeset.h' before `make test'.
-
-*Note*
- If you use standard iconv which is attached as default on Solaris,
- converter's test "idn_converter_convfromucs4()" may fail. But it's
- not the problem because the result is derived from the difference of
- specification of iconv. So please ignore it if you run the test on
- Solaris.
-
-
-5. Installation
-
-Run `make install' to install binaries and manuals. Don't forget to
-become a super-user before the installation.
-
- % su
- # make install
-
-*Note*
- If you have installed pre-release versions of idnkit (such as 1.0pr1),
- idnkit-1.0 may not work correctly because of the old configuration
- file 'idn.conf'. If this is the case, you should overwrite existing
- configuration files with the new ones by executing the following command
- after 'make install'.
-
- # make install-config
-
-
-6. Configuration and usage
-
-Edit the `idn.conf' configuation file if you'd like to cosutomize
-conversion/normalization rules of idnkit. Please refer the manual
-for `idn.conf' for details. A sample configuration (`idn.conf.sample')
-is also provided for your convenience.
-
-The sample configuration file has also been installed as `idn.conf'
-if it has not exist on your system.
-
-Also online manuals for `idnconv' and `runidn' commands are available.
-Please refer them for the usage and configuration of these commands.
-
- % man idn.conf
- % man idnconv
- % man runidn
-
-
-7. Check your configuration
-
-A simple shell script `idnslookup' is available in the directory
-`tools/idnconv', with which you can make queries for internationalized
-domain names. It may help you check your configuration.
-
-The usage of `idnslookup' is:
-
- % tools/idnconv/idnslookup <domain-name> <dns-server>
-
-Suppose that <domain-name> is an internationalized domain name written
-in the local codeset (see ``LOCAL CODESET'' in the `idn.conf' man page
-for details), and <dns-server> is a hostname or IP address of DNS
-server.
-
-`idnslookup' inquires <idn-domain-name> from <dns-server>, using
-`idnconv' and `nslookup' commands. If something is wrong, you will
-see an error message output by `idnconv', `nslookup' or `idnslookup'
-itself.
-
-
-8. Clean up
-
-Run `make clean' to delete files generated by `make' and `make test'
-from the idnkit source directory. (Files installed by `make install'
-are not removed.)
-
- % make clean
-
-Run `make distclean' instead to also delete files generated by
-`configure'.
-
- % make distclean
-
-After `make distclean', you can run `configure' and compile idnkit for
-another system using the source directory.
-
-
-Appendix A. Applying patches
-
-This distribution also contains patches for BIND9.
-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.
-
-; $Id: INSTALL,v 1.1 2003/06/04 00:24:59 marka Exp $
+++ /dev/null
-
- idnkit
- \e$B%3%s%Q%$%k$H%$%s%9%H!<%k$NJ}K!\e(B
- (\e$B<R\e(B) \e$BF|K\%M%C%H%o!<%/%$%s%U%)%a!<%7%g%s%;%s%?!<\e(B (JPNIC)
-
-
-\e$BK\%Q%C%1!<%8$N%3%s%Q%$%k$*$h$S%$%s%9%H!<%k$O!"<!$N$h$&$J%9%F%C%W$G9T\e(B
-\e$B$$$^$9!#\e(B
-
- + \e$BA0=`Hw\e(B: iconv() \e$B$,MxMQ$G$-$k$h$&$K$9$k\e(B
- + \e$B%7%9%F%`@_Dj\e(B: `configure' \e$B%9%/%j%W%H$N<B9T\e(B
- + \e$B%3%s%Q%$%k\e(B: `make' \e$B$N<B9T\e(B
- + \e$B%F%9%H\e(B: `make test' \e$B$N<B9T\e(B (\e$B>JN,2D\e(B)
- + \e$B%$%s%9%H!<%k\e(B: `make install' \e$B$N<B9T\e(B
- + \e$B%5%$%HKh$N@_Dj\e(B: `idn.conf' \e$B$K$h$k@_Dj\e(B
- + \e$B@_Dj$N3NG'\e(B (\e$B>JN,2D\e(B)
- + \e$B8eJRIU$1\e(B (\e$B>JN,2D\e(B)
-
-BIND9 \e$B$K%Q%C%A$rEv$F$F%$%s%9%H!<%k$7$?$$>l9g$O!"<!$N9`$b;2>H$7$F2<$5$$!#\e(B
-
- + \e$B%Q%C%A$NEv$FJ}\e(B
-
-0. \e$BA0=`Hw\e(B
-
-\e$B$b$7$"$J$?$,%3!<%IJQ495!G=$r%5%]!<%H$7$?DL>o$N\e(B idnkit \e$B%i%$%V%i%j$r%$%s%9\e(B
-\e$B%H!<%k$9$k$D$b$j$G$"$j!"$^$?$"$J$?$,;HMQ$7$F$$$k%7%9%F%`$N%i%$%V%i%j$K\e(B
-iconv() \e$B$,$J$$>l9g!"$"$k$$$O$"$C$F$b\e(B UTF-8 \e$B$r07$&$3$H$,$G$-$J$$>l9g$K$O\e(B
-\e$B$"$i$+$8$a\e(B iconv() \e$B$r%$%s%9%H!<%k$7$F$*$$$F$/$@$5$$!#\e(Biconv() \e$B$O!"Nc$($P\e(B
-GNU libiconv \e$B$H8F$P$l$k%U%j!<\e(B (LGPL) \e$B$N<BAu$,\e(B
-
- ftp://ftp.gnu.org/gnu/libiconv/
- \e$B$^$?$O$=$N%_%i!<%5%$%H\e(B
-
-\e$B$+$iF~<j2DG=$G$9!#\e(B
-
-\e$B$?$@$7!"%3!<%IJQ49$rI,MW$H$;$:!"\e(Blite \e$B%P!<%8%g%s$N%i%$%V%i%j$N$_$r%$%s%9\e(B
-\e$B%H!<%k$9$k$N$G$"$l$P!"\e(Biconv() \e$B$r4^$`%i%$%V%i%j$OI,MW$"$j$^$;$s!#$=$N>l9g!"\e(B
-configure \e$B%9%/%j%W%H$N<B9T;~$K\e(B `--enable-liteonly' \e$B%*%W%7%g%s$NCM$r\e(B
-"yes" \e$B$K%;%C%H$7$F$/$@$5$$!#\e(B
-
-
-1. configure \e$B%9%/%j%W%H$N<B9T\e(B
-
-\e$B%H%C%W%G%#%l%/%H%j$K$"$k\e(B configure \e$B%9%/%j%W%H$r<B9T$7$F$/$@$5$$!#\e(B
-
- % ./configure
-
-configure \e$B%9%/%j%W%H$K$O!"?tB?$/$N%*%W%7%g%s$,MQ0U$5$l$F$$$^$9!#$=$N$&\e(B
-\e$B$A=EMW$H;W$o$l$k$b$N$O<!$NDL$j$G$9!#\e(B
-
- --prefix=PREFIX
- idnkit \e$B$r%$%s%9%H!<%k$9$k%G%#%l%/%H%j$N%Q%9$r;XDj$7$^$9!#%G%U%)\e(B
- \e$B%k%H$O\e(B /usr/local \e$B$G$9!#\e(B
-
- --enable-runidn
- runidn \e$B%3%^%s%I$r:n@.$7$F!"%$%s%9%H!<%k$7$^$9!#%G%U%)%k%H$O\e(B "no"
- (\e$B:n@.$7$J$$\e(B) \e$B$G$9!#\e(B
-
- --with-libiconv=LIBICONV_PREFIX
- \e$B%$%s%9%H!<%k:Q$_$N\e(B GNU libiconv \e$B$r\e(B idnkit \e$B$K%j%s%/$5$;$k>l9g$O!"\e(B
- \e$B$3$N%*%W%7%g%s$r;XDj$7$F2<$5$$!#0z?t\e(B LIBICONV_PREFIX \e$B$K$O!"\e(BGNU
- libiconv \e$B$,%$%s%9%H!<%k$5$l$F$$$k0LCV$r;XDj$7$^$9!#0z?t$r>JN,\e(B
- \e$B$9$k$H!"\e(BPREFIX (PREFIX \e$B$NCM$O\e(B --prefix=PREFIX \e$B$+$iF3=P$5$l$^$9\e(B)
- \e$B$r;XDj$7$?$b$N$H8+$J$5$l$^$9!#\e(B
-
- --with-libiconv \e$B$O\e(B GNU libiconv \e$BMQ$NC;=L7A$N%*%W%7%g%s$G\e(B
-
- --with-libiconv=/usr/local
-
- \e$B$3$l$O<!$HEy2A$K$J$j$^$9!#\e(B
-
- --with-iconv-include='-I/usr/local/include'
- --with-iconv='-L/usr/local/lib -R/usr/local/lib -liconv'
-
- \e$BC;=L7A$N%*%W%7%g%s\e(B (--with-libiconv) \e$B$HDL>oMQ$N%*%W%7%g%s\e(B
- (--with-iconv-include, --with-iconv) \e$B$rN>J}$H$b;XDj$7$?>l9g$O!"\e(B
- \e$BDL>oMQ$N%*%W%7%g%s$[$&$,M%@h$5$l$^$9!#\e(B
-
- \e$B$3$N%*%W%7%g%s$O\e(B --enable-liteonly \e$B$r\e(B "yes" \e$B$K$7$?>l9g$O;XDj$9$k\e(B
- \e$B$3$H$O$G$-$^$;$s!#$3$l$O!"\e(Blibidnkitlite \e$B%i%$%V%i%j$,\e(B iconv \e$B%5%]!<\e(B
- \e$B%H$rI,MW$H$7$J$$$?$a$G$9!#\e(B
-
- --with-iconv-include=ICONV_INCDIR
- C \e$B%3%s%Q%$%i$,DL>o$G$O8!:w$7$J$$%G%#%l%/%H%j$K\e(B "iconv.h" \e$B$,CV\e(B
- \e$B$+$l$F$$$k>l9g!"<!$N$h$&$K$7$F$=$N%G%#%l%/%H%j$r;XDj$7$^$9!#\e(B
-
- --with-iconv-include=/usr/local/include
-
- \e$B$3$N%*%W%7%g%s$O\e(B --enable-liteonly \e$B$r\e(B "yes" \e$B$K$7$?>l9g$O;XDj$9$k\e(B
- \e$B$3$H$O$G$-$^$;$s!#$3$l$O!"\e(Blibidnkitlite \e$B%i%$%V%i%j$,\e(B iconv \e$B%5%]!<\e(B
- \e$B%H$rI,MW$H$7$J$$$?$a$G$9!#\e(B
-
- --with-iconv=ICONV_LIB
- libc \e$B$K\e(B iconv \e$B$,F~$C$F$$$J$$>l9g\e(B (\e$B>e5-$N%Q%C%1!<%8$rF~$l$?\e(B
- \e$B>l9g$J$I\e(B) \e$B$K!"\e(Biconv \e$B$N%i%$%V%i%j$r;XDj$7$^$9!#Nc$($P\e(B
-
- --with-iconv="-L/usr/local/lib -liconv"
-
- \e$B$N$h$&$K;XDj$7$^$9!#$b$7\e(B iconv \e$B$,6&M-%i%$%V%i%j$K$J$C$F$$$k\e(B
- \e$B>l9g$K$O!"\e(B-R \e$B%*%W%7%g%s$b;XDj$7$F\e(B
-
- --with-iconv="-L/usr/local/lib -R/usr/local/lib -liconv"
-
- \e$B$H$9$kI,MW$,$"$k$+$b$7$l$^$;$s!#\e(B
-
- \e$B$3$N%*%W%7%g%s$O\e(B --enable-liteonly \e$B$r\e(B "yes" \e$B$K$7$?>l9g$O;XDj$9$k\e(B
- \e$B$3$H$O$G$-$^$;$s!#$3$l$O!"\e(Blibidnkitlite \e$B%i%$%V%i%j$,\e(B iconv \e$B%5%]!<\e(B
- \e$B%H$rI,MW$H$7$J$$$?$a$G$9!#\e(B
-
- --with-iconv-sofile=SOFILE_PATH
- idnkit \e$B$K4^$^$l$F$$$k\e(B runidn \e$B%3%^%s%I$O!"\e(Biconv() \e$B$,\e(B libc \e$B$N0l\e(B
- \e$BIt$H$7$FDs6!$5$l$J$$$H$-$K!"\e(Biconv() \e$B$r4^$`6&M-%i%$%V%i%j$X$N%Q\e(B
- \e$B%9L>$rCN$kI,MW$,$"$j$^$9!#\e(Bidnkit \e$B$O!"\e(B--with-iconv \e$B%*%W%7%g%s$N\e(B
- \e$B5-=R$r4p$K%Q%9L>$r8!:w$7$^$9$,!"$3$l$K<:GT$7$?$H$-$K!"0J2<$N$h\e(B
- \e$B$&$K6&M-%i%$%V%i%j$r;XDj$9$k$3$H$,$G$-$^$9!#\e(B
-
- --with-iconv-sofile=/usr/local/lib/libiconv.so.2.0
-
- \e$B$3$N%*%W%7%g%s$O\e(B --enable-liteonly \e$B$r\e(B "yes" \e$B$K$7$?>l9g$O;XDj$9$k\e(B
- \e$B$3$H$O$G$-$^$;$s!#$3$l$O!"\e(Blibidnkitlite \e$B%i%$%V%i%j$,\e(B iconv \e$B%5%]!<\e(B
- \e$B%H$rI,MW$H$7$J$$$?$a$G$9!#\e(B
-
- --with-utf8=UTF8_NAME
- iconv \e$B$K\e(B utf-8 \e$B%(%s%3!<%G%#%s%0$r;XDj$9$k>l9g!"K\%i%$%V%i%j$O\e(B
- \e$B%G%U%)%k%H$G$O\e(B "UTF-8" \e$B$H$$$&L>A0$r;XDj$7$^$9!#$b$7$"$J$?$N\e(B
- \e$B%7%9%F%`$N\e(B iconv \e$B$,\e(B "UTF-8" \e$B$H$$$&L>A0$r<u$1IU$1$J$$>l9g$K$O!"\e(B
- \e$BBe$j$NL>A0$r;XDj$7$^$9!#Nc$($P\e(B "UTF-8" \e$B$G$O$J$/\e(B "utf8" \e$B$N\e(B
- \e$B>l9g$K$O<!$N$h$&$K;XDj$7$^$9!#\e(B
-
- --with-utf8=utf8
-
-
-2. \e$B$=$NB>$N\e(B configure \e$B$N%*%W%7%g%s\e(B
-
-\e$B$=$l$[$I$h$/;H$&$o$1$G$O$"$j$^$;$s$,!"\e(Bconfigure \e$B$K$OA09`$N$b$N0J30$K\e(B
-\e$B$bMM!9$J%*%W%7%g%s$,MQ0U$5$l$F$$$^$9!#\e(B
-
- --exec-prefix=EXEC_PREFIX
- \e$B%^%7%s8GM-$N%U%!%$%k$r%$%s%9%H!<%k$9$k%G%#%l%/%H%j$N%Q%9$r;XDj\e(B
- \e$B$7$^$9!#%G%U%)%k%H$O\e(B PREFIX (``--prefix=PREFIX'' \e$B$K$h$C$F;XDj\e(B
- \e$B2DG=!"\e(BPREFIX \e$B$N%G%U%)%k%H$O\e(B /usr/local) \e$B$K$J$j$^$9!#\e(B
-
- --bindir=BINDIR
- idnconv \e$B$H\e(B runidn \e$B$r%$%s%9%H!<%k$9$k%G%#%l%/%H%j$r;XDj$7$^$9!#\e(B
- \e$B%G%U%)%k%H$G$O\e(B EXEC_PREFIX/bin \e$B$G$9!#\e(B
-
- --libdir=LIBDIR
- \e$B%i%$%V%i%j\e(B (libidnkit \e$B$*$h$S\e(B libidnkitlite) \e$B$r%$%s%9%H!<%k$9$k\e(B
- \e$B%G%#%l%/%H%j$r;XDj$7$^$9!#%G%U%)%k%H$G$O\e(B EXEC_PREFIX/lib \e$B$G$9!#\e(B
-
- --includedir=INCDIR
- \e$B%i%$%V%i%j$N%X%C%@%U%!%$%k$r%$%s%9%H!<%k$9$k%G%#%l%/%H%j$r;XDj\e(B
- \e$B$7$^$9!#%G%U%)%k%H$G$O\e(B PREFIX/include \e$B$G$9!#\e(B
-
- --sysconfdir=SYSCONFDIR
- \e$B%i%$%V%i%j$N@_Dj%U%!%$%k$N%5%s%W%k$r%$%s%9%H!<%k$9$k%G%#%l%/%H\e(B
- \e$B%j$r;XDj$7$^$9!#%G%U%)%k%H$G$O\e(B PREFIX/etc \e$B$G$9!#\e(B
-
- --mandir=MANDIR
- \e$B%*%s%i%$%s%^%K%e%"%k$N%$%s%9%H!<%k%G%#%l%/%H%j$r;XDj$7$^$9!#\e(B
- \e$B%G%U%)%k%H$G$O\e(B PREFIX/man \e$B$G$9!#\e(B
-
- --datadir=DATADIR
- \e$B0[$J$k%^%7%s$G6&M-2DG=$J%U%!%$%k$r%$%s%9%H!<%k$9$k%G%#%l%/%H%j\e(B
- \e$B$r;XDj$7$^$9!#%G%U%)%k%H$O\e(B PREFIX/share \e$B$G$9!#\e(BDATADIR/idnkit
- \e$B$N2<$K!"\e(Bidnkit \e$B$G;HMQ$9$k4v$D$+$N%G!<%?%U%!%$%k$,%$%s%9%H!<%k\e(B
- \e$B$5$l$^$9!#\e(B
-
- --enable-debug
- \e$B%G%P%C%0MQ$N%3!<%I$rM-8z$K$7$^$9!#%G%U%)%k%H$O\e(B "no" (\e$BL58z\e(B) \e$B$G$9!#\e(B
-
- --enable-shared
- \e$B6&M-%i%$%V%i%j$r:n@.$7$^$9!#%G%U%)%k%H$O\e(B "yes" (\e$B:n@.$9$k\e(B) \e$B$G$9!#\e(B
-
- --enable-static
- \e$B@EE*%i%$%V%i%j$r:n@.$7$^$9!#%G%U%)%k%H$O\e(B "yes" (\e$B:n@.$9$k\e(B) \e$B$G$9!#\e(B
-
- --enable-liteonly
- libidnkitlite \e$B%i%$%V%i%j$N$_$r:n@.$7$^$9!#\e(Blibidnkit \e$B%i%$%V%i%j!"\e(B
- idnconv, runidn \e$B$O:n@.$7$^$;$s!#%G%U%)%k%H$O\e(B "no" (\e$B$=$l0J30$N\e(B
- \e$B$b$N$b:n@.$9$k\e(B) \e$B$G$9!#\e(B
-
- \e$B$3$N%*%W%7%g%s$NCM$r\e(B "yes" \e$B$K$9$k>l9g!"\e(B `--enable-runidn'
- `--with-libiconv' `--with-iconv-include' `--with-iconv'
- `--with-iconv-sofile' \e$B$OF1;~$K;XDj$9$k$3$H$O$G$-$^$;$s!#\e(B
-
-configure \e$B$K$OB>$K$bB?$/$N%*%W%7%g%s$,$"$j$^$9$,!";D$j$O0lHLE*$J%*%W%7%g\e(B
-\e$B%s$J$N$G@bL@$O>J$-$^$9!#\e(B
-
- % ./configure --help
-
-\e$B$r<B9T$9$k$H%*%W%7%g%s$N0lMw$,I=<($5$l$^$9!#\e(B
-
-
-3. \e$B%3%s%Q%$%k\e(B
-
-configure \e$B$r<B9T$9$k$H\e(B Makefile \e$B$J$I$,@8@.$5$l$^$9$N$G!"B3$1$F\e(B make\e$B$r\e(B
-\e$B<B9T$7$F%3%s%Q%$%k$7$^$9!#\e(B
-
- % make
-
-
-4. \e$B%F%9%H\e(B
-
-\e$B%F%9%H%W%m%0%i%`$r%3%s%Q%$%k$7!"<B9T$9$k$K$O\e(B `make test' \e$B$r<B9T$7$^$9\e(B
-(\e$B>JN,$7$F$b9=$$$^$;$s\e(B)\e$B!#%F%9%H%W%m%0%i%`$N%3%s%Q%$%k$K$O!"\e(BPerl 5 \e$B$,I,\e(B
-\e$BMW$G$9!#\e(B
-
- % make test
-
-\e$B$J$*!"\e(Biconv() \e$B$,\e(B "EUC-JP" \e$B$rF|K\8l\e(B EUC \e$B$N%(%s%3!<%G%#%s%0L>>N$H$7$FG'\e(B
-\e$B<1$7!"\e(B"SJIS" \e$B$rF|K\8l%7%U%H\e(B JIS \e$B$N%(%s%3!<%G%#%s%0L>>N$H$7$FG'<1$9$k$3\e(B
-\e$B$H$r!"%F%9%H%W%m%0%i%`$G$OA0Ds$H$7$F$$$^$9!#$b$7!"G'<1$7$J$$$h$&$G$"$l\e(B
-\e$B$P!"\e(B`make test' \e$B<B9TA0$K\e(B `lib/tests/codeset.h' \e$B$rJT=8$7$F2<$5$$!#\e(B
-
-*\e$BCm0U\e(B*
- Solaris \e$B$K$*$$$F\e(B OS \e$BI8=`$N\e(B iconv \e$B$r;HMQ$7$F$$$k>l9g!"\e(Bconverter \e$B$N\e(B
- idn_converter_convfromucs4() \e$B$N%F%9%H$,<:GT$9$k$3$H$,$"$j$^$9!#$3$l\e(B
- \e$B$O\e(B iconv \e$B$N;EMM$N0c$$$K$h$k$b$N$J$N$G!">e5-4D6-$K$*$$$F%$%s%9%H!<%k\e(B
- \e$B$r9T$C$F$$$k>l9g$OL5;k$7$F$/$@$5$$!#\e(B
-
-
-5. \e$B%$%s%9%H!<%k\e(B
-
-\e$B%9!<%Q%f!<%6$K$J$C$F%$%s%9%H!<%k$7$^$9!#\e(B
-
- % su
- # make install
-
-*\e$BCm0U\e(B*
- idnkit \e$B$N\e(B 1.0 \e$B0JA0$N%P!<%8%g%s\e(B (1.0pr1 \e$B$J$I\e(B) \e$B$,$9$G$K%$%s%9%H!<%k$5\e(B
- \e$B$l$F$$$k>l9g!"%$%s%9%H!<%k$5$l$?@_Dj%U%!%$%k\e(B 'idn.conf' \e$B$NFbMF$,8E$$\e(B
- \e$B$?$a!"\e(Bidnkit-1.0\e$B$,@5$7$/F0:n$7$^$;$s!#$3$N$?$a!"\e(Bidnkit-1.0 \e$BMQ$N@_Dj\e(B
- \e$B%U%!%$%k$r>e=q$-%$%s%9%H!<%k$9$kI,MW$,$"$j$^$9!#\e(Bmake install \e$B<B9T8e!"\e(B
- \e$B0J2<$N%3%^%s%I$r<B9T$7$F$/$@$5$$!#\e(B
-
- # make install-config
-
-
-6. \e$B@_Dj$H;HMQJ}K!\e(B
-
-idnkit \e$B$N@55,2=$*$h$SJQ495,B'$r%+%9%?%^%$%:$7$9$k$J$i!"@_Dj%U%!%$%k\e(B
-`idn.conf' \e$B$rJT=8$7$^$9!#$3$N@_Dj%U%!%$%k$N>\:Y$K$D$$$F$O\e(B idn.conf \e$B$N\e(B
-\e$B%*%s%i%$%s%^%K%e%"%k$r$4Mw$/$@$5$$!#$^$?@_DjNc$,=q$+$l$?%5%s%W%k%U%!%$\e(B
-\e$B%k\e(B (idn.conf.sample) \e$B$b%$%s%9%H!<%k$5$l$^$9$N$G$4MxMQ$/$@$5$$!#\e(B
-
-\e$B%7%9%F%`$K@_Dj%U%!%$%k$,B8:_$7$J$+$C$?>l9g!"$3$N%5%s%W%k$N@_Dj%U%!%$%k\e(B
-\e$B$O\e(B `idn.conf' \e$B$H$7$F$b%$%s%9%H!<%k$5$l$^$9!#\e(B
-
-\e$B$^$?!"\e(Bidnconv\e$B!"\e(Brunidn \e$B$H$$$C$?%D!<%k$N%*%s%i%$%s%^%K%e%"%k$bDs6!$5$l$F\e(B
-\e$B$$$^$9!#$3$l$i$N%3%^%s%I$N;H$$J}!"@_DjJ}K!$K4X$7$F$O$=$A$i$r;2>H$7$F$/\e(B
-\e$B$@$5$$!#\e(B
-
- % man idn.conf
- % man idnconv
- % man runidn
-
-
-7. \e$B@_Dj$N3NG'\e(B
-
-`idnslookup' \e$B$H$$$&4JC1$J%7%'%k%9%/%j%W%H$,\e(B tools/idnconv \e$B%G%#%l%/%H%j\e(B
-\e$B$KMQ0U$5$l$F$$$^$9!#$3$N%9%/%j%W%H$r;H$&$H\e(B DNS \e$B%5!<%P$KBP$7$F9q:]2=%I\e(B
-\e$B%a%$%sL>$rLd$$9g$o$;$k$3$H$,$G$-$^$9!#@_Dj%U%!%$%k$N3NG'$KLrN)$D$+$bCN\e(B
-\e$B$l$^$;$s!#\e(B
-
-`idnslookup' \e$B$N;HMQJ}K!$O!"<!$NDL$j$G$9!#\e(B
-
- % tools/idnconv/idnslookup <domain-name> <dns-server>
-
-\e$B$3$3$G\e(B <domain-name> \e$B$O%m!<%+%k%3!<%I%;%C%H\e(B (\e$B>\$7$/$O\e(B idn.conf \e$B$N%^%K%e\e(B
-\e$B%"%k$N\e(B ``LOCAL CODESET'' \e$B$r;2>H$N$3$H\e(B) \e$B$G=q$+$l$?9q:]2=%I%a%$%sL>$G!"\e(B
-<dns-server> \e$B$O\e(B DNS \e$B%5!<%P$N%[%9%HL>$b$7$/$O\e(B IP \e$B%"%I%l%9$G$9!#\e(B
-
-`idnslookup' \e$B$O\e(B `idnconv' \e$B$*$h$S\e(B `nslookup' \e$B%3%^%s%I$rMQ$$$F!"\e(B
-<dns-server> \e$B$KBP$7$F\e(B <domain-name> \e$B$r0z$-$K9T$-$^$9!#@_Dj$K2?$+4V0c$$\e(B
-\e$B$,$"$l$P!"\e(B`idnconv', `nslookup', \e$B$"$k$$$O\e(B `idnslookup' \e$B<+?H$K$h$k%(%i!<\e(B
-\e$B%a%C%;!<%8$,=PNO$5$l$^$9!#\e(B
-
-
-8. \e$B8eJRIU$1\e(B
-
-`make' \e$B$*$h$S\e(B `make test' \e$B$K$h$C$F@8@.$5$l$?%U%!%$%k$r\e(B idnkit \e$B$N%=!<\e(B
-\e$B%9%G%#%l%/%H%j$+$i:o=|$9$k$K$O!"\e(B`make clean' \e$B$r<B9T$7$F2<$5$$!#\e(B
-(`make install' \e$B$N:]$K%$%s%9%H!<%k$5$l$?%U%!%$%k$O!":o=|$5$l$^$;$s!#\e(B)
-
- % make clean
-
-`configure' \e$B$G@8@.$5$l$?%U%!%$%k$b0l=o$K:o=|$9$k$J$i!"Be$o$j$K\e(B `make
-distclean' \e$B$r<B9T$7$^$9!#\e(B
-
- % make distclean
-
-`make distclean' \e$B$r9T$($P!"$3$N%=!<%9%G%#%l%/%H%j$r;H$C$F!"A02s$H$OJL\e(B
-\e$B$N%7%9%F%`8~$1$K\e(B `configure' \e$B$*$h$S\e(B idnkit \e$B$N%3%s%Q%$%k$r9T$&$3$H$,$G\e(B
-\e$B$-$k$h$&$K$J$j$^$9!#\e(B
-
-
-\e$BIUO?\e(B A. \e$B%Q%C%A$NEv$FJ}\e(B
-
-\e$B$3$NG[I[%-%C%H$K$O!"\e(BBIND9 \e$B$KBP$9$k%Q%C%A$,4^$^$l$F$$$^$9!#\e(B
-\e$B%Q%C%A$NEv$FJ}$O!"%Q%C%A%U%!%$%k$N@hF,$K=q$+$l$F$$$^$9$N$G$=$A$i$r;2>H\e(B
-\e$B$7$F$/$@$5$$!#\e(B
-
-Solaris \e$B$G$O!"%7%9%F%`IUB0$N\e(B patch \e$B%3%^%s%I$,@5>o$KF0:n$7$J$$$3$H$,$"\e(B
-\e$B$j$^$9!#$=$N$h$&$J>l9g$K$O!"\e(BGNU \e$B%P!<%8%g%s$N\e(B patch
-(http://www.gnu.org/software/patch/) \e$B$r%$%s%9%H!<%k$7$F!"$3$l$r;HMQ$7\e(B
-\e$B$F$/$@$5$$!#\e(B
-
-
-; $Id: INSTALL.ja,v 1.1 2003/06/04 00:25:00 marka Exp $
+++ /dev/null
-Copyright (c) 2000-2002 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) 2000-2002 Japan Network Information Center. All rights reserved."
-
-4. The name of JPNIC may not 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.
+++ /dev/null
-# $Id: Makefile.in,v 1.1 2003/06/04 00:25: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.
-#
-# 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) 2000-2002 Japan Network Information Center. All rights reserved."
-#
-# 4. The name of JPNIC may not 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.
-
-srcdir = @srcdir@
-VPATH = @srcdir@
-
-prefix = @prefix@
-exec_prefix = @exec_prefix@
-
-PERL = perl
-MKTARPKG = ../util/mktarpkg
-SHELL = @SHELL@
-
-SUBDIRS = include lib man tools map
-
-all: force all-subdirs
-test check: force test-subdirs
-install: force install-subdirs
-clean: force clean-subdirs
-distclean: force distclean-localdir distclean-subdirs
-
-distclean-localdir:
- rm -f config.status config.cache config.log libtool Makefile
-
-all-subdirs install-subdirs clean-subdirs distclean-subdirs test-subdirs:
- @target=`echo $@ | sed 's/-subdirs$$//'`; \
- for d in $(SUBDIRS); do \
- (cd $$d; $(MAKE) DESTDIR=$(DESTDIR) $$target); \
- done
-
-install-config:
- (cd lib; $(MAKE) install-config);
-
-dist: force
- @v=`sed -ne '/^# *define *IDNKIT_VERSION/s/^.*"\([^"]*\)".*$$/\1/p' \
- $(srcdir)/include/idn/version.h`; \
- echo generate idnkit-$$v-src.tar.gz; \
- cd $(srcdir); \
- $(PERL) $(MKTARPKG) --gzip=9 idnkit-$$v-src
-
-force:
+++ /dev/null
-; $Id: NEWS,v 1.1 2003/06/04 00:25:03 marka Exp $
-
-Major changes in idnkit version 1.0:
-
-* Change ACE prefix of Punycode from 'zq--' to 'xn--'. And delete
- configure's --with-punycode-prefix option.
-
-* Add NAMEPREP version RFC3491. Other versions of NAMEPREP are
- removed.
-
-* Enable idnconv to handle a input line as long as memory permitted
- when encoding/decoding.
-
-* unicode-form-c and unicode-form-c/3.2.0 are not supported.
-
-* Unicode 3.0.1 and Unicode 3.1.0 are not supported.
-
-* Delete BIND8, Squid and GNU libiconv patches.
-
-Major changes in idnkit version 1.0-pr2:
-
-* The license of idnkit is changed to a less restrictive one. See
- LICENSE.txt for the new license.
-
-* The local codeset name used in the test suite, which is hard-coded
- in the previous version, can be specified by a separate header file.
-
-* IDN encoding and decoding now always check the validity of the
- result by performing roundtrip conversion check.
-
-Major changes in idnkit version 1.0-pr1:
-
-* Some test cases are added to the testsuite.
-
-* The testsuite can run on OpenBSD.
-
-Major changes in idnkit version 020829:
-
-* Testsuit is added for the library behavior check.
- Testsuit and testcases are in lib/tests. Read INSTALL (INSTALL.ja)
- for details. Tests aim at api, checker, converter, delimitermap,
- mapper, mapselecter, normalizer, res, resconf, and ucs4 at the
- moment.
-
-* "amcacez" module is renamed to "punycode".
-
-* AMC-ACE-Z and RACE are now treated as extra ACE.
-
-* Add "--with-utf8=NAME" option to configure script.
-
-Major changes in idnkit version 020730:
-
-* Complete bidi check support for NAMEPREP draft -11.
-
-* Type definitions of action flags for conversion APIs are changed
- from int to idn_action_t.
-
-* Add -nobidicheck option to idnconv command.
-
-Major changes in idnkit version 020711:
-
-* Default delimiters are added according to IDNA-10.
-
-* ``delimiter-map'' entry in config file is removed.
-
-* Add Unicode version 3.2 support.
-
-* Add preliminary support of NAMEPREP draft -11.
- This version supports NAMEPREP draft -11 without bidirectional label
- check.
-
-* Supported NAMEPREP versions are changed.
- idnkit supports NAMEPREP draft version -03, -10, and -11. Others
- are removed.
-
-* IDN encoding DUDE is removed.
-
-* New action flags are available for conversion APIs.
- IDN_ENCODE_QUERY, IDN_DECODE_QUERY, IDN_ENCODE_STORED, and
- IDN_DECODE_STORED are newly created according to IDNA specification.
- See include/idn/res.h for precise description.
-
-* Action flags IDN_ENCODE_APP, IDN_DECODE_APP and IDN_NAMEPREP change
- those behavior.
- See include/idn/res.h for precise description.
-
-* New decode APIs are created.
- idn_decodename2() and idn_res_decodename2() are defined to add
- conversion process from "IDN string encoded in local encoding" to
- UTF-8 before actual decode process of IDN.
-
-* idnconv with -reverse option treats input as IDN string(s) encoded
- in local encoding specified by -out option.
-
-* idnconv recognizes `-A' option which is synonym for `-noasciicheck'.
-
-* (Windows) idn Wrapper can run on Windows XP.
-
-* BIND-8 patch for BIND-8.3.3 is available and other patches of BIND-8
- are removed.
-
-Major changes in idnkit version 1.0-rc1:
-
-* NAMEPREP draft -09 is supported.
-
-* idnconv now accepts any encodings specified as argument for `-in'
- or `-out' option. `-out' accepts non-ACE, and `-in' accepts ACE.
-
-* In configuration file, `encoding-alias-file' entry is not supported
- any longer. It is simply ignored.
-
-Major changes in idnkit version 1.0-beta2:
-
-* Supported nameprep version is changed.
- Now idnkit supports nameprep-03, nameprep-06, and nameprep-08.
- Nameprep-05 and nameprep-07 are not supported any more.
-
-* Compatibility with mDNkit is added.
- This feature provides applications formerly written using mDNkit
- library with some source level compatibilities. If you want to use
- this feature, set `--enable-mdnkit-compat' option at execution time
- of configure script.
-
-* Now idnkit can set up easily without configuration file.
- As this feature is added, initialization function and some behavior
- of top level API are changed.
-
-* BIND-8 patch supports IDN conversion in itself.
-
-* (Windows) idnkit library looks for configuration files with registry
- information.
-
-* (Windows) idnkit library returns "CP<code page number>" as local
- encoding name when the environment variable "IDN_LOCAL_CODESET" is
- not set.
-
-* (Windows) libidnkit/libidnkitlite are now installed as DLL.
-
-* (Windows) idnconv can be executed as a console application.
-
-Major changes in idnkit version 1.0-beta1:
-
-* mDNkit has been renamed idnkit.
- This means all symbols with "mdn" are renamed with "idn". For
- example, a function `mdn_encodename()' is now `idn_encodename()', an
- environment variable "MDN_DISABLE" is "IDN_DISABLE", system
- configuretion file is "idn.conf", `runmdn' command is `runidn', and
- so forth.
-
-* Also, library name has been changed to "libidnkit(lite)".
-
-* `mdnsproxy' command has been removed.
-
-* `runidn' (formerly known as `runmdn') command is not installed by
- default.
- If you want to install it, set "yes" to `--enable-runidn' option
- when you run configure script.
-
-* idnkitlite library only instalation is supported.
- Set "yes" to `--enable-liteonly' option at execution of configure
- script to use this feature.
-
-* BIND-9.1.3 patch has been removed.
-
-* User configuration file is supported.
- idnkit now uses ".idnrc" in user's home directory for configuration
- of whole scheme. If there is no user configuration file, then it
- tries to load the system configuration file "idn.conf".
-
-* idnkit is now able to run without configuration file.
- If there are no configuration files (both of user's and system's),
- it sets normal configurations (the latest nameprep scheme it
- supports and the IDN encoding "Punycode") automatically at runtime.
-
-* Encoding alias information file is supported. (by generic libidnkit)
- Its name is "idnalias.conf" by default and it should be located in
- same directory where the system configuration file is. Example
- alias information file "idnalias.conf.sample" is installed
- automatically.
-
-* APIs are renewed. See manpage.
-
-* Now idnkit has full support of IDNA-07.
-
-* Internal representation of domain name is changed to UCS4 in place
- of UTF-8.
+++ /dev/null
-
- idnkit
- -- internationalized domain name toolkit --
- version 1.0
- Japan Network Information Center (JPNIC)
-
-
-Table of contents of this file:
-
- 1. Overview
- 2. Directory structure of this distribution
- 3. Supported systems
- 4. 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
-
-idnkit, which was originally known as mDNkit, is a toolkit for handling
-internationalized domain names. To handle such names, the following
-features are required:
-
- + Encoding conversion
- Multilingualized domain names have to be converted from
- the encoding application uses (local encoding) to
- the encoding used for name resolution (IDN encoding), and
- vice versa. Since domain names in IDN encoding just look
- like good old ASCII domain names, the encoding is also known
- as ASCII-compatible encoding (ACE).
-
- + NAMEPREP
- Name preparation of domain names before converting to
- IDN encoding. Basically this is a normalization process
- of the domain names.
-
-These conversion/nameprep processes to domain names have to be
-performed before they are sent to DNS servers. And since the
-processed domain names (in IDN encoding) consist of only legal ASCII
-characters, no changes are required to DNS servers.
-
-idnkit provides several ways for adding these features.
-
-This kit consists of following components.
-
- + library for handling internationalized domain names
- (libidnkit, libidnkitlite)
- Those libraries implement encoding conversion and nameprep.
- They provide easy-to-use APIs for handling internationalized
- domain name in your applications.
-
- Both libraries provide almost the same API. The difference
- between them is that libidnkit internally uses iconv() function
- to provide encoding conversion from UTF-8 to the local encoding
- (such as iso-8859-1, usually determined by the current locale),
- and vise versa. The idnconv and runidn commands in this toolkit
- use libidnkit.
-
- libidnkitlite is lightweight version of libidnkit. It assumes
- local encoding is UTF-8 so that it never uses iconv().
-
- + codeset conversion utility (idnconv)
- This command can convert internationalized domain name written
- in local encoding (e.g. EUC-JP) to ACE or the opposite direction.
- It can also convert named.conf and zone master files for BIND.
-
- + command which adds IDN feature dynamically to unix applications
- (runidn)
- This command enables normal applications to handle
- internationalized domain names by dynamically attaching special
- library to them. See ``2. using runidn'' below.
-
- Note that this command is not installed unless you specify the
- `--enable-runidn' option to `configure'. See the file `INSTALL'
- for more information about installation.
-
- + patch for BIND9 that adds IDN capability
- This patch adds IDN capability to BIND9. It adds encoding
- conversion and nameprep features to `dig', `host' and
- `nslookup'. With the patch, those commands become capable of
- internationalized domain names.
-
- + IDN wrapper for Windows applications
- On windows, name resolving request is passed to WINSOCK DLL. So,
- replacing WINSOCK DLL with multi-lingual domain name version
- makes legacy windows applications compatible with IDN. This is
- wrapper DLL for WINSOCK's name resolving functions. See
- ``3. using IDN wrapper'' below.
-
-
-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
- +Makefile.in toplevel makefile template
- +configure a `configure' script
- +include/
- | +config.h.in template header file for configuration
- | +idn/ header files for libidnkit and libindkitlite
- | +mdn/ header files for backward compatibility
- +lib/ source for libidnkit and libidnkitlite
- +patch/
- | +bind9/ BIND9 patch
- +tools/
- | +idnconv/ source for idnconv command
- | +runidn/ source for runidn command
- +util/ utilities
- +wsock/ source for IDN wrapper
-
-
-3. Supported systems
-
-We've had successful builds on the following systems:
-
- -------------------------------------------------------------------
- OS iconv library configure options
- ===================================================================
- FreeBSD 4.7-RELEASE GNU libiconv --with-libiconv
- for Intel 1.8
- -------------------------------------------------------------------
- Red Hat Linux 7.3 standard library none
- for Intel (glibc)
- -------------------------------------------------------------------
- Solaris 9 standard library none
- for Sparc (libc)
- -------------------------------------------------------------------
-
-The latest information about supported/unsupported systems will be
-found at the mdnkit FAQ page linked from:
-
- http://www.nic.ad.jp/en/idn/
-
-
-4. Contact information
-
-Please see
-
- http://www.nic.ad.jp/en/idn/
-
-for the latest news about this kit.
-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,v 1.1 2003/06/04 00:24:58 marka Exp $
+++ /dev/null
-
- idnkit
- -- \e$B9q:]2=%I%a%$%sL>%D!<%k%-%C%H\e(B --
- \e$B%P!<%8%g%s\e(B 1.0
- (\e$B<R\e(B) \e$BF|K\%M%C%H%o!<%/%$%s%U%)%a!<%7%g%s%;%s%?!<\e(B (JPNIC)
-
-
-\e$B$3$N%U%!%$%k$NL\<!\e(B:
-
- 1. \e$B35MW\e(B
- 2. \e$B%G%#%l%/%H%j9=@.\e(B
- 3. \e$BK\%-%C%H$,BP1~$7$F$$$k%7%9%F%`\e(B
- 4. \e$BK\%-%C%H$K4X$9$k:G?7>pJs!"Ld$$9g$o$;$K$D$$$F\e(B
-
-\e$B%3%s%Q%$%k$*$h$S%$%s%9%H!<%kJ}K!$K$D$$$F$O!"\e(BINSTALL.ja \e$B$H$$$&%U%!%$%k$r\e(B
-\e$B$4Mw2<$5$$!#$3$N%P!<%8%g%s$G$N<g$JJQ99E@$KIU$$$F$O!"\e(B(\e$B1QJ8$G$9$,\e(B) NEWS
-\e$B$H$$$&%U%!%$%k$r$4Mw2<$5$$!#\e(B
-
-
-1. \e$B35MW\e(B
-
-idnkit (\e$B5l>N\e(B mDNkit) \e$B$H$O9q:]2=%I%a%$%sL>$r07$&$?$a$N%D!<%k%-%C%H$G$9!#\e(B
-\e$B9q:]2=%I%a%$%sL>$r07$&$?$a$K$O!"<!$N$h$&$J5!G=$,MW5a$5$l$^$9!#\e(B
-
-\e$B!&%(%s%3!<%G%#%s%0JQ49\e(B
- \e$B9q:]2=%I%a%$%sL>$KBP$7$F!"$=$N%(%s%3!<%G%#%s%0$r%"%W%j%1!<%7%g%s$,;H\e(B
- \e$BMQ$7$F$$$k$b$N\e(B (\e$B%m!<%+%k%(%s%3!<%G%#%s%0\e(B) \e$B$+$iL>A02r7h$KMQ$$$i$l$k$b\e(B
- \e$B$N\e(B (IDN \e$B%(%s%3!<%G%#%s%0\e(B) \e$B$X$NJQ49!"$^$?$=$N5UJ}8~$NJQ49$r9T$$$^$9!#\e(B
- \e$B%I%a%$%sL>$r\e(B IDN \e$B%(%s%3!<%G%#%s%0$K$7$?7k2L$O!"=>Mh$N%I%a%$%sL>$HF1\e(B
- \e$B$8$/\e(B ASCII \e$BJ8;z$N$_$G9=@.$5$l$k$N$G!"\e(BIDN \e$B%(%s%3!<%G%#%s%0$O\e(BASCII \e$B8_\e(B
- \e$B49%(%s%3!<%G%#%s%0\e(B (ACE) \e$B$H$b8F$P$l$^$9!#\e(B
-
-\e$B!&\e(BNAMEPREP
- \e$B%I%a%$%sL>$r\e(B IDN \e$B%(%s%3!<%G%#%s%0$KJQ49$9$kA0$K!"L>A0$N@55,2=$r9T$$\e(B
- \e$B$^$9!#$3$l$r\e(B NAMEPREP \e$B$H8F$S$^$9!#\e(B
-
-\e$B>e5-$N=hM}$O%I%a%$%sL>$r\e(B DNS \e$B%5!<%P$KAw$kA0$K<B9T$9$kI,MW$,$"$j$^$9!#\e(B
-\e$B=hM}:Q$N%I%a%$%sL>$O\e(B ASCII \e$BJ8;z$+$i9=@.$5$l!"=>Mh$N\e(B ASCII \e$B%I%a%$%sL>$H\e(B
-\e$B$7$F$b@5$7$$7A<0$K$J$C$F$$$k$N$G!"\e(BDNS \e$B%5!<%PB&$K$O$J$s$NJQ99$bI,MW$"$j\e(B
-\e$B$^$;$s!#\e(B
-
-\e$B$3$NG[I[%-%C%H$K$O<!$N$h$&$J$b$N$,4^$^$l$^$9!#\e(B
-
-\e$B!&9q:]2=%I%a%$%sL>$r=hM}$9$k$?$a$N%i%$%V%i%j\e(B (libidnkit, libidnkitlite)
- \e$B$3$l$i$N%i%$%V%i%j$G$O!"%(%s%3!<%G%#%s%0JQ49$d\e(B NAMEPREP \e$B$N5!G=$r<B\e(B
- \e$BAu$7$F$*$j!"%"%W%j%1!<%7%g%s$,9q:]2=%I%a%$%sL>$r4JC1$K07$($k$h$&$K\e(B
- \e$B$9$k$?$a$N\e(B API \e$B$rHw$($F$$$^$9!#\e(B
-
- \e$B$I$A$i$N%i%$%V%i%j$b$[$H$s$IF1$8\e(B API \e$B$rDs6!$7$^$9!#N><T$NAj0cE@$G$9\e(B
- \e$B$,!"\e(Blibidnkit \e$B$N$[$&$O\e(B iconv() \e$B4X?t$r;H$C$F\e(B UTF-8 \e$B$H%m!<%+%k%(%s%3!<\e(B
- \e$B%G%#%s%0\e(B (iso-8859-1 \e$B$J$I!"DL>o$O\e(B locale \e$B$+$i7hDj$5$l$^$9\e(B) \e$B$H$N4V$N\e(B
- \e$BJQ495!G=$rDs6!$7$F$$$^$9!#K\%D!<%k%-%C%HIUB0$N\e(B idnconv \e$B$*$h$S\e(B runidn
- \e$B$O\e(B libidnkit \e$B$r;HMQ$7$F$$$^$9!#\e(B
-
- libidnkitlite \e$B$O\e(B libidnkit \e$B$N7ZNLHG$G$9!#%m!<%+%k%(%s%3!<%G%#%s%0$O\e(B
- \e$B>o$K\e(B UTF-8 \e$B$@$H2>Dj$7$F$*$j!"\e(Biconv() \e$B$O;HMQ$7$^$;$s!#\e(B
-
-\e$B!&%3!<%I%;%C%H%3%s%P!<%?\e(B (idnconv)
- \e$B%m!<%+%k%(%s%3!<%G%#%s%0\e(B (\e$B$?$H$($P\e(B EUC-JP) \e$B$G=q$+$l$?9q:]2=%I%a%$%s\e(B
- \e$BL>$+$i\e(B ACE \e$B$X$NJQ49$d!"$=$N5UJQ49$r9T$($k%3%^%s%I$G$9!#\e(BBIND \e$BMQ$N\e(B
- named.conf \e$B$d%>!<%s%^%9%?%U%!%$%k$rJQ49$9$k$3$H$b2DG=$G$9!#\e(B
-
-\e$B!&\e(BUNIX \e$B%"%W%j%1!<%7%g%s$K\e(B IDN \e$B5!G=$rF0E*$KDI2C$9$k%3%^%s%I\e(B (runidn)
- UNIX \e$B$NDL>o$N%"%W%j%1!<%7%g%s$G9q:]2=%I%a%$%sL>$r<h$j07$&$?$a$K!"FC\e(B
- \e$BJL$J%i%$%V%i%j$rF0E*$K%j%s%/$9$k$?$a$N%3%^%s%I$G$9!#>\$7$/$O!"8e=R$N\e(B
- \e$B!V\e(B2. runidn \e$B$r;H$&!W$r8fMw$/$@$5$$!#\e(B
-
- \e$B$J$*!"\e(Bconfigure \e$B<B9T;~$K\e(B `--enable-runidn' \e$B$r;XDj$7$J$$$H!"\e(Brunidn \e$B$O\e(B
- \e$B%$%s%9%H!<%k$5$l$^$;$s!#%$%s%9%H!<%k$K4X$7$F!">\$7$/$O\e(B INSTALL.ja \e$B$H\e(B
- \e$B$$$&%U%!%$%k$r$4Mw$/$@$5$$!#\e(B
-
-\e$B!&\e(BBIND9 \e$B$K\e(B IDN \e$B5!G=$rDI2C$9$k%Q%C%A\e(B
- BIND \e$B$K\e(B IDN \e$B$N5!G=$rDI2C$9$k%Q%C%A$G$9!#\e(B`dig'\e$B!"\e(B`host'\e$B!"\e(B`nslookup' \e$B$K\e(B
- \e$B%(%s%3!<%G%#%s%0JQ49$H\e(B NAMEPREP \e$B$N5!G=$rDI2C$7!"9q:]2=%I%a%$%sL>$,07\e(B
- \e$B$($k$h$&$K$7$^$9!#\e(B
-
-\e$B!&\e(BWindows \e$B%"%W%j%1!<%7%g%sMQ$N\e(B IDN \e$B%i%C%Q!<\e(B
- WINSOCK \e$B$NL>A02r7h5!G=$KBP$9$k%i%C%Q!<\e(B DLL \e$B$G$9!#\e(BWindows \e$B>e$G$O!"L>\e(B
- \e$BA02r7h$NMW5a$O!"\e(BWINSOCK DLL \e$B$rDL$7$F9T$o$l$^$9!#$=$3$G!"$3$l$r9q:]2=\e(B
- \e$B%I%a%$%sMQ$N\e(B WINSOCK DLL \e$B$KCV$-49$($k$3$H$G!"=>Mh$N\e(B Windows \e$B%"%W%j%1!<\e(B
- \e$B%7%g%s$G$b\e(B IDN \e$B5!G=$r;HMQ$G$-$k$h$&$K$7$^$9!#>\$7$/$O!"8e=R$N\e(B
- \e$B!V\e(B3. IDN \e$B%i%C%Q!<$r;H$&!W$r8fMw$/$@$5$$!#\e(B
-
-
-2. \e$B%G%#%l%/%H%j9=@.\e(B
-
-\e$BG[I[%-%C%H$N%G%#%l%/%H%j9=@.$H!"<gMW$J%U%!%$%k$r<($7$^$9!#\e(B
-
- +README \e$B1Q8lHG$N\e(B README
- +README.ja \e$B$3$N%U%!%$%k\e(B
- +INSTALL \e$B1Q8lHG$N\e(B INSTALL
- +INSTALL.ja \e$B%3%s%Q%$%k$H%$%s%9%H!<%kJ}K!\e(B
- +DISTFILES \e$BG[I[$5$l$k%U%!%$%k0lMw\e(B
- +NEWS \e$B<g$JJQ99\e(B
- +ChangeLog \e$BJQ99>\:Y\e(B
- +configure configure \e$B%9%/%j%W%H\e(B
- +Makefile.in \e$B%H%C%W%l%Y%k$N\e(B Makefile \e$B$N%F%s%W%l!<%H\e(B
- +include/
- | +config.h.in config.h \e$B$N%F%s%W%l!<%H\e(B
- | +idn/ libidnkit, libidnkitlite \e$B$N%X%C%@%U%!%$%k\e(B
- | +mdn/ \e$B5l%P!<%8%g%s$H$N8_49MQ%X%C%@%U%!%$%k\e(B
- +lib/ libidnkit, libidnkitlite \e$B$N%=!<%9\e(B
- +patch/
- | +bind9/ BIND9 \e$BMQ%Q%C%A\e(B
- +tools/
- | +idnconv/ idnconv \e$B%3%^%s%I$N%=!<%9\e(B
- | +runidn/ runidn \e$B%3%^%s%I$N%=!<%9\e(B
- +util/ \e$B%f!<%F%#%j%F%#\e(B
- +wsock/ IDN \e$B%i%C%Q!<$N%=!<%9\e(B
-
-
-3. \e$BK\%-%C%H$,BP1~$7$F$$$k%7%9%F%`\e(B
-
-\e$B@5>o$K%$%s%9%H!<%k$G$-$k$3$H$,3NG'$G$-$F$$$k$N$O!"<!$N%7%9%F%`$G$9!#\e(B
-
- ------------------------------------------------------------------
- OS iconv configure \e$B$N%*%W%7%g%s\e(B
- ==================================================================
- FreeBSD 4.7-RELEASE GNU libiconv --with-libiconv
- Intel 1.8
- -------------------------------------------------------------------
- Red Hat Linux 7.3 \e$BI8=`%i%$%V%i%j\e(B \e$B$J$7\e(B
- Intel (glibc)
- ------------------------------------------------------------------
- Solaris 9 \e$BI8=`%i%$%V%i%j\e(B \e$B$J$7\e(B
- Sparc (libc)
- -------------------------------------------------------------------
-
-\e$BK\%-%C%H$,BP1~$7$F$$$k\e(B/\e$B$7$F$$$J$$%7%9%F%`$K4X$9$k:G?7$N>pJs$O!"<!$N$H\e(B
-\e$B$3$m$+$iC)$l$k\e(B mdnkit FAQ \e$B$N%Z!<%8$K5-$5$l$F$$$^$9!#\e(B
-
- http://www.nic.ad.jp/ja/idn/
-
-
-4. \e$BK\%-%C%H$K4X$9$k:G?7>pJs!"Ld$$9g$o$;$K$D$$$F\e(B
-
-\e$BK\%-%C%H$K4X$9$k:G?7>pJs$K$D$$$F$O!"\e(B
-
- http://www.nic.ad.jp/ja/idn/
-
-\e$B$r;2>H$7$F$/$@$5$$\e(B
-\e$BK\%-%C%H$K4X$9$k%P%0%l%]!<%H$*$h$S%3%a%s%H$O!"$=$l$>$l\e(B
-
- mdnkit-bugs@nic.ad.jp
-\e$B$*$h$S\e(B
- idn-cmt@nic.ad.jp
-
-\e$B$X$*4j$$$7$^$9!#\e(B
-
-
-; $Id: README.ja,v 1.1 2003/06/04 00:24:59 marka Exp $
+++ /dev/null
-/* $Id: acconfig.h,v 1.1 2003/06/04 00:25: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.
- *
- * 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-@TOP@
-
-/* Define as an appropriate type (ex. int) if your system doesn't have. */
-#undef BOOL
-
-@BOTTOM@
-/* Define as the pathname of the shared libc object if your system has one. */
-#undef SOPATH_LIBC
-
-/* Define as the pathname of the shared libnsl object if your system has one. */
-#undef SOPATH_LIBNSL
+++ /dev/null
-##
-## $Id: aclocal.m4,v 1.1 2003/06/04 00:25:05 marka Exp $
-##
-AC_DEFUN(AC_FIND_SYSTEM_SHOBJ,[
-AC_MSG_CHECKING(for $1 shared object)
-shobj_name=$1
-shobj_path=
-case "$host" in
-*-hpux*)
- SOEXT=sl
- ;;
-*)
- SOEXT=so
- ;;
-esac
-for shobj_libdir in /lib /usr/lib; do
- if test -f $shobj_libdir/$shobj_name.$SOEXT; then
- shobj_path=$shobj_libdir/$shobj_name.$SOEXT
- else
- shobj_path=`ls -r $shobj_libdir/$shobj_name.$SOEXT* 2>/dev/null | head -1`
- if test "$shobj_path" != "" -a -f "$shobj_path"; then
- :
- else
- shobj_path=
- fi
- fi
- if test "$shobj_path" != ""; then
- AC_MSG_RESULT($shobj_path)
- shobj_pathsymbol=SOPATH_`echo $shobj_name | sed 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
- AC_DEFINE_UNQUOTED($shobj_pathsymbol, "$shobj_path")
- break
- fi
-done
-if test "$shobj_path" = ""; then
- AC_MSG_RESULT(no)
-fi
-])dnl
-
-## libtool.m4 - Configure libtool for the target system. -*-Shell-script-*-
-## Copyright (C) 1996-1999, 2000 Free Software Foundation, Inc.
-## Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
-##
-## This program is free software; you can redistribute it and/or modify
-## it under the terms of the GNU General Public License as published by
-## the Free Software Foundation; either version 2 of the License, or
-## (at your option) any later version.
-##
-## This program is distributed in the hope that it will be useful, but
-## WITHOUT ANY WARRANTY; without even the implied warranty of
-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-## General Public License for more details.
-##
-## You should have received a copy of the GNU General Public License
-## along with this program; if not, write to the Free Software
-## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-##
-## As a special exception to the GNU General Public License, if you
-## distribute this file as part of a program that contains a
-## configuration script generated by Autoconf, you may include it under
-## the same distribution terms that you use for the rest of that program.
-
-# serial 40 AC_PROG_LIBTOOL
-AC_DEFUN(AC_PROG_LIBTOOL,
-[AC_REQUIRE([AC_LIBTOOL_SETUP])dnl
-
-# Save cache, so that ltconfig can load it
-AC_CACHE_SAVE
-
-# Actually configure libtool. ac_aux_dir is where install-sh is found.
-CC="$CC" CFLAGS="$CFLAGS" CPPFLAGS="$CPPFLAGS" \
-LD="$LD" LDFLAGS="$LDFLAGS" LIBS="$LIBS" \
-LN_S="$LN_S" NM="$NM" RANLIB="$RANLIB" \
-DLLTOOL="$DLLTOOL" AS="$AS" OBJDUMP="$OBJDUMP" \
-${CONFIG_SHELL-/bin/sh} $ac_aux_dir/ltconfig --no-reexec \
-$libtool_flags --no-verify $ac_aux_dir/ltmain.sh $lt_target \
-|| AC_MSG_ERROR([libtool configure failed])
-
-# Reload cache, that may have been modified by ltconfig
-AC_CACHE_LOAD
-
-# This can be used to rebuild libtool when needed
-LIBTOOL_DEPS="$ac_aux_dir/ltconfig $ac_aux_dir/ltmain.sh"
-
-# Always use our own libtool.
-LIBTOOL='$(SHELL) $(top_builddir)/libtool'
-AC_SUBST(LIBTOOL)dnl
-
-# Redirect the config.log output again, so that the ltconfig log is not
-# clobbered by the next message.
-exec 5>>./config.log
-])
-
-AC_DEFUN(AC_LIBTOOL_SETUP,
-[AC_PREREQ(2.13)dnl
-AC_REQUIRE([AC_ENABLE_SHARED])dnl
-AC_REQUIRE([AC_ENABLE_STATIC])dnl
-AC_REQUIRE([AC_ENABLE_FAST_INSTALL])dnl
-AC_REQUIRE([AC_CANONICAL_HOST])dnl
-AC_REQUIRE([AC_CANONICAL_BUILD])dnl
-AC_REQUIRE([AC_PROG_RANLIB])dnl
-AC_REQUIRE([AC_PROG_CC])dnl
-AC_REQUIRE([AC_PROG_LD])dnl
-AC_REQUIRE([AC_PROG_NM])dnl
-AC_REQUIRE([AC_PROG_LN_S])dnl
-dnl
-
-case "$target" in
-NONE) lt_target="$host" ;;
-*) lt_target="$target" ;;
-esac
-
-# Check for any special flags to pass to ltconfig.
-libtool_flags="--cache-file=$cache_file"
-test "$enable_shared" = no && libtool_flags="$libtool_flags --disable-shared"
-test "$enable_static" = no && libtool_flags="$libtool_flags --disable-static"
-test "$enable_fast_install" = no && libtool_flags="$libtool_flags --disable-fast-install"
-test "$ac_cv_prog_gcc" = yes && libtool_flags="$libtool_flags --with-gcc"
-test "$ac_cv_prog_gnu_ld" = yes && libtool_flags="$libtool_flags --with-gnu-ld"
-ifdef([AC_PROVIDE_AC_LIBTOOL_DLOPEN],
-[libtool_flags="$libtool_flags --enable-dlopen"])
-ifdef([AC_PROVIDE_AC_LIBTOOL_WIN32_DLL],
-[libtool_flags="$libtool_flags --enable-win32-dll"])
-AC_ARG_ENABLE(libtool-lock,
- [ --disable-libtool-lock avoid locking (might break parallel builds)])
-test "x$enable_libtool_lock" = xno && libtool_flags="$libtool_flags --disable-lock"
-test x"$silent" = xyes && libtool_flags="$libtool_flags --silent"
-
-# Some flags need to be propagated to the compiler or linker for good
-# libtool support.
-case "$lt_target" in
-*-*-irix6*)
- # Find out which ABI we are using.
- echo '[#]line __oline__ "configure"' > conftest.$ac_ext
- if AC_TRY_EVAL(ac_compile); then
- case "`/usr/bin/file conftest.o`" in
- *32-bit*)
- LD="${LD-ld} -32"
- ;;
- *N32*)
- LD="${LD-ld} -n32"
- ;;
- *64-bit*)
- LD="${LD-ld} -64"
- ;;
- esac
- fi
- rm -rf conftest*
- ;;
-
-*-*-sco3.2v5*)
- # On SCO OpenServer 5, we need -belf to get full-featured binaries.
- SAVE_CFLAGS="$CFLAGS"
- CFLAGS="$CFLAGS -belf"
- AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf,
- [AC_TRY_LINK([],[],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no])])
- if test x"$lt_cv_cc_needs_belf" != x"yes"; then
- # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
- CFLAGS="$SAVE_CFLAGS"
- fi
- ;;
-
-ifdef([AC_PROVIDE_AC_LIBTOOL_WIN32_DLL],
-[*-*-cygwin* | *-*-mingw*)
- AC_CHECK_TOOL(DLLTOOL, dlltool, false)
- AC_CHECK_TOOL(AS, as, false)
- AC_CHECK_TOOL(OBJDUMP, objdump, false)
- ;;
-])
-esac
-])
-
-# AC_LIBTOOL_DLOPEN - enable checks for dlopen support
-AC_DEFUN(AC_LIBTOOL_DLOPEN, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])])
-
-# AC_LIBTOOL_WIN32_DLL - declare package support for building win32 dll's
-AC_DEFUN(AC_LIBTOOL_WIN32_DLL, [AC_BEFORE([$0], [AC_LIBTOOL_SETUP])])
-
-# AC_ENABLE_SHARED - implement the --enable-shared flag
-# Usage: AC_ENABLE_SHARED[(DEFAULT)]
-# Where DEFAULT is either `yes' or `no'. If omitted, it defaults to
-# `yes'.
-AC_DEFUN(AC_ENABLE_SHARED, [dnl
-define([AC_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl
-AC_ARG_ENABLE(shared,
-changequote(<<, >>)dnl
-<< --enable-shared[=PKGS] build shared libraries [default=>>AC_ENABLE_SHARED_DEFAULT],
-changequote([, ])dnl
-[p=${PACKAGE-default}
-case "$enableval" in
-yes) enable_shared=yes ;;
-no) enable_shared=no ;;
-*)
- enable_shared=no
- # Look at the argument we got. We use all the common list separators.
- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
- for pkg in $enableval; do
- if test "X$pkg" = "X$p"; then
- enable_shared=yes
- fi
- done
- IFS="$ac_save_ifs"
- ;;
-esac],
-enable_shared=AC_ENABLE_SHARED_DEFAULT)dnl
-])
-
-# AC_DISABLE_SHARED - set the default shared flag to --disable-shared
-AC_DEFUN(AC_DISABLE_SHARED, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
-AC_ENABLE_SHARED(no)])
-
-# AC_ENABLE_STATIC - implement the --enable-static flag
-# Usage: AC_ENABLE_STATIC[(DEFAULT)]
-# Where DEFAULT is either `yes' or `no'. If omitted, it defaults to
-# `yes'.
-AC_DEFUN(AC_ENABLE_STATIC, [dnl
-define([AC_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl
-AC_ARG_ENABLE(static,
-changequote(<<, >>)dnl
-<< --enable-static[=PKGS] build static libraries [default=>>AC_ENABLE_STATIC_DEFAULT],
-changequote([, ])dnl
-[p=${PACKAGE-default}
-case "$enableval" in
-yes) enable_static=yes ;;
-no) enable_static=no ;;
-*)
- enable_static=no
- # Look at the argument we got. We use all the common list separators.
- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
- for pkg in $enableval; do
- if test "X$pkg" = "X$p"; then
- enable_static=yes
- fi
- done
- IFS="$ac_save_ifs"
- ;;
-esac],
-enable_static=AC_ENABLE_STATIC_DEFAULT)dnl
-])
-
-# AC_DISABLE_STATIC - set the default static flag to --disable-static
-AC_DEFUN(AC_DISABLE_STATIC, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
-AC_ENABLE_STATIC(no)])
-
-
-# AC_ENABLE_FAST_INSTALL - implement the --enable-fast-install flag
-# Usage: AC_ENABLE_FAST_INSTALL[(DEFAULT)]
-# Where DEFAULT is either `yes' or `no'. If omitted, it defaults to
-# `yes'.
-AC_DEFUN(AC_ENABLE_FAST_INSTALL, [dnl
-define([AC_ENABLE_FAST_INSTALL_DEFAULT], ifelse($1, no, no, yes))dnl
-AC_ARG_ENABLE(fast-install,
-changequote(<<, >>)dnl
-<< --enable-fast-install[=PKGS] optimize for fast installation [default=>>AC_ENABLE_FAST_INSTALL_DEFAULT],
-changequote([, ])dnl
-[p=${PACKAGE-default}
-case "$enableval" in
-yes) enable_fast_install=yes ;;
-no) enable_fast_install=no ;;
-*)
- enable_fast_install=no
- # Look at the argument we got. We use all the common list separators.
- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
- for pkg in $enableval; do
- if test "X$pkg" = "X$p"; then
- enable_fast_install=yes
- fi
- done
- IFS="$ac_save_ifs"
- ;;
-esac],
-enable_fast_install=AC_ENABLE_FAST_INSTALL_DEFAULT)dnl
-])
-
-# AC_ENABLE_FAST_INSTALL - set the default to --disable-fast-install
-AC_DEFUN(AC_DISABLE_FAST_INSTALL, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
-AC_ENABLE_FAST_INSTALL(no)])
-
-# AC_PROG_LD - find the path to the GNU or non-GNU linker
-AC_DEFUN(AC_PROG_LD,
-[AC_ARG_WITH(gnu-ld,
-[ --with-gnu-ld assume the C compiler uses GNU ld [default=no]],
-test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no)
-AC_REQUIRE([AC_PROG_CC])dnl
-AC_REQUIRE([AC_CANONICAL_HOST])dnl
-AC_REQUIRE([AC_CANONICAL_BUILD])dnl
-ac_prog=ld
-if test "$ac_cv_prog_gcc" = yes; then
- # Check if gcc -print-prog-name=ld gives a path.
- AC_MSG_CHECKING([for ld used by GCC])
- ac_prog=`($CC -print-prog-name=ld) 2>&5`
- case "$ac_prog" in
- # Accept absolute paths.
-changequote(,)dnl
- [\\/]* | [A-Za-z]:[\\/]*)
- re_direlt='/[^/][^/]*/\.\./'
-changequote([,])dnl
- # Canonicalize the path of ld
- ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'`
- while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
- ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"`
- done
- test -z "$LD" && LD="$ac_prog"
- ;;
- "")
- # If it fails, then pretend we aren't using GCC.
- ac_prog=ld
- ;;
- *)
- # If it is relative, then search for the first ld in PATH.
- with_gnu_ld=unknown
- ;;
- esac
-elif test "$with_gnu_ld" = yes; then
- AC_MSG_CHECKING([for GNU ld])
-else
- AC_MSG_CHECKING([for non-GNU ld])
-fi
-AC_CACHE_VAL(ac_cv_path_LD,
-[if test -z "$LD"; then
- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}"
- for ac_dir in $PATH; do
- test -z "$ac_dir" && ac_dir=.
- if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
- ac_cv_path_LD="$ac_dir/$ac_prog"
- # Check to see if the program is GNU ld. I'd rather use --version,
- # but apparently some GNU ld's only accept -v.
- # Break only if it was the GNU/non-GNU ld that we prefer.
- if "$ac_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then
- test "$with_gnu_ld" != no && break
- else
- test "$with_gnu_ld" != yes && break
- fi
- fi
- done
- IFS="$ac_save_ifs"
-else
- ac_cv_path_LD="$LD" # Let the user override the test with a path.
-fi])
-LD="$ac_cv_path_LD"
-if test -n "$LD"; then
- AC_MSG_RESULT($LD)
-else
- AC_MSG_RESULT(no)
-fi
-test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
-AC_PROG_LD_GNU
-])
-
-AC_DEFUN(AC_PROG_LD_GNU,
-[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], ac_cv_prog_gnu_ld,
-[# I'd rather use --version here, but apparently some GNU ld's only accept -v.
-if $LD -v 2>&1 </dev/null | egrep '(GNU|with BFD)' 1>&5; then
- ac_cv_prog_gnu_ld=yes
-else
- ac_cv_prog_gnu_ld=no
-fi])
-])
-
-# AC_PROG_NM - find the path to a BSD-compatible name lister
-AC_DEFUN(AC_PROG_NM,
-[AC_MSG_CHECKING([for BSD-compatible nm])
-AC_CACHE_VAL(ac_cv_path_NM,
-[if test -n "$NM"; then
- # Let the user override the test.
- ac_cv_path_NM="$NM"
-else
- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}"
- for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do
- test -z "$ac_dir" && ac_dir=.
- if test -f $ac_dir/nm || test -f $ac_dir/nm$ac_exeext ; then
- # Check to see if the nm accepts a BSD-compat flag.
- # Adding the `sed 1q' prevents false positives on HP-UX, which says:
- # nm: unknown option "B" ignored
- if ($ac_dir/nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then
- ac_cv_path_NM="$ac_dir/nm -B"
- break
- elif ($ac_dir/nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then
- ac_cv_path_NM="$ac_dir/nm -p"
- break
- else
- ac_cv_path_NM=${ac_cv_path_NM="$ac_dir/nm"} # keep the first match, but
- continue # so that we can try to find one that supports BSD flags
- fi
- fi
- done
- IFS="$ac_save_ifs"
- test -z "$ac_cv_path_NM" && ac_cv_path_NM=nm
-fi])
-NM="$ac_cv_path_NM"
-AC_MSG_RESULT([$NM])
-])
-
-# AC_CHECK_LIBM - check for math library
-AC_DEFUN(AC_CHECK_LIBM,
-[AC_REQUIRE([AC_CANONICAL_HOST])dnl
-LIBM=
-case "$lt_target" in
-*-*-beos* | *-*-cygwin*)
- # These system don't have libm
- ;;
-*-ncr-sysv4.3*)
- AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw")
- AC_CHECK_LIB(m, main, LIBM="$LIBM -lm")
- ;;
-*)
- AC_CHECK_LIB(m, main, LIBM="-lm")
- ;;
-esac
-])
-
-# AC_LIBLTDL_CONVENIENCE[(dir)] - sets LIBLTDL to the link flags for
-# the libltdl convenience library and INCLTDL to the include flags for
-# the libltdl header and adds --enable-ltdl-convenience to the
-# configure arguments. Note that LIBLTDL and INCLTDL are not
-# AC_SUBSTed, nor is AC_CONFIG_SUBDIRS called. If DIR is not
-# provided, it is assumed to be `libltdl'. LIBLTDL will be prefixed
-# with '${top_builddir}/' and INCLTDL will be prefixed with
-# '${top_srcdir}/' (note the single quotes!). If your package is not
-# flat and you're not using automake, define top_builddir and
-# top_srcdir appropriately in the Makefiles.
-AC_DEFUN(AC_LIBLTDL_CONVENIENCE, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
- case "$enable_ltdl_convenience" in
- no) AC_MSG_ERROR([this package needs a convenience libltdl]) ;;
- "") enable_ltdl_convenience=yes
- ac_configure_args="$ac_configure_args --enable-ltdl-convenience" ;;
- esac
- LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdlc.la
- INCLTDL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl'])
-])
-
-# AC_LIBLTDL_INSTALLABLE[(dir)] - sets LIBLTDL to the link flags for
-# the libltdl installable library and INCLTDL to the include flags for
-# the libltdl header and adds --enable-ltdl-install to the configure
-# arguments. Note that LIBLTDL and INCLTDL are not AC_SUBSTed, nor is
-# AC_CONFIG_SUBDIRS called. If DIR is not provided and an installed
-# libltdl is not found, it is assumed to be `libltdl'. LIBLTDL will
-# be prefixed with '${top_builddir}/' and INCLTDL will be prefixed
-# with '${top_srcdir}/' (note the single quotes!). If your package is
-# not flat and you're not using automake, define top_builddir and
-# top_srcdir appropriately in the Makefiles.
-# In the future, this macro may have to be called after AC_PROG_LIBTOOL.
-AC_DEFUN(AC_LIBLTDL_INSTALLABLE, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
- AC_CHECK_LIB(ltdl, main,
- [test x"$enable_ltdl_install" != xyes && enable_ltdl_install=no],
- [if test x"$enable_ltdl_install" = xno; then
- AC_MSG_WARN([libltdl not installed, but installation disabled])
- else
- enable_ltdl_install=yes
- fi
- ])
- if test x"$enable_ltdl_install" = x"yes"; then
- ac_configure_args="$ac_configure_args --enable-ltdl-install"
- LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdl.la
- INCLTDL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl'])
- else
- ac_configure_args="$ac_configure_args --enable-ltdl-install=no"
- LIBLTDL="-lltdl"
- INCLTDL=
- fi
-])
-
-dnl old names
-AC_DEFUN(AM_PROG_LIBTOOL, [indir([AC_PROG_LIBTOOL])])dnl
-AC_DEFUN(AM_ENABLE_SHARED, [indir([AC_ENABLE_SHARED], $@)])dnl
-AC_DEFUN(AM_ENABLE_STATIC, [indir([AC_ENABLE_STATIC], $@)])dnl
-AC_DEFUN(AM_DISABLE_SHARED, [indir([AC_DISABLE_SHARED], $@)])dnl
-AC_DEFUN(AM_DISABLE_STATIC, [indir([AC_DISABLE_STATIC], $@)])dnl
-AC_DEFUN(AM_PROG_LD, [indir([AC_PROG_LD])])dnl
-AC_DEFUN(AM_PROG_NM, [indir([AC_PROG_NM])])dnl
-
-dnl This is just to silence aclocal about the macro not being used
-ifelse([AC_DISABLE_FAST_INSTALL])dnl
+++ /dev/null
-#! /bin/sh
-# Attempt to guess a canonical system name.
-# 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
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-#
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# 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 <bothner@cygnus.com>.
-# Please send patches to <config-patches@gnu.org>.
-#
-# This script attempts to guess a canonical system name similar to
-# config.sub. If it succeeds, it prints the system name on stdout, and
-# 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 build system type.
-
-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 <config-patches@gnu.org>."
-
-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 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_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
-
-# Note: order is significant - the case branches are not exclusive.
-
-case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
- *:NetBSD:*:*)
- # Netbsd (nbsd) targets should (where applicable) match one or
- # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*,
- # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently
- # switched to ELF, *-*-netbsd* would select the old
- # object file format. This provides both forward
- # compatibility and a consistent mechanism for selecting the
- # object file format.
- # Determine the machine/vendor (is the vendor relevant).
- case "${UNAME_MACHINE}" in
- amiga) machine=m68k-unknown ;;
- arm32) machine=arm-unknown ;;
- atari*) machine=m68k-atari ;;
- sun3*) machine=m68k-sun ;;
- mac68k) machine=m68k-apple ;;
- macppc) machine=powerpc-apple ;;
- hp3[0-9][05]) machine=m68k-hp ;;
- ibmrt|romp-ibm) machine=romp-ibm ;;
- *) machine=${UNAME_MACHINE}-unknown ;;
- esac
- # 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:
- # contains redundant information, the shorter form:
- # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
- echo "${machine}-${os}${release}"
- exit 0 ;;
- alpha:OSF1:*:*)
- if test $UNAME_RELEASE = "V4.0"; then
- UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
- fi
- # A Vn.n version is a released version.
- # A Tn.n version is a released field test version.
- # A Xn.n version is an unreleased experimental baselevel.
- # 1.2 uses "1.2" for uname -r.
- cat <<EOF >$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
- eval $set_cc_for_build
- $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"
- ;;
- 2-1307)
- UNAME_MACHINE="alphaev68"
- ;;
- esac
- fi
- rm -f $dummy.s $dummy
- echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- exit 0 ;;
- Alpha\ *:Windows_NT*:*)
- # How do we know it's Interix rather than the generic POSIX subsystem?
- # Should we change UNAME_MACHINE based on the output of uname instead
- # of the specific Alpha model?
- echo alpha-pc-interix
- exit 0 ;;
- 21064:Windows_NT:50:3)
- echo alpha-dec-winnt3.5
- exit 0 ;;
- Amiga*:UNIX_System_V:4.0:*)
- echo m68k-unknown-sysv4
- exit 0;;
- amiga:OpenBSD:*:*)
- echo m68k-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- *:[Aa]miga[Oo][Ss]:*:*)
- echo ${UNAME_MACHINE}-unknown-amigaos
- exit 0 ;;
- arc64:OpenBSD:*:*)
- echo mips64el-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- arc:OpenBSD:*:*)
- echo mipsel-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- hkmips:OpenBSD:*:*)
- echo mips-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- pmax:OpenBSD:*:*)
- echo mipsel-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- sgi:OpenBSD:*:*)
- echo mips-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- wgrisc:OpenBSD:*:*)
- echo mipsel-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- *:OS/390:*:*)
- echo i370-ibm-openedition
- exit 0 ;;
- arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
- echo arm-acorn-riscix${UNAME_RELEASE}
- exit 0;;
- SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
- echo hppa1.1-hitachi-hiuxmpp
- exit 0;;
- Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
- # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
- if test "`(/bin/universe) 2>/dev/null`" = att ; then
- echo pyramid-pyramid-sysv3
- else
- echo pyramid-pyramid-bsd
- fi
- exit 0 ;;
- NILE*:*:*:dcosx)
- echo pyramid-pyramid-svr4
- exit 0 ;;
- sun4H:SunOS:5.*:*)
- echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- exit 0 ;;
- sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
- echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- exit 0 ;;
- i86pc:SunOS:5.*:*)
- echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- exit 0 ;;
- sun4*:SunOS:6*:*)
- # According to config.sub, this is the proper way to canonicalize
- # SunOS6. Hard to guess exactly what SunOS6 will be like, but
- # it's likely to be more like Solaris than SunOS4.
- echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- exit 0 ;;
- sun4*:SunOS:*:*)
- case "`/usr/bin/arch -k`" in
- Series*|S4*)
- UNAME_RELEASE=`uname -v`
- ;;
- esac
- # Japanese Language versions have a version number like `4.1.3-JL'.
- echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
- exit 0 ;;
- sun3*:SunOS:*:*)
- echo m68k-sun-sunos${UNAME_RELEASE}
- exit 0 ;;
- sun*:*:4.2BSD:*)
- UNAME_RELEASE=`(head -1 /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
- test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
- case "`/bin/arch`" in
- sun3)
- echo m68k-sun-sunos${UNAME_RELEASE}
- ;;
- sun4)
- echo sparc-sun-sunos${UNAME_RELEASE}
- ;;
- esac
- exit 0 ;;
- 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 ;;
- # The situation for MiNT is a little confusing. The machine name
- # can be virtually everything (everything which is not
- # "atarist" or "atariste" at least should have a processor
- # > m68000). The system name ranges from "MiNT" over "FreeMiNT"
- # to the lowercase version "mint" (or "freemint"). Finally
- # the system name "TOS" denotes a system which is actually not
- # MiNT. But MiNT is downward compatible to TOS, so this should
- # be no problem.
- atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
- echo m68k-atari-mint${UNAME_RELEASE}
- exit 0 ;;
- atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
- echo m68k-atari-mint${UNAME_RELEASE}
- exit 0 ;;
- *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
- echo m68k-atari-mint${UNAME_RELEASE}
- exit 0 ;;
- milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
- echo m68k-milan-mint${UNAME_RELEASE}
- exit 0 ;;
- hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
- echo m68k-hades-mint${UNAME_RELEASE}
- exit 0 ;;
- *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
- echo m68k-unknown-mint${UNAME_RELEASE}
- exit 0 ;;
- sun3*:OpenBSD:*:*)
- echo m68k-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- mac68k:OpenBSD:*:*)
- echo m68k-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- mvme68k:OpenBSD:*:*)
- echo m68k-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- mvme88k:OpenBSD:*:*)
- echo m88k-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- powerpc:machten:*:*)
- echo powerpc-apple-machten${UNAME_RELEASE}
- exit 0 ;;
- RISC*:Mach:*:*)
- echo mips-dec-mach_bsd4.3
- exit 0 ;;
- RISC*:ULTRIX:*:*)
- echo mips-dec-ultrix${UNAME_RELEASE}
- exit 0 ;;
- VAX*:ULTRIX*:*:*)
- echo vax-dec-ultrix${UNAME_RELEASE}
- exit 0 ;;
- 2020:CLIX:*:* | 2430:CLIX:*:*)
- 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 <stdio.h> /* for printf() prototype */
- int main (int argc, char *argv[]) {
-#else
- int main (argc, argv) int argc; char *argv[]; {
-#endif
- #if defined (host_mips) && defined (MIPSEB)
- #if defined (SYSTYPE_SYSV)
- printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);
- #endif
- #if defined (SYSTYPE_SVR4)
- printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0);
- #endif
- #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
- printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0);
- #endif
- #endif
- exit (-1);
- }
-EOF
- $CC_FOR_BUILD $dummy.c -o $dummy \
- && ./$dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \
- && 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 ;;
- m88k:CX/UX:7*:*)
- echo m88k-harris-cxux7
- exit 0 ;;
- m88k:*:4*:R4*)
- echo m88k-motorola-sysv4
- exit 0 ;;
- m88k:*:3*:R3*)
- echo m88k-motorola-sysv3
- exit 0 ;;
- AViiON:dgux:*:*)
- # DG/UX returns AViiON for all architectures
- UNAME_PROCESSOR=`/usr/bin/uname -p`
- if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
- then
- if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
- [ ${TARGET_BINARY_INTERFACE}x = x ]
- then
- echo m88k-dg-dgux${UNAME_RELEASE}
- else
- echo m88k-dg-dguxbcs${UNAME_RELEASE}
- fi
- else
- echo i586-dg-dgux${UNAME_RELEASE}
- fi
- exit 0 ;;
- M88*:DolphinOS:*:*) # DolphinOS (SVR3)
- echo m88k-dolphin-sysv3
- exit 0 ;;
- M88*:*:R3*:*)
- # Delta 88k system running SVR3
- echo m88k-motorola-sysv3
- exit 0 ;;
- XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
- echo m88k-tektronix-sysv3
- exit 0 ;;
- Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
- echo m68k-tektronix-bsd
- exit 0 ;;
- *:IRIX*:*:*)
- echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
- exit 0 ;;
- ????????: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:*:*)
- 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 <sys/systemcfg.h>
-
- main()
- {
- if (!__power_pc())
- exit(1);
- puts("powerpc-ibm-aix3.2.5");
- exit(0);
- }
-EOF
- $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
- echo rs6000-ibm-aix3.2.4
- else
- echo rs6000-ibm-aix3.2
- fi
- exit 0 ;;
- *:AIX:*:[45])
- IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | head -1 | awk '{ print $1 }'`
- if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
- IBM_ARCH=rs6000
- else
- IBM_ARCH=powerpc
- fi
- if [ -x /usr/bin/oslevel ] ; then
- IBM_REV=`/usr/bin/oslevel`
- else
- IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
- fi
- echo ${IBM_ARCH}-ibm-aix${IBM_REV}
- exit 0 ;;
- *:AIX:*:*)
- echo rs6000-ibm-aix
- exit 0 ;;
- ibmrt:4.4BSD:*|romp-ibm:BSD:*)
- echo romp-ibm-bsd4.4
- exit 0 ;;
- ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and
- echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to
- exit 0 ;; # report: romp-ibm BSD 4.3
- *:BOSX:*:*)
- echo rs6000-bull-bosx
- exit 0 ;;
- DPX/2?00:B.O.S.:*:*)
- echo m68k-bull-sysv3
- exit 0 ;;
- 9000/[34]??:4.3bsd:1.*:*)
- echo m68k-hp-bsd
- exit 0 ;;
- hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
- 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
- #include <stdlib.h>
- #include <unistd.h>
-
- int main ()
- {
- #if defined(_SC_KERNEL_BITS)
- long bits = sysconf(_SC_KERNEL_BITS);
- #endif
- long cpu = sysconf (_SC_CPU_VERSION);
-
- switch (cpu)
- {
- case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
- case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
- case CPU_PA_RISC2_0:
- #if defined(_SC_KERNEL_BITS)
- switch (bits)
- {
- case 64: puts ("hppa2.0w"); break;
- case 32: puts ("hppa2.0n"); break;
- default: puts ("hppa2.0"); break;
- } break;
- #else /* !defined(_SC_KERNEL_BITS) */
- puts ("hppa2.0"); break;
- #endif
- default: puts ("hppa1.0"); break;
- }
- exit (0);
- }
-EOF
- (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
- 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 <unistd.h>
- int
- main ()
- {
- long cpu = sysconf (_SC_CPU_VERSION);
- /* The order matters, because CPU_IS_HP_MC68K erroneously returns
- true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct
- results, however. */
- if (CPU_IS_PA_RISC (cpu))
- {
- switch (cpu)
- {
- case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break;
- case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break;
- case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break;
- default: puts ("hppa-hitachi-hiuxwe2"); break;
- }
- }
- else if (CPU_IS_HP_MC68K (cpu))
- puts ("m68k-hitachi-hiuxwe2");
- else puts ("unknown-hitachi-hiuxwe2");
- exit (0);
- }
-EOF
- $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 ;;
- 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
- echo hppa1.1-hp-bsd
- exit 0 ;;
- 9000/8??:4.3bsd:*:*)
- echo hppa1.0-hp-bsd
- exit 0 ;;
- *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
- echo hppa1.0-hp-mpeix
- exit 0 ;;
- hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
- echo hppa1.1-hp-osf
- exit 0 ;;
- hp8??:OSF1:*:*)
- echo hppa1.0-hp-osf
- exit 0 ;;
- i*86:OSF1:*:*)
- if [ -x /usr/sbin/sysversion ] ; then
- echo ${UNAME_MACHINE}-unknown-osf1mk
- else
- echo ${UNAME_MACHINE}-unknown-osf1
- fi
- exit 0 ;;
- parisc*:Lites*:*:*)
- echo hppa1.1-hp-lites
- exit 0 ;;
- hppa*:OpenBSD:*:*)
- echo hppa-unknown-openbsd
- exit 0 ;;
- C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
- echo c1-convex-bsd
- exit 0 ;;
- C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
- if getsysinfo -f scalar_acc
- then echo c32-convex-bsd
- else echo c2-convex-bsd
- fi
- exit 0 ;;
- C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
- echo c34-convex-bsd
- exit 0 ;;
- C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
- echo c38-convex-bsd
- exit 0 ;;
- C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
- echo c4-convex-bsd
- exit 0 ;;
- CRAY*X-MP:*:*:*)
- echo xmp-cray-unicos
- exit 0 ;;
- CRAY*Y-MP:*:*:*)
- 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 's/\.[^.]*$/.X/'
- exit 0 ;;
- CRAY*TS:*:*:*)
- echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
- exit 0 ;;
- 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 ;;
- 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 "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
- exit 0 ;;
- hp300:OpenBSD:*:*)
- echo m68k-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
- echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
- exit 0 ;;
- sparc*:BSD/OS:*:*)
- echo sparc-unknown-bsdi${UNAME_RELEASE}
- exit 0 ;;
- *:BSD/OS:*:*)
- echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
- exit 0 ;;
- *:FreeBSD:*:*)
- echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
- exit 0 ;;
- *:OpenBSD:*:*)
- echo ${UNAME_MACHINE}-unknown-openbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
- exit 0 ;;
- i*:CYGWIN*:*)
- echo ${UNAME_MACHINE}-pc-cygwin
- exit 0 ;;
- 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
- # UNAME_MACHINE based on the output of uname instead of i386?
- echo i386-pc-interix
- exit 0 ;;
- i*:UWIN*:*)
- echo ${UNAME_MACHINE}-pc-uwin
- exit 0 ;;
- p*:CYGWIN*:*)
- echo powerpcle-unknown-cygwin
- exit 0 ;;
- prep*:SunOS:5.*:*)
- echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- exit 0 ;;
- *:GNU:*:*)
- echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
- exit 0 ;;
- 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_supported_targets=`cd /; ld --help 2>&1 \
- | sed -ne '/supported targets:/!d
- s/[ ][ ]*/ /g
- s/.*supported targets: *//
- s/ .*//
- p'`
- case "$ld_supported_targets" in
- elf32-i386)
- TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu"
- ;;
- a.out-i386-linux)
- echo "${UNAME_MACHINE}-pc-linux-gnuaout"
- exit 0 ;;
- coff-i386)
- echo "${UNAME_MACHINE}-pc-linux-gnucoff"
- 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
- # Determine whether the default compiler is a.out or elf
- eval $set_cc_for_build
- cat >$dummy.c <<EOF
-#include <features.h>
-#ifdef __cplusplus
-#include <stdio.h> /* for printf() prototype */
- int main (int argc, char *argv[]) {
-#else
- int main (argc, argv) int argc; char *argv[]; {
-#endif
-#ifdef __ELF__
-# ifdef __GLIBC__
-# if __GLIBC__ >= 2
- printf ("%s-pc-linux-gnu\n", argv[1]);
-# else
- printf ("%s-pc-linux-gnulibc1\n", argv[1]);
-# endif
-# else
- printf ("%s-pc-linux-gnulibc1\n", argv[1]);
-# endif
-#else
- 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 -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.*)
- # 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,
- # I just have to hope. -- rms.
- # 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.*:*)
- 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}
- else
- echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
- fi
- exit 0 ;;
- 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:*)
- if test -f /usr/options/cb.name; then
- UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
- echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
- elif /bin/uname -X 2>/dev/null >/dev/null ; then
- UNAME_REL=`(/bin/uname -X|egrep Release|sed -e 's/.*= //')`
- (/bin/uname -X|egrep i80486 >/dev/null) && UNAME_MACHINE=i486
- (/bin/uname -X|egrep '^Machine.*Pentium' >/dev/null) \
- && UNAME_MACHINE=i586
- (/bin/uname -X|egrep '^Machine.*Pent ?II' >/dev/null) \
- && UNAME_MACHINE=i686
- (/bin/uname -X|egrep '^Machine.*Pentium Pro' >/dev/null) \
- && UNAME_MACHINE=i686
- echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
- else
- echo ${UNAME_MACHINE}-pc-sysv32
- fi
- exit 0 ;;
- i*86:*DOS:*:*)
- echo ${UNAME_MACHINE}-pc-msdosdjgpp
- exit 0 ;;
- pc:*:*:*)
- # Left here for compatibility:
- # uname -m prints for DJGPP always 'pc', but it prints nothing about
- # the processor, so we play safe by assuming i386.
- echo i386-pc-msdosdjgpp
- exit 0 ;;
- Intel:Mach:3*:*)
- echo i386-pc-mach3
- exit 0 ;;
- paragon:*:*:*)
- echo i860-intel-osf1
- exit 0 ;;
- i860:*:4.*:*) # i860-SVR4
- if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
- echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
- else # Add other i860-SVR4 vendors below as they are discovered.
- echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4
- fi
- exit 0 ;;
- mini*:CTIX:SYS*5:*)
- # "miniframe"
- echo m68010-convergent-sysv
- exit 0 ;;
- M68*:*:R3V[567]*:*)
- test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;;
- 3[34]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 4850:*:4.0:3.0)
- OS_REL=''
- test -r /etc/.relid \
- && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
- /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
- && echo i486-ncr-sysv4.3${OS_REL} && exit 0
- /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
- && echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;;
- 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
- /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
- && echo i486-ncr-sysv4 && exit 0 ;;
- 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:4.0*:*)
- echo i386-unknown-lynxos${UNAME_RELEASE}
- exit 0 ;;
- TSUNAMI:LynxOS:2.*:*)
- echo sparc-unknown-lynxos${UNAME_RELEASE}
- exit 0 ;;
- 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 ;;
- RM*:ReliantUNIX-*:*:*)
- echo mips-sni-sysv4
- exit 0 ;;
- RM*:SINIX-*:*:*)
- echo mips-sni-sysv4
- exit 0 ;;
- *:SINIX-*:*:*)
- if uname -p 2>/dev/null >/dev/null ; then
- UNAME_MACHINE=`(uname -p) 2>/dev/null`
- echo ${UNAME_MACHINE}-sni-sysv4
- else
- echo ns32k-sni-sysv
- fi
- exit 0 ;;
- PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
- # says <Richard.M.Bartel@ccMail.Census.GOV>
- echo i586-unisys-sysv4
- exit 0 ;;
- *:UNIX_System_V:4*:FTX*)
- # From Gerald Hewes <hewes@openmarket.com>.
- # How about differentiating between stratus architectures? -djm
- echo hppa1.1-stratus-sysv4
- exit 0 ;;
- *:*:*:FTX*)
- # 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*:*)
- echo mips-sony-newsos6
- exit 0 ;;
- R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
- if [ -d /usr/nec ]; then
- echo mips-nec-sysv${UNAME_RELEASE}
- else
- echo mips-unknown-sysv${UNAME_RELEASE}
- fi
- exit 0 ;;
- BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only.
- echo powerpc-be-beos
- exit 0 ;;
- BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only.
- echo powerpc-apple-beos
- exit 0 ;;
- BePC:BeOS:*:*) # BeOS running on Intel PC compatible.
- echo i586-pc-beos
- exit 0 ;;
- SX-4:SUPER-UX:*:*)
- echo sx4-nec-superux${UNAME_RELEASE}
- exit 0 ;;
- SX-5:SUPER-UX:*:*)
- echo sx5-nec-superux${UNAME_RELEASE}
- exit 0 ;;
- Power*:Rhapsody:*:*)
- echo powerpc-apple-rhapsody${UNAME_RELEASE}
- exit 0 ;;
- *:Rhapsody:*:*)
- echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
- exit 0 ;;
- *:Darwin:*:*)
- echo `uname -p`-apple-darwin${UNAME_RELEASE}
- exit 0 ;;
- *:procnto*:*:* | *:QNX:[0123456789]*:*)
- if test "${UNAME_MACHINE}" = "x86pc"; then
- UNAME_MACHINE=pc
- fi
- echo `uname -p`-${UNAME_MACHINE}-nto-qnx
- exit 0 ;;
- *:QNX:*:4*)
- echo i386-pc-qnx
- exit 0 ;;
- 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 <<EOF
-#ifdef _SEQUENT_
-# include <sys/types.h>
-# include <sys/utsname.h>
-#endif
-main ()
-{
-#if defined (sony)
-#if defined (MIPSEB)
- /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed,
- I don't know.... */
- printf ("mips-sony-bsd\n"); exit (0);
-#else
-#include <sys/param.h>
- printf ("m68k-sony-newsos%s\n",
-#ifdef NEWSOS4
- "4"
-#else
- ""
-#endif
- ); exit (0);
-#endif
-#endif
-
-#if defined (__arm) && defined (__acorn) && defined (__unix)
- printf ("arm-acorn-riscix"); exit (0);
-#endif
-
-#if defined (hp300) && !defined (hpux)
- printf ("m68k-hp-bsd\n"); exit (0);
-#endif
-
-#if defined (NeXT)
-#if !defined (__ARCHITECTURE__)
-#define __ARCHITECTURE__ "m68k"
-#endif
- int version;
- version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
- if (version < 4)
- printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
- else
- printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
- exit (0);
-#endif
-
-#if defined (MULTIMAX) || defined (n16)
-#if defined (UMAXV)
- printf ("ns32k-encore-sysv\n"); exit (0);
-#else
-#if defined (CMU)
- printf ("ns32k-encore-mach\n"); exit (0);
-#else
- printf ("ns32k-encore-bsd\n"); exit (0);
-#endif
-#endif
-#endif
-
-#if defined (__386BSD__)
- printf ("i386-pc-bsd\n"); exit (0);
-#endif
-
-#if defined (sequent)
-#if defined (i386)
- printf ("i386-sequent-dynix\n"); exit (0);
-#endif
-#if defined (ns32000)
- printf ("ns32k-sequent-dynix\n"); exit (0);
-#endif
-#endif
-
-#if defined (_SEQUENT_)
- struct utsname un;
-
- uname(&un);
-
- if (strncmp(un.version, "V2", 2) == 0) {
- printf ("i386-sequent-ptx2\n"); exit (0);
- }
- if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
- printf ("i386-sequent-ptx1\n"); exit (0);
- }
- printf ("i386-sequent-ptx\n"); exit (0);
-
-#endif
-
-#if defined (vax)
-# if !defined (ultrix)
-# include <sys/param.h>
-# 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)
- printf ("i860-alliant-bsd\n"); exit (0);
-#endif
-
- exit (1);
-}
-EOF
-
-$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.
-
-test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; }
-
-# Convex versions that predate uname can use getsysinfo(1)
-
-if [ -x /usr/convex/getsysinfo ]
-then
- case `getsysinfo -f cpu_type` in
- c1*)
- echo c1-convex-bsd
- exit 0 ;;
- c2*)
- if getsysinfo -f scalar_acc
- then echo c32-convex-bsd
- else echo c2-convex-bsd
- fi
- exit 0 ;;
- c34*)
- echo c34-convex-bsd
- exit 0 ;;
- c38*)
- echo c38-convex-bsd
- exit 0 ;;
- c4*)
- echo c4-convex-bsd
- exit 0 ;;
- esac
-fi
-
-cat >&2 <<EOF
-$0: unable to guess system type
-
-This script, last modified $timestamp, has failed to recognize
-the operating system you are using. It is advised that you
-download the most up to date version of the config scripts from
-
- ftp://ftp.gnu.org/pub/gnu/config/
-
-If the version you run ($0) is already up to date, please
-send the following data and any information you think might be
-pertinent to <config-patches@gnu.org> 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:
+++ /dev/null
-#! /bin/sh
-# 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.
-#
-# 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
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330,
-# Boston, MA 02111-1307, USA.
-
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-# Please send patches to <config-patches@gnu.org>.
-#
-# Configuration subroutine to validate and canonicalize a configuration type.
-# Supply the specified configuration type as an argument.
-# If it is invalid, we print an error message on stderr and exit with code 1.
-# Otherwise, we print the canonical config type on stdout and succeed.
-
-# This file is supposed to be the same for all GNU packages
-# and recognize all the CPU types, system types and aliases
-# that are meaningful with *any* GNU software.
-# Each package is responsible for reporting which valid configurations
-# it does not support. The user should be able to distinguish
-# a failure to support a valid configuration from a meaningless
-# configuration.
-
-# The goal of this file is to map all the various variations of a given
-# machine specification into a single specification in the form:
-# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
-# or in some cases, the newer four-part form:
-# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
-# It is wrong to echo any other type of specification.
-
-me=`echo "$0" | sed -e 's,.*/,,'`
-
-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 <config-patches@gnu.org>."
-
-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* | storm-chaos* | os2-emx* | windows32-*)
- os=-$maybe_os
- basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
- ;;
- *)
- basic_machine=`echo $1 | sed 's/-[^-]*$//'`
- if [ $basic_machine != $1 ]
- then os=`echo $1 | sed 's/.*-/-/'`
- else os=; fi
- ;;
-esac
-
-### Let's recognize common machines as not being operating systems so
-### that things like config.sub decstation-3100 work. We also
-### recognize some manufacturers as not being operating systems, so we
-### can provide default operating systems below.
-case $os in
- -sun*os*)
- # Prevent following clause from handling this invalid input.
- ;;
- -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
- -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
- -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \
- -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
- -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
- -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
- -apple | -axis)
- os=
- basic_machine=$1
- ;;
- -sim | -cisco | -oki | -wec | -winbond)
- os=
- basic_machine=$1
- ;;
- -scout)
- ;;
- -wrs)
- os=-vxworks
- basic_machine=$1
- ;;
- -chorusos*)
- os=-chorusos
- basic_machine=$1
- ;;
- -chorusrdb)
- os=-chorusrdb
- basic_machine=$1
- ;;
- -hiux*)
- os=-hiuxwe2
- ;;
- -sco5)
- os=-sco3.2v5
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -sco4)
- os=-sco3.2v4
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -sco3.2.[4-9]*)
- os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -sco3.2v[4-9]*)
- # Don't forget version if it is 3.2v4 or newer.
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -sco*)
- os=-sco3.2v2
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -udk*)
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -isc)
- os=-isc2.2
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -clix*)
- basic_machine=clipper-intergraph
- ;;
- -isc*)
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -lynx*)
- os=-lynxos
- ;;
- -ptx*)
- basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
- ;;
- -windowsnt*)
- os=`echo $os | sed -e 's/windowsnt/winnt/'`
- ;;
- -psos*)
- os=-psos
- ;;
- -mint | -mint[0-9]*)
- basic_machine=m68k-atari
- os=-mint
- ;;
-esac
-
-# Decode aliases for certain CPU-COMPANY combinations.
-case $basic_machine in
- # Recognize the basic CPU types without company name.
- # Some are omitted here because they have special meanings below.
- 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
- ;;
- 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*86 | x86_64)
- basic_machine=$basic_machine-pc
- ;;
- # Object if more than one company name word.
- *-*-*)
- echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
- exit 1
- ;;
- # Recognize the basic CPU types with company name.
- 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.
- 386bsd)
- basic_machine=i386-unknown
- os=-bsd
- ;;
- 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
- basic_machine=m68000-att
- ;;
- 3b*)
- basic_machine=we32k-att
- ;;
- a29khif)
- basic_machine=a29k-amd
- os=-udi
- ;;
- adobe68k)
- basic_machine=m68010-adobe
- os=-scout
- ;;
- alliant | fx80)
- basic_machine=fx80-alliant
- ;;
- altos | altos3068)
- basic_machine=m68k-altos
- ;;
- am29k)
- basic_machine=a29k-none
- os=-bsd
- ;;
- amdahl)
- basic_machine=580-amdahl
- os=-sysv
- ;;
- amiga | amiga-*)
- basic_machine=m68k-unknown
- ;;
- amigaos | amigados)
- basic_machine=m68k-unknown
- os=-amigaos
- ;;
- amigaunix | amix)
- basic_machine=m68k-unknown
- os=-sysv4
- ;;
- apollo68)
- basic_machine=m68k-apollo
- os=-sysv
- ;;
- apollo68bsd)
- basic_machine=m68k-apollo
- os=-bsd
- ;;
- aux)
- basic_machine=m68k-apple
- os=-aux
- ;;
- balance)
- basic_machine=ns32k-sequent
- os=-dynix
- ;;
- convex-c1)
- basic_machine=c1-convex
- os=-bsd
- ;;
- convex-c2)
- basic_machine=c2-convex
- os=-bsd
- ;;
- convex-c32)
- basic_machine=c32-convex
- os=-bsd
- ;;
- convex-c34)
- basic_machine=c34-convex
- os=-bsd
- ;;
- convex-c38)
- basic_machine=c38-convex
- os=-bsd
- ;;
- cray | ymp)
- basic_machine=ymp-cray
- os=-unicos
- ;;
- cray2)
- basic_machine=cray2-cray
- os=-unicos
- ;;
- [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
- ;;
- decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
- basic_machine=mips-dec
- ;;
- delta | 3300 | motorola-3300 | motorola-delta \
- | 3300-motorola | delta-motorola)
- basic_machine=m68k-motorola
- ;;
- delta88)
- basic_machine=m88k-motorola
- os=-sysv3
- ;;
- dpx20 | dpx20-*)
- basic_machine=rs6000-bull
- os=-bosx
- ;;
- dpx2* | dpx2*-bull)
- basic_machine=m68k-bull
- os=-sysv3
- ;;
- ebmon29k)
- basic_machine=a29k-amd
- os=-ebmon
- ;;
- elxsi)
- basic_machine=elxsi-elxsi
- os=-bsd
- ;;
- encore | umax | mmax)
- basic_machine=ns32k-encore
- ;;
- es1800 | OSE68k | ose68k | ose | OSE)
- basic_machine=m68k-ericsson
- os=-ose
- ;;
- fx2800)
- basic_machine=i860-alliant
- ;;
- genix)
- basic_machine=ns32k-ns
- ;;
- gmicro)
- basic_machine=tron-gmicro
- os=-sysv
- ;;
- go32)
- basic_machine=i386-pc
- os=-go32
- ;;
- h3050r* | hiux*)
- basic_machine=hppa1.1-hitachi
- os=-hiuxwe2
- ;;
- h8300hms)
- basic_machine=h8300-hitachi
- os=-hms
- ;;
- h8300xray)
- basic_machine=h8300-hitachi
- os=-xray
- ;;
- h8500hms)
- basic_machine=h8500-hitachi
- os=-hms
- ;;
- harris)
- basic_machine=m88k-harris
- os=-sysv3
- ;;
- hp300-*)
- basic_machine=m68k-hp
- ;;
- hp300bsd)
- basic_machine=m68k-hp
- os=-bsd
- ;;
- hp300hpux)
- basic_machine=m68k-hp
- os=-hpux
- ;;
- hp3k9[0-9][0-9] | hp9[0-9][0-9])
- basic_machine=hppa1.0-hp
- ;;
- hp9k2[0-9][0-9] | hp9k31[0-9])
- basic_machine=m68000-hp
- ;;
- hp9k3[2-9][0-9])
- basic_machine=m68k-hp
- ;;
- hp9k6[0-9][0-9] | hp6[0-9][0-9])
- basic_machine=hppa1.0-hp
- ;;
- hp9k7[0-79][0-9] | hp7[0-79][0-9])
- basic_machine=hppa1.1-hp
- ;;
- hp9k78[0-9] | hp78[0-9])
- # FIXME: really hppa2.0-hp
- basic_machine=hppa1.1-hp
- ;;
- hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
- # FIXME: really hppa2.0-hp
- basic_machine=hppa1.1-hp
- ;;
- hp9k8[0-9][13679] | hp8[0-9][13679])
- basic_machine=hppa1.1-hp
- ;;
- hp9k8[0-9][0-9] | hp8[0-9][0-9])
- basic_machine=hppa1.0-hp
- ;;
- hppa-next)
- os=-nextstep3
- ;;
- hppaosf)
- basic_machine=hppa1.1-hp
- os=-osf
- ;;
- hppro)
- basic_machine=hppa1.1-hp
- os=-proelf
- ;;
- i370-ibm* | ibm*)
- basic_machine=i370-ibm
- ;;
-# I'm not sure what "Sysv32" means. Should this be sysv3.2?
- i*86v32)
- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
- os=-sysv32
- ;;
- i*86v4*)
- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
- os=-sysv4
- ;;
- i*86v)
- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
- os=-sysv
- ;;
- i*86sol2)
- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
- os=-solaris2
- ;;
- i386mach)
- basic_machine=i386-mach
- os=-mach
- ;;
- i386-vsta | vsta)
- basic_machine=i386-unknown
- os=-vsta
- ;;
- iris | iris4d)
- basic_machine=mips-sgi
- case $os in
- -irix*)
- ;;
- *)
- os=-irix4
- ;;
- esac
- ;;
- isi68 | isi)
- basic_machine=m68k-isi
- os=-sysv
- ;;
- m88k-omron*)
- basic_machine=m88k-omron
- ;;
- magnum | m3230)
- basic_machine=mips-mips
- os=-sysv
- ;;
- merlin)
- basic_machine=ns32k-utek
- os=-sysv
- ;;
- mingw32)
- basic_machine=i386-pc
- os=-mingw32
- ;;
- miniframe)
- basic_machine=m68000-convergent
- ;;
- *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*)
- basic_machine=m68k-atari
- os=-mint
- ;;
- mipsel*-linux*)
- basic_machine=mipsel-unknown
- os=-linux-gnu
- ;;
- mips*-linux*)
- basic_machine=mips-unknown
- os=-linux-gnu
- ;;
- mips3*-*)
- basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
- ;;
- mips3*)
- basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
- ;;
- mmix*)
- basic_machine=mmix-knuth
- os=-mmixware
- ;;
- monitor)
- basic_machine=m68k-rom68k
- os=-coff
- ;;
- msdos)
- basic_machine=i386-pc
- os=-msdos
- ;;
- mvs)
- basic_machine=i370-ibm
- os=-mvs
- ;;
- ncr3000)
- basic_machine=i486-ncr
- os=-sysv4
- ;;
- netbsd386)
- basic_machine=i386-unknown
- os=-netbsd
- ;;
- netwinder)
- basic_machine=armv4l-rebel
- os=-linux
- ;;
- news | news700 | news800 | news900)
- basic_machine=m68k-sony
- os=-newsos
- ;;
- news1000)
- basic_machine=m68030-sony
- os=-newsos
- ;;
- news-3600 | risc-news)
- basic_machine=mips-sony
- os=-newsos
- ;;
- necv70)
- basic_machine=v70-nec
- os=-sysv
- ;;
- next | m*-next )
- basic_machine=m68k-next
- case $os in
- -nextstep* )
- ;;
- -ns2*)
- os=-nextstep2
- ;;
- *)
- os=-nextstep3
- ;;
- esac
- ;;
- nh3000)
- basic_machine=m68k-harris
- os=-cxux
- ;;
- nh[45]000)
- basic_machine=m88k-harris
- os=-cxux
- ;;
- nindy960)
- basic_machine=i960-intel
- os=-nindy
- ;;
- mon960)
- basic_machine=i960-intel
- os=-mon960
- ;;
- nonstopux)
- basic_machine=mips-compaq
- os=-nonstopux
- ;;
- np1)
- basic_machine=np1-gould
- ;;
- nsr-tandem)
- basic_machine=nsr-tandem
- ;;
- op50n-* | op60c-*)
- basic_machine=hppa1.1-oki
- os=-proelf
- ;;
- OSE68000 | ose68000)
- basic_machine=m68000-ericsson
- os=-ose
- ;;
- os68k)
- basic_machine=m68k-none
- os=-os68k
- ;;
- pa-hitachi)
- basic_machine=hppa1.1-hitachi
- os=-hiuxwe2
- ;;
- paragon)
- basic_machine=i860-intel
- os=-osf
- ;;
- pbd)
- basic_machine=sparc-tti
- ;;
- pbb)
- basic_machine=m68k-tti
- ;;
- pc532 | pc532-*)
- basic_machine=ns32k-pc532
- ;;
- pentium | p5 | k5 | k6 | nexgen)
- basic_machine=i586-pc
- ;;
- pentiumpro | p6 | 6x86 | athlon)
- basic_machine=i686-pc
- ;;
- pentiumii | pentium2)
- basic_machine=i686-pc
- ;;
- pentium-* | p5-* | k5-* | k6-* | nexgen-*)
- basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- pentiumpro-* | p6-* | 6x86-* | athlon-*)
- basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- pentiumii-* | pentium2-*)
- basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- pn)
- basic_machine=pn-gould
- ;;
- power) basic_machine=power-ibm
- ;;
- ppc) basic_machine=powerpc-unknown
- ;;
- ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- ppcle | powerpclittle | ppc-le | powerpc-little)
- basic_machine=powerpcle-unknown
- ;;
- 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
- ;;
- rm[46]00)
- basic_machine=mips-siemens
- ;;
- rtpc | rtpc-*)
- basic_machine=romp-ibm
- ;;
- sa29200)
- basic_machine=a29k-amd
- os=-udi
- ;;
- sequent)
- basic_machine=i386-sequent
- ;;
- sh)
- basic_machine=sh-hitachi
- os=-hms
- ;;
- sparclite-wrs)
- basic_machine=sparclite-wrs
- os=-vxworks
- ;;
- sps7)
- basic_machine=m68k-bull
- os=-sysv2
- ;;
- spur)
- basic_machine=spur-unknown
- ;;
- st2000)
- basic_machine=m68k-tandem
- ;;
- stratus)
- basic_machine=i860-stratus
- os=-sysv4
- ;;
- sun2)
- basic_machine=m68000-sun
- ;;
- sun2os3)
- basic_machine=m68000-sun
- os=-sunos3
- ;;
- sun2os4)
- basic_machine=m68000-sun
- os=-sunos4
- ;;
- sun3os3)
- basic_machine=m68k-sun
- os=-sunos3
- ;;
- sun3os4)
- basic_machine=m68k-sun
- os=-sunos4
- ;;
- sun4os3)
- basic_machine=sparc-sun
- os=-sunos3
- ;;
- sun4os4)
- basic_machine=sparc-sun
- os=-sunos4
- ;;
- sun4sol2)
- basic_machine=sparc-sun
- os=-solaris2
- ;;
- sun3 | sun3-*)
- basic_machine=m68k-sun
- ;;
- sun4)
- basic_machine=sparc-sun
- ;;
- sun386 | sun386i | roadrunner)
- basic_machine=i386-sun
- ;;
- sv1)
- basic_machine=sv1-cray
- os=-unicos
- ;;
- symmetry)
- basic_machine=i386-sequent
- os=-dynix
- ;;
- t3e)
- basic_machine=t3e-cray
- os=-unicos
- ;;
- tic54x | c54x*)
- basic_machine=tic54x-unknown
- os=-coff
- ;;
- tx39)
- basic_machine=mipstx39-unknown
- ;;
- tx39el)
- basic_machine=mipstx39el-unknown
- ;;
- tower | tower-32)
- basic_machine=m68k-ncr
- ;;
- udi29k)
- basic_machine=a29k-amd
- os=-udi
- ;;
- ultra3)
- basic_machine=a29k-nyu
- os=-sym1
- ;;
- v810 | necv810)
- basic_machine=v810-nec
- os=-none
- ;;
- vaxv)
- basic_machine=vax-dec
- os=-sysv
- ;;
- vms)
- basic_machine=vax-dec
- os=-vms
- ;;
- vpp*|vx|vx-*)
- basic_machine=f301-fujitsu
- ;;
- vxworks960)
- basic_machine=i960-wrs
- os=-vxworks
- ;;
- vxworks68)
- basic_machine=m68k-wrs
- os=-vxworks
- ;;
- vxworks29k)
- basic_machine=a29k-wrs
- os=-vxworks
- ;;
- w65*)
- basic_machine=w65-wdc
- os=-none
- ;;
- w89k-*)
- basic_machine=hppa1.1-winbond
- os=-proelf
- ;;
- windows32)
- basic_machine=i386-pc
- os=-windows32-msvcrt
- ;;
- xmp)
- basic_machine=xmp-cray
- os=-unicos
- ;;
- xps | xps100)
- basic_machine=xps100-honeywell
- ;;
- z8k-*-coff)
- basic_machine=z8k-unknown
- os=-sim
- ;;
- none)
- basic_machine=none-none
- os=-none
- ;;
-
-# Here we handle the default manufacturer of certain CPU types. It is in
-# some cases the only manufacturer, in others, it is the most popular.
- w89k)
- basic_machine=hppa1.1-winbond
- ;;
- op50n)
- basic_machine=hppa1.1-oki
- ;;
- op60c)
- basic_machine=hppa1.1-oki
- ;;
- mips)
- if [ x$os = x-linux-gnu ]; then
- basic_machine=mips-unknown
- else
- basic_machine=mips-mips
- fi
- ;;
- romp)
- basic_machine=romp-ibm
- ;;
- rs6000)
- basic_machine=rs6000-ibm
- ;;
- 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
- ;;
- sh3 | sh4 | sh3eb | sh4eb)
- basic_machine=sh-unknown
- ;;
- sparc | sparcv9 | sparcv9b)
- basic_machine=sparc-sun
- ;;
- cydra)
- basic_machine=cydra-cydrome
- ;;
- orion)
- basic_machine=orion-highlevel
- ;;
- orion105)
- basic_machine=clipper-highlevel
- ;;
- mac | mpw | mac-mpw)
- basic_machine=m68k-apple
- ;;
- pmac | pmac-mpw)
- basic_machine=powerpc-apple
- ;;
- c4x*)
- 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
- ;;
-esac
-
-# Here we canonicalize certain aliases for manufacturers.
-case $basic_machine in
- *-digital*)
- basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'`
- ;;
- *-commodore*)
- basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'`
- ;;
- *)
- ;;
-esac
-
-# Decode manufacturer-specific aliases for certain operating systems.
-
-if [ x"$os" != x"" ]
-then
-case $os in
- # First match some system type aliases
- # that might get confused with valid system types.
- # -solaris* is a basic system type, with this one exception.
- -solaris1 | -solaris1.*)
- os=`echo $os | sed -e 's|solaris1|sunos4|'`
- ;;
- -solaris)
- os=-solaris2
- ;;
- -svr4*)
- os=-sysv4
- ;;
- -unixware*)
- os=-sysv4.2uw
- ;;
- -gnu/linux*)
- os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
- ;;
- # First accept the basic system types.
- # The portable systems comes first.
- # Each alternative MUST END IN A *, to match a version number.
- # -sysv* is not here because it comes later, after sysvr4.
- -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
- | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\
- | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \
- | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
- | -aos* \
- | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
- | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
- | -hiux* | -386bsd* | -netbsd* | -openbsd* | -freebsd* | -riscix* \
- | -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* | -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*86-*)
- ;;
- *)
- os=-nto$os
- ;;
- esac
- ;;
- -nto*)
- os=-nto-qnx
- ;;
- -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
- | -windows* | -osx | -abug | -netware* | -os9* | -beos* \
- | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
- ;;
- -mac*)
- os=`echo $os | sed -e 's|mac|macos|'`
- ;;
- -linux*)
- os=`echo $os | sed -e 's|linux|linux-gnu|'`
- ;;
- -sunos5*)
- os=`echo $os | sed -e 's|sunos5|solaris2|'`
- ;;
- -sunos6*)
- os=`echo $os | sed -e 's|sunos6|solaris3|'`
- ;;
- -opened*)
- os=-openedition
- ;;
- -wince*)
- os=-wince
- ;;
- -osfrose*)
- os=-osfrose
- ;;
- -osf*)
- os=-osf
- ;;
- -utek*)
- os=-bsd
- ;;
- -dynix*)
- os=-bsd
- ;;
- -acis*)
- os=-aos
- ;;
- -386bsd)
- os=-bsd
- ;;
- -ctix* | -uts*)
- os=-sysv
- ;;
- -ns2 )
- os=-nextstep2
- ;;
- -nsk*)
- os=-nsk
- ;;
- # Preserve the version number of sinix5.
- -sinix5.*)
- os=`echo $os | sed -e 's|sinix|sysv|'`
- ;;
- -sinix*)
- os=-sysv4
- ;;
- -triton*)
- os=-sysv3
- ;;
- -oss*)
- os=-sysv3
- ;;
- -svr4)
- os=-sysv4
- ;;
- -svr3)
- os=-sysv3
- ;;
- -sysvr4)
- os=-sysv4
- ;;
- # This must come after -sysvr4.
- -sysv*)
- ;;
- -ose*)
- os=-ose
- ;;
- -es1800*)
- os=-ose
- ;;
- -xenix)
- os=-xenix
- ;;
- -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
- os=-mint
- ;;
- -none)
- ;;
- *)
- # Get rid of the `-' at the beginning of $os.
- os=`echo $os | sed 's/[^-]*-//'`
- echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2
- exit 1
- ;;
-esac
-else
-
-# Here we handle the default operating systems that come with various machines.
-# The value should be what the vendor currently ships out the door with their
-# machine or put another way, the most popular os provided with the machine.
-
-# Note that if you're going to try to match "-MANUFACTURER" here (say,
-# "-sun"), then you have to tell the case statement up towards the top
-# that MANUFACTURER isn't an operating system. Otherwise, code above
-# will signal an error saying that MANUFACTURER isn't an operating
-# system, and we'll never get to this point.
-
-case $basic_machine in
- *-acorn)
- os=-riscix1.2
- ;;
- arm*-rebel)
- os=-linux
- ;;
- arm*-semi)
- os=-aout
- ;;
- pdp10-*)
- os=-tops20
- ;;
- pdp11-*)
- os=-none
- ;;
- *-dec | vax-*)
- os=-ultrix4.2
- ;;
- m68*-apollo)
- os=-domain
- ;;
- i386-sun)
- os=-sunos4.0.2
- ;;
- m68000-sun)
- os=-sunos3
- # This also exists in the configure program, but was not the
- # default.
- # os=-sunos4
- ;;
- m68*-cisco)
- os=-aout
- ;;
- mips*-cisco)
- os=-elf
- ;;
- mips*-*)
- os=-elf
- ;;
- *-tti) # must be before sparc entry or we get the wrong os.
- os=-sysv3
- ;;
- sparc-* | *-sun)
- os=-sunos4.1.1
- ;;
- *-be)
- os=-beos
- ;;
- *-ibm)
- os=-aix
- ;;
- *-wec)
- os=-proelf
- ;;
- *-winbond)
- os=-proelf
- ;;
- *-oki)
- os=-proelf
- ;;
- *-hp)
- os=-hpux
- ;;
- *-hitachi)
- os=-hiux
- ;;
- i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
- os=-sysv
- ;;
- *-cbm)
- os=-amigaos
- ;;
- *-dg)
- os=-dgux
- ;;
- *-dolphin)
- os=-sysv3
- ;;
- m68k-ccur)
- os=-rtu
- ;;
- m88k-omron*)
- os=-luna
- ;;
- *-next )
- os=-nextstep
- ;;
- *-sequent)
- os=-ptx
- ;;
- *-crds)
- os=-unos
- ;;
- *-ns)
- os=-genix
- ;;
- i370-*)
- os=-mvs
- ;;
- *-next)
- os=-nextstep3
- ;;
- *-gould)
- os=-sysv
- ;;
- *-highlevel)
- os=-bsd
- ;;
- *-encore)
- os=-bsd
- ;;
- *-sgi)
- os=-irix
- ;;
- *-siemens)
- os=-sysv4
- ;;
- *-masscomp)
- os=-rtu
- ;;
- f30[01]-fujitsu | f700-fujitsu)
- os=-uxpv
- ;;
- *-rom68k)
- os=-coff
- ;;
- *-*bug)
- os=-coff
- ;;
- *-apple)
- os=-macos
- ;;
- *-atari*)
- os=-mint
- ;;
- *)
- os=-none
- ;;
-esac
-fi
-
-# Here we handle the case where we know the os, and the CPU type, but not the
-# manufacturer. We pick the logical manufacturer.
-vendor=unknown
-case $basic_machine in
- *-unknown)
- case $os in
- -riscix*)
- vendor=acorn
- ;;
- -sunos*)
- vendor=sun
- ;;
- -aix*)
- vendor=ibm
- ;;
- -beos*)
- vendor=be
- ;;
- -hpux*)
- vendor=hp
- ;;
- -mpeix*)
- vendor=hp
- ;;
- -hiux*)
- vendor=hitachi
- ;;
- -unos*)
- vendor=crds
- ;;
- -dgux*)
- vendor=dg
- ;;
- -luna*)
- vendor=omron
- ;;
- -genix*)
- vendor=ns
- ;;
- -mvs* | -opened*)
- vendor=ibm
- ;;
- -ptx*)
- vendor=sequent
- ;;
- -vxsim* | -vxworks*)
- vendor=wrs
- ;;
- -aux*)
- vendor=apple
- ;;
- -hms*)
- vendor=hitachi
- ;;
- -mpw* | -macos*)
- vendor=apple
- ;;
- -*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:
+++ /dev/null
-#! /bin/sh
-
-# Guess values for system-dependent variables and create Makefiles.
-# Generated automatically using autoconf version 2.13
-# Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc.
-#
-# This configure script is free software; the Free Software Foundation
-# gives unlimited permission to copy, distribute and modify it.
-
-# Defaults:
-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
- --enable-mdnkit-compat enable mDNkit compatibility mode [default=no]"
-ac_help="$ac_help
- --enable-extra-ace enable additional ACE converters. [default=no]"
-ac_help="$ac_help
- --with-utf8=NAME codeset name for UTF-8 encoding [UTF-8]"
-ac_help="$ac_help
- --enable-liteonly compile and install lite library only [default=no]"
-ac_help="$ac_help
- --enable-runidn compile and install runidn [default=no]"
-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 []"
-ac_help="$ac_help
- --enable-shared[=PKGS] build shared libraries [default=yes]"
-ac_help="$ac_help
- --enable-static[=PKGS] build static libraries [default=yes]"
-ac_help="$ac_help
- --enable-fast-install[=PKGS] optimize for fast installation [default=yes]"
-ac_help="$ac_help
- --with-gnu-ld assume the C compiler uses GNU ld [default=no]"
-ac_help="$ac_help
- --disable-libtool-lock avoid locking (might break parallel builds)"
-
-# Initialize some variables set by options.
-# The variables have the same names as the options, with
-# dashes changed to underlines.
-build=NONE
-cache_file=./config.cache
-exec_prefix=NONE
-host=NONE
-no_create=
-nonopt=NONE
-no_recursion=
-prefix=NONE
-program_prefix=NONE
-program_suffix=NONE
-program_transform_name=s,x,x,
-silent=
-site=
-srcdir=
-target=NONE
-verbose=
-x_includes=NONE
-x_libraries=NONE
-bindir='${exec_prefix}/bin'
-sbindir='${exec_prefix}/sbin'
-libexecdir='${exec_prefix}/libexec'
-datadir='${prefix}/share'
-sysconfdir='${prefix}/etc'
-sharedstatedir='${prefix}/com'
-localstatedir='${prefix}/var'
-libdir='${exec_prefix}/lib'
-includedir='${prefix}/include'
-oldincludedir='/usr/include'
-infodir='${prefix}/info'
-mandir='${prefix}/man'
-
-# Initialize some other variables.
-subdirs=
-MFLAGS= MAKEFLAGS=
-SHELL=${CONFIG_SHELL-/bin/sh}
-# Maximum number of lines to put in a shell here document.
-ac_max_here_lines=12
-
-ac_prev=
-for ac_option
-do
-
- # If the previous option needs an argument, assign it.
- if test -n "$ac_prev"; then
- eval "$ac_prev=\$ac_option"
- ac_prev=
- continue
- fi
-
- case "$ac_option" in
- -*=*) ac_optarg=`echo "$ac_option" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
- *) ac_optarg= ;;
- esac
-
- # Accept the important Cygnus configure options, so we can diagnose typos.
-
- case "$ac_option" in
-
- -bindir | --bindir | --bindi | --bind | --bin | --bi)
- ac_prev=bindir ;;
- -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
- bindir="$ac_optarg" ;;
-
- -build | --build | --buil | --bui | --bu)
- ac_prev=build ;;
- -build=* | --build=* | --buil=* | --bui=* | --bu=*)
- build="$ac_optarg" ;;
-
- -cache-file | --cache-file | --cache-fil | --cache-fi \
- | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
- ac_prev=cache_file ;;
- -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
- | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
- cache_file="$ac_optarg" ;;
-
- -datadir | --datadir | --datadi | --datad | --data | --dat | --da)
- ac_prev=datadir ;;
- -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \
- | --da=*)
- datadir="$ac_optarg" ;;
-
- -disable-* | --disable-*)
- ac_feature=`echo $ac_option|sed -e 's/-*disable-//'`
- # Reject names that are not valid shell variable names.
- if test -n "`echo $ac_feature| sed 's/[-a-zA-Z0-9_]//g'`"; then
- { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; }
- fi
- ac_feature=`echo $ac_feature| sed 's/-/_/g'`
- eval "enable_${ac_feature}=no" ;;
-
- -enable-* | --enable-*)
- ac_feature=`echo $ac_option|sed -e 's/-*enable-//' -e 's/=.*//'`
- # Reject names that are not valid shell variable names.
- if test -n "`echo $ac_feature| sed 's/[-_a-zA-Z0-9]//g'`"; then
- { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; }
- fi
- ac_feature=`echo $ac_feature| sed 's/-/_/g'`
- case "$ac_option" in
- *=*) ;;
- *) ac_optarg=yes ;;
- esac
- eval "enable_${ac_feature}='$ac_optarg'" ;;
-
- -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
- | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
- | --exec | --exe | --ex)
- ac_prev=exec_prefix ;;
- -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
- | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
- | --exec=* | --exe=* | --ex=*)
- exec_prefix="$ac_optarg" ;;
-
- -gas | --gas | --ga | --g)
- # Obsolete; use --with-gas.
- with_gas=yes ;;
-
- -help | --help | --hel | --he)
- # Omit some internal or obsolete options to make the list less imposing.
- # This message is too long to be a string in the A/UX 3.1 sh.
- cat << EOF
-Usage: configure [options] [host]
-Options: [defaults in brackets after descriptions]
-Configuration:
- --cache-file=FILE cache test results in FILE
- --help print this message
- --no-create do not create output files
- --quiet, --silent do not print \`checking...' messages
- --version print the version of autoconf that created configure
-Directory and file names:
- --prefix=PREFIX install architecture-independent files in PREFIX
- [$ac_default_prefix]
- --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
- [same as prefix]
- --bindir=DIR user executables in DIR [EPREFIX/bin]
- --sbindir=DIR system admin executables in DIR [EPREFIX/sbin]
- --libexecdir=DIR program executables in DIR [EPREFIX/libexec]
- --datadir=DIR read-only architecture-independent data in DIR
- [PREFIX/share]
- --sysconfdir=DIR read-only single-machine data in DIR [PREFIX/etc]
- --sharedstatedir=DIR modifiable architecture-independent data in DIR
- [PREFIX/com]
- --localstatedir=DIR modifiable single-machine data in DIR [PREFIX/var]
- --libdir=DIR object code libraries in DIR [EPREFIX/lib]
- --includedir=DIR C header files in DIR [PREFIX/include]
- --oldincludedir=DIR C header files for non-gcc in DIR [/usr/include]
- --infodir=DIR info documentation in DIR [PREFIX/info]
- --mandir=DIR man documentation in DIR [PREFIX/man]
- --srcdir=DIR find the sources in DIR [configure dir or ..]
- --program-prefix=PREFIX prepend PREFIX to installed program names
- --program-suffix=SUFFIX append SUFFIX to installed program names
- --program-transform-name=PROGRAM
- run sed PROGRAM on installed program names
-EOF
- cat << EOF
-Host type:
- --build=BUILD configure for building on BUILD [BUILD=HOST]
- --host=HOST configure for HOST [guessed]
- --target=TARGET configure for TARGET [TARGET=HOST]
-Features and packages:
- --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
- --enable-FEATURE[=ARG] include FEATURE [ARG=yes]
- --with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
- --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
- --x-includes=DIR X include files are in DIR
- --x-libraries=DIR X library files are in DIR
-EOF
- if test -n "$ac_help"; then
- echo "--enable and --with options recognized:$ac_help"
- fi
- exit 0 ;;
-
- -host | --host | --hos | --ho)
- ac_prev=host ;;
- -host=* | --host=* | --hos=* | --ho=*)
- host="$ac_optarg" ;;
-
- -includedir | --includedir | --includedi | --included | --include \
- | --includ | --inclu | --incl | --inc)
- ac_prev=includedir ;;
- -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
- | --includ=* | --inclu=* | --incl=* | --inc=*)
- includedir="$ac_optarg" ;;
-
- -infodir | --infodir | --infodi | --infod | --info | --inf)
- ac_prev=infodir ;;
- -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
- infodir="$ac_optarg" ;;
-
- -libdir | --libdir | --libdi | --libd)
- ac_prev=libdir ;;
- -libdir=* | --libdir=* | --libdi=* | --libd=*)
- libdir="$ac_optarg" ;;
-
- -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
- | --libexe | --libex | --libe)
- ac_prev=libexecdir ;;
- -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
- | --libexe=* | --libex=* | --libe=*)
- libexecdir="$ac_optarg" ;;
-
- -localstatedir | --localstatedir | --localstatedi | --localstated \
- | --localstate | --localstat | --localsta | --localst \
- | --locals | --local | --loca | --loc | --lo)
- ac_prev=localstatedir ;;
- -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
- | --localstate=* | --localstat=* | --localsta=* | --localst=* \
- | --locals=* | --local=* | --loca=* | --loc=* | --lo=*)
- localstatedir="$ac_optarg" ;;
-
- -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
- ac_prev=mandir ;;
- -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
- mandir="$ac_optarg" ;;
-
- -nfp | --nfp | --nf)
- # Obsolete; use --without-fp.
- with_fp=no ;;
-
- -no-create | --no-create | --no-creat | --no-crea | --no-cre \
- | --no-cr | --no-c)
- no_create=yes ;;
-
- -no-recursion | --no-recursion | --no-recursio | --no-recursi \
- | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
- no_recursion=yes ;;
-
- -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
- | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
- | --oldin | --oldi | --old | --ol | --o)
- ac_prev=oldincludedir ;;
- -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
- | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
- | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
- oldincludedir="$ac_optarg" ;;
-
- -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
- ac_prev=prefix ;;
- -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
- prefix="$ac_optarg" ;;
-
- -program-prefix | --program-prefix | --program-prefi | --program-pref \
- | --program-pre | --program-pr | --program-p)
- ac_prev=program_prefix ;;
- -program-prefix=* | --program-prefix=* | --program-prefi=* \
- | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
- program_prefix="$ac_optarg" ;;
-
- -program-suffix | --program-suffix | --program-suffi | --program-suff \
- | --program-suf | --program-su | --program-s)
- ac_prev=program_suffix ;;
- -program-suffix=* | --program-suffix=* | --program-suffi=* \
- | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
- program_suffix="$ac_optarg" ;;
-
- -program-transform-name | --program-transform-name \
- | --program-transform-nam | --program-transform-na \
- | --program-transform-n | --program-transform- \
- | --program-transform | --program-transfor \
- | --program-transfo | --program-transf \
- | --program-trans | --program-tran \
- | --progr-tra | --program-tr | --program-t)
- ac_prev=program_transform_name ;;
- -program-transform-name=* | --program-transform-name=* \
- | --program-transform-nam=* | --program-transform-na=* \
- | --program-transform-n=* | --program-transform-=* \
- | --program-transform=* | --program-transfor=* \
- | --program-transfo=* | --program-transf=* \
- | --program-trans=* | --program-tran=* \
- | --progr-tra=* | --program-tr=* | --program-t=*)
- program_transform_name="$ac_optarg" ;;
-
- -q | -quiet | --quiet | --quie | --qui | --qu | --q \
- | -silent | --silent | --silen | --sile | --sil)
- silent=yes ;;
-
- -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
- ac_prev=sbindir ;;
- -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
- | --sbi=* | --sb=*)
- sbindir="$ac_optarg" ;;
-
- -sharedstatedir | --sharedstatedir | --sharedstatedi \
- | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
- | --sharedst | --shareds | --shared | --share | --shar \
- | --sha | --sh)
- ac_prev=sharedstatedir ;;
- -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
- | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
- | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
- | --sha=* | --sh=*)
- sharedstatedir="$ac_optarg" ;;
-
- -site | --site | --sit)
- ac_prev=site ;;
- -site=* | --site=* | --sit=*)
- site="$ac_optarg" ;;
-
- -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
- ac_prev=srcdir ;;
- -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
- srcdir="$ac_optarg" ;;
-
- -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
- | --syscon | --sysco | --sysc | --sys | --sy)
- ac_prev=sysconfdir ;;
- -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
- | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
- sysconfdir="$ac_optarg" ;;
-
- -target | --target | --targe | --targ | --tar | --ta | --t)
- ac_prev=target ;;
- -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
- target="$ac_optarg" ;;
-
- -v | -verbose | --verbose | --verbos | --verbo | --verb)
- verbose=yes ;;
-
- -version | --version | --versio | --versi | --vers)
- echo "configure generated by autoconf version 2.13"
- exit 0 ;;
-
- -with-* | --with-*)
- ac_package=`echo $ac_option|sed -e 's/-*with-//' -e 's/=.*//'`
- # Reject names that are not valid shell variable names.
- if test -n "`echo $ac_package| sed 's/[-_a-zA-Z0-9]//g'`"; then
- { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; }
- fi
- ac_package=`echo $ac_package| sed 's/-/_/g'`
- case "$ac_option" in
- *=*) ;;
- *) ac_optarg=yes ;;
- esac
- eval "with_${ac_package}='$ac_optarg'" ;;
-
- -without-* | --without-*)
- ac_package=`echo $ac_option|sed -e 's/-*without-//'`
- # Reject names that are not valid shell variable names.
- if test -n "`echo $ac_package| sed 's/[-a-zA-Z0-9_]//g'`"; then
- { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; }
- fi
- ac_package=`echo $ac_package| sed 's/-/_/g'`
- eval "with_${ac_package}=no" ;;
-
- --x)
- # Obsolete; use --with-x.
- with_x=yes ;;
-
- -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
- | --x-incl | --x-inc | --x-in | --x-i)
- ac_prev=x_includes ;;
- -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
- | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
- x_includes="$ac_optarg" ;;
-
- -x-libraries | --x-libraries | --x-librarie | --x-librari \
- | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
- ac_prev=x_libraries ;;
- -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
- | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
- x_libraries="$ac_optarg" ;;
-
- -*) { echo "configure: error: $ac_option: invalid option; use --help to show usage" 1>&2; exit 1; }
- ;;
-
- *)
- if test -n "`echo $ac_option| sed 's/[-a-z0-9.]//g'`"; then
- echo "configure: warning: $ac_option: invalid host type" 1>&2
- fi
- if test "x$nonopt" != xNONE; then
- { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; }
- fi
- nonopt="$ac_option"
- ;;
-
- esac
-done
-
-if test -n "$ac_prev"; then
- { echo "configure: error: missing argument to --`echo $ac_prev | sed 's/_/-/g'`" 1>&2; exit 1; }
-fi
-
-trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15
-
-# File descriptor usage:
-# 0 standard input
-# 1 file creation
-# 2 errors and warnings
-# 3 some systems may open it to /dev/tty
-# 4 used on the Kubota Titan
-# 6 checking for... messages and results
-# 5 compiler messages saved in config.log
-if test "$silent" = yes; then
- exec 6>/dev/null
-else
- exec 6>&1
-fi
-exec 5>./config.log
-
-echo "\
-This file contains any messages produced by compilers while
-running configure, to aid debugging if configure makes a mistake.
-" 1>&5
-
-# Strip out --no-create and --no-recursion so they do not pile up.
-# Also quote any args containing shell metacharacters.
-ac_configure_args=
-for ac_arg
-do
- case "$ac_arg" in
- -no-create | --no-create | --no-creat | --no-crea | --no-cre \
- | --no-cr | --no-c) ;;
- -no-recursion | --no-recursion | --no-recursio | --no-recursi \
- | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;;
- *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*)
- ac_configure_args="$ac_configure_args '$ac_arg'" ;;
- *) ac_configure_args="$ac_configure_args $ac_arg" ;;
- esac
-done
-
-# NLS nuisances.
-# Only set these to C if already set. These must not be set unconditionally
-# because not all systems understand e.g. LANG=C (notably SCO).
-# Fixing LC_MESSAGES prevents Solaris sh from translating var values in `set'!
-# Non-C LC_CTYPE values break the ctype check.
-if test "${LANG+set}" = set; then LANG=C; export LANG; fi
-if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi
-if test "${LC_MESSAGES+set}" = set; then LC_MESSAGES=C; export LC_MESSAGES; fi
-if test "${LC_CTYPE+set}" = set; then LC_CTYPE=C; export LC_CTYPE; fi
-
-# confdefs.h avoids OS command line length limits that DEFS can exceed.
-rm -rf conftest* confdefs.h
-# AIX cpp loses on an empty file, so make sure it contains at least a newline.
-echo > confdefs.h
-
-# A filename unique to this package, relative to the directory that
-# configure is in, which we can look for to find out if srcdir is correct.
-ac_unique_file=include/idn/converter.h
-
-# Find the source files, if location was not specified.
-if test -z "$srcdir"; then
- ac_srcdir_defaulted=yes
- # Try the directory containing this script, then its parent.
- ac_prog=$0
- ac_confdir=`echo $ac_prog|sed 's%/[^/][^/]*$%%'`
- test "x$ac_confdir" = "x$ac_prog" && ac_confdir=.
- srcdir=$ac_confdir
- if test ! -r $srcdir/$ac_unique_file; then
- srcdir=..
- fi
-else
- ac_srcdir_defaulted=no
-fi
-if test ! -r $srcdir/$ac_unique_file; then
- if test "$ac_srcdir_defaulted" = yes; then
- { echo "configure: error: can not find sources in $ac_confdir or .." 1>&2; exit 1; }
- else
- { echo "configure: error: can not find sources in $srcdir" 1>&2; exit 1; }
- fi
-fi
-srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'`
-
-# Prefer explicitly selected file to automatically selected ones.
-if test -z "$CONFIG_SITE"; then
- if test "x$prefix" != xNONE; then
- CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site"
- else
- CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"
- fi
-fi
-for ac_site_file in $CONFIG_SITE; do
- if test -r "$ac_site_file"; then
- echo "loading site script $ac_site_file"
- . "$ac_site_file"
- fi
-done
-
-if test -r "$cache_file"; then
- echo "loading cache $cache_file"
- . $cache_file
-else
- echo "creating cache $cache_file"
- > $cache_file
-fi
-
-ac_ext=c
-# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
-ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
-cross_compiling=$ac_cv_prog_cc_cross
-
-ac_exeext=
-ac_objext=o
-if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then
- # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu.
- if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then
- ac_n= ac_c='
-' ac_t=' '
- else
- ac_n=-n ac_c= ac_t=
- fi
-else
- ac_n= ac_c='\c' ac_t=
-fi
-
-
-
-ac_aux_dir=
-for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do
- if test -f $ac_dir/install-sh; then
- ac_aux_dir=$ac_dir
- ac_install_sh="$ac_aux_dir/install-sh -c"
- break
- elif test -f $ac_dir/install.sh; then
- ac_aux_dir=$ac_dir
- ac_install_sh="$ac_aux_dir/install.sh -c"
- break
- fi
-done
-if test -z "$ac_aux_dir"; then
- { echo "configure: error: can not find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." 1>&2; exit 1; }
-fi
-ac_config_guess=$ac_aux_dir/config.guess
-ac_config_sub=$ac_aux_dir/config.sub
-ac_configure=$ac_aux_dir/configure # This should be Cygnus configure.
-
-
-# Make sure we can run config.sub.
-if ${CONFIG_SHELL-/bin/sh} $ac_config_sub sun4 >/dev/null 2>&1; then :
-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:582: checking host system type" >&5
-
-host_alias=$host
-case "$host_alias" in
-NONE)
- case $nonopt in
- NONE)
- if host_alias=`${CONFIG_SHELL-/bin/sh} $ac_config_guess`; then :
- else { echo "configure: error: can not guess host type; you must specify one" 1>&2; exit 1; }
- fi ;;
- *) host_alias=$nonopt ;;
- esac ;;
-esac
-
-host=`${CONFIG_SHELL-/bin/sh} $ac_config_sub $host_alias`
-host_cpu=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
-host_vendor=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
-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 "$debug" in
-yes)
- CFLAGS="$CFLAGS -DDEBUG"
- ;;
-esac
-
-mdnkit_compat=no
-COMPAT_TRUE="#"
-COMPAT_FALSE=
-# Check whether --enable-mdnkit-compat or --disable-mdnkit-compat was given.
-if test "${enable_mdnkit_compat+set}" = set; then
- enableval="$enable_mdnkit_compat"
- mdnkit_compat=$enableval
-fi
-
-case "$mdnkit_compat" in
-yes)
- COMPAT_TRUE=
- COMPAT_FALSE="#"
- cat >> confdefs.h <<\EOF
-#define ENABLE_MDNKIT_COMPAT 1
-EOF
-
- ;;
-no)
- ;;
-*)
- { echo "configure: error: You must specify yes or no to --enable-runidn option." 1>&2; exit 1; }
- ;;
-esac
-
-
-
-extraace=no
-# Check whether --enable-extra-ace or --disable-extra-ace was given.
-if test "${enable_extra_ace+set}" = set; then
- enableval="$enable_extra_ace"
- extraace=$enableval
-fi
-
-case "$extraace" in
-no)
- ;;
-yes)
- cat >> confdefs.h <<\EOF
-#define IDN_EXTRA_ACE 1
-EOF
-
- ;;
-*)
- { echo "configure: error: You must specify yes or no to --enable-extra-ace option." 1>&2; exit 1; }
- ;;
-esac
-
-UTF8_NAME=no
-# Check whether --with-utf8 or --without-utf8 was given.
-if test "${with_utf8+set}" = set; then
- withval="$with_utf8"
- UTF8_NAME=$withval
-fi
-
-case "$UTF8_NAME" in
-no)
- UTF8_NAME=UTF-8
- ;;
-yes)
- { echo "configure: error: You must specify NAME to --with-utf8 option." 1>&2; exit 1; }
- ;;
-*)
- cat >> confdefs.h <<EOF
-#define IDN_UTF8_ENCODING_NAME "$UTF8_NAME"
-EOF
-
- ;;
-esac
-
-
-liteonly=no
-LITEONLY_TRUE="#"
-LITEONLY_FALSE=
-# Check whether --enable-liteonly or --disable-liteonly was given.
-if test "${enable_liteonly+set}" = set; then
- enableval="$enable_liteonly"
- liteonly=$enableval
-fi
-
-case "$liteonly" in
-no)
- ;;
-yes)
- if test "$install_runidn" = yes ; then
- { echo "configure: error: you can't set value \"yes\" to --enable-runidn and --enable-liteonly simultaneously, because runidn requires iconv support of generic libidnkit." 1>&2; exit 1; }
- fi
- LITEONLY_TRUE=
- LITEONLY_FALSE="#"
- ;;
-*)
- { echo "configure: error: You must specify yes or no to --enable-liteonly option." 1>&2; exit 1; }
- ;;
-esac
-
-
-
-install_runidn=no
-RUNIDN_TRUE="#"
-RUNIDN_FALSE=
-# Check whether --enable-runidn or --disable-runidn was given.
-if test "${enable_runidn+set}" = set; then
- enableval="$enable_runidn"
- install_runidn=$enableval
-fi
-
-case "$install_runidn" in
-no)
- ;;
-yes)
- if test "$liteonly" = yes ; then
- { echo "configure: error: you can't set value \"yes\" to --enable-runidn and --enable-liteonly simultaneously, because runidn requires iconv support of generic libidnkit." 1>&2; exit 1; }
- fi
- RUNIDN_TRUE=
- RUNIDN_FALSE="#"
- ;;
-*)
- { echo "configure: error: You must specify yes or no to --enable-runidn option." 1>&2; exit 1; }
- ;;
-esac
-
-
-
-ICONVINC=
-ICONVLIB=
-
-libiconv=unspec
-# Check whether --with-libiconv or --without-libiconv was given.
-if test "${with_libiconv+set}" = set; then
- withval="$with_libiconv"
- libiconv=$withval
-fi
-
-case "$libiconv" in
-unspec)
- ;;
-no)
- ICONVINC=
- ICONVLIB=
- ;;
-yes)
- if test "$liteonly" = yes ; then
- { echo "configure: error: you can't set iconv options at all when you set value \"yes\" to --enable-liteonly, because lite library does not have iconv support." 1>&2; exit 1; }
- fi
- 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"
- ;;
-*)
- if test "$liteonly" = yes ; then
- { echo "configure: error: you can't set iconv options at all when you set value \"yes\" to --enable-liteonly, because lite library does not have iconv support." 1>&2; exit 1; }
- fi
- ICONVINC="-I$libiconv/include"
- ICONVLIB="-L$libiconv/lib -R$libiconv/lib -liconv"
- ;;
-esac
-
-iconv_include=unspec
-# Check whether --with-iconv-include or --without-iconv-include was given.
-if test "${with_iconv_include+set}" = set; then
- withval="$with_iconv_include"
- iconv_include=$withval
-fi
-
-case "$iconv_include" in
-unspec)
- ;;
-no)
- ICONVINC=
- ;;
-yes)
- if test "$liteonly" = yes ; then
- { echo "configure: error: you can't set iconv options at all when you set value \"yes\" to --enable-liteonly, because lite library does not have iconv support." 1>&2; exit 1; }
- fi
- echo "configure: warning: You must supply DIR to --with-iconv-include option.
- Ignored." 1>&2
- ICONVINC=
- ;;
-*)
- if test "$liteonly" = yes ; then
- { echo "configure: error: you can't set iconv options at all when you set value \"yes\" to --enable-liteonly, because lite library does not have iconv support." 1>&2; exit 1; }
- fi
- 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=unspec
-# Check whether --with-iconv or --without-iconv was given.
-if test "${with_iconv+set}" = set; then
- withval="$with_iconv"
- iconv=$withval
-fi
-
-case "$iconv" in
-unspec)
- ;;
-no)
- ICONVLIB=
- ;;
-yes)
- if test "$liteonly" = yes ; then
- { echo "configure: error: you can't set iconv options at all when you set value \"yes\" to --enable-liteonly, because lite library does not have iconv support." 1>&2; exit 1; }
- fi
- echo "configure: warning: You must supply LIB to --with-iconv option.
- -liconv is assumed." 1>&2
- ICONVLIB=-liconv
- ;;
-*)
- if test "$liteonly" = yes ; then
- { echo "configure: error: you can't set iconv options at all when you set value \"yes\" to --enable-liteonly, because lite library does not have iconv support." 1>&2; exit 1; }
- fi
- ICONVLIB=$iconv
- ;;
-esac
-
-
-# Check whether --with-iconv-sofile or --without-iconv-sofile was given.
-if test "${with_iconv_sofile+set}" = set; then
- withval="$with_iconv_sofile"
- iconv_file=$withval
-else
- iconv_file=guess
-fi
-
-ICONVSOFILE=
-case "$iconv_file" in
-no)
- ICONVSOFILE=none
- ;;
-yes)
- if test "$liteonly" = yes ; then
- { echo "configure: error: you can't set iconv options at all when you set value \"yes\" to --enable-liteonly, because lite library does not have iconv support." 1>&2; exit 1; }
- fi
- { echo "configure: error: You must supply PATH to --with-iconv-sofile option." 1>&2; exit 1; }
- ;;
-guess)
- if test "$liteonly" != yes ; then
- if test "$ICONVLIB" = ""; then
- ICONVSOFILE=none
- else
- echo $ac_n "checking pathname of iconv shared library""... $ac_c" 1>&6
-echo "configure:870: checking pathname of iconv shared library" >&5
- ic_libdir=
- ic_libname=
- case "$host" in
- *-hpux*)
- SO=sl
- ;;
- *)
- SO=so
- ;;
- esac
- for arg in $ICONVLIB; do
- case "$arg" in
- -L*) ic_libdir="$ic_libdir `echo $arg | sed s/-L//`" ;;
- -l*) ic_libname=`echo $arg | sed s/-l//` ;;
- /*.$SO*) ICONVSOFILE=$arg ;;
- esac
- done
- if test "$ICONVSOFILE" = ""; then
- if test "$ic_libname" = ""; then
- echo "$ac_t""unknown" 1>&6
- echo "configure: warning: use --with-iconv-sofile for specifying iconv shared library file" 1>&2
- ICONVSOFILE=none
- else
- if test "$ic_libdir" = ""; then
- # Standard (and semi-standard) library directories
- ic_libdir="/lib /usr/lib /usr/local/lib"
- fi
- for dir in $ic_libdir; do
- ICONVSOFILE=`ls -r $dir/lib$ic_libname.$SO* 2>/dev/null | head -1`
- if test "$ICONVSOFILE" != ""; then
- break
- fi
- done
- if test "$ICONVSOFILE" != ""; then
- echo "$ac_t""$ICONVSOFILE" 1>&6
- else
- echo "$ac_t""unknown" 1>&6
- echo "configure: warning: use --with-iconv-sofile for specifying iconv shared library file" 1>&2
- ICONVSOFILE=none
- fi
- fi
- fi
- fi
- else
- ICONVSOFILE=none
- fi
- ;;
-*)
- if test "$liteonly" = yes ; then
- { echo "configure: error: you can't set iconv options at all when you set value \"yes\" to --enable-liteonly, because lite library does not have iconv support." 1>&2; exit 1; }
- fi
- ICONVSOFILE=$iconv_file
- ;;
-esac
-
-
-PRELOAD_VAR="LD_PRELOAD"
-PRELOAD_SEP=":"
-PRELOAD_LAST=""
-case "$host" in
-*-solaris*)
- PRELOAD_SEP=" "
- ;;
-*-linux*)
- PRELOAD_SEP=" "
- ;;
-*-osf*)
- 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:959: 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
- if test -n "$CC"; then
- ac_cv_prog_CC="$CC" # Let the user override the test.
-else
- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
- ac_dummy="$PATH"
- for ac_dir in $ac_dummy; do
- test -z "$ac_dir" && ac_dir=.
- if test -f $ac_dir/$ac_word; then
- ac_cv_prog_CC="gcc"
- break
- fi
- done
- IFS="$ac_save_ifs"
-fi
-fi
-CC="$ac_cv_prog_CC"
-if test -n "$CC"; then
- echo "$ac_t""$CC" 1>&6
-else
- echo "$ac_t""no" 1>&6
-fi
-
-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:989: 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
- if test -n "$CC"; then
- ac_cv_prog_CC="$CC" # Let the user override the test.
-else
- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
- ac_prog_rejected=no
- ac_dummy="$PATH"
- for ac_dir in $ac_dummy; do
- test -z "$ac_dir" && ac_dir=.
- if test -f $ac_dir/$ac_word; then
- if test "$ac_dir/$ac_word" = "/usr/ucb/cc"; then
- ac_prog_rejected=yes
- continue
- fi
- ac_cv_prog_CC="cc"
- break
- fi
- done
- IFS="$ac_save_ifs"
-if test $ac_prog_rejected = yes; then
- # We found a bogon in the path, so make sure we never use it.
- set dummy $ac_cv_prog_CC
- shift
- if test $# -gt 0; then
- # We chose a different compiler from the bogus one.
- # However, it has the same basename, so the bogon will be chosen
- # first if we set CC to just the basename; use the full file name.
- shift
- set dummy "$ac_dir/$ac_word" "$@"
- shift
- ac_cv_prog_CC="$@"
- fi
-fi
-fi
-fi
-CC="$ac_cv_prog_CC"
-if test -n "$CC"; then
- echo "$ac_t""$CC" 1>&6
-else
- echo "$ac_t""no" 1>&6
-fi
-
- if test -z "$CC"; then
- case "`uname -s`" in
- *win32* | *WIN32*)
- # 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:1040: 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
- if test -n "$CC"; then
- ac_cv_prog_CC="$CC" # Let the user override the test.
-else
- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
- ac_dummy="$PATH"
- for ac_dir in $ac_dummy; do
- test -z "$ac_dir" && ac_dir=.
- if test -f $ac_dir/$ac_word; then
- ac_cv_prog_CC="cl"
- break
- fi
- done
- IFS="$ac_save_ifs"
-fi
-fi
-CC="$ac_cv_prog_CC"
-if test -n "$CC"; then
- echo "$ac_t""$CC" 1>&6
-else
- echo "$ac_t""no" 1>&6
-fi
- ;;
- esac
- fi
- test -z "$CC" && { echo "configure: error: no acceptable cc found in \$PATH" 1>&2; exit 1; }
-fi
-
-echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:1072: 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.
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
-ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
-cross_compiling=$ac_cv_prog_cc_cross
-
-cat > conftest.$ac_ext << EOF
-
-#line 1083 "configure"
-#include "confdefs.h"
-
-main(){return(0);}
-EOF
-if { (eval echo configure:1088: \"$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
- ac_cv_prog_cc_cross=no
- else
- ac_cv_prog_cc_cross=yes
- fi
-else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- ac_cv_prog_cc_works=no
-fi
-rm -fr conftest*
-ac_ext=c
-# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
-ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
-cross_compiling=$ac_cv_prog_cc_cross
-
-echo "$ac_t""$ac_cv_prog_cc_works" 1>&6
-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:1114: 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:1119: 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
- cat > conftest.c <<EOF
-#ifdef __GNUC__
- yes;
-#endif
-EOF
-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1128: \"$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
-fi
-fi
-
-echo "$ac_t""$ac_cv_prog_gcc" 1>&6
-
-if test $ac_cv_prog_gcc = yes; then
- GCC=yes
-else
- GCC=
-fi
-
-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:1147: 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
- echo 'void f(){}' > conftest.c
-if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then
- ac_cv_prog_cc_g=yes
-else
- ac_cv_prog_cc_g=no
-fi
-rm -f conftest*
-
-fi
-
-echo "$ac_t""$ac_cv_prog_cc_g" 1>&6
-if test "$ac_test_CFLAGS" = set; then
- CFLAGS="$ac_save_CFLAGS"
-elif test $ac_cv_prog_cc_g = yes; then
- if test "$GCC" = yes; then
- CFLAGS="-g -O2"
- else
- CFLAGS="-g"
- fi
-else
- if test "$GCC" = yes; then
- CFLAGS="-O2"
- else
- CFLAGS=
- fi
-fi
-
-# Find a good install program. We prefer a C program (faster),
-# so one script is as good as another. But avoid the broken or
-# incompatible versions:
-# SysV /etc/install, /usr/sbin/install
-# SunOS /usr/etc/install
-# IRIX /sbin/install
-# AIX /bin/install
-# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
-# AFS /usr/afsws/bin/install, which mishandles nonexistent args
-# 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:1190: 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
-else
- IFS="${IFS= }"; ac_save_IFS="$IFS"; IFS=":"
- for ac_dir in $PATH; do
- # Account for people who put trailing slashes in PATH elements.
- case "$ac_dir/" in
- /|./|.//|/etc/*|/usr/sbin/*|/usr/etc/*|/sbin/*|/usr/afsws/bin/*|/usr/ucb/*) ;;
- *)
- # OSF1 and SCO ODT 3.0 have their own names for install.
- # Don't use installbsd from OSF since it installs stuff as root
- # by default.
- for ac_prog in ginstall scoinst install; do
- if test -f $ac_dir/$ac_prog; then
- if test $ac_prog = install &&
- grep dspmsg $ac_dir/$ac_prog >/dev/null 2>&1; then
- # AIX install. It has an incompatible calling convention.
- :
- else
- ac_cv_path_install="$ac_dir/$ac_prog -c"
- break 2
- fi
- fi
- done
- ;;
- esac
- done
- IFS="$ac_save_IFS"
-
-fi
- if test "${ac_cv_path_install+set}" = set; then
- INSTALL="$ac_cv_path_install"
- else
- # As a last resort, use the slow shell script. We don't cache a
- # path for INSTALL within a source directory, because that will
- # break other packages using the cache if that directory is
- # removed, or if the path is relative.
- INSTALL="$ac_install_sh"
- fi
-fi
-echo "$ac_t""$INSTALL" 1>&6
-
-# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
-# It thinks the first close brace ends the variable substitution.
-test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
-
-test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL_PROGRAM}'
-
-test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
-
-# Check whether --enable-shared or --disable-shared was given.
-if test "${enable_shared+set}" = set; then
- enableval="$enable_shared"
- p=${PACKAGE-default}
-case "$enableval" in
-yes) enable_shared=yes ;;
-no) enable_shared=no ;;
-*)
- enable_shared=no
- # Look at the argument we got. We use all the common list separators.
- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
- for pkg in $enableval; do
- if test "X$pkg" = "X$p"; then
- enable_shared=yes
- fi
- done
- IFS="$ac_save_ifs"
- ;;
-esac
-else
- enable_shared=yes
-fi
-
-# Check whether --enable-static or --disable-static was given.
-if test "${enable_static+set}" = set; then
- enableval="$enable_static"
- p=${PACKAGE-default}
-case "$enableval" in
-yes) enable_static=yes ;;
-no) enable_static=no ;;
-*)
- enable_static=no
- # Look at the argument we got. We use all the common list separators.
- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
- for pkg in $enableval; do
- if test "X$pkg" = "X$p"; then
- enable_static=yes
- fi
- done
- IFS="$ac_save_ifs"
- ;;
-esac
-else
- enable_static=yes
-fi
-
-# Check whether --enable-fast-install or --disable-fast-install was given.
-if test "${enable_fast_install+set}" = set; then
- enableval="$enable_fast_install"
- p=${PACKAGE-default}
-case "$enableval" in
-yes) enable_fast_install=yes ;;
-no) enable_fast_install=no ;;
-*)
- enable_fast_install=no
- # Look at the argument we got. We use all the common list separators.
- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
- for pkg in $enableval; do
- if test "X$pkg" = "X$p"; then
- enable_fast_install=yes
- fi
- done
- IFS="$ac_save_ifs"
- ;;
-esac
-else
- enable_fast_install=yes
-fi
-
-echo $ac_n "checking build system type""... $ac_c" 1>&6
-echo "configure:1312: checking build system type" >&5
-
-build_alias=$build
-case "$build_alias" in
-NONE)
- case $nonopt in
- NONE) build_alias=$host_alias ;;
- *) build_alias=$nonopt ;;
- esac ;;
-esac
-
-build=`${CONFIG_SHELL-/bin/sh} $ac_config_sub $build_alias`
-build_cpu=`echo $build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
-build_vendor=`echo $build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
-build_os=`echo $build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
-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:1332: 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
- if test -n "$RANLIB"; then
- ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
-else
- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
- ac_dummy="$PATH"
- for ac_dir in $ac_dummy; do
- test -z "$ac_dir" && ac_dir=.
- if test -f $ac_dir/$ac_word; then
- ac_cv_prog_RANLIB="ranlib"
- break
- fi
- done
- IFS="$ac_save_ifs"
- test -z "$ac_cv_prog_RANLIB" && ac_cv_prog_RANLIB=":"
-fi
-fi
-RANLIB="$ac_cv_prog_RANLIB"
-if test -n "$RANLIB"; then
- echo "$ac_t""$RANLIB" 1>&6
-else
- echo "$ac_t""no" 1>&6
-fi
-
-# Check whether --with-gnu-ld or --without-gnu-ld was given.
-if test "${with_gnu_ld+set}" = set; then
- withval="$with_gnu_ld"
- test "$withval" = no || with_gnu_ld=yes
-else
- with_gnu_ld=no
-fi
-
-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:1371: checking for ld used by GCC" >&5
- ac_prog=`($CC -print-prog-name=ld) 2>&5`
- case "$ac_prog" in
- # Accept absolute paths.
- [\\/]* | [A-Za-z]:[\\/]*)
- re_direlt='/[^/][^/]*/\.\./'
- # Canonicalize the path of ld
- ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'`
- while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
- ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"`
- done
- test -z "$LD" && LD="$ac_prog"
- ;;
- "")
- # If it fails, then pretend we aren't using GCC.
- ac_prog=ld
- ;;
- *)
- # If it is relative, then search for the first ld in PATH.
- with_gnu_ld=unknown
- ;;
- esac
-elif test "$with_gnu_ld" = yes; then
- echo $ac_n "checking for GNU ld""... $ac_c" 1>&6
-echo "configure:1395: checking for GNU ld" >&5
-else
- echo $ac_n "checking for non-GNU ld""... $ac_c" 1>&6
-echo "configure:1398: 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
-else
- if test -z "$LD"; then
- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}"
- for ac_dir in $PATH; do
- test -z "$ac_dir" && ac_dir=.
- if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
- ac_cv_path_LD="$ac_dir/$ac_prog"
- # Check to see if the program is GNU ld. I'd rather use --version,
- # but apparently some GNU ld's only accept -v.
- # Break only if it was the GNU/non-GNU ld that we prefer.
- if "$ac_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then
- test "$with_gnu_ld" != no && break
- else
- test "$with_gnu_ld" != yes && break
- fi
- fi
- done
- IFS="$ac_save_ifs"
-else
- ac_cv_path_LD="$LD" # Let the user override the test with a path.
-fi
-fi
-
-LD="$ac_cv_path_LD"
-if test -n "$LD"; then
- echo "$ac_t""$LD" 1>&6
-else
- echo "$ac_t""no" 1>&6
-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:1433: 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
- # I'd rather use --version here, but apparently some GNU ld's only accept -v.
-if $LD -v 2>&1 </dev/null | egrep '(GNU|with BFD)' 1>&5; then
- ac_cv_prog_gnu_ld=yes
-else
- ac_cv_prog_gnu_ld=no
-fi
-fi
-
-echo "$ac_t""$ac_cv_prog_gnu_ld" 1>&6
-
-
-echo $ac_n "checking for BSD-compatible nm""... $ac_c" 1>&6
-echo "configure:1449: 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
- if test -n "$NM"; then
- # Let the user override the test.
- ac_cv_path_NM="$NM"
-else
- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}"
- for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do
- test -z "$ac_dir" && ac_dir=.
- if test -f $ac_dir/nm || test -f $ac_dir/nm$ac_exeext ; then
- # Check to see if the nm accepts a BSD-compat flag.
- # Adding the `sed 1q' prevents false positives on HP-UX, which says:
- # nm: unknown option "B" ignored
- if ($ac_dir/nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then
- ac_cv_path_NM="$ac_dir/nm -B"
- break
- elif ($ac_dir/nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then
- ac_cv_path_NM="$ac_dir/nm -p"
- break
- else
- ac_cv_path_NM=${ac_cv_path_NM="$ac_dir/nm"} # keep the first match, but
- continue # so that we can try to find one that supports BSD flags
- fi
- fi
- done
- IFS="$ac_save_ifs"
- test -z "$ac_cv_path_NM" && ac_cv_path_NM=nm
-fi
-fi
-
-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:1485: 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
- rm -f conftestdata
-if ln -s X conftestdata 2>/dev/null
-then
- rm -f conftestdata
- ac_cv_prog_LN_S="ln -s"
-else
- ac_cv_prog_LN_S=ln
-fi
-fi
-LN_S="$ac_cv_prog_LN_S"
-if test "$ac_cv_prog_LN_S" = "ln -s"; then
- echo "$ac_t""yes" 1>&6
-else
- echo "$ac_t""no" 1>&6
-fi
-
-
-case "$target" in
-NONE) lt_target="$host" ;;
-*) lt_target="$target" ;;
-esac
-
-# Check for any special flags to pass to ltconfig.
-libtool_flags="--cache-file=$cache_file"
-test "$enable_shared" = no && libtool_flags="$libtool_flags --disable-shared"
-test "$enable_static" = no && libtool_flags="$libtool_flags --disable-static"
-test "$enable_fast_install" = no && libtool_flags="$libtool_flags --disable-fast-install"
-test "$ac_cv_prog_gcc" = yes && libtool_flags="$libtool_flags --with-gcc"
-test "$ac_cv_prog_gnu_ld" = yes && libtool_flags="$libtool_flags --with-gnu-ld"
-
-
-# Check whether --enable-libtool-lock or --disable-libtool-lock was given.
-if test "${enable_libtool_lock+set}" = set; then
- enableval="$enable_libtool_lock"
- :
-fi
-
-test "x$enable_libtool_lock" = xno && libtool_flags="$libtool_flags --disable-lock"
-test x"$silent" = xyes && libtool_flags="$libtool_flags --silent"
-
-# Some flags need to be propagated to the compiler or linker for good
-# libtool support.
-case "$lt_target" in
-*-*-irix6*)
- # Find out which ABI we are using.
- echo '#line 1534 "configure"' > conftest.$ac_ext
- if { (eval echo configure:1535: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- case "`/usr/bin/file conftest.o`" in
- *32-bit*)
- LD="${LD-ld} -32"
- ;;
- *N32*)
- LD="${LD-ld} -n32"
- ;;
- *64-bit*)
- LD="${LD-ld} -64"
- ;;
- esac
- fi
- rm -rf conftest*
- ;;
-
-*-*-sco3.2v5*)
- # On SCO OpenServer 5, we need -belf to get full-featured binaries.
- SAVE_CFLAGS="$CFLAGS"
- CFLAGS="$CFLAGS -belf"
- echo $ac_n "checking whether the C compiler needs -belf""... $ac_c" 1>&6
-echo "configure:1556: 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 <<EOF
-#line 1561 "configure"
-#include "confdefs.h"
-
-int main() {
-
-; return 0; }
-EOF
-if { (eval echo configure:1568: \"$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
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- lt_cv_cc_needs_belf=no
-fi
-rm -f conftest*
-fi
-
-echo "$ac_t""$lt_cv_cc_needs_belf" 1>&6
- if test x"$lt_cv_cc_needs_belf" != x"yes"; then
- # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
- CFLAGS="$SAVE_CFLAGS"
- fi
- ;;
-
-
-esac
-
-
-# Save cache, so that ltconfig can load it
-cat > confcache <<\EOF
-# This file is a shell script that caches the results of configure
-# tests run on this system so they can be shared between configure
-# scripts and configure runs. It is not useful on other systems.
-# If it contains results you don't want to keep, you may remove or edit it.
-#
-# By default, configure uses ./config.cache as the cache file,
-# creating it if it does not exist already. You can give configure
-# the --cache-file=FILE option to use a different cache file; that is
-# what configure does when it calls configure scripts in
-# subdirectories, so they share the cache.
-# Giving --cache-file=/dev/null disables caching, for debugging configure.
-# config.status only pays attention to the cache file if you give it the
-# --recheck option to rerun configure.
-#
-EOF
-# The following way of writing the cache mishandles newlines in values,
-# but we know of no workaround that is simple, portable, and efficient.
-# So, don't put newlines in cache variables' values.
-# Ultrix sh set writes to stderr and can't be redirected directly,
-# and sets the high bit in the cache file unless we assign to the vars.
-(set) 2>&1 |
- case `(ac_space=' '; set | grep ac_space) 2>&1` in
- *ac_space=\ *)
- # `set' does not quote correctly, so add quotes (double-quote substitution
- # turns \\\\ into \\, and sed turns \\ into \).
- sed -n \
- -e "s/'/'\\\\''/g" \
- -e "s/^\\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\\)=\\(.*\\)/\\1=\${\\1='\\2'}/p"
- ;;
- *)
- # `set' quotes correctly as required by POSIX, so do not add quotes.
- sed -n -e 's/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=${\1=\2}/p'
- ;;
- esac >> confcache
-if cmp -s $cache_file confcache; then
- :
-else
- if test -w $cache_file; then
- echo "updating cache $cache_file"
- cat confcache > $cache_file
- else
- echo "not updating unwritable cache $cache_file"
- fi
-fi
-rm -f confcache
-
-
-# Actually configure libtool. ac_aux_dir is where install-sh is found.
-CC="$CC" CFLAGS="$CFLAGS" CPPFLAGS="$CPPFLAGS" \
-LD="$LD" LDFLAGS="$LDFLAGS" LIBS="$LIBS" \
-LN_S="$LN_S" NM="$NM" RANLIB="$RANLIB" \
-DLLTOOL="$DLLTOOL" AS="$AS" OBJDUMP="$OBJDUMP" \
-${CONFIG_SHELL-/bin/sh} $ac_aux_dir/ltconfig --no-reexec \
-$libtool_flags --no-verify $ac_aux_dir/ltmain.sh $lt_target \
-|| { echo "configure: error: libtool configure failed" 1>&2; exit 1; }
-
-# Reload cache, that may have been modified by ltconfig
-if test -r "$cache_file"; then
- echo "loading cache $cache_file"
- . $cache_file
-else
- echo "creating cache $cache_file"
- > $cache_file
-fi
-
-
-# This can be used to rebuild libtool when needed
-LIBTOOL_DEPS="$ac_aux_dir/ltconfig $ac_aux_dir/ltmain.sh"
-
-# Always use our own libtool.
-LIBTOOL='$(SHELL) $(top_builddir)/libtool'
-
-# Redirect the config.log output again, so that the ltconfig log is not
-# clobbered by the next message.
-exec 5>>./config.log
-
-
-for ac_prog in perl
-do
-# 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:1675: 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
- case "$PERL" in
- /*)
- ac_cv_path_PERL="$PERL" # Let the user override the test with a path.
- ;;
- ?:/*)
- ac_cv_path_PERL="$PERL" # Let the user override the test with a dos path.
- ;;
- *)
- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
- ac_dummy="$PATH"
- for ac_dir in $ac_dummy; do
- test -z "$ac_dir" && ac_dir=.
- if test -f $ac_dir/$ac_word; then
- ac_cv_path_PERL="$ac_dir/$ac_word"
- break
- fi
- done
- IFS="$ac_save_ifs"
- ;;
-esac
-fi
-PERL="$ac_cv_path_PERL"
-if test -n "$PERL"; then
- echo "$ac_t""$PERL" 1>&6
-else
- echo "$ac_t""no" 1>&6
-fi
-
-test -n "$PERL" && break
-done
-test -n "$PERL" || PERL="perl"
-
-
-echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
-echo "configure:1713: checking how to run the C preprocessor" >&5
-# On Suns, sometimes $CPP names a directory.
-if test -n "$CPP" && test -d "$CPP"; then
- CPP=
-fi
-if test -z "$CPP"; then
-if eval "test \"`echo '$''{'ac_cv_prog_CPP'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- # This must be in double quotes, not single quotes, because CPP may get
- # substituted into the Makefile and "${CC-cc}" will confuse make.
- CPP="${CC-cc} -E"
- # On the NeXT, cc -E runs the code through the compiler's parser,
- # not just through cpp.
- cat > conftest.$ac_ext <<EOF
-#line 1728 "configure"
-#include "confdefs.h"
-#include <assert.h>
-Syntax Error
-EOF
-ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1734: \"$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
- :
-else
- echo "$ac_err" >&5
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- CPP="${CC-cc} -E -traditional-cpp"
- cat > conftest.$ac_ext <<EOF
-#line 1745 "configure"
-#include "confdefs.h"
-#include <assert.h>
-Syntax Error
-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
- :
-else
- echo "$ac_err" >&5
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- CPP="${CC-cc} -nologo -E"
- cat > conftest.$ac_ext <<EOF
-#line 1762 "configure"
-#include "confdefs.h"
-#include <assert.h>
-Syntax Error
-EOF
-ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1768: \"$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
- :
-else
- echo "$ac_err" >&5
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- CPP=/lib/cpp
-fi
-rm -f conftest*
-fi
-rm -f conftest*
-fi
-rm -f conftest*
- ac_cv_prog_CPP="$CPP"
-fi
- CPP="$ac_cv_prog_CPP"
-else
- ac_cv_prog_CPP="$CPP"
-fi
-echo "$ac_t""$CPP" 1>&6
-
-for ac_hdr in unistd.h locale.h langinfo.h pwd.h
-do
-ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
-echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:1796: 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
-#line 1801 "configure"
-#include "confdefs.h"
-#include <$ac_hdr>
-EOF
-ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1806: \"$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 <<EOF
-#define $ac_tr_hdr 1
-EOF
-
-else
- echo "$ac_t""no" 1>&6
-fi
-done
-
-if test "$install_runidn" = yes ; then
- 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:1837: 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
-#line 1842 "configure"
-#include "confdefs.h"
-#include <$ac_hdr>
-EOF
-ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1847: \"$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 <<EOF
-#define $ac_tr_hdr 1
-EOF
-
-else
- echo "$ac_t""no" 1>&6
-fi
-done
-
-fi
-
-saved_CPPFLAGS=$CPPFLAGS
-CPPFLAGS="$CPPFLAGS $ICONVINC"
-if test "$liteonly" != yes ; then
- ac_safe=`echo "iconv.h" | sed 'y%./+-%__p_%'`
-echo $ac_n "checking for iconv.h""... $ac_c" 1>&6
-echo "configure:1880: 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
-#line 1885 "configure"
-#include "confdefs.h"
-#include <iconv.h>
-EOF
-ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1890: \"$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
-
-fi
-CPPFLAGS=$saved_CPPFLAGS
-
-echo $ac_n "checking for uid_t in sys/types.h""... $ac_c" 1>&6
-echo "configure:1916: 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
-#line 1921 "configure"
-#include "confdefs.h"
-#include <sys/types.h>
-EOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- egrep "uid_t" >/dev/null 2>&1; then
- rm -rf conftest*
- ac_cv_type_uid_t=yes
-else
- rm -rf conftest*
- ac_cv_type_uid_t=no
-fi
-rm -f conftest*
-
-fi
-
-echo "$ac_t""$ac_cv_type_uid_t" 1>&6
-if test $ac_cv_type_uid_t = no; then
- cat >> confdefs.h <<\EOF
-#define uid_t int
-EOF
-
- cat >> confdefs.h <<\EOF
-#define gid_t int
-EOF
-
-fi
-
-echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
-echo "configure:1950: 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 <<EOF
-#line 1955 "configure"
-#include "confdefs.h"
-#include <stdlib.h>
-#include <stdarg.h>
-#include <string.h>
-#include <float.h>
-EOF
-ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1963: \"$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*
- ac_cv_header_stdc=yes
-else
- echo "$ac_err" >&5
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- ac_cv_header_stdc=no
-fi
-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
-#line 1980 "configure"
-#include "confdefs.h"
-#include <string.h>
-EOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- egrep "memchr" >/dev/null 2>&1; then
- :
-else
- rm -rf conftest*
- ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-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
-#line 1998 "configure"
-#include "confdefs.h"
-#include <stdlib.h>
-EOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- egrep "free" >/dev/null 2>&1; then
- :
-else
- rm -rf conftest*
- ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
- # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
-if test "$cross_compiling" = yes; then
- :
-else
- cat > conftest.$ac_ext <<EOF
-#line 2019 "configure"
-#include "confdefs.h"
-#include <ctype.h>
-#define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
-#define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
-#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
-int main () { int i; for (i = 0; i < 256; i++)
-if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2);
-exit (0); }
-
-EOF
-if { (eval echo configure:2030: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-then
- :
-else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -fr conftest*
- ac_cv_header_stdc=no
-fi
-rm -fr conftest*
-fi
-
-fi
-fi
-
-echo "$ac_t""$ac_cv_header_stdc" 1>&6
-if test $ac_cv_header_stdc = yes; then
- cat >> confdefs.h <<\EOF
-#define STDC_HEADERS 1
-EOF
-
-fi
-
-echo $ac_n "checking for BOOL""... $ac_c" 1>&6
-echo "configure:2054: 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 <<EOF
-#line 2059 "configure"
-#include "confdefs.h"
-#include <sys/types.h>
-#if STDC_HEADERS
-#include <stdlib.h>
-#include <stddef.h>
-#endif
-EOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- egrep "(^|[^a-zA-Z_0-9])BOOL[^a-zA-Z_0-9]" >/dev/null 2>&1; then
- rm -rf conftest*
- ac_cv_type_BOOL=yes
-else
- rm -rf conftest*
- ac_cv_type_BOOL=no
-fi
-rm -f conftest*
-
-fi
-echo "$ac_t""$ac_cv_type_BOOL" 1>&6
-if test $ac_cv_type_BOOL = no; then
- cat >> confdefs.h <<\EOF
-#define BOOL int
-EOF
-
-fi
-
-
-if test "$install_runidn" = yes ; then
- echo $ac_n "checking for socket in -lsocket""... $ac_c" 1>&6
-echo "configure:2089: 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
-else
- ac_save_LIBS="$LIBS"
-LIBS="-lsocket $LIBS"
-cat > conftest.$ac_ext <<EOF
-#line 2097 "configure"
-#include "confdefs.h"
-/* 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 socket();
-
-int main() {
-socket()
-; return 0; }
-EOF
-if { (eval echo configure:2108: \"$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
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=no"
-fi
-rm -f conftest*
-LIBS="$ac_save_LIBS"
-
-fi
-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
- echo "$ac_t""yes" 1>&6
- ac_tr_lib=HAVE_LIB`echo socket | sed -e 's/[^a-zA-Z0-9_]/_/g' \
- -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
- cat >> confdefs.h <<EOF
-#define $ac_tr_lib 1
-EOF
-
- LIBS="-lsocket $LIBS"
-
-else
- echo "$ac_t""no" 1>&6
-fi
-
- echo $ac_n "checking for inet_addr in -lnsl""... $ac_c" 1>&6
-echo "configure:2136: 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
-else
- ac_save_LIBS="$LIBS"
-LIBS="-lnsl $LIBS"
-cat > conftest.$ac_ext <<EOF
-#line 2144 "configure"
-#include "confdefs.h"
-/* 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 inet_addr();
-
-int main() {
-inet_addr()
-; return 0; }
-EOF
-if { (eval echo configure:2155: \"$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
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=no"
-fi
-rm -f conftest*
-LIBS="$ac_save_LIBS"
-
-fi
-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
- echo "$ac_t""yes" 1>&6
- ac_tr_lib=HAVE_LIB`echo nsl | sed -e 's/[^a-zA-Z0-9_]/_/g' \
- -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
- cat >> confdefs.h <<EOF
-#define $ac_tr_lib 1
-EOF
-
- LIBS="-lnsl $LIBS"
-
-else
- echo "$ac_t""no" 1>&6
-fi
-
- echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6
-echo "configure:2183: 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
-else
- ac_save_LIBS="$LIBS"
-LIBS="-ldl $LIBS"
-cat > conftest.$ac_ext <<EOF
-#line 2191 "configure"
-#include "confdefs.h"
-/* 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 dlopen();
-
-int main() {
-dlopen()
-; return 0; }
-EOF
-if { (eval echo configure:2202: \"$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
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=no"
-fi
-rm -f conftest*
-LIBS="$ac_save_LIBS"
-
-fi
-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
- echo "$ac_t""yes" 1>&6
-
- LIBS="-ldl $LIBS"
- LIBDL="-ldl"
- cat >> confdefs.h <<\EOF
-#define HAVE_LIBDL 1
-EOF
-
-
-
-else
- echo "$ac_t""no" 1>&6
-fi
-
-fi
-
-for ac_func in vsnprintf setvbuf setlocale nl_langinfo memmove bcopy setenv \
- unsetenv
-do
-echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2236: 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 <<EOF
-#line 2241 "configure"
-#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func(); below. */
-#include <assert.h>
-/* 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:2264: \"$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 <<EOF
-#define $ac_tr_func 1
-EOF
-
-else
- echo "$ac_t""no" 1>&6
-fi
-done
-
-if test "$install_runidn" = yes ; then
- for ac_func in gethostbyname gethostbyname2 gethostbyaddr
-do
-echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2292: 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 <<EOF
-#line 2297 "configure"
-#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func(); below. */
-#include <assert.h>
-/* 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:2320: \"$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 <<EOF
-#define $ac_tr_func 1
-EOF
-
-else
- echo "$ac_t""no" 1>&6
-fi
-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:2347: 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 <<EOF
-#line 2352 "configure"
-#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func(); below. */
-#include <assert.h>
-/* 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:2375: \"$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 <<EOF
-#define $ac_tr_func 1
-EOF
- find_gethost_r=yes
-else
- echo "$ac_t""no" 1>&6
-fi
-done
-
- for ac_func in getipnodebyname getipnodebyaddr freehostent
-do
-echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2402: 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 <<EOF
-#line 2407 "configure"
-#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func(); below. */
-#include <assert.h>
-/* 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:2430: \"$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 <<EOF
-#define $ac_tr_func 1
-EOF
-
-else
- echo "$ac_t""no" 1>&6
-fi
-done
-
- for ac_func in getaddrinfo freeaddrinfo getnameinfo
-do
-echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2457: 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 <<EOF
-#line 2462 "configure"
-#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func(); below. */
-#include <assert.h>
-/* 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:2485: \"$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 <<EOF
-#define $ac_tr_func 1
-EOF
-
-else
- echo "$ac_t""no" 1>&6
-fi
-done
-
- for ac_func in dlopen dlsym
-do
-echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2512: 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 <<EOF
-#line 2517 "configure"
-#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func(); below. */
-#include <assert.h>
-/* 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:2540: \"$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 <<EOF
-#define $ac_tr_func 1
-EOF
-
-else
- echo "$ac_t""no" 1>&6
-fi
-done
-
-fi
-
-if test "$install_runidn" = yes ; then
- echo $ac_n "checking flavor of gethostbyaddr""... $ac_c" 1>&6
-echo "configure:2568: 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
- ac_cv_flavor_gethostbyaddr=unknown
- if test "$cross_compiling" = yes; then
- ac_cv_flavor_gethostbyaddr=unknown
-else
- cat > conftest.$ac_ext <<EOF
-#line 2577 "configure"
-#include "confdefs.h"
-
- #include <stddef.h>
- #include <sys/types.h>
- #include <sys/socket.h>
- #include <netdb.h>
- 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:2593: \"$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 <<EOF
-#line 2607 "configure"
-#include "confdefs.h"
-
- #include <stddef.h>
- #include <sys/types.h>
- #include <sys/socket.h>
- #include <netdb.h>
- struct hostent *gethostbyaddr(const char *addr, size_t len, int type) {
- return NULL;
- }
- int main() {
- (void)gethostbyaddr(NULL, 0, 0);
- return 0;
- }
-
-EOF
-if { (eval echo configure:2623: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-then
- ac_cv_flavor_gethostbyaddr=glibc
-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 <<EOF
-#line 2637 "configure"
-#include "confdefs.h"
-
- #include <stddef.h>
- #include <sys/types.h>
- #include <sys/socket.h>
- #include <netdb.h>
- 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:2653: \"$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
-
- 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: error: can't build runidn, since parameter type list of gethostbyaddr() is unknown to configure." 1>&2; exit 1; }
- ;;
- esac
- cat >> confdefs.h <<EOF
-#define GHBA_ADDR_T $ac_cv_type_ghba_addr_t
-EOF
-
- cat >> confdefs.h <<EOF
-#define GHBA_ADDRLEN_T $ac_cv_type_ghba_addrlen_t
-EOF
-
-
- echo $ac_n "checking flavor of getnameinfo""... $ac_c" 1>&6
-echo "configure:2697: 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
- ac_cv_flavor_getnameinfo=unknown
- if test "$cross_compiling" = yes; then
- ac_cv_flavor_getnameinfo=unknown
-else
- cat > conftest.$ac_ext <<EOF
-#line 2706 "configure"
-#include "confdefs.h"
-
- #include <stddef.h>
- #include <sys/types.h>
- #include <sys/socket.h>
- #include <netdb.h>
- 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:2724: \"$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 <<EOF
-#line 2738 "configure"
-#include "confdefs.h"
-
- #include <stddef.h>
- #include <sys/types.h>
- #include <sys/socket.h>
- #include <netdb.h>
- 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:2756: \"$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 <<EOF
-#line 2770 "configure"
-#include "confdefs.h"
-
- #include <stddef.h>
- #include <sys/types.h>
- #include <sys/socket.h>
- #include <netdb.h>
- 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:2787: \"$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 <<EOF
-#line 2801 "configure"
-#include "confdefs.h"
-
- #include <stddef.h>
- #include <sys/types.h>
- #include <sys/socket.h>
- #include <netdb.h>
- 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:2818: \"$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: error: can't build runidn, since parameter type list of getnameinfo() is unknown to configure." 1>&2; exit 1; }
- esac
- cat >> confdefs.h <<EOF
-#define GNI_SALEN_T $ac_cv_type_gni_salen_t
-EOF
-
- cat >> confdefs.h <<EOF
-#define GNI_HOSTLEN_T $ac_cv_type_gni_hostlen_t
-EOF
-
- cat >> confdefs.h <<EOF
-#define GNI_SERVLEN_T $ac_cv_type_gni_servlen_t
-EOF
-
- cat >> confdefs.h <<EOF
-#define GNI_FLAGS_T $ac_cv_type_gni_flags_t
-EOF
-
-fi
-
-if test "$find_gethost_r" = yes; then
- echo $ac_n "checking flavor of gethostbyname_r""... $ac_c" 1>&6
-echo "configure:2883: 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
- if test "$cross_compiling" = yes; then
- ac_cv_flavor_gethost_r=sun
-else
- cat > conftest.$ac_ext <<EOF
-#line 2891 "configure"
-#include "confdefs.h"
-
-#include <stddef.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <netdb.h>
-#include <stdio.h>
-int main()
-{
- int err = 0;
- struct hostent hebuf, *hp;
- char buf[10];
- /* Try resolving a invalid name using glibc flavor. */
- (void)gethostbyname_r("@#!", &hebuf, buf, sizeof(buf), &hp, &err);
- if (err != 0)
- return 0; /* glibc flavor */
- else
- return 1; /* Sun flavor */
-}
-
-EOF
-if { (eval echo configure:2913: \"$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
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -fr conftest*
- ac_cv_flavor_gethost_r=sun
-fi
-rm -fr conftest*
-fi
-
-fi
-
-echo "$ac_t""$ac_cv_flavor_gethost_r" 1>&6
- if test "$ac_cv_flavor_gethost_r" = "glibc"; then
- cat >> confdefs.h <<\EOF
-#define GETHOST_R_GLIBC_FLAVOR 1
-EOF
-
- fi
-fi
-
-
-echo $ac_n "checking for libc shared object""... $ac_c" 1>&6
-echo "configure:2938: checking for libc shared object" >&5
-shobj_name=libc
-shobj_path=
-case "$host" in
-*-hpux*)
- SOEXT=sl
- ;;
-*)
- SOEXT=so
- ;;
-esac
-for shobj_libdir in /lib /usr/lib; do
- if test -f $shobj_libdir/$shobj_name.$SOEXT; then
- shobj_path=$shobj_libdir/$shobj_name.$SOEXT
- else
- shobj_path=`ls -r $shobj_libdir/$shobj_name.$SOEXT* 2>/dev/null | head -1`
- if test "$shobj_path" != "" -a -f "$shobj_path"; then
- :
- else
- shobj_path=
- fi
- fi
- if test "$shobj_path" != ""; then
- echo "$ac_t""$shobj_path" 1>&6
- shobj_pathsymbol=SOPATH_`echo $shobj_name | sed 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
- cat >> confdefs.h <<EOF
-#define $shobj_pathsymbol "$shobj_path"
-EOF
-
- break
- fi
-done
-if test "$shobj_path" = ""; then
- echo "$ac_t""no" 1>&6
-fi
-
-if test "$install_runidn" = yes ; then
-
-echo $ac_n "checking for libnsl shared object""... $ac_c" 1>&6
-echo "configure:2977: checking for libnsl shared object" >&5
-shobj_name=libnsl
-shobj_path=
-case "$host" in
-*-hpux*)
- SOEXT=sl
- ;;
-*)
- SOEXT=so
- ;;
-esac
-for shobj_libdir in /lib /usr/lib; do
- if test -f $shobj_libdir/$shobj_name.$SOEXT; then
- shobj_path=$shobj_libdir/$shobj_name.$SOEXT
- else
- shobj_path=`ls -r $shobj_libdir/$shobj_name.$SOEXT* 2>/dev/null | head -1`
- if test "$shobj_path" != "" -a -f "$shobj_path"; then
- :
- else
- shobj_path=
- fi
- fi
- if test "$shobj_path" != ""; then
- echo "$ac_t""$shobj_path" 1>&6
- shobj_pathsymbol=SOPATH_`echo $shobj_name | sed 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
- cat >> confdefs.h <<EOF
-#define $shobj_pathsymbol "$shobj_path"
-EOF
-
- break
- fi
-done
-if test "$shobj_path" = ""; then
- echo "$ac_t""no" 1>&6
-fi
-
-fi
-
-if test "$liteonly" != yes ; then
- echo $ac_n "checking for iconv""... $ac_c" 1>&6
-echo "configure:3017: checking for iconv" >&5
- saved_CPPFLAGS=$CPPFLAGS
- saved_LIBS=$LIBS
- CPPFLAGS="$CPPFLAGS $ICONVINC"
- LIBS="$LIBS $ICONVLIB"
- cat > conftest.$ac_ext <<EOF
-#line 3023 "configure"
-#include "confdefs.h"
-
- #include <iconv.h>
-
-int main() {
-
- iconv_t i;
- i = iconv_open("ISO-8859-1", "UTF-8");
-
-; return 0; }
-EOF
-if { (eval echo configure:3035: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- iconv_try_link=yes
-else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- iconv_try_link=no
-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
-fi
-
-if test "$liteonly" != yes ; then
- echo $ac_n "checking for codeset name $UTF8_NAME""... $ac_c" 1>&6
-echo "configure:3055: checking for codeset name $UTF8_NAME" >&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 <<EOF
-#line 3064 "configure"
-#include "confdefs.h"
-
- #include <stddef.h>
- #include <stdlib.h>
- #include <iconv.h>
- #define UTF8_NAME "$UTF8_NAME"
- #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:3092: \"$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
-fi
-
-
-trap '' 1 2 15
-cat > confcache <<\EOF
-# This file is a shell script that caches the results of configure
-# tests run on this system so they can be shared between configure
-# scripts and configure runs. It is not useful on other systems.
-# If it contains results you don't want to keep, you may remove or edit it.
-#
-# By default, configure uses ./config.cache as the cache file,
-# creating it if it does not exist already. You can give configure
-# the --cache-file=FILE option to use a different cache file; that is
-# what configure does when it calls configure scripts in
-# subdirectories, so they share the cache.
-# Giving --cache-file=/dev/null disables caching, for debugging configure.
-# config.status only pays attention to the cache file if you give it the
-# --recheck option to rerun configure.
-#
-EOF
-# The following way of writing the cache mishandles newlines in values,
-# but we know of no workaround that is simple, portable, and efficient.
-# So, don't put newlines in cache variables' values.
-# Ultrix sh set writes to stderr and can't be redirected directly,
-# and sets the high bit in the cache file unless we assign to the vars.
-(set) 2>&1 |
- case `(ac_space=' '; set | grep ac_space) 2>&1` in
- *ac_space=\ *)
- # `set' does not quote correctly, so add quotes (double-quote substitution
- # turns \\\\ into \\, and sed turns \\ into \).
- sed -n \
- -e "s/'/'\\\\''/g" \
- -e "s/^\\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\\)=\\(.*\\)/\\1=\${\\1='\\2'}/p"
- ;;
- *)
- # `set' quotes correctly as required by POSIX, so do not add quotes.
- sed -n -e 's/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=${\1=\2}/p'
- ;;
- esac >> confcache
-if cmp -s $cache_file confcache; then
- :
-else
- if test -w $cache_file; then
- echo "updating cache $cache_file"
- cat confcache > $cache_file
- else
- echo "not updating unwritable cache $cache_file"
- fi
-fi
-rm -f confcache
-
-trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15
-
-test "x$prefix" = xNONE && prefix=$ac_default_prefix
-# Let make expand exec_prefix.
-test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
-
-# Any assignment to VPATH causes Sun make to only execute
-# the first set of double-colon rules, so remove it if not needed.
-# If there is a colon in the path, we need to keep it.
-if test "x$srcdir" = x.; then
- ac_vpsub='/^[ ]*VPATH[ ]*=[^:]*$/d'
-fi
-
-trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15
-
-DEFS=-DHAVE_CONFIG_H
-
-# Without the "./", some shells look in PATH for config.status.
-: ${CONFIG_STATUS=./config.status}
-
-echo creating $CONFIG_STATUS
-rm -f $CONFIG_STATUS
-cat > $CONFIG_STATUS <<EOF
-#! /bin/sh
-# Generated automatically by configure.
-# Run this file to recreate the current configuration.
-# This directory was configured as follows,
-# on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
-#
-# $0 $ac_configure_args
-#
-# Compiler output produced by configure, useful for debugging
-# configure, is in ./config.log if it exists.
-
-ac_cs_usage="Usage: $CONFIG_STATUS [--recheck] [--version] [--help]"
-for ac_option
-do
- case "\$ac_option" in
- -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
- echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion"
- exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;;
- -version | --version | --versio | --versi | --vers | --ver | --ve | --v)
- echo "$CONFIG_STATUS generated by autoconf version 2.13"
- exit 0 ;;
- -help | --help | --hel | --he | --h)
- echo "\$ac_cs_usage"; exit 0 ;;
- *) echo "\$ac_cs_usage"; exit 1 ;;
- esac
-done
-
-ac_given_srcdir=$srcdir
-ac_given_INSTALL="$INSTALL"
-
-trap 'rm -fr `echo "Makefile
- include/Makefile
- include/idn/Makefile
- include/mdn/Makefile
- lib/Makefile
- man/Makefile
- tools/Makefile
- tools/idnconv/Makefile
- tools/runidn/Makefile
- tools/runidn/runidn
- map/Makefile
- lib/tests/Makefile
- include/config.h" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15
-EOF
-cat >> $CONFIG_STATUS <<EOF
-
-# Protect against being on the right side of a sed subst in config.status.
-sed 's/%@/@@/; s/@%/@@/; s/%g\$/@g/; /@g\$/s/[\\\\&%]/\\\\&/g;
- s/@@/%@/; s/@@/@%/; s/@g\$/%g/' > conftest.subs <<\\CEOF
-$ac_vpsub
-$extrasub
-s%@SHELL@%$SHELL%g
-s%@CFLAGS@%$CFLAGS%g
-s%@CPPFLAGS@%$CPPFLAGS%g
-s%@CXXFLAGS@%$CXXFLAGS%g
-s%@FFLAGS@%$FFLAGS%g
-s%@DEFS@%$DEFS%g
-s%@LDFLAGS@%$LDFLAGS%g
-s%@LIBS@%$LIBS%g
-s%@exec_prefix@%$exec_prefix%g
-s%@prefix@%$prefix%g
-s%@program_transform_name@%$program_transform_name%g
-s%@bindir@%$bindir%g
-s%@sbindir@%$sbindir%g
-s%@libexecdir@%$libexecdir%g
-s%@datadir@%$datadir%g
-s%@sysconfdir@%$sysconfdir%g
-s%@sharedstatedir@%$sharedstatedir%g
-s%@localstatedir@%$localstatedir%g
-s%@libdir@%$libdir%g
-s%@includedir@%$includedir%g
-s%@oldincludedir@%$oldincludedir%g
-s%@infodir@%$infodir%g
-s%@mandir@%$mandir%g
-s%@host@%$host%g
-s%@host_alias@%$host_alias%g
-s%@host_cpu@%$host_cpu%g
-s%@host_vendor@%$host_vendor%g
-s%@host_os@%$host_os%g
-s%@COMPAT_TRUE@%$COMPAT_TRUE%g
-s%@COMPAT_FALSE@%$COMPAT_FALSE%g
-s%@UTF8_NAME@%$UTF8_NAME%g
-s%@LITEONLY_TRUE@%$LITEONLY_TRUE%g
-s%@LITEONLY_FALSE@%$LITEONLY_FALSE%g
-s%@RUNIDN_TRUE@%$RUNIDN_TRUE%g
-s%@RUNIDN_FALSE@%$RUNIDN_FALSE%g
-s%@ICONVINC@%$ICONVINC%g
-s%@ICONVLIB@%$ICONVLIB%g
-s%@ICONVSOFILE@%$ICONVSOFILE%g
-s%@PRELOAD_VAR@%$PRELOAD_VAR%g
-s%@PRELOAD_SEP@%$PRELOAD_SEP%g
-s%@PRELOAD_LAST@%$PRELOAD_LAST%g
-s%@CC@%$CC%g
-s%@INSTALL_PROGRAM@%$INSTALL_PROGRAM%g
-s%@INSTALL_SCRIPT@%$INSTALL_SCRIPT%g
-s%@INSTALL_DATA@%$INSTALL_DATA%g
-s%@build@%$build%g
-s%@build_alias@%$build_alias%g
-s%@build_cpu@%$build_cpu%g
-s%@build_vendor@%$build_vendor%g
-s%@build_os@%$build_os%g
-s%@RANLIB@%$RANLIB%g
-s%@LN_S@%$LN_S%g
-s%@LIBTOOL@%$LIBTOOL%g
-s%@PERL@%$PERL%g
-s%@CPP@%$CPP%g
-s%@LIBDL@%$LIBDL%g
-
-CEOF
-EOF
-
-cat >> $CONFIG_STATUS <<\EOF
-
-# 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.
-ac_more_lines=:
-ac_sed_cmds=""
-while $ac_more_lines; do
- if test $ac_beg -gt 1; then
- sed "1,${ac_beg}d; ${ac_end}q" conftest.subs > conftest.s$ac_file
- else
- sed "${ac_end}q" conftest.subs > conftest.s$ac_file
- fi
- if test ! -s conftest.s$ac_file; then
- ac_more_lines=false
- rm -f conftest.s$ac_file
- else
- if test -z "$ac_sed_cmds"; then
- ac_sed_cmds="sed -f conftest.s$ac_file"
- else
- ac_sed_cmds="$ac_sed_cmds | sed -f conftest.s$ac_file"
- fi
- ac_file=`expr $ac_file + 1`
- ac_beg=$ac_end
- ac_end=`expr $ac_end + $ac_max_sed_cmds`
- fi
-done
-if test -z "$ac_sed_cmds"; then
- ac_sed_cmds=cat
-fi
-EOF
-
-cat >> $CONFIG_STATUS <<EOF
-
-CONFIG_FILES=\${CONFIG_FILES-"Makefile
- include/Makefile
- include/idn/Makefile
- include/mdn/Makefile
- lib/Makefile
- man/Makefile
- tools/Makefile
- tools/idnconv/Makefile
- tools/runidn/Makefile
- tools/runidn/runidn
- map/Makefile
- lib/tests/Makefile
-"}
-EOF
-cat >> $CONFIG_STATUS <<\EOF
-for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then
- # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
- case "$ac_file" in
- *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'`
- ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
- *) ac_file_in="${ac_file}.in" ;;
- esac
-
- # Adjust a relative srcdir, top_srcdir, and INSTALL for subdirectories.
-
- # Remove last slash and all that follows it. Not all systems have dirname.
- ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'`
- if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then
- # The file is in a subdirectory.
- test ! -d "$ac_dir" && mkdir "$ac_dir"
- ac_dir_suffix="/`echo $ac_dir|sed 's%^\./%%'`"
- # A "../" for each directory in $ac_dir_suffix.
- ac_dots=`echo $ac_dir_suffix|sed 's%/[^/]*%../%g'`
- else
- ac_dir_suffix= ac_dots=
- fi
-
- case "$ac_given_srcdir" in
- .) srcdir=.
- if test -z "$ac_dots"; then top_srcdir=.
- else top_srcdir=`echo $ac_dots|sed 's%/$%%'`; fi ;;
- /*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;;
- *) # Relative path.
- srcdir="$ac_dots$ac_given_srcdir$ac_dir_suffix"
- top_srcdir="$ac_dots$ac_given_srcdir" ;;
- esac
-
- case "$ac_given_INSTALL" in
- [/$]*) INSTALL="$ac_given_INSTALL" ;;
- *) INSTALL="$ac_dots$ac_given_INSTALL" ;;
- esac
-
- echo creating "$ac_file"
- rm -f "$ac_file"
- configure_input="Generated automatically from `echo $ac_file_in|sed 's%.*/%%'` by configure."
- case "$ac_file" in
- *Makefile*) ac_comsub="1i\\
-# $configure_input" ;;
- *) ac_comsub= ;;
- esac
-
- ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"`
- sed -e "$ac_comsub
-s%@configure_input@%$configure_input%g
-s%@srcdir@%$srcdir%g
-s%@top_srcdir@%$top_srcdir%g
-s%@INSTALL@%$INSTALL%g
-" $ac_file_inputs | (eval "$ac_sed_cmds") > $ac_file
-fi; done
-rm -f conftest.s*
-
-# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where
-# NAME is the cpp macro being defined and VALUE is the value it is being given.
-#
-# ac_d sets the value in "#define NAME VALUE" lines.
-ac_dA='s%^\([ ]*\)#\([ ]*define[ ][ ]*\)'
-ac_dB='\([ ][ ]*\)[^ ]*%\1#\2'
-ac_dC='\3'
-ac_dD='%g'
-# ac_u turns "#undef NAME" with trailing blanks into "#define NAME VALUE".
-ac_uA='s%^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)'
-ac_uB='\([ ]\)%\1#\2define\3'
-ac_uC=' '
-ac_uD='\4%g'
-# ac_e turns "#undef NAME" without trailing blanks into "#define NAME VALUE".
-ac_eA='s%^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)'
-ac_eB='$%\1#\2define\3'
-ac_eC=' '
-ac_eD='%g'
-
-if test "${CONFIG_HEADERS+set}" != set; then
-EOF
-cat >> $CONFIG_STATUS <<EOF
- CONFIG_HEADERS="include/config.h"
-EOF
-cat >> $CONFIG_STATUS <<\EOF
-fi
-for ac_file in .. $CONFIG_HEADERS; do if test "x$ac_file" != x..; then
- # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
- case "$ac_file" in
- *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'`
- ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
- *) ac_file_in="${ac_file}.in" ;;
- esac
-
- echo creating $ac_file
-
- rm -f conftest.frag conftest.in conftest.out
- ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"`
- cat $ac_file_inputs > conftest.in
-
-EOF
-
-# Transform confdefs.h into a sed script conftest.vals that substitutes
-# the proper values into config.h.in to produce config.h. And first:
-# Protect against being on the right side of a sed subst in config.status.
-# Protect against being in an unquoted here document in config.status.
-rm -f conftest.vals
-cat > conftest.hdr <<\EOF
-s/[\\&%]/\\&/g
-s%[\\$`]%\\&%g
-s%#define \([A-Za-z_][A-Za-z0-9_]*\) *\(.*\)%${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD}%gp
-s%ac_d%ac_u%gp
-s%ac_u%ac_e%gp
-EOF
-sed -n -f conftest.hdr confdefs.h > conftest.vals
-rm -f conftest.hdr
-
-# This sed command replaces #undef with comments. This is necessary, for
-# example, in the case of _POSIX_SOURCE, which is predefined and required
-# on some systems where configure will not decide to define it.
-cat >> conftest.vals <<\EOF
-s%^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*%/* & */%
-EOF
-
-# Break up conftest.vals because some shells have a limit on
-# the size of here documents, and old seds have small limits too.
-
-rm -f conftest.tail
-while :
-do
- ac_lines=`grep -c . conftest.vals`
- # grep -c gives empty output for an empty file on some AIX systems.
- if test -z "$ac_lines" || test "$ac_lines" -eq 0; then break; fi
- # Write a limited-size here document to conftest.frag.
- echo ' cat > conftest.frag <<CEOF' >> $CONFIG_STATUS
- sed ${ac_max_here_lines}q conftest.vals >> $CONFIG_STATUS
- echo 'CEOF
- sed -f conftest.frag conftest.in > conftest.out
- rm -f conftest.in
- mv conftest.out conftest.in
-' >> $CONFIG_STATUS
- sed 1,${ac_max_here_lines}d conftest.vals > conftest.tail
- rm -f conftest.vals
- mv conftest.tail conftest.vals
-done
-rm -f conftest.vals
-
-cat >> $CONFIG_STATUS <<\EOF
- rm -f conftest.frag conftest.h
- echo "/* $ac_file. Generated automatically by configure. */" > conftest.h
- cat conftest.in >> conftest.h
- rm -f conftest.in
- if cmp -s $ac_file conftest.h 2>/dev/null; then
- echo "$ac_file is unchanged"
- rm -f conftest.h
- else
- # Remove last slash and all that follows it. Not all systems have dirname.
- ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'`
- if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then
- # The file is in a subdirectory.
- test ! -d "$ac_dir" && mkdir "$ac_dir"
- fi
- rm -f $ac_file
- mv conftest.h $ac_file
- fi
-fi; done
-
-EOF
-cat >> $CONFIG_STATUS <<EOF
-
-EOF
-cat >> $CONFIG_STATUS <<\EOF
-
-exit 0
-EOF
-chmod +x $CONFIG_STATUS
-rm -fr confdefs* $ac_clean_files
-test "$no_create" = yes || ${CONFIG_SHELL-/bin/sh} $CONFIG_STATUS || exit 1
-
+++ /dev/null
-dnl $Id: configure.in,v 1.1 2003/06/04 00:25:25 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.
-dnl
-dnl By using this file, you agree to the terms and conditions set forth bellow.
-dnl
-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, 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
-dnl under this License Terms and Conditions.
-dnl
-dnl 2. Redistribution of source code must retain the copyright notices as they
-dnl appear in each source code file, this License Terms and Conditions.
-dnl
-dnl 3. Redistribution in binary form must reproduce the Copyright Notice,
-dnl this License Terms and Conditions, in the documentation and/or other
-dnl materials provided with the distribution. For the purposes of binary
-dnl distribution the "Copyright Notice" refers to the following language:
-dnl "Copyright (c) 2000-2002 Japan Network Information Center. All rights reserved."
-dnl
-dnl 4. The name of JPNIC may not be used to endorse or promote products
-dnl derived from this Software without specific prior written approval of
-dnl JPNIC.
-dnl
-dnl 5. Disclaimer/Limitation of Liability: THIS SOFTWARE IS PROVIDED BY JPNIC
-dnl "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-dnl LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
-dnl PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JPNIC BE LIABLE
-dnl FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-dnl CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-dnl SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
-dnl BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-dnl WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-dnl OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
-dnl ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
-
-AC_INIT(include/idn/converter.h)
-
-AC_CANONICAL_HOST
-
-debug=no
-AC_ARG_ENABLE(debug,
-[ --enable-debug enable debug codes [default=no]],
- debug=$enableval)
-case "$debug" in
-yes)
- CFLAGS="$CFLAGS -DDEBUG"
- ;;
-esac
-
-mdnkit_compat=no
-COMPAT_TRUE="#"
-COMPAT_FALSE=
-AC_ARG_ENABLE(mdnkit-compat,
-[ --enable-mdnkit-compat enable mDNkit compatibility mode [default=no]],
- mdnkit_compat=$enableval)
-case "$mdnkit_compat" in
-yes)
- COMPAT_TRUE=
- COMPAT_FALSE="#"
- AC_DEFINE(ENABLE_MDNKIT_COMPAT, 1,
- [Define if --enable-mdnkit-compat is specified])
- ;;
-no)
- ;;
-*)
- AC_MSG_ERROR([You must specify yes or no to --enable-runidn option.])
- ;;
-esac
-AC_SUBST(COMPAT_TRUE)
-AC_SUBST(COMPAT_FALSE)
-
-extraace=no
-AC_ARG_ENABLE(extra-ace,
-[ --enable-extra-ace enable additional ACE converters. [default=no]],
- extraace=$enableval)
-case "$extraace" in
-no)
- ;;
-yes)
- AC_DEFINE(IDN_EXTRA_ACE, 1,
- [Define if you want additional ACE converters compiled in.])
- ;;
-*)
- AC_MSG_ERROR([You must specify yes or no to --enable-extra-ace option.])
- ;;
-esac
-
-UTF8_NAME=no
-AC_ARG_WITH(utf8,
-[ --with-utf8=NAME codeset name for UTF-8 encoding [UTF-8]],
- UTF8_NAME=$withval)
-case "$UTF8_NAME" in
-no)
- UTF8_NAME=UTF-8
- ;;
-yes)
- AC_MSG_ERROR([You must specify NAME to --with-utf8 option.])
- ;;
-*)
- AC_DEFINE_UNQUOTED(IDN_UTF8_ENCODING_NAME, "$UTF8_NAME",
- [Define if your iconv() does not accept "UTF-8" as the codeset name for utf-8.])
- ;;
-esac
-AC_SUBST(UTF8_NAME)
-
-liteonly=no
-LITEONLY_TRUE="#"
-LITEONLY_FALSE=
-AC_ARG_ENABLE(liteonly,
-[ --enable-liteonly compile and install lite library only [default=no]],
- liteonly=$enableval)
-case "$liteonly" in
-no)
- ;;
-yes)
- if test "$install_runidn" = yes ; then
- AC_MSG_ERROR([you can't set value \"yes\" to --enable-runidn and --enable-liteonly simultaneously, because runidn requires iconv support of generic libidnkit.])
- fi
- LITEONLY_TRUE=
- LITEONLY_FALSE="#"
- ;;
-*)
- AC_MSG_ERROR([You must specify yes or no to --enable-liteonly option.])
- ;;
-esac
-AC_SUBST(LITEONLY_TRUE)
-AC_SUBST(LITEONLY_FALSE)
-
-install_runidn=no
-RUNIDN_TRUE="#"
-RUNIDN_FALSE=
-AC_ARG_ENABLE(runidn,
-[ --enable-runidn compile and install runidn [default=no]],
- install_runidn=$enableval)
-case "$install_runidn" in
-no)
- ;;
-yes)
- if test "$liteonly" = yes ; then
- AC_MSG_ERROR([you can't set value \"yes\" to --enable-runidn and --enable-liteonly simultaneously, because runidn requires iconv support of generic libidnkit.])
- fi
- RUNIDN_TRUE=
- RUNIDN_FALSE="#"
- ;;
-*)
- AC_MSG_ERROR([You must specify yes or no to --enable-runidn option.])
- ;;
-esac
-AC_SUBST(RUNIDN_TRUE)
-AC_SUBST(RUNIDN_FALSE)
-
-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 "$liteonly" = yes ; then
- AC_MSG_ERROR([you can't set iconv options at all when you set value \"yes\" to --enable-liteonly, because lite library does not have iconv support.])
- fi
- 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"
- ;;
-*)
- if test "$liteonly" = yes ; then
- AC_MSG_ERROR([you can't set iconv options at all when you set value \"yes\" to --enable-liteonly, because lite library does not have iconv support.])
- fi
- 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)
- if test "$liteonly" = yes ; then
- AC_MSG_ERROR([you can't set iconv options at all when you set value \"yes\" to --enable-liteonly, because lite library does not have iconv support.])
- fi
- AC_MSG_WARN([You must supply DIR to --with-iconv-include option.
- Ignored.])
- ICONVINC=
- ;;
-*)
- if test "$liteonly" = yes ; then
- AC_MSG_ERROR([you can't set iconv options at all when you set value \"yes\" to --enable-liteonly, because lite library does not have iconv support.])
- fi
- 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=
- ;;
-yes)
- if test "$liteonly" = yes ; then
- AC_MSG_ERROR([you can't set iconv options at all when you set value \"yes\" to --enable-liteonly, because lite library does not have iconv support.])
- fi
- AC_MSG_WARN([You must supply LIB to --with-iconv option.
- -liconv is assumed.])
- ICONVLIB=-liconv
- ;;
-*)
- if test "$liteonly" = yes ; then
- AC_MSG_ERROR([you can't set iconv options at all when you set value \"yes\" to --enable-liteonly, because lite library does not have iconv support.])
- fi
- ICONVLIB=$iconv
- ;;
-esac
-AC_SUBST(ICONVLIB)
-
-AC_ARG_WITH(iconv-sofile,
-[ --with-iconv-sofile=PATH shared library file for libiconv []],
- iconv_file=$withval, iconv_file=guess)
-ICONVSOFILE=
-case "$iconv_file" in
-no)
- ICONVSOFILE=none
- ;;
-yes)
- if test "$liteonly" = yes ; then
- AC_MSG_ERROR([you can't set iconv options at all when you set value \"yes\" to --enable-liteonly, because lite library does not have iconv support.])
- fi
- AC_MSG_ERROR([You must supply PATH to --with-iconv-sofile option.])
- ;;
-guess)
- if test "$liteonly" != yes ; then
- if test "$ICONVLIB" = ""; then
- ICONVSOFILE=none
- else
- AC_MSG_CHECKING(pathname of iconv shared library)
- ic_libdir=
- ic_libname=
- case "$host" in
- *-hpux*)
- SO=sl
- ;;
- *)
- SO=so
- ;;
- esac
- for arg in $ICONVLIB; do
- case "$arg" in
- -L*) ic_libdir="$ic_libdir `echo $arg | sed s/-L//`" ;;
- -l*) ic_libname=`echo $arg | sed s/-l//` ;;
- /*.$SO*) ICONVSOFILE=$arg ;;
- esac
- done
- if test "$ICONVSOFILE" = ""; then
- if test "$ic_libname" = ""; then
- AC_MSG_RESULT(unknown)
- AC_MSG_WARN([use --with-iconv-sofile for specifying iconv shared library file])
- ICONVSOFILE=none
- else
- if test "$ic_libdir" = ""; then
- # Standard (and semi-standard) library directories
- ic_libdir="/lib /usr/lib /usr/local/lib"
- fi
- for dir in $ic_libdir; do
- ICONVSOFILE=`ls -r $dir/lib$ic_libname.$SO* 2>/dev/null | head -1`
- if test "$ICONVSOFILE" != ""; then
- break
- fi
- done
- if test "$ICONVSOFILE" != ""; then
- AC_MSG_RESULT($ICONVSOFILE)
- else
- AC_MSG_RESULT(unknown)
- AC_MSG_WARN([use --with-iconv-sofile for specifying iconv shared library file])
- ICONVSOFILE=none
- fi
- fi
- fi
- fi
- else
- ICONVSOFILE=none
- fi
- ;;
-*)
- if test "$liteonly" = yes ; then
- AC_MSG_ERROR([you can't set iconv options at all when you set value \"yes\" to --enable-liteonly, because lite library does not have iconv support.])
- fi
- ICONVSOFILE=$iconv_file
- ;;
-esac
-AC_SUBST(ICONVSOFILE)
-
-dnl Figure out preload stuff.
-PRELOAD_VAR="LD_PRELOAD"
-PRELOAD_SEP=":"
-PRELOAD_LAST=""
-case "$host" in
-*-solaris*)
- PRELOAD_SEP=" "
- ;;
-*-linux*)
- PRELOAD_SEP=" "
- ;;
-*-osf*)
- 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)
-
-dnl Checks for standard tools.
-AC_PROG_CC
-AC_PROG_INSTALL
-AM_PROG_LIBTOOL
-
-AC_PATH_PROGS(PERL, perl, perl)
-
-dnl Checks for header files.
-AC_CHECK_HEADERS(unistd.h locale.h langinfo.h pwd.h)
-if test "$install_runidn" = yes ; then
- AC_CHECK_HEADERS(dlfcn.h)
-fi
-
-saved_CPPFLAGS=$CPPFLAGS
-CPPFLAGS="$CPPFLAGS $ICONVINC"
-if test "$liteonly" != yes ; then
- AC_CHECK_HEADER(iconv.h, , [AC_MSG_ERROR([iconv.h doesn't exist])])
-fi
-CPPFLAGS=$saved_CPPFLAGS
-
-dnl Checks for data types.
-AC_TYPE_UID_T
-dnl for dnsproxy.
-AC_CHECK_TYPE(BOOL, int)
-
-dnl Checks for libraries.
-if test "$install_runidn" = yes ; then
- AC_CHECK_LIB(socket, socket)
- AC_CHECK_LIB(nsl, inet_addr)
- AC_CHECK_LIB(dl, dlopen, [
- LIBS="-ldl $LIBS"
- LIBDL="-ldl"
- AC_DEFINE(HAVE_LIBDL, 1, [Define if you have the dl library (-ldl).])
- AC_SUBST(LIBDL)
- ])
-fi
-
-dnl Checks for library functions.
-AC_CHECK_FUNCS(vsnprintf setvbuf setlocale nl_langinfo memmove bcopy setenv \
- unsetenv)
-if test "$install_runidn" = yes ; then
- AC_CHECK_FUNCS(gethostbyname gethostbyname2 gethostbyaddr)
- AC_CHECK_FUNCS(gethostbyname_r gethostbyname2_r gethostbyaddr_r, find_gethost_r=yes)
- AC_CHECK_FUNCS(getipnodebyname getipnodebyaddr freehostent)
- AC_CHECK_FUNCS(getaddrinfo freeaddrinfo getnameinfo)
- AC_CHECK_FUNCS(dlopen dlsym)
-fi
-
-if test "$install_runidn" = yes ; then
-dnl Checks the flavor of gethostbyaddr* functions.
- AC_CACHE_CHECK(flavor of gethostbyaddr, ac_cv_flavor_gethostbyaddr,
- [ac_cv_flavor_gethostbyaddr=unknown
- AC_TRY_RUN(
- [
- #include <stddef.h>
- #include <sys/types.h>
- #include <sys/socket.h>
- #include <netdb.h>
- 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 <stddef.h>
- #include <sys/types.h>
- #include <sys/socket.h>
- #include <netdb.h>
- struct hostent *gethostbyaddr(const char *addr, size_t len, int type) {
- return NULL;
- }
- int main() {
- (void)gethostbyaddr(NULL, 0, 0);
- return 0;
- }
- ], ac_cv_flavor_gethostbyaddr=glibc,,
- ac_cv_flavor_gethostbyaddr=unknown)
- AC_TRY_RUN(
- [
- #include <stddef.h>
- #include <sys/types.h>
- #include <sys/socket.h>
- #include <netdb.h>
- 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_ERROR([can't build runidn, since parameter type list of gethostbyaddr() is unknown to configure.])
- ;;
- 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 <stddef.h>
- #include <sys/types.h>
- #include <sys/socket.h>
- #include <netdb.h>
- 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 <stddef.h>
- #include <sys/types.h>
- #include <sys/socket.h>
- #include <netdb.h>
- 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 <stddef.h>
- #include <sys/types.h>
- #include <sys/socket.h>
- #include <netdb.h>
- 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 <stddef.h>
- #include <sys/types.h>
- #include <sys/socket.h>
- #include <netdb.h>
- 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_ERROR([can't build runidn, since parameter type list of getnameinfo() is unknown to configure.])
- esac
- 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.])
-fi
-
-dnl resume here.
-dnl Checks the flavor of gethost*_r functions.
-if test "$find_gethost_r" = yes; then
- AC_CACHE_CHECK(flavor of gethostbyname_r, ac_cv_flavor_gethost_r,
- [AC_TRY_RUN(
-changequote(<<, >>)dnl
-<<
-#include <stddef.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <netdb.h>
-#include <stdio.h>
-int main()
-{
- int err = 0;
- struct hostent hebuf, *hp;
- char buf[10];
- /* Try resolving a invalid name using glibc flavor. */
- (void)gethostbyname_r("@#!", &hebuf, buf, sizeof(buf), &hp, &err);
- if (err != 0)
- return 0; /* glibc flavor */
- else
- return 1; /* Sun flavor */
-}
->>,
-changequote([, ])dnl
- ac_cv_flavor_gethost_r=glibc,
- 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, 1,
- [Define if the prototype of gethost*_r is glibc flavor.])
- fi
-fi
-
-dnl Find system shared object paths.
-AC_FIND_SYSTEM_SHOBJ(libc)
-if test "$install_runidn" = yes ; then
- AC_FIND_SYSTEM_SHOBJ(libnsl)
-fi
-
-dnl Checks for iconv library.
-if test "$liteonly" != yes ; then
- AC_MSG_CHECKING(for iconv)
- saved_CPPFLAGS=$CPPFLAGS
- saved_LIBS=$LIBS
- CPPFLAGS="$CPPFLAGS $ICONVINC"
- LIBS="$LIBS $ICONVLIB"
- AC_TRY_LINK([
- #include <iconv.h>
- ], [
- iconv_t i;
- 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
-fi
-
-dnl Check for codeset name for UTF-8.
-if test "$liteonly" != yes ; then
- AC_MSG_CHECKING([for codeset name $UTF8_NAME])
- saved_CPPFLAGS=$CPPFLAGS
- saved_LIBS=$LIBS
- CPPFLAGS="$CPPFLAGS $ICONVINC"
- LIBS="$LIBS $ICONVLIB"
- AC_TRY_RUN([
- #include <stddef.h>
- #include <stdlib.h>
- #include <iconv.h>
- #define UTF8_NAME "$UTF8_NAME"
- #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)
-fi
-
-dnl Output.
-AC_CONFIG_HEADER(include/config.h)
-AC_OUTPUT(
- Makefile
- include/Makefile
- include/idn/Makefile
- include/mdn/Makefile
- lib/Makefile
- man/Makefile
- tools/Makefile
- tools/idnconv/Makefile
- tools/runidn/Makefile
- tools/runidn/runidn
- map/Makefile
- lib/tests/Makefile
-)
+++ /dev/null
-# $Id: Makefile.in,v 1.1 2003/06/04 00:25: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, 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) 2000-2002 Japan Network Information Center. All rights reserved."
-#
-# 4. The name of JPNIC may not 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.
-
-srcdir = @srcdir@
-VPATH = @srcdir@
-
-prefix = @prefix@
-exec_prefix = @exec_prefix@
-
-SHELL = @SHELL@
-
-SUBDIRS = idn mdn
-
-all: all-subdirs
-install: install-subdirs
-clean: clean-subdirs
-distclean: distclean-localdir distclean-subdirs
-check test: test-subdirs
-
-all-subdirs install-subdirs clean-subdirs distclean-subdirs test-subdirs:
- @target=`echo $@ | sed 's/-subdirs$$//'`; \
- for d in $(SUBDIRS); do \
- (cd $$d; $(MAKE) DESTDIR=$(DESTDIR) $$target); \
- done
-
-distclean-localdir:
- rm -f config.h Makefile
+++ /dev/null
-/* include/config.h.in. Generated automatically from configure.in by autoheader. */
-/* $Id: config.h.in,v 1.1 2003/06/04 00:25:34 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, 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-/* Define to `int' if <sys/types.h> doesn't define. */
-#undef gid_t
-
-/* Define if you have the ANSI C header files. */
-#undef STDC_HEADERS
-
-/* Define to `int' if <sys/types.h> doesn't define. */
-#undef uid_t
-
-/* Define as an appropriate type (ex. int) if your system doesn't have. */
-#undef BOOL
-
-/* Define if you have the bcopy function. */
-#undef HAVE_BCOPY
-
-/* Define if you have the dlopen function. */
-#undef HAVE_DLOPEN
-
-/* Define if you have the dlsym function. */
-#undef HAVE_DLSYM
-
-/* Define if you have the freeaddrinfo function. */
-#undef HAVE_FREEADDRINFO
-
-/* Define if you have the freehostent function. */
-#undef HAVE_FREEHOSTENT
-
-/* Define if you have the getaddrinfo function. */
-#undef HAVE_GETADDRINFO
-
-/* Define if you have the gethostbyaddr function. */
-#undef HAVE_GETHOSTBYADDR
-
-/* Define if you have the gethostbyaddr_r function. */
-#undef HAVE_GETHOSTBYADDR_R
-
-/* Define if you have the gethostbyname function. */
-#undef HAVE_GETHOSTBYNAME
-
-/* Define if you have the gethostbyname2 function. */
-#undef HAVE_GETHOSTBYNAME2
-
-/* Define if you have the gethostbyname2_r function. */
-#undef HAVE_GETHOSTBYNAME2_R
-
-/* Define if you have the gethostbyname_r function. */
-#undef HAVE_GETHOSTBYNAME_R
-
-/* Define if you have the getipnodebyaddr function. */
-#undef HAVE_GETIPNODEBYADDR
-
-/* Define if you have the getipnodebyname function. */
-#undef HAVE_GETIPNODEBYNAME
-
-/* Define if you have the getnameinfo function. */
-#undef HAVE_GETNAMEINFO
-
-/* Define if you have the memmove function. */
-#undef HAVE_MEMMOVE
-
-/* Define if you have the nl_langinfo function. */
-#undef HAVE_NL_LANGINFO
-
-/* Define if you have the setenv function. */
-#undef HAVE_SETENV
-
-/* Define if you have the setlocale function. */
-#undef HAVE_SETLOCALE
-
-/* Define if you have the setvbuf function. */
-#undef HAVE_SETVBUF
-
-/* Define if you have the unsetenv function. */
-#undef HAVE_UNSETENV
-
-/* Define if you have the vsnprintf function. */
-#undef HAVE_VSNPRINTF
-
-/* Define if you have the <dlfcn.h> header file. */
-#undef HAVE_DLFCN_H
-
-/* Define if you have the <langinfo.h> header file. */
-#undef HAVE_LANGINFO_H
-
-/* Define if you have the <locale.h> header file. */
-#undef HAVE_LOCALE_H
-
-/* Define if you have the <pwd.h> header file. */
-#undef HAVE_PWD_H
-
-/* Define if you have the <unistd.h> header file. */
-#undef HAVE_UNISTD_H
-
-/* Define if you have the nsl library (-lnsl). */
-#undef HAVE_LIBNSL
-
-/* Define if you have the socket library (-lsocket). */
-#undef HAVE_LIBSOCKET
-
-/* Define if --enable-mdnkit-compat is specified */
-#undef ENABLE_MDNKIT_COMPAT
-
-/* Define if you want additional ACE converters compiled in. */
-#undef IDN_EXTRA_ACE
-
-/* Define if your iconv() does not accept UTF-8 as the codeset name for utf-8. */
-#undef IDN_UTF8_ENCODING_NAME
-
-/* 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
-
-/* Define as the pathname of the shared libnsl object if your system has one. */
-#undef SOPATH_LIBNSL
+++ /dev/null
-/* $Id: config.h.win,v 1.1 2003/06/04 00:25:34 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, 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-/* for enabling RACE */
-#define IDN_EXTRA_ACE
+++ /dev/null
-# $Id: Makefile.in,v 1.1 2003/06/04 00:25:34 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, 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) 2000-2002 Japan Network Information Center. All rights reserved."
-#
-# 4. The name of JPNIC may not 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.
-
-srcdir = @srcdir@
-VPATH = @srcdir@
-
-prefix = @prefix@
-exec_prefix = @exec_prefix@
-
-includedir = @includedir@
-idnincludedir = $(includedir)/idn
-
-INSTALL = @INSTALL@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_DATA = @INSTALL_DATA@
-MKINSTALLDIRS = @top_srcdir@/mkinstalldirs
-SHELL = @SHELL@
-
-HDRS = \
- api.h \
- assert.h \
- checker.h \
- converter.h \
- debug.h \
- delimitermap.h \
- export.h \
- filechecker.h \
- filemapper.h \
- localencoding.h \
- log.h \
- logmacro.h \
- mapper.h \
- mapselector.h \
- nameprep.h \
- normalizer.h \
- punycode.h \
- race.h \
- res.h \
- resconf.h \
- result.h \
- strhash.h \
- ucsmap.h \
- ucsset.h \
- unicode.h \
- unormalize.h \
- ucs4.h \
- utf8.h \
- util.h \
- version.h
-
-all:
-
-install:
- $(MKINSTALLDIRS) $(DESTDIR)$(idnincludedir)
- for hdr in $(HDRS); do \
- $(INSTALL_DATA) $(srcdir)/$$hdr $(DESTDIR)$(idnincludedir)/$$hdr; \
- done
-
-clean:
- rm -f *~
-
-distclean: clean
- rm -f Makefile
-
-test check:
+++ /dev/null
-/* $Id: aliaslist.h,v 1.1 2003/06/04 00:25:34 marka Exp $ */
-/*
- * Copyright (c) 2002 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-#ifndef IDN_ALIASLIST_H
-#define IDN_ALIASLIST_H 1
-
-#include <idn/result.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef struct idn__aliaslist *idn__aliaslist_t;
-
-/*
- * Create a list.
- *
- * Returns:
- * idn_success -- ok.
- * idn_nomemory -- malloc failed.
- */
-extern idn_result_t
-idn__aliaslist_create(idn__aliaslist_t *listp);
-
-/*
- * Delete a list created by 'idn__aliaslist_create'.
- */
-extern void
-idn__aliaslist_destroy(idn__aliaslist_t list);
-
-/*
- * Parse alias information file and set items to the list.
- *
- * Returns:
- * idn_success -- ok.
- * idn_nofile -- no such file.
- * idn_invalid_syntax -- file is malformed.
- * idn_nomemory -- malloc failed.
- */
-extern idn_result_t
-idn__aliaslist_aliasfile(idn__aliaslist_t list, const char *path);
-
-/*
- * Add an item to the list.
- *
- * If top is 0, item is placed as the last item of the alias list.
- * Otherwise, it is done as the first item.
- *
- * Returns:
- * idn_success -- ok.
- * idn_nomemory -- malloc failed.
- */
-extern idn_result_t
-idn__aliaslist_additem(idn__aliaslist_t list,
- const char *pattern, const char *encoding,
- int first_item);
-
-/*
- * Find the encoding name with the specified pattern by wildcard
- * match.
- *
- * Returns:
- * idn_success -- ok. found.
- * idn_noentry -- not found.
- */
-extern idn_result_t
-idn__aliaslist_find(idn__aliaslist_t list,
- const char *pattern, char **encodingp);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* IDN_ALIASLIST_H */
+++ /dev/null
-/* $Id: api.h,v 1.1 2003/06/04 00:25:35 marka Exp $ */
-/*
- * Copyright (c) 2001,2002 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-#ifndef IDN_API_H
-#define IDN_API_H 1
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <idn/export.h>
-#include <idn/result.h>
-#include <idn/res.h>
-
-/*
- * Application Programming Interface for Internationalized Domain Name
- * Handling. This module provides high-level APIs for ordinary applications.
- * Low-level APIs are also available. See "res.h" for details.
- */
-
-/*
- * Enable or disable IDN conversion scheme.
- *
- * If on_off is 0, IDN conversion scheme is disabled. Otherwise, IDN
- * conversion is enabled even when IDN_DISABLE is defined.
- */
-IDN_EXPORT void
-idn_enable(int on_off);
-
-/*
- * Set configuration file name.
- * This function is for private use only.
- *
- * When idn_nameinit(1) is called, this module loads `file'.
- *
- * Returns:
- * idn_success -- ok.
- * idn_nomemory -- malloc failed.
- * idn_failure -- idn_nameinit() has already been
- * called.
- */
-extern idn_result_t
-idn__setconffile(const char *file);
-
-/*
- * Initialize this module, and load configuration from the default
- * configuration file (idn.conf).
- *
- * The initialization will be done only once when this function is
- * called first, while either loading of the configuration file or
- * setting the defaults behavior without the configuration file will
- * be done every time it is called.
- *
- * If load_file is 0, this will set the defaults behavior without the
- * configuration file. Otherwise, loading of the configuration file
- * occurs.
- *
- * If 'idn_encodename' or 'idn_decodename' is called without calling
- * this function, implicit initialization without the configuration
- * file will be done prior to encoding/decoding process.
- *
- * Returns:
- * idn_success -- ok.
- * idn_nofile -- cannot open the configuration file.
- * idn_invalid_syntax -- syntax error found in the file.
- * idn_invalid_name -- there are invalid names (encoding,
- * normalization etc.).
- * idn_nomemory -- malloc failed.
- */
-IDN_EXPORT idn_result_t
-idn_nameinit(int load_file);
-
-/*
- * Encode internationalized domain name.
- *
- * The encoding process consists of the following 7 steps.
- *
- * 1. Local encoding to UTF-8 conversion
- * Converts a domain name written with local encoding (e.g. ISO-
- * 8859-1) to UTF-8.
- * 2. Delimiter mapping,
- * Maps certain characters to period (U+002E, FULL STOP).
- * 3. Local mapping
- * Apply character mappings according with the TLD of the domain
- * name.
- * 4. NAMEPREP
- * Perform NAME preparation described in RFC3491.
- * This step consists of the following 4 steps:
- * 4.1. Mapping
- * 4.2. Normalization
- * 4.3. Prohibited character check
- * 4.4. Unassigned check
- * 5. ASCII range character check
- * Checks if the domain name contains non-LDH ASCII character (not
- * alpha-numeric or hypen), or it begins or end with hypen.
- * 6. UTF-8 to IDN encoding conversion.
- * Converts the domain name from UTF-8 to ACE (e.g. Punycode).
- * 7. Length check
- * Checks the length of each label.
- *
- * 'actions' specifies actions and options of the encoding procedure.
- * Its value is a bitwise-or of the following flags:
- *
- * IDN_LOCALCONV -- perform local encoding to UTF-8 conversion (step 1)
- * IDN_DELIMMAP -- perform delimiter mapping (step 2)
- * IDN_LOCALMAP -- perform local mapping (step 3)
- * IDN_MAP -- perform mapping (step 4.1)
- * IDN_NORMALIZE -- perform normalization (step 4.2)
- * IDN_PROHCHECK -- perform prohibited character check (step 4.3)
- * IDN_UNASCHECK -- perform unassigned codepoint check (step 4.4)
- * IDN_ASCCHECK -- perform ASCII range character check (step 5)
- * IDN_IDNCONV -- perform UTF-8 to IDN encoding conversion (step 6)
- * IDN_LENCHECK -- perform length check (step 7)
- *
- * Also the following flags are provided for convinience:
- *
- * IDN_ENCODE_QUERY -- On libidnkit, perform step 1..7, except for step
- * 4.4 and 5.
- * On libidnkitlite, perform step 2..7, except for
- * step 4.4 and 5.
- * IDN_ENCODE_STORED -- On libidnkit, perform step 1..7, except for step
- * 5.
- * On libidnkitlite, perform step 2..7, except for
- * step 5.
- * IDN_ENCODE_APP -- Same as IDN_ENCODE_QUERY.
- * IDN_NAMEPREP -- perform NAMEPREP (step 4) without unassigned
- * codepoint check (step 4.4).
- *
- * The following flag does not corresponding to a particular action,
- * but an option of conversion process:
- *
- * IDN_UNDOIFERR -- If any step fails, the original input name is
- * returned.
- *
- * Note that if no flags are specified, 'idn_encodename' does nothing
- * fancy, just copies the given name verbatim.
- *
- * Returns:
- * idn_success -- ok.
- * idn_invalid_action -- invalid action flag specified.
- * idn_invalid_encoding -- the given string has invalid/illegal
- * byte sequence.
- * idn_invalid_length -- invalid length of a label.
- * idn_prohibited -- prohibited/unassigned code point found.
- * idn_buffer_overflow -- 'tolen' is too small.
- * idn_nomemory -- malloc failed.
- *
- * Also, if this function is called without calling 'idn_nameinit',
- * the following error codes might be returned.
- * idn_nofile -- cannot open the configuration file.
- * idn_invalid_syntax -- syntax error found in the file.
- * idn_invalid_name -- there are invalid names (encoding,
- * normalization etc.).
- */
-IDN_EXPORT idn_result_t
-idn_encodename(idn_action_t actions, const char *from, char *to, size_t tolen);
-
-/*
- * Decode internationalized domain name.
- *
- * The decoding process consists of the following 5 steps.
- *
- * 1. delimiter mapping
- * Maps certain characters to period (U+002E, FULL STOP).
- * 2. NAMEPREP
- * Perform NAME preparation described in RFC3491.
- * This step consists of the following 4 steps:
- * 2.1. Mapping
- * 2.2. Normalization
- * 2.3. Prohibited character check
- * 2.4. Unassigned check
- * 3. IDN encoding to UTF-8 conversion.
- * Converts the domain name from ACE (e.g. Punycode) to UCS4.
- * 4. Perform round-trip check.
- * Encode the result of step 3, and then compare it with the result
- * of the step 2. If they are different, the check is failed.
- * 5. Convert UTF-8 to local encoding.
- * If a character in the domain name cannot be converted to local
- * encoding, the conversion is failed.
- *
- * 'actions' specifies actions of the decoding procedure.
- * Its value is a bitwise-or of the following flags:
- *
- * IDN_DELIMMAP -- perform delimiter mapping (step 1)
- * IDN_MAP -- perform mapping (step 2.1)
- * IDN_NORMALIZE -- perform normalization (step 2.2)
- * IDN_PROHCHECK -- perform prohibited character check (step 2.3)
- * IDN_UNASCHECK -- perform unassigned codepoint check (step 2.4)
- * IDN_IDNCONV -- perform IDN encoding to UTF-8 conversion (step 3)
- * IDN_RTCHECK -- perform round-trip check (step 4)
- * IDN_ASCCHECK -- perform ASCII range character check while
- * round-trip check (step 4.1)
- * IDN_LOCALCONV -- perform UTF-8 to local encoding conversion (step 5)
- *
- * Also the following flags are provided for the convenience:
- *
- * IDN_DECODE_QUERY -- On libidnkit, perform step 1..5, except for step
- * 2.4 and 4.1.
- * On libidnkitlite, perform step 1..3, except for
- * step 2.4 and 4.1.
- * IDN_DECODE_STORED -- On libidnkit, perform step 1..5, except for step
- * 4.1.
- * On libidnkitlite, perform step 1..3, except for
- * step 4.1.
- * IDN_DECODE_APP -- Same as IDN_DECODE_QUERY.
- * IDN_NAMEPREP -- perform NAMEPREP (step 2) without unassigned
- * codepoint check (step 2.4).
- *
- * If any step fails, the original input name is returned.
- * 'actions' specifies what actions to take when decoding, and is
- * a bitwise-or of the following flags:
- *
- * Note that if no flags are specified, 'idn_decodename' does nothing
- * but copying the given name verbatim.
- *
- * Returns:
- * idn_success -- ok.
- * idn_invalid_action -- invalid action flag specified.
- * idn_invalid_encoding -- the given string has invalid/illegal
- * byte sequence.
- * idn_buffer_overflow -- 'tolen' is too small.
- * idn_invalid_length -- length of a label is not 1..63 characters.
- * idn_nomemory -- malloc failed.
- *
- * Also, if this function is called without calling 'idn_nameinit',
- * the following error codes might be returned.
- * idn_nofile -- cannot open the configuration file.
- * idn_invalid_syntax -- syntax error found in the file.
- * idn_invalid_name -- there are invalid names (encoding,
- * normalization etc.).
- */
-IDN_EXPORT idn_result_t
-idn_decodename(idn_action_t actions, const char *from, char *to, size_t tolen);
-
-/*
- * Decode internationalized domain name with auxiliary encoding
- * support.
- *
- * This is another API for IDN string decode. The difference between
- * two is whether the encoding conversion from auxiliary encoding to
- * UTF-8 occurs prior to the actual decode process (read description
- * of idn_res_decodename() above) or not.
- *
- * If auxencoding is NULL, from is treated as UTF-8 encoded string.
- *
- * Other arguments serve exactly same role as those of
- * idn_res_decodename().
- */
-idn_result_t
-idn_decodename2(idn_action_t actions, const char *from, char *to, size_t tolen,
- const char *auxencoding);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* IDN_API_H */
+++ /dev/null
-/* $Id: assert.h,v 1.1 2003/06/04 00:25:35 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, 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-#ifndef IDN_ASSERT_H
-#define IDN_ASSERT_H 1
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <assert.h>
-
-#ifndef DEBUG
-#define NDEBUG
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-
-# endif /* IDN_ASSERT_H */
+++ /dev/null
-/* $Id: checker.h,v 1.1 2003/06/04 00:25:36 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-#ifndef IDN_CHECKER_H
-#define IDN_CHECKER_H 1
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*
- * Character Checker.
- *
- * Perfom checking characters in the specified domain name.
- */
-
-#include <idn/result.h>
-#include <idn/filechecker.h>
-#include <idn/nameprep.h>
-
-/*
- * Schems name prefixes for the standard nameprep prohibit/unassigned
- * checks.
- *
- * If you'd like to add the unassigned check scheme of "RFC3491"
- * to a checker context, IDN_CHECKER_UNASSIGNED_PREFIX + "RFC3491"
- * (i.e. "unassigned#RFC3491") is the scheme name passed to
- * idn_checker_add().
- */
-#define IDN_CHECKER_PROHIBIT_PREFIX "prohibit#"
-#define IDN_CHECKER_UNASSIGNED_PREFIX "unassigned#"
-#define IDN_CHECKER_BIDI_PREFIX "bidi#"
-
-/*
- * Checker object type.
- */
-typedef struct idn_checker *idn_checker_t;
-
-/*
- * Initialize module. Must be called before any other calls of
- * the functions of this module.
- *
- * Returns:
- * idn_success -- ok.
- * idn_nomemory -- malloc failed.
- */
-extern idn_result_t
-idn_checker_initialize(void);
-
-/*
- * Create a checker context.
- *
- * Returns:
- * idn_success -- ok.
- * idn_nomemory -- malloc failed.
- */
-extern idn_result_t
-idn_checker_create(idn_checker_t *ctxp);
-
-/*
- * Decrement reference count of the checker `ctx' created by
- * 'idn_checker_create', if it is still refered by another object.
- * Otherwise, release all the memory allocated to the checker.
- */
-extern void
-idn_checker_destroy(idn_checker_t ctx);
-
-/*
- * Increment reference count of the checker `ctx' created by
- * 'idn_checker_create'.
- */
-extern void
-idn_checker_incrref(idn_checker_t ctx);
-
-/*
- * Add checking scheme `name' to the checker to `ctx'.
- *
- * Returns:
- * idn_success -- ok.
- * idn_invalid_name -- the given name is not valid.
- * idn_nomemory -- malloc failed.
- */
-extern idn_result_t
-idn_checker_add(idn_checker_t ctx, const char *name);
-
-extern idn_result_t
-idn_checker_addall(idn_checker_t ctx, const char **names, int nnames);
-
-/*
- * Check a domain name. All checking schemes regsitered in `ctx' are
- * applied in the regisration order.
- *
- * Returns:
- * idn_success -- ok.
- * idn_nomemory -- malloc failed.
- * idn_buffer_overflow -- output buffer is too small.
- */
-extern idn_result_t
-idn_checker_lookup(idn_checker_t ctx, const unsigned long *ucs4,
- const unsigned long **found);
-
-/*
- * Checking procedure type.
- */
-typedef idn_result_t (*idn_checker_createproc_t)(const char *parameter,
- void **ctxp);
-typedef void (*idn_checker_destroyproc_t)(void *ctx);
-typedef idn_result_t (*idn_checker_lookupproc_t)(void *ctx,
- const unsigned long *ucs4,
- const unsigned long **found);
-
-/*
- * Register a new checking scheme.
- *
- * You can override the default normalization schemes, if you want.
- *
- * Returns:
- * idn_success -- ok.
- * idn_nomemory -- malloc failed.
- */
-extern idn_result_t
-idn_checker_register(const char *prefix,
- idn_checker_createproc_t create,
- idn_checker_destroyproc_t destroy,
- idn_checker_lookupproc_t lookup);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* IDN_CHECKER_H */
+++ /dev/null
-/* $Id: converter.h,v 1.1 2003/06/04 00:25:36 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, 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-#ifndef IDN_CONVERTER_H
-#define IDN_CONVERTER_H 1
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*
- * Codeset converter.
- *
- * This module provides conversions from some local codeset to UCS4
- * and vice versa.
- */
-
-#include <idn/export.h>
-#include <idn/result.h>
-
-/*
- * Converter context type (opaque).
- */
-typedef struct idn_converter *idn_converter_t;
-
-/*
- * Conversion flags.
- */
-#define IDN_CONVERTER_DELAYEDOPEN 1
-#define IDN_CONVERTER_RTCHECK 2
-
-/*
- * Encoding types.
- */
-#define IDN_NONACE 0
-#define IDN_ACE_STRICTCASE 1
-#define IDN_ACE_LOOSECASE 2
-
-/*
- * Initialize module. Must be called before any other calls of
- * the functions of this module.
- *
- * Returns:
- * idn_success -- ok.
- * idn_nomemory -- malloc failed.
- */
-IDN_EXPORT idn_result_t
-idn_converter_initialize(void);
-
-/*
- * Create a conversion context.
- *
- * Returns:
- * idn_success -- ok.
- * idn_invalid_name -- specified codeset is not supported.
- * idn_nomemory -- malloc failed.
- * idn_failure -- other failure (unknown cause).
- */
-IDN_EXPORT idn_result_t
-idn_converter_create(const char *name, idn_converter_t *ctxp,
- int flags);
-
-/*
- * Decrement reference count of the converter `ctx' created by
- * 'idn_converter_create', if it is still refered by another object.
- * Otherwise, release all the memory allocated to the converter.
- */
-IDN_EXPORT void
-idn_converter_destroy(idn_converter_t ctx);
-
-/*
- * Increment reference count of the converter `ctx' created by
- * 'idn_converter_create'.
- */
-IDN_EXPORT void
-idn_converter_incrref(idn_converter_t ctx);
-
-/*
- * Convert between local codeset and UCS4. Note that each conversion
- * is started with initial state.
- *
- * Returns:
- * idn_success -- ok.
- * idn_buffer_overflow -- output buffer is too small.
- * idn_invalid_encoding -- the input string has invalid/illegal
- * byte sequence.
- * idn_invalid_name -- codeset is not supported (this error
- * should happen only if 'delayedopen'
- * flag was set when idn_converter_create
- * was called)
- * idn_failure -- other failure.
- */
-IDN_EXPORT idn_result_t
-idn_converter_convfromucs4(idn_converter_t ctx,
- const unsigned long *from, char *to, size_t tolen);
-
-IDN_EXPORT idn_result_t
-idn_converter_convtoucs4(idn_converter_t ctx,
- const char *from, unsigned long *to, size_t tolen);
-
-/*
- * Get the name of local codeset. The returned name may be different from
- * the one specified to idn_converter_create, if the specified one was an
- * alias.
- *
- * Returns:
- * the local codeset name.
- */
-IDN_EXPORT char *
-idn_converter_localencoding(idn_converter_t ctx);
-
-/*
- * Return the encoding type of this local encoding.
- *
- * Returns:
- * IDN_NONACE -- encoding is not ACE.
- * IDN_ACE_STRICTCASE -- encoding is ACE.
- * decoder of this ACE preserve letter case.
- * IDN_ACE_LOOSECASE -- encoding type is ACE.
- * decoder cannot preserve letter case.
- */
-IDN_EXPORT int
-idn_converter_encodingtype(idn_converter_t ctx);
-
-/*
- * Return if this local encoding is ACE (Ascii Compatible Encoding).
- *
- * Returns:
- * 1 -- yes, it is ACE.
- * 0 -- no.
- */
-IDN_EXPORT int
-idn_converter_isasciicompatible(idn_converter_t ctx);
-
-/*
- * Register an alias for a codeset name.
- *
- * If first_item is 0, alias pattern is placed as the last item of the
- * alias list. Otherwise, it is done as the first item.
- *
- * Returns:
- * idn_success -- ok.
- * idn_nomemory -- malloc failed.
- */
-IDN_EXPORT idn_result_t
-idn_converter_addalias(const char *alias_name, const char *real_name,
- int first_item);
-
-/*
- * Register aliases defined by the specified file.
- *
- * Returns:
- * idn_success -- ok.
- * idn_nofile -- no such file.
- * idn_invalid_syntax -- file is malformed.
- * idn_nomemory -- malloc failed.
- */
-IDN_EXPORT idn_result_t
-idn_converter_aliasfile(const char *path);
-
-/*
- * Unregister all the aliases.
- */
-IDN_EXPORT idn_result_t
-idn_converter_resetalias(void);
-
-/*
- * resolve real encoding name from alias information.
- */
-IDN_EXPORT const char *
-idn_converter_getrealname(const char *name);
-
-
-/*
- * New converter registration.
- */
-
-/*
- * Conversion operation functions.
- */
-typedef idn_result_t (*idn_converter_openproc_t)(idn_converter_t ctx,
- void **privdata);
-typedef idn_result_t (*idn_converter_closeproc_t)(idn_converter_t ctx,
- void *privdata);
-typedef idn_result_t
- (*idn_converter_convfromucs4proc_t)(idn_converter_t ctx,
- void *privdata,
- const unsigned long *from,
- char *to, size_t tolen);
-typedef idn_result_t
- (*idn_converter_convtoucs4proc_t)(idn_converter_t ctx,
- void *privdata,
- const char *from,
- unsigned long *to,
- size_t tolen);
-
-/*
- * Register a new converter.
- * 'encoding_type' is a value which idn_converter_encodingtype() returns.
- *
- * Returns:
- * idn_success -- ok.
- * idn_nomemory -- malloc failed.
- */
-IDN_EXPORT idn_result_t
-idn_converter_register(const char *name,
- idn_converter_openproc_t openfromucs4,
- idn_converter_openproc_t opentoucs4,
- idn_converter_convfromucs4proc_t convfromucs4,
- idn_converter_convtoucs4proc_t convtoucs4,
- idn_converter_closeproc_t close,
- int encoding_type);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* IDN_CONVERTER_H */
+++ /dev/null
-/* $Id: debug.h,v 1.1 2003/06/04 00:25:36 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, 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-#ifndef IDN_DEBUG_H
-#define IDN_DEBUG_H 1
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*
- * Debug utility
- */
-
-#include <idn/export.h>
-
-IDN_EXPORT char *idn__debug_hexstring(const char *s, int maxbytes);
-IDN_EXPORT char *idn__debug_xstring(const char *s, int maxbytes);
-IDN_EXPORT char *idn__debug_ucs4xstring(const unsigned long *s, int maxbytes);
-IDN_EXPORT char *idn__debug_utf16xstring(const unsigned short *s,
- int maxbytes);
-IDN_EXPORT char *idn__debug_hexdata(const char *s, int length, int maxbytes);
-IDN_EXPORT void idn__debug_hexdump(const char *s, int maxbytes);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* IDN_DEBUG_H */
+++ /dev/null
-/* $Id: delimitermap.h,v 1.1 2003/06/04 00:25:37 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-#ifndef IDN_DELIMITERMAP_H
-#define IDN_DELIMITERMAP_H 1
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*
- * Mapper.
- *
- * Perfom mapping local delimiters to `.'.
- */
-
-#include <idn/export.h>
-#include <idn/result.h>
-
-/*
- * Map object type.
- */
-typedef struct idn_delimitermap *idn_delimitermap_t;
-
-/*
- * Create a delimitermap context.
- *
- * Returns:
- * idn_success -- ok.
- * idn_nomemory -- malloc failed.
- */
-IDN_EXPORT idn_result_t
-idn_delimitermap_create(idn_delimitermap_t *ctxp);
-
-/*
- * Decrement reference count of the delimitermap `ctx' created by
- * 'idn_delimitermap_create', if it is still refered by another object.
- * Otherwise, release all the memory allocated to the delimitermap.
- */
-IDN_EXPORT void
-idn_delimitermap_destroy(idn_delimitermap_t ctx);
-
-/*
- * Increment reference count of the delimitermap `ctx' created by
- * 'idn_delimitermap_create'.
- */
-IDN_EXPORT void
-idn_delimitermap_incrref(idn_delimitermap_t ctx);
-
-/*
- * Add a local delimiter.
- *
- * Returns:
- * idn_success -- ok.
- * idn_nomemory -- malloc failed.
- * idn_invalid_codepoint -- delimiter is not valid UCS4 character.
- */
-IDN_EXPORT idn_result_t
-idn_delimitermap_add(idn_delimitermap_t ctx, unsigned long delimiter);
-
-IDN_EXPORT idn_result_t
-idn_delimitermap_addall(idn_delimitermap_t ctx, unsigned long *delimiters,
- int ndelimiters);
-
-/*
- * Map local delimiters in `from' to `.'.
- *
- * Note that if no delimiter is added to the context, the function copies
- * the string.
- *
- * Returns:
- * idn_success -- ok.
- * idn_buffer_overflow -- output buffer is too small.
- */
-IDN_EXPORT idn_result_t
-idn_delimitermap_map(idn_delimitermap_t ctx, const unsigned long *from,
- unsigned long *to, size_t tolen);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* IDN_DELIMITERMAP_H */
+++ /dev/null
-/* $Id: export.h,v 1.1 2003/06/04 00:25:37 marka Exp $ */
-/*
- * Copyright (c) 2002 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-#ifndef IDN_EXPORT_H
-#define IDN_EXPORT_H 1
-
-/*
- * Macro for exporting functions.
- *
- * When creating a Windows DLL, define IDN_EXPORT something as
- * "extern __declspec(dllexport)".
- */
-
-#ifndef IDN_EXPORT
-#define IDN_EXPORT extern
-#endif
-
-# endif /* IDN_EXPORT_H */
+++ /dev/null
-/* $Id: filechecker.h,v 1.1 2003/06/04 00:25:37 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-#ifndef IDN_FILECHECKER_H
-#define IDN_FILECHECKER_H 1
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*
- * Character checker -- check if there are any characters specified
- * by a file in the given string.
- */
-
-#include <idn/result.h>
-
-/*
- * Check object type.
- */
-typedef struct idn__filechecker *idn__filechecker_t;
-
-/*
- * Read the contents of the given file and create a context for
- * checking.
- *
- * 'file' is the pathname of the file, which specifies the set of
- * characters to be checked. The file is a simple text file, and
- * each line must be of the form either
- * <code_point>
- * or
- * <code_point>-<code_point>
- * (or comment, see below) where <code_point> is a UCS code point
- * represented as hexadecimal string with optional prefix `U+'
- * (ex. `0041' or `U+FEDC').
- *
- * The former specifies just one character (a code point, to be precise),
- * while the latter specified a range of characters. In the case of
- * a character range, the first code point (before hyphen) must not be
- * greater than the second code point (after hyphen).
- *
- * Lines starting with `#' are comments.
- *
- * If file is read with no errors, the created context is stored in
- * '*ctxp', and 'idn_success' is returned. Otherwise, the contents
- * of '*ctxp' is undefined.
- *
- * Returns:
- * idn_success -- ok.
- * idn_nofile -- cannot open the specified file.
- * idn_nomemory -- malloc failed.
- * idn_invalid_syntax -- file format is not valid.
- */
-extern idn_result_t
-idn__filechecker_create(const char *file, idn__filechecker_t *ctxp);
-
-/*
- * Release memory for the specified context.
- */
-extern void
-idn__filechecker_destroy(idn__filechecker_t ctx);
-
-/*
- * See if the given string contains any specified characters.
- *
- * Check if there is any characters pecified by the context 'ctx' in
- * the UCS4 string 'str'. If there are none, NULL is stored in '*found'.
- * Otherwise, the pointer to the first occurence of such character is
- * stored in '*found'.
- *
- * Returns:
- * idn_success -- ok.
- */
-extern idn_result_t
-idn__filechecker_lookup(idn__filechecker_t ctx, const unsigned long *str,
- const unsigned long **found);
-
-/*
- * The following functions are for internal use.
- * They are used for this module to be add to the checker module.
- */
-extern idn_result_t
-idn__filechecker_createproc(const char *parameter, void **ctxp);
-
-extern void
-idn__filechecker_destroyproc(void *ctxp);
-
-extern idn_result_t
-idn__filechecker_lookupproc(void *ctx, const unsigned long *str,
- const unsigned long **found);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* IDN_FILECHECKER_H */
+++ /dev/null
-/* $Id: filemapper.h,v 1.1 2003/06/04 00:25:38 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-#ifndef IDN_FILEMAPPER_H
-#define IDN_FILEMAPPER_H 1
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*
- * Perform character mapping (substitution) according to a
- * map file.
- */
-
-#include <idn/result.h>
-
-/*
- * Mapping object type.
- */
-typedef struct idn__filemapper *idn__filemapper_t;
-
-/*
- * Read the contents of the given map file and create a context for mapping.
- *
- * 'file' is the pathname of the file, which specifies the character
- * mapping. The file is a simple text file, and each line specifies
- * a mapping of a single character. The format of each line is
- *
- * <code_point>; [<code_point>..][;]
- *
- * where <code_point> is a UCS code point represented as a hexadecimal
- * string with optional prefix `U+' (ex. `0041' or `U+FEDC').
- * The code point before the first semicolon will be mapped to the
- * sequence of code points separated by space characters after the
- * first semicolon. The sequence may be empty, denoting wiping out
- * the character.
- *
- * For example,
- * U+0041; U+0061 -- maps 'A' to 'a'
- * 20;; -- wipes out ' '
- *
- * Anything after the second semicolon is ignored. Also lines beginning
- * with '#' are treated as comments.
- *
- * If there is no error, the created context is stored in '*ctxp'.
- *
- * Returns:
- * idn_success -- ok.
- * idn_nofile -- cannot open the specified file.
- * idn_nomemory -- malloc failed.
- * idn_invalid_syntax -- file format is not valid.
- */
-extern idn_result_t
-idn__filemapper_create(const char *file, idn__filemapper_t *ctxp);
-
-/*
- * Release memory for the given context.
- */
-extern void
-idn__filemapper_destroy(idn__filemapper_t ctx);
-
-/*
- * Perform character substitution.
- *
- * Each character in the string 'from' is examined and if it
- * has a mapping, it is substituted to the corresponding
- * character sequence. The substituted string is stored in 'to',
- * whose length is specified by 'tolen'.
- *
- * Returns:
- * idn_success -- ok.
- * idn_buffer_overflow -- result buffer is too small.
- */
-extern idn_result_t
-idn__filemapper_map(idn__filemapper_t ctx, const unsigned long *from,
- unsigned long *to, size_t tolen);
-
-/*
- * The following functions are for internal use.
- * They are used for this module to be add to the mapper module.
- */
-extern idn_result_t
-idn__filemapper_createproc(const char *parameter, void **ctxp);
-
-extern void
-idn__filemapper_destroyproc(void *ctxp);
-
-extern idn_result_t
-idn__filemapper_mapproc(void *ctx, const unsigned long *from,
- unsigned long *to, size_t tolen);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* IDN_FILEMAPPER_H */
+++ /dev/null
-/* $Id: localencoding.h,v 1.1 2003/06/04 00:25:38 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, 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-#ifndef IDN_LOCALENCODING_H
-#define IDN_LOCALENCODING_H 1
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*
- * Local codeset detection.
- *
- * Determine the local codeset (the codeset used by the current application),
- * based on the locale information.
- */
-
-#include <idn/export.h>
-
-#define IDN_LOCALCS_ENV "IDN_LOCAL_CODESET"
-
-/*
- * Get the codeset name corresponding to the current locale,
- * suitable for passing to 'idn_converter_create'.
- *
- * If the codeset cannot be determined, the locale name itself
- * will be returned in the hope that codeset alias file translates it
- * to the right name.
- *
- * If it cannot retrieve the current locale name, NULL will be
- * returned.
- */
-IDN_EXPORT const char *idn_localencoding_name(void);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* IDN_LOCALENCODING_H */
+++ /dev/null
-/* $Id: log.h,v 1.1 2003/06/04 00:25:38 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, 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-#ifndef IDN_LOG_H
-#define IDN_LOG_H 1
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*
- * libidnkit logging facility.
- */
-
-#include <idn/export.h>
-
-/*
- * Log level definition.
- */
-enum {
- idn_log_level_fatal = 0,
- idn_log_level_error = 1,
- idn_log_level_warning = 2,
- idn_log_level_info = 3,
- idn_log_level_trace = 4,
- idn_log_level_dump = 5
-};
-
-/*
- * Log handler type.
- */
-typedef void (*idn_log_proc_t)(int level, const char *msg);
-
-/*
- * Log routines.
- */
-IDN_EXPORT void idn_log_fatal(const char *fmt, ...);
-IDN_EXPORT void idn_log_error(const char *fmt, ...);
-IDN_EXPORT void idn_log_warning(const char *fmt, ...);
-IDN_EXPORT void idn_log_info(const char *fmt, ...);
-IDN_EXPORT void idn_log_trace(const char *fmt, ...);
-IDN_EXPORT void idn_log_dump(const char *fmt, ...);
-
-/*
- * Set/get log level.
- *
- * If log level has not been explicitly defined by 'idn_log_setlevel',
- * the default level is determined by the value of enrironment
- * variable 'IDN_LOG_LEVEL'.
- */
-IDN_EXPORT void idn_log_setlevel(int level);
-IDN_EXPORT int idn_log_getlevel(void);
-
-/*
- * Set log handler.
- *
- * If no log handler is set, log goes to stderr by default.
- * You can reset the handler to the default one by specifying
- * NULL.
- */
-IDN_EXPORT void idn_log_setproc(idn_log_proc_t proc);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* IDN_LOG_H */
+++ /dev/null
-/* $Id: logmacro.h,v 1.1 2003/06/04 00:25:38 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, 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-#ifndef IDN_LOGMACRO_H
-#define IDN_LOGMACRO_H 1
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <idn/log.h>
-
-#define FATAL(x) idn_log_fatal x
-#define ERROR(x) idn_log_error x
-#define WARNING(x) idn_log_warning x
-#define INFO(x) LOG_AT_LEVEL(idn_log_level_info, idn_log_info, x)
-#define TRACE(x) LOG_AT_LEVEL(idn_log_level_trace, idn_log_trace, x)
-
-#ifdef DEBUG
-#define DUMP(x) LOG_AT_LEVEL(idn_log_level_dump, idn_log_dump, x)
-#else
-#define DUMP(x)
-#endif /* DEBUG */
-
-#define LOG_AT_LEVEL(lv, fun, x) do {if (LOGLEVEL >= (lv)) fun x; } while (0)
-#define LOGLEVEL idn_log_getlevel()
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* IDN_LOGMACRO_H */
+++ /dev/null
-/* $Id: mapper.h,v 1.1 2003/06/04 00:25:38 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-#ifndef IDN_MAPPER_H
-#define IDN_MAPPER_H 1
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*
- * Mapper.
- *
- * Perfom mapping the specified domain name.
- */
-
-#include <idn/export.h>
-#include <idn/result.h>
-#include <idn/filemapper.h>
-#include <idn/nameprep.h>
-
-/*
- * Map object type.
- */
-typedef struct idn_mapper *idn_mapper_t;
-
-/*
- * Initialize module. Must be called before any other calls of
- * the functions of this module.
- *
- * Returns:
- * idn_success -- ok.
- * idn_nomemory -- malloc failed.
- */
-IDN_EXPORT idn_result_t
-idn_mapper_initialize(void);
-
-/*
- * Create a mapper context.
- *
- * Returns:
- * idn_success -- ok.
- * idn_nomemory -- malloc failed.
- */
-IDN_EXPORT idn_result_t
-idn_mapper_create(idn_mapper_t *ctxp);
-
-/*
- * Decrement reference count of the mapper `ctx' created by
- * 'idn_mapper_create', if it is still refered by another object.
- * Otherwise, release all the memory allocated to the mapper.
- */
-IDN_EXPORT void
-idn_mapper_destroy(idn_mapper_t ctx);
-
-/*
- * Increment reference count of the mapper `ctx' created by
- * 'idn_mapper_create'.
- */
-IDN_EXPORT void
-idn_mapper_incrref(idn_mapper_t ctx);
-
-/*
- * Add mapping scheme `name' to the mapper to `ctx'.
- *
- * Returns:
- * idn_success -- ok.
- * idn_invalid_name -- the given name is not valid.
- * idn_nomemory -- malloc failed.
- */
-IDN_EXPORT idn_result_t
-idn_mapper_add(idn_mapper_t ctx, const char *name);
-
-IDN_EXPORT idn_result_t
-idn_mapper_addall(idn_mapper_t ctx, const char **names, int nnames);
-
-/*
- * Map an UCS4 string. All mapping schemes regsitered in `ctx'
- * are applied in the regisration order.
- *
- * Returns:
- * idn_success -- ok.
- * idn_nomemory -- malloc failed.
- * idn_buffer_overflow -- output buffer is too small.
- */
-IDN_EXPORT idn_result_t
-idn_mapper_map(idn_mapper_t ctx, const unsigned long *from,
- unsigned long *to, size_t tolen);
-
-/*
- * Mapping procedure type.
- */
-typedef idn_result_t (*idn_mapper_createproc_t)(const char *parameter,
- void **ctxp);
-typedef void (*idn_mapper_destroyproc_t)(void *ctxp);
-typedef idn_result_t (*idn_mapper_mapproc_t)(void *ctx,
- const unsigned long *from,
- unsigned long *, size_t);
-
-/*
- * Register a new mapping scheme.
- *
- * You can override the default normalization schemes, if you want.
- *
- * Returns:
- * idn_success -- ok.
- * idn_nomemory -- malloc failed.
- */
-IDN_EXPORT idn_result_t
-idn_mapper_register(const char *prefix,
- idn_mapper_createproc_t create,
- idn_mapper_destroyproc_t destroy,
- idn_mapper_mapproc_t map);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* IDN_MAPPER_H */
+++ /dev/null
-/* $Id: mapselector.h,v 1.1 2003/06/04 00:25:39 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-#ifndef IDN_MAPSELECTOR_H
-#define IDN_MAPSELECTOR_H 1
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*
- * Map selector.
- *
- * Perfom mapping the specified domain name according with the TLD
- * of the donmain name.
- */
-
-#include <idn/export.h>
-#include <idn/result.h>
-#include <idn/mapper.h>
-
-/*
- * Special TLDs for map selection.
- */
-#define IDN_MAPSELECTOR_NOTLD "-"
-#define IDN_MAPSELECTOR_DEFAULTTLD "."
-
-IDN_EXPORT const unsigned long *
-idn_mapselector_getnotld(void);
-
-IDN_EXPORT const unsigned long *
-idn_mapselector_getdefaulttld(void);
-
-/*
- * Mapselector object type.
- */
-typedef struct idn_mapselector *idn_mapselector_t;
-
-/*
- * Initialize module. Must be called before any other calls of
- * the functions of this module.
- *
- * Returns:
- * idn_success -- ok.
- * idn_nomemory -- malloc failed.
- */
-IDN_EXPORT idn_result_t
-idn_mapselector_initialize(void);
-
-/*
- * Create a mapselector context.
- *
- * Returns:
- * idn_success -- ok.
- * idn_nomemory -- malloc failed.
- */
-IDN_EXPORT idn_result_t
-idn_mapselector_create(idn_mapselector_t *ctxp);
-
-/*
- * Decrement reference count of the mapselector `ctx' created by
- * 'idn_mapselector_create', if it is still refered by another object.
- * Otherwise, release all the memory allocated to the mapselector.
- */
-IDN_EXPORT void
-idn_mapselector_destroy(idn_mapselector_t ctx);
-
-/*
- * Increment reference count of the mapselector `ctx' created by
- * 'idn_mapselector_create'.
- */
-IDN_EXPORT void
-idn_mapselector_incrref(idn_mapselector_t ctx);
-
-/*
- * Return the mapper for `tld' registered in `ctx', or return NULL if
- * mapper for `tld' is not registered.
- */
-IDN_EXPORT idn_mapper_t
-idn_mapselector_mapper(idn_mapselector_t ctx, const char *tld);
-
-/*
- * Add mapping scheme `name' to the mapper for `tld' to the mapselector
- * context `ctx'. If no mapper for `TLD' has not been registered, the
- * function creates a new mapper for `tld', and then adds the given mapping
- * scheme to the mapper. Otherwise, it adds the scheme to the mapper for
- * TLD registered in `ctx'.
- *
- * Returns:
- * idn_success -- ok.
- * idn_invalid_name -- the given tld or name is not valid.
- * idn_nomemory -- malloc failed.
- */
-IDN_EXPORT idn_result_t
-idn_mapselector_add(idn_mapselector_t ctx, const char *tld, const char *name);
-
-IDN_EXPORT idn_result_t
-idn_mapselector_addall(idn_mapselector_t ctx, const char *tld,
- const char **names, int nnames);
-
-/*
- * Map an UCS4 string with the mapper for TLD of the domain name.
- * If there is no mapper suitable for the domain name, the function
- * simply copies the doman name.
- *
- * Returns:
- * idn_success -- ok.
- * idn_nomemory -- malloc failed.
- * idn_buffer_overflow -- output buffer is too small.
- * idn_invalid_name -- the given tld is not valid.
- */
-IDN_EXPORT idn_result_t
-idn_mapselector_map(idn_mapselector_t ctx, const unsigned long *from,
- const char *tld, unsigned long *to, size_t tolen);
-
-IDN_EXPORT idn_result_t
-idn_mapselector_map2(idn_mapselector_t ctx, const unsigned long *from,
- const unsigned long *tld, unsigned long *to,
- size_t tolen);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* IDN_MAPSELECTOR_H */
+++ /dev/null
-/* $Id: nameprep.h,v 1.1 2003/06/04 00:25:39 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-#ifndef IDN_NAMEPREP_H
-#define IDN_NAMEPREP_H 1
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*
- * Perform NAMEPREP (mapping, prohibited/unassigned checking).
- */
-
-#include <idn/export.h>
-#include <idn/result.h>
-
-/*
- * BIDI type codes.
- */
-typedef enum {
- idn_biditype_r_al,
- idn_biditype_l,
- idn_biditype_others
-} idn_biditype_t;
-
-/*
- * A Handle for nameprep operations.
- */
-typedef struct idn_nameprep *idn_nameprep_t;
-
-
-/*
- * The latest version of nameprep.
- */
-#define IDN_NAMEPREP_CURRENT "RFC3491"
-
-/*
- * Create a handle for nameprep operations.
- * The handle is stored in '*handlep', which is used other functions
- * in this module.
- * The version of the NAMEPREP specification can be specified with
- * 'version' parameter. If 'version' is NULL, the latest version
- * is used.
- *
- * Returns:
- * idn_success -- ok.
- * idn_notfound -- specified version not found.
- */
-IDN_EXPORT idn_result_t
-idn_nameprep_create(const char *version, idn_nameprep_t *handlep);
-
-/*
- * Close a handle, which was created by 'idn_nameprep_create'.
- */
-IDN_EXPORT void
-idn_nameprep_destroy(idn_nameprep_t handle);
-
-/*
- * Perform character mapping on an UCS4 string specified by 'from', and
- * store the result into 'to', whose length is specified by 'tolen'.
- *
- * Returns:
- * idn_success -- ok.
- * idn_buffer_overflow -- result buffer is too small.
- */
-IDN_EXPORT idn_result_t
-idn_nameprep_map(idn_nameprep_t handle, const unsigned long *from,
- unsigned long *to, size_t tolen);
-
-/*
- * Check if an UCS4 string 'str' contains any prohibited characters specified
- * by the draft. If found, the pointer to the first such character is stored
- * into '*found'. Otherwise '*found' will be NULL.
- *
- * Returns:
- * idn_success -- check has been done properly. (But this
- * does not mean that no prohibited character
- * was found. Check '*found' to see the
- * result.)
- */
-IDN_EXPORT idn_result_t
-idn_nameprep_isprohibited(idn_nameprep_t handle, const unsigned long *str,
- const unsigned long **found);
-
-/*
- * Check if an UCS4 string 'str' contains any unassigned characters specified
- * by the draft. If found, the pointer to the first such character is stored
- * into '*found'. Otherwise '*found' will be NULL.
- *
- * Returns:
- * idn_success -- check has been done properly. (But this
- * does not mean that no unassinged character
- * was found. Check '*found' to see the
- * result.)
- */
-IDN_EXPORT idn_result_t
-idn_nameprep_isunassigned(idn_nameprep_t handle, const unsigned long *str,
- const unsigned long **found);
-
-/*
- * Check if an UCS4 string 'str' is valid string specified by ``bidi check''
- * of the draft. If it is not valid, the pointer to the first invalid
- * character is stored into '*found'. Otherwise '*found' will be NULL.
- *
- * Returns:
- * idn_success -- check has been done properly. (But this
- * does not mean that the string was valid.
- * Check '*found' to see the result.)
- */
-IDN_EXPORT idn_result_t
-idn_nameprep_isvalidbidi(idn_nameprep_t handle, const unsigned long *str,
- const unsigned long **found);
-
-/*
- * The following functions are for internal use.
- * They are used for this module to be add to the checker and mapper modules.
- */
-IDN_EXPORT idn_result_t
-idn_nameprep_createproc(const char *parameter, void **handlep);
-
-IDN_EXPORT void
-idn_nameprep_destroyproc(void *handle);
-
-IDN_EXPORT idn_result_t
-idn_nameprep_mapproc(void *handle, const unsigned long *from,
- unsigned long *to, size_t tolen);
-
-IDN_EXPORT idn_result_t
-idn_nameprep_prohibitproc(void *handle, const unsigned long *str,
- const unsigned long **found);
-
-IDN_EXPORT idn_result_t
-idn_nameprep_unassignedproc(void *handle, const unsigned long *str,
- const unsigned long **found);
-
-IDN_EXPORT idn_result_t
-idn_nameprep_bidiproc(void *handle, const unsigned long *str,
- const unsigned long **found);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* IDN_NAMEPREP_H */
+++ /dev/null
-/* $Id: normalizer.h,v 1.1 2003/06/04 00:25:40 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, 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-#ifndef IDN_NORMALIZER_H
-#define IDN_NORMALIZER_H 1
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*
- * Domain name normalizer.
- *
- * Perform normalization on the specified strings. String must be
- * in UCS4 encoding.
- */
-
-#include <idn/export.h>
-#include <idn/result.h>
-
-/*
- * Normalizer type (opaque).
- */
-typedef struct idn_normalizer *idn_normalizer_t;
-
-/*
- * Normalizer procedure type.
- */
-typedef idn_result_t (*idn_normalizer_proc_t)(const unsigned long *from,
- unsigned long *to, size_t tolen);
-
-/*
- * Initialize this module.
- *
- * Returns:
- * idn_success -- ok.
- * idn_nomemory -- malloc failed.
- */
-IDN_EXPORT idn_result_t
-idn_normalizer_initialize(void);
-
-/*
- * Create a empty normalizer.
- *
- * Returns:
- * idn_success -- ok.
- * idn_nomemory -- malloc failed.
- */
-IDN_EXPORT idn_result_t
-idn_normalizer_create(idn_normalizer_t *ctxp);
-
-/*
- * Decrement reference count of the normalizer `ctx' created by
- * 'idn_normalizer_create', if it is still refered by another object.
- * Otherwise, release all the memory allocated to the normalizer.
- */
-IDN_EXPORT void
-idn_normalizer_destroy(idn_normalizer_t ctx);
-
-/*
- * Increment reference count of the normalizer `ctx' created by
- * 'idn_normalizer_create'.
- */
-IDN_EXPORT void
-idn_normalizer_incrref(idn_normalizer_t ctx);
-
-/*
- * Add a normalization scheme to a normalizer.
- *
- * Multiple shemes can be added to a normalizer, and they will be
- * applied in order.
- *
- * Returns:
- * idn_success -- ok.
- * idn_invalid_name -- unknown scheme was specified.
- * idn_nomemory -- malloc failed.
- */
-IDN_EXPORT idn_result_t
-idn_normalizer_add(idn_normalizer_t ctx, const char *scheme_name);
-
-IDN_EXPORT idn_result_t
-idn_normalizer_addall(idn_normalizer_t ctx, const char **scheme_names,
- int nschemes);
-
-/*
- * Perform normalization(s) defined by a normalizer to the specified string,
- * If the normalizer has two or more normalization schemes, they are
- * applied in order.
- *
- * Returns:
- * idn_success -- ok.
- * idn_buffer_overflow -- output buffer is too small.
- * idn_nomemory -- malloc failed.
- */
-IDN_EXPORT idn_result_t
-idn_normalizer_normalize(idn_normalizer_t ctx, const unsigned long *from,
- unsigned long *to, size_t tolen);
-
-/*
- * Register a new normalization scheme.
- *
- * You can override the default normalization schemes, if you want.
- *
- * Returns:
- * idn_success -- ok.
- * idn_nomemory -- malloc failed.
- */
-IDN_EXPORT idn_result_t
-idn_normalizer_register(const char *scheme_name, idn_normalizer_proc_t proc);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* IDN_NORMALIZER_H */
+++ /dev/null
-/* $Id: punycode.h,v 1.1 2003/06/04 00:25:40 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-#ifndef IDN_PUNYCODE_H
-#define IDN_PUNYCODE_H 1
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*
- * Punycode Converter.
- */
-
-#include <idn/result.h>
-#include <idn/converter.h>
-
-extern idn_result_t
-idn__punycode_decode(idn_converter_t ctx, void *privdata,
- const char *from, unsigned long *to, size_t tolen);
-
-extern idn_result_t
-idn__punycode_encode(idn_converter_t ctx, void *privdata,
- const unsigned long *from, char *to, size_t tolen);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* IDN_PUNYCODE_H */
+++ /dev/null
-/* $Id: race.h,v 1.1 2003/06/04 00:25:40 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, 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-#ifndef IDN_RACE_H
-#define IDN_RACE_H 1
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*
- * RACE Converter.
- *
- * See Internet Draft draft-ietf-idn-race-03.txt for details.
- */
-
-#include <idn/result.h>
-#include <idn/converter.h>
-
-extern idn_result_t
-idn__race_encode(idn_converter_t ctx, void *privdata,
- const unsigned long *from, char *to, size_t tolen);
-
-extern idn_result_t
-idn__race_decode(idn_converter_t ctx, void *privdata,
- const char *from, unsigned long *to, size_t tolen);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* IDN_RACE_H */
+++ /dev/null
-/* $Id: res.h,v 1.1 2003/06/04 00:25:41 marka Exp $ */
-/*
- * Copyright (c) 2001,2002 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-#ifndef IDN_RES_H
-#define IDN_RES_H 1
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*
- * Resolver library support.
- *
- * All the functions provided by this module requires IDN resolver
- * configuration context of type 'idn_resconf_t' as an argument.
- * This context holds information described in the configuration file
- * (idn.conf). See idn_resconf module for details.
- *
- * All functions also accept NULL as the context, but since
- * no conversion/normalization will be done in this case, it is
- * pretty useless.
- */
-
-#include <idn/export.h>
-#include <idn/resconf.h>
-#include <idn/result.h>
-
-typedef unsigned long idn_action_t;
-
-/*
- * Actions
- */
-#define IDN_LOCALCONV 0x00000001 /* Local encoding <-> UTF-8 conversion */
-#define IDN_DELIMMAP 0x00000002 /* Delimiter mapping */
-#define IDN_LOCALMAP 0x00000004 /* Local mapping */
-#define IDN_MAP 0x00000008 /* NAMEPREP map */
-#define IDN_NORMALIZE 0x00000010 /* NAMEPREP normalize */
-#define IDN_PROHCHECK 0x00000020 /* NAMEPREP prohibited character check */
-#define IDN_UNASCHECK 0x00000040 /* Unassigned code point check */
-#define IDN_BIDICHECK 0x00000080 /* bidirectional string check */
-#define IDN_ASCCHECK 0x00000100 /* Non-LDH ASCII check */
-#define IDN_IDNCONV 0x00000200 /* UTF-8 <-> IDN encoding conversion */
-#define IDN_LENCHECK 0x00000400 /* Label length check */
-#define IDN_RTCHECK 0x00000800 /* Round trip check */
-#define IDN_UNDOIFERR 0x00001000 /* Option: undo if error occurs */
-
-#define IDN_ENCODE_QUERY 0x00002000 /* Encode query string */
-#define IDN_DECODE_QUERY 0x00004000 /* Decode query string */
-
-#define IDN_ENCODE_APP \
-(IDN_ENCODE_QUERY | IDN_ASCCHECK) /* Standard encode */
-#define IDN_DECODE_APP \
-(IDN_DECODE_QUERY | IDN_ASCCHECK) /* Standard decode */
-
-#define IDN_ENCODE_STORED \
-(IDN_ENCODE_QUERY | IDN_ASCCHECK | IDN_UNASCHECK) /* Encode query string */
-#define IDN_DECODE_STORED \
-(IDN_DECODE_QUERY | IDN_ASCCHECK | IDN_UNASCHECK) /* Decode query string */
-
-
-#define IDN_NAMEPREP \
-(IDN_MAP | IDN_NORMALIZE | IDN_PROHCHECK | IDN_BIDICHECK)
-
-/*
- * Enable or disable IDN conversion scheme.
- *
- * If on_off is 0, IDN conversion scheme is disabled. Otherwise, IDN
- * conversion is enabled even when IDN_DISABLE is defined.
- */
-IDN_EXPORT void
-idn_res_enable(int on_off);
-
-/*
- * Encode internationalized domain name.
- *
- * The encoding process consists of the following 7 steps.
- *
- * 1. Local encoding to UTF-8 conversion
- * Converts a domain name written with local encoding (e.g. ISO-
- * 8859-1) to UTF-8.
- * 2. Delimiter mapping,
- * Maps certain characters to period (U+002E, FULL STOP).
- * 3. Local mapping
- * Apply character mappings according with the TLD of the domain
- * name.
- * 4. NAMEPREP
- * Perform NAME preparation described in RFC3491.
- * This step consists of the following 4 steps:
- * 4.1. Mapping
- * 4.2. Normalization
- * 4.3. Prohibited character check
- * 4.4. Unassigned check
- * 5. ASCII range character check
- * Checks if the domain name contains non-LDH ASCII character (not
- * alpha-numeric or hypen), or it begins or end with hypen.
- * 6. UTF-8 to IDN encoding conversion.
- * Converts the domain name from UTF-8 to ACE (e.g. Punycode).
- * 7. Length check
- * Checks the length of each label.
- *
- * 'actions' specifies actions and options of the encoding procedure.
- * Its value is a bitwise-or of the following flags:
- *
- * IDN_LOCALCONV -- perform local encoding to UTF-8 conversion (step 1)
- * IDN_DELIMMAP -- perform delimiter mapping (step 2)
- * IDN_LOCALMAP -- perform local mapping (step 3)
- * IDN_MAP -- perform mapping (step 4.1)
- * IDN_NORMALIZE -- perform normalization (step 4.2)
- * IDN_PROHCHECK -- perform prohibited character check (step 4.3)
- * IDN_UNASCHECK -- perform unassigned codepoint check (step 4.4)
- * IDN_ASCCHECK -- perform ASCII range character check (step 5)
- * IDN_IDNCONV -- perform UTF-8 to IDN encoding conversion (step 6)
- * IDN_LENCHECK -- perform length check (step 7)
- *
- * Also the following flags are provided for convinience:
- *
- * IDN_ENCODE_QUERY -- On libidnkit, perform step 1..7, except for step
- * 4.4 and 5.
- * On libidnkitlite, perform step 2..7, except for
- * step 4.4 and 5.
- * IDN_ENCODE_STORED -- On libidnkit, perform step 1..7, except for step
- * 5.
- * On libidnkitlite, perform step 2..7, except for
- * step 5.
- * IDN_ENCODE_APP -- Same as IDN_ENCODE_QUERY.
- * IDN_NAMEPREP -- perform NAMEPREP (step 4) without unassigned
- * codepoint check (step 4.4).
- *
- * The following flag does not corresponding to a particular action,
- * but an option of conversion process:
- *
- * IDN_UNDOIFERR -- If any step fails, the original input name is
- * returned.
- *
- * Note that if no flags are specified, 'idn_encodename' does nothing
- * fancy, just copies the given name verbatim.
- *
- * Returns:
- * idn_success -- ok.
- * idn_invalid_action -- invalid action flag specified.
- * idn_invalid_encoding -- the given string has invalid/illegal
- * byte sequence.
- * idn_invalid_length -- invalid length of a label.
- * idn_prohibited -- prohibited/unassigned code point found.
- * idn_buffer_overflow -- 'tolen' is too small.
- * idn_nomemory -- malloc failed.
- *
- * Also, if this function is called without calling 'idn_nameinit',
- * the following error codes might be returned.
- * idn_nofile -- cannot open the configuration file.
- * idn_invalid_syntax -- syntax error found in the file.
- * idn_invalid_name -- there are invalid names (encoding,
- * normalization etc.).
- */
-IDN_EXPORT idn_result_t
-idn_res_encodename(idn_resconf_t ctx, idn_action_t actions, const char *from,
- char *to, size_t tolen);
-
-/*
- * Decode internationalized domain name.
- *
- * The decoding process consists of the following 5 steps.
- *
- * 1. delimiter mapping
- * Maps certain characters to period (U+002E, FULL STOP).
- * 2. NAMEPREP
- * Perform NAME preparation described in RFC3491.
- * This step consists of the following 4 steps:
- * 2.1. Mapping
- * 2.2. Normalization
- * 2.3. Prohibited character check
- * 2.4. Unassigned check
- * 3. IDN encoding to UTF-8 conversion.
- * Converts the domain name from ACE (e.g. Punycode) to UCS4.
- * 4. Perform round-trip check.
- * Encode the result of step 3, and then compare it with the result
- * of the step 2. If they are different, the check is failed.
- * 5. Convert UTF-8 to local encoding.
- * If a character in the domain name cannot be converted to local
- * encoding, the conversion is failed.
- *
- * 'actions' specifies actions of the decoding procedure.
- * Its value is a bitwise-or of the following flags:
- *
- * IDN_DELIMMAP -- perform delimiter mapping (step 1)
- * IDN_MAP -- perform mapping (step 2.1)
- * IDN_NORMALIZE -- perform normalization (step 2.2)
- * IDN_PROHCHECK -- perform prohibited character check (step 2.3)
- * IDN_UNASCHECK -- perform unassigned codepoint check (step 2.4)
- * IDN_IDNCONV -- perform IDN encoding to UTF-8 conversion (step 3)
- * IDN_RTCHECK -- perform round-trip check (step 4)
- * IDN_ASCCHECK -- perform ASCII range character check while
- * round-trip check (step 4.1)
- * IDN_LOCALCONV -- perform UTF-8 to local encoding conversion (step 5)
- *
- * Also the following flags are provided for the convenience:
- *
- * IDN_DECODE_QUERY -- On libidnkit, perform step 1..5, except for step
- * 2.4 and 4.1.
- * On libidnkitlite, perform step 1..3, except for
- * step 2.4 and 4.1.
- * IDN_DECODE_STORED -- On libidnkit, perform step 1..5, except for step
- * 4.1.
- * On libidnkitlite, perform step 1..3, except for
- * step 4.1.
- * IDN_DECODE_APP -- Same as IDN_DECODE_QUERY.
- * IDN_NAMEPREP -- perform NAMEPREP (step 2) without unassigned
- * codepoint check (step 2.4).
- *
- * If any step fails, the original input name is returned.
- * 'actions' specifies what actions to take when decoding, and is
- * a bitwise-or of the following flags:
- *
- * Note that if no flags are specified, 'idn_decodename' does nothing
- * but copying the given name verbatim.
- *
- * Returns:
- * idn_success -- ok.
- * idn_invalid_action -- invalid action flag specified.
- * idn_invalid_encoding -- the given string has invalid/illegal
- * byte sequence.
- * idn_buffer_overflow -- 'tolen' is too small.
- * idn_invalid_action -- length of a label is not 1..63 characters.
- * idn_nomemory -- malloc failed.
- *
- * Also, if this function is called without calling 'idn_nameinit',
- * the following error codes might be returned.
- * idn_nofile -- cannot open the configuration file.
- * idn_invalid_syntax -- syntax error found in the file.
- * idn_invalid_name -- there are invalid names (encoding,
- * normalization etc.).
- */
-IDN_EXPORT idn_result_t
-idn_res_decodename(idn_resconf_t ctx, idn_action_t actions, const char *from,
- char *to, size_t tolen);
-
-/*
- * Decode internationalized domain name with auxiliary encoding
- * support.
- *
- * This is another API for IDN string decode. The difference between
- * two is whether the encoding conversion from auxiliary encoding to
- * UTF-8 occurs prior to the actual decode process (read description
- * of idn_res_decodename() above) or not.
- *
- * If auxencoding is NULL, from is treated as UTF-8 encoded string.
- *
- * Other arguments serve exactly same role as those of
- * idn_res_decodename().
- */
-idn_result_t
-idn_res_decodename2(idn_resconf_t ctx, idn_action_t actions, const char *from,
- char *to, size_t tolen, const char *auxencoding);
-
-/*
- * Convert `actions' to a string, and then return the string.
- * This function is for internal use only.
- *
- * Note that this function returns a pointer to static buffer.
- */
-extern const char *
-idn__res_actionstostring(idn_action_t actions);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* IDN_RES_H */
+++ /dev/null
-/* $Id: resconf.h,v 1.1 2003/06/04 00:25:41 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, 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-#ifndef IDN_RESCONF_H
-#define IDN_RESCONF_H 1
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*
- * IDN resolver configuration.
- */
-
-#include <idn/export.h>
-#include <idn/result.h>
-#include <idn/converter.h>
-#include <idn/normalizer.h>
-#include <idn/checker.h>
-#include <idn/mapper.h>
-#include <idn/mapselector.h>
-#include <idn/delimitermap.h>
-
-/*
- * Configuration type (opaque).
- */
-typedef struct idn_resconf *idn_resconf_t;
-
-/*
- * Initialize.
- *
- * Initialize this module and underlying ones. Must be called before
- * any other functions of this module.
- *
- * Returns:
- * idn_success -- ok.
- * idn_nomemory -- malloc failed.
- */
-IDN_EXPORT idn_result_t
-idn_resconf_initialize(void);
-
-/*
- * Create a configuration context.
- *
- * Create an empty context and store it in '*ctxp'.
- *
- * Returns:
- * idn_success -- ok.
- * idn_nomemory -- malloc failed.
- */
-IDN_EXPORT idn_result_t
-idn_resconf_create(idn_resconf_t *ctxp);
-
-/*
- * Destroy the configuration context.
- *
- * Destroy the configuration context created by 'idn_resconf_create',
- * and release memory for it.
- */
-IDN_EXPORT void
-idn_resconf_destroy(idn_resconf_t ctx);
-
-/*
- * Increment reference count of the context created by 'idn_resconf_create'.
- */
-IDN_EXPORT void
-idn_resconf_incrref(idn_resconf_t ctx);
-
-/*
- * Set default configurations to resconf context.
- *
- * "default configurations" means current nameprep and IDN encoding
- * which IDN standard document suggests.
- *
- * Warning: configurations set previously are removed.
- *
- * Returns:
- * idn_success -- ok.
- * idn_invalid_syntax -- syntax error found.
- * idn_invalid_name -- invalid encoding/nomalization name is
- * specified.
- * idn_nomemory -- malloc failed.
- */
-IDN_EXPORT idn_result_t
-idn_resconf_setdefaults(idn_resconf_t ctx);
-
-/*
- * Load configuration file.
- *
- * Parse a configuration file whose name is specified by 'file',
- * store the result in 'ctx'. If 'file' is NULL, the default file is
- * loaded.
- *
- * Returns:
- * idn_success -- ok.
- * idn_nofile -- couldn't open specified file.
- * idn_invalid_syntax -- syntax error found.
- * idn_invalid_name -- invalid encoding/nomalization name is
- * specified.
- * idn_nomemory -- malloc failed.
- */
-IDN_EXPORT idn_result_t
-idn_resconf_loadfile(idn_resconf_t ctx, const char *file);
-
-/*
- * Get the pathname of the default configuration file.
- *
- * Returns:
- * the pathname of the default configuration file.
- */
-IDN_EXPORT char *
-idn_resconf_defaultfile(void);
-
-/*
- * Get an object of lower module that `ctx' holds.
- */
-IDN_EXPORT idn_delimitermap_t
-idn_resconf_getdelimitermap(idn_resconf_t ctx);
-
-IDN_EXPORT idn_converter_t
-idn_resconf_getidnconverter(idn_resconf_t ctx);
-
-IDN_EXPORT idn_converter_t
-idn_resconf_getauxidnconverter(idn_resconf_t ctx);
-
-IDN_EXPORT idn_converter_t
-idn_resconf_getlocalconverter(idn_resconf_t ctx);
-
-IDN_EXPORT idn_mapselector_t
-idn_resconf_getlocalmapselector(idn_resconf_t ctx);
-
-IDN_EXPORT idn_mapper_t
-idn_resconf_getmapper(idn_resconf_t ctx);
-
-IDN_EXPORT idn_normalizer_t
-idn_resconf_getnormalizer(idn_resconf_t ctx);
-
-IDN_EXPORT idn_checker_t
-idn_resconf_getprohibitchecker(idn_resconf_t ctx);
-
-IDN_EXPORT idn_checker_t
-idn_resconf_getunassignedchecker(idn_resconf_t ctx);
-
-IDN_EXPORT idn_checker_t
-idn_resconf_getbidichecker(idn_resconf_t ctx);
-
-/*
- * Set an object of lower module to `ctx'.
- */
-IDN_EXPORT void
-idn_resconf_setdelimitermap(idn_resconf_t ctx,
- idn_delimitermap_t delimiter_mapper);
-
-IDN_EXPORT void
-idn_resconf_setidnconverter(idn_resconf_t ctx,
- idn_converter_t idn_coverter);
-
-IDN_EXPORT void
-idn_resconf_setauxidnconverter(idn_resconf_t ctx,
- idn_converter_t aux_idn_coverter);
-
-IDN_EXPORT void
-idn_resconf_setlocalconverter(idn_resconf_t ctx,
- idn_converter_t local_converter);
-
-IDN_EXPORT void
-idn_resconf_setlocalmapselector(idn_resconf_t ctx,
- idn_mapselector_t map_selector);
-
-IDN_EXPORT void
-idn_resconf_setmapper(idn_resconf_t ctx, idn_mapper_t mapper);
-
-IDN_EXPORT void
-idn_resconf_setnormalizer(idn_resconf_t ctx, idn_normalizer_t normalizer);
-
-IDN_EXPORT void
-idn_resconf_setprohibitchecker(idn_resconf_t ctx,
- idn_checker_t prohibit_checker);
-
-IDN_EXPORT void
-idn_resconf_setunassignedchecker(idn_resconf_t ctx,
- idn_checker_t unassigned_checker);
-
-IDN_EXPORT void
-idn_resconf_setbidichecker(idn_resconf_t ctx,
- idn_checker_t bidi_checker);
-
-/*
- * Set name or add names to an object of lower module that `ctx' holds.
- */
-IDN_EXPORT idn_result_t
-idn_resconf_setidnconvertername(idn_resconf_t ctx, const char *name,
- int flags);
-
-IDN_EXPORT idn_result_t
-idn_resconf_setauxidnconvertername(idn_resconf_t ctx, const char *name,
- int flags);
-
-IDN_EXPORT idn_result_t
-idn_resconf_addalldelimitermapucs(idn_resconf_t ctx, unsigned long *v, int nv);
-
-IDN_EXPORT idn_result_t
-idn_resconf_setlocalconvertername(idn_resconf_t ctx, const char *name,
- int flags);
-
-IDN_EXPORT idn_result_t
-idn_resconf_addalllocalmapselectornames(idn_resconf_t ctx, const char *tld,
- const char **names, int nnames);
-
-IDN_EXPORT idn_result_t
-idn_resconf_addallmappernames(idn_resconf_t ctx, const char **names,
- int nnames);
-
-IDN_EXPORT idn_result_t
-idn_resconf_addallnormalizernames(idn_resconf_t ctx, const char **names,
- int nnames);
-
-IDN_EXPORT idn_result_t
-idn_resconf_addallprohibitcheckernames(idn_resconf_t ctx, const char **names,
- int nnames);
-
-IDN_EXPORT idn_result_t
-idn_resconf_addallunassignedcheckernames(idn_resconf_t ctx, const char **names,
- int nnames);
-
-IDN_EXPORT idn_result_t
-idn_resconf_addallbidicheckernames(idn_resconf_t ctx, const char **names,
- int nnames);
-
-IDN_EXPORT idn_result_t
-idn_resconf_setnameprepversion(idn_resconf_t ctx, const char *version);
-
-/*
- * These macros are provided for backward compatibility to mDNkit 2.1
- * and older.
- */
-IDN_EXPORT void
-idn_resconf_setalternateconverter(idn_resconf_t ctx,
- idn_converter_t alternate_converter);
-
-IDN_EXPORT idn_result_t
-idn_resconf_setalternateconvertername(idn_resconf_t ctx, const char *name,
- int flags);
-
-IDN_EXPORT idn_converter_t
-idn_resconf_getalternateconverter(idn_resconf_t ctx);
-
-
-/*
- * These macros are provided for backward compatibility to idnkit 1.x.
- */
-#define idn_resconf_localconverter(ctx) \
- idn_resconf_getlocalconverter(ctx)
-
-#define idn_resconf_idnconverter(ctx) \
- idn_resconf_getidnconverter(ctx)
-
-#define idn_resconf_alternateconverter(ctx) \
- idn_resconf_getalternateconverter(ctx)
-
-#define idn_resconf_normalizer(ctx) \
- idn_resconf_getnormalizer(ctx)
-
-#define idn_resconf_mapper(ctx) \
- idn_resconf_getmapper(ctx)
-
-#define idn_resconf_delimitermap(ctx) \
- idn_resconf_getdelimitermap(ctx)
-
-#define idn_resconf_localmapselector(ctx) \
- idn_resconf_getlocalmapselector(ctx)
-
-#define idn_resconf_prohibitchecker(ctx) \
- idn_resconf_getprohibitchecker(ctx)
-
-#define idn_resconf_unassignedchecker(ctx) \
- idn_resconf_getunassignedchecker(ctx)
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* IDN_RESCONF_H */
+++ /dev/null
-/* $Id: result.h,v 1.1 2003/06/04 00:25:42 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, 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-#ifndef IDN_RESULT_H
-#define IDN_RESULT_H 1
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <idn/export.h>
-
-/*
- * libidnkit result code.
- */
-typedef enum {
- idn_success,
- idn_notfound,
- idn_invalid_encoding,
- idn_invalid_syntax,
- idn_invalid_name,
- idn_invalid_message,
- idn_invalid_action,
- idn_invalid_codepoint,
- idn_invalid_length,
- idn_buffer_overflow,
- idn_noentry,
- idn_nomemory,
- idn_nofile,
- idn_nomapping,
- idn_context_required,
- idn_prohibited,
- idn_failure /* !!This must be the last one!! */
-} idn_result_t;
-
-/*
- * Get the string description of a result code.
- */
-IDN_EXPORT char *
-idn_result_tostring(idn_result_t result);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* IDN_RESULT_H */
+++ /dev/null
-/* $Id: strhash.h,v 1.1 2003/06/04 00:25:42 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, 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-#ifndef IDN_STRHASH_H
-#define IDN_STRHASH_H 1
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*
- * String-keyed hash table
- *
- * Just a hash table. Nothing special. Number of hash buckets
- * grows automatically.
- */
-
-#include <idn/result.h>
-
-/*
- * Hash table type, which is opaque.
- */
-typedef struct idn__strhash *idn__strhash_t;
-
-/*
- * Hash value free proc.
- */
-typedef void (*idn__strhash_freeproc_t)(void *value);
-
-/*
- * Create a hash table.
- *
- * Returns:
- * idn_success -- ok.
- * idn_nomemory -- malloc failed.
- */
-extern idn_result_t
-idn__strhash_create(idn__strhash_t *hashp);
-
-/*
- * Delete a hash table created by 'idn__strhash_create'.
- * If 'proc' is not NULL, it is called for each value in the
- * hash to release memory for them.
- */
-extern void
-idn__strhash_destroy(idn__strhash_t hash, idn__strhash_freeproc_t proc);
-
-/*
- * Register an item to the hash table. This function makes a
- * private copy of the key string.
- *
- * Returns:
- * idn_success -- ok.
- * idn_nomemory -- malloc failed.
- */
-extern idn_result_t
-idn__strhash_put(idn__strhash_t hash, const char *key, void *value);
-
-/*
- * Find an item with the specified key.
- *
- * Returns:
- * idn_success -- ok. found.
- * idn_noentry -- not found.
- */
-extern idn_result_t
-idn__strhash_get(idn__strhash_t hash, const char *key, void **valuep);
-
-/*
- * Check if an item with the specified key exists.
- *
- * Returns:
- * 1 -- yes.
- * 0 -- no.
- */
-extern int
-idn__strhash_exists(idn__strhash_t hash, const char *key);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* IDN_STRHASH_H */
+++ /dev/null
-/* $Id: ucs4.h,v 1.1 2003/06/04 00:25:42 marka Exp $ */
-/*
- * Copyright (c) 2002 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-#ifndef IDN_UCS4_H
-#define IDN_UCS4_H 1
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*
- * UCS4 encoded string facility.
- */
-
-#include <idn/export.h>
-#include <idn/result.h>
-
-/*
- * UCS4 to UTF-16 conversion and vice versa.
- */
-IDN_EXPORT idn_result_t
-idn_ucs4_ucs4toutf16(const unsigned long *ucs4, unsigned short *utf16,
- size_t tolen);
-
-IDN_EXPORT idn_result_t
-idn_ucs4_utf16toucs4(const unsigned short *utf16, unsigned long *ucs4,
- size_t tolen);
-
-/*
- * UCS4 to UTF-8 conversion and vice versa.
- */
-IDN_EXPORT idn_result_t
-idn_ucs4_utf8toucs4(const char *utf8, unsigned long *ucs4, size_t tolen);
-
-IDN_EXPORT idn_result_t
-idn_ucs4_ucs4toutf8(const unsigned long *ucs4, char *utf8, size_t tolen);
-
-/*
- * UCS4 version of string operation functions.
- */
-IDN_EXPORT size_t
-idn_ucs4_strlen(const unsigned long *ucs4);
-
-IDN_EXPORT unsigned long *
-idn_ucs4_strcpy(unsigned long *to, const unsigned long *from);
-
-IDN_EXPORT unsigned long *
-idn_ucs4_strcat(unsigned long *to, const unsigned long *from);
-
-IDN_EXPORT int
-idn_ucs4_strcmp(const unsigned long *str1, const unsigned long *str2);
-
-IDN_EXPORT int
-idn_ucs4_strcasecmp(const unsigned long *str1, const unsigned long *str2);
-
-IDN_EXPORT unsigned long *
-idn_ucs4_strdup(const unsigned long *str);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* IDN_UCS4_H */
+++ /dev/null
-/* $Id: ucsmap.h,v 1.1 2003/06/04 00:25:42 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-#ifndef IDN_UCSMAP_H
-#define IDN_UCSMAP_H 1
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*
- * Perform UCS character mapping.
- * This module support one-to-N mapping (N may be zero, one or more).
- */
-
-#include <idn/export.h>
-#include <idn/result.h>
-
-/*
- * Mapper type (opaque).
- */
-typedef struct idn_ucsmap *idn_ucsmap_t;
-
-/*
- * Create an empty mapping. The reference count is set to 1.
- *
- * Returns:
- * idn_success -- ok.
- * idn_nomemory -- malloc failed.
- */
-IDN_EXPORT idn_result_t
-idn_ucsmap_create(idn_ucsmap_t *ctxp);
-
-/*
- * Decrement the reference count of the given set, and if it reaches zero,
- * release all the memory allocated for it.
- */
-IDN_EXPORT void
-idn_ucsmap_destroy(idn_ucsmap_t ctx);
-
-/*
- * Increment the reference count of the given set by one, so that
- * the map can be shared.
- */
-IDN_EXPORT void
-idn_ucsmap_incrref(idn_ucsmap_t ctx);
-
-/*
- * Add a mapping.
- * 'ucs' is the character to be mapped, 'map' points an array of mapped
- * characters of length 'maplen'. 'map' may be NULL if 'maplen' is zero,
- * meaning one-to-none mapping.
- *
- * Returns:
- * idn_success -- ok.
- * idn_nomemory -- malloc failed.
- * idn_failure -- already fixed by 'idn_ucsmap_fix',
- * or too large maplen.
- */
-IDN_EXPORT idn_result_t
-idn_ucsmap_add(idn_ucsmap_t ctx, unsigned long ucs, unsigned long *map,
- size_t maplen);
-
-/*
- * Perform internal arrangement of the map for lookup.
- * Once it is fixed, 'idn_ucsmap_add' cannot be permitted to the map.
- */
-IDN_EXPORT void
-idn_ucsmap_fix(idn_ucsmap_t ctx);
-
-/*
- * Find the mapping for the given character.
- * 'idn_ucsmap_fix' must be performed before calling this function.
- * Find the mapping for 'v' and store the result to 'to'. The length
- * of the mapped sequence is stored in '*maplenp'. 'tolen' specifies
- * the length allocated for 'to'.
- *
- * Returns:
- * idn_success -- ok.
- * idn_nomapping -- specified character has no mapping.
- * idn_failure -- not fixed by 'idn_ucsmap_fix' yet.
- */
-IDN_EXPORT idn_result_t
-idn_ucsmap_map(idn_ucsmap_t ctx, unsigned long v, unsigned long *to,
- size_t tolen, size_t *maplenp);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* IDN_UCSMAP_H */
+++ /dev/null
-/* $Id: ucsset.h,v 1.1 2003/06/04 00:25:43 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-#ifndef IDN_UCSSET_H
-#define IDN_UCSSET_H 1
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*
- * A 'set' of UCS codepoints.
- */
-
-#include <idn/export.h>
-#include <idn/result.h>
-
-/*
- * Type representing a set (opaque).
- */
-typedef struct idn_ucsset *idn_ucsset_t;
-
-
-/*
- * Create an empty set. The reference count is set to 1.
- *
- * Returns:
- * idn_success -- ok.
- * idn_nomemory -- malloc failed.
- */
-IDN_EXPORT idn_result_t
-idn_ucsset_create(idn_ucsset_t *ctxp);
-
-/*
- * Decrement the reference count of the given set, and if it reaches zero,
- * release all the memory allocated for it.
- */
-IDN_EXPORT void
-idn_ucsset_destroy(idn_ucsset_t ctx);
-
-/*
- * Increments the reference count by one.
- */
-IDN_EXPORT void
-idn_ucsset_incrref(idn_ucsset_t ctx);
-
-/*
- * Add a UCS code point to the set.
- * The set must be in the building phase -- that is, before 'idn_ucsset_fix'
- * is called for the set.
- *
- * Returns:
- * idn_success -- ok.
- * idn_invalid_code -- code point out of range.
- * idn_nomemory -- malloc failed.
- * idn_failure -- already fixed by 'idn_ucsset_fix'.
- */
-IDN_EXPORT idn_result_t
-idn_ucsset_add(idn_ucsset_t ctx, unsigned long v);
-
-/*
- * Add a range of code points (from 'from' to 'to', inclusive) to the set.
- * 'from' must not be greater than 'to'.
- * This function is similar to 'idn_ucsset_add' except that it accepts
- * range of code points.
- *
- * Returns:
- * idn_success -- ok.
- * idn_invalid_code -- code point out of range, or the range
- * specification is invalid.
- * idn_nomemory -- malloc failed.
- * idn_failure -- already fixed by 'idn_ucsset_fix'.
- */
-IDN_EXPORT idn_result_t
-idn_ucsset_addrange(idn_ucsset_t ctx, unsigned long from, unsigned long to);
-
-/*
- * Perform internal arrangement of the set for lookup.
- * Before calling this function, a set is in 'building' phase, and code
- * points can be added freely by 'idn_ucsset_add' or 'idn_ucsset_addrange'.
- * But once it is fixed by this function, the set becomes immutable, and
- * it shifts into 'lookup' phase.
- */
-IDN_EXPORT void
-idn_ucsset_fix(idn_ucsset_t ctx);
-
-/*
- * Find if the given code point is in the set.
- * The set must be in the lookup phase -- in other words, 'idn_ucsset_fix'
- * must be called for the set before calling this function.
- * '*found' is set to 1 if the specified code point is in the set, 0 otherwise.
- *
- * Returns:
- * idn_success -- ok.
- * idn_invalid_code -- specified code point is out of range.
- * idn_failure -- not fixed by 'idn_ucsset_fix' yet.
- */
-IDN_EXPORT idn_result_t
-idn_ucsset_lookup(idn_ucsset_t ctx, unsigned long v, int *found);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* IDN_UCSSET_H */
+++ /dev/null
-/* $Id: unicode.h,v 1.1 2003/06/04 00:25:43 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-#ifndef IDN_UNICODE_H
-#define IDN_UNICODE_H 1
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*
- * Unicode attributes retriever.
- *
- * All the information this module provides is based on UnicodeData.txt,
- * CompositionExclusions-1.txt and SpecialCasing.txt, all of which can be
- * obtained from unicode.org.
- *
- * Unicode characters are represented as 'unsigned long'.
- */
-
-#include <idn/result.h>
-
-/*
- * A Handle for Unicode versions.
- */
-typedef struct idn__unicode_ops *idn__unicode_version_t;
-
-/*
- * Context information for case conversion.
- */
-typedef enum {
- idn__unicode_context_unknown,
- idn__unicode_context_final,
- idn__unicode_context_nonfinal
-} idn__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:
- * idn_success -- ok.
- * idn_notfound -- specified version not found.
- */
-extern idn_result_t
-idn__unicode_create(const char *version, idn__unicode_version_t *versionp);
-
-/*
- * Close a handle which was created by 'idn__unicode_create'.
- */
-extern void
-idn__unicode_destroy(idn__unicode_version_t version);
-
-/*
- * Get canonical class.
- *
- * For characters out of unicode range (i.e. above 0xffff), 0 will
- * be returned.
- */
-extern int
-idn__unicode_canonicalclass(idn__unicode_version_t version, unsigned long c);
-
-/*
- * Decompose a character.
- *
- * Decompose character given by 'c', and put the result into 'v',
- * which can hold 'vlen' characters. The number of decomposed characters
- * will be stored in '*decomp_lenp'.
- *
- * If 'compat' is true, compatibility decomposition is performed.
- * Otherwise canonical decomposition is done.
- *
- * Since decomposition is done recursively, no further decomposition
- * will be needed.
- *
- * Returns:
- * idn_success -- ok, decomposed.
- * idn_notfound -- no decomposition possible.
- * idn_buffer_overflow -- 'vlen' is too small.
- */
-extern idn_result_t
-idn__unicode_decompose(idn__unicode_version_t version,
- int compat, unsigned long *v, size_t vlen,
- unsigned long c, int *decomp_lenp);
-
-/*
- * Perform canonical composition.
- *
- * Do canonical composition to the character sequence 'c1' and 'c2', put the
- * result into '*compp'.
- *
- * Since Unicode Nomalization Froms requires only canonical composition,
- * compatibility composition is not supported.
- *
- * Returns:
- * idn_success -- ok, composed.
- * idn_notfound -- no composition possible.
- */
-extern idn_result_t
-idn__unicode_compose(idn__unicode_version_t version,
- unsigned long c1, unsigned long c2, unsigned long *compp);
-
-/*
- * Returns if there may be a canonical composition sequence which starts
- * with the given character.
- *
- * Returns:
- * 1 -- there may be a composition sequence
- * (maybe not).
- * 0 -- no, there is definitely no such sequences.
- */
-extern int
-idn__unicode_iscompositecandidate(idn__unicode_version_t version,
- unsigned long c);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* IDN_UNICODE_H */
+++ /dev/null
-/* $Id: unormalize.h,v 1.1 2003/06/04 00:25:44 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-#ifndef IDN_UNORMALIZE_H
-#define IDN_UNORMALIZE_H 1
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*
- * Unicode Normalizations.
- *
- * Perform 4 normalizations defined by 'Unicode Normalization Forms'
- * (http://www.unicode.org/unicode/reports/tr15)
- *
- * All of the functions use UCS4 encoding for input/output.
- */
-
-#include <idn/result.h>
-#include <idn/unicode.h>
-
-/*
- * Perform Unicode Normalication Form C and KC.
- *
- * They take NUL-terminated UCS4 encoded string 'from', perform
- * the normalization specified by 'version', put the result
- * (also a NUL-terminated UCS4 encoded string) to 'to', which must be
- * able to hold at least 'tolen' bytes.
- *
- * Returns:
- * idn_success -- ok.
- * idn_nomemory -- malloc failed.
- * idn_buffer_overflow -- 'tolen' is too small.
- */
-extern idn_result_t
-idn__unormalize_formkc(idn__unicode_version_t version,
- const unsigned long *from, unsigned long *to,
- size_t tolen);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* IDN_UNORMALIZE_H */
+++ /dev/null
-/* $Id: utf8.h,v 1.1 2003/06/04 00:25:44 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, 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-#ifndef IDN_UTF8_H
-#define IDN_UTF8_H 1
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*
- * UTF-8 encoded string facility.
- */
-
-#include <idn/export.h>
-
-/*
- * Get the length of a character.
- *
- * Get the length (in bytes) of a character whose first byte is pointed
- * by 's'. Since this function only looks one first byte to determine the
- * length, it is possible some of the following bytes are invalid.
- */
-IDN_EXPORT int
-idn_utf8_mblen(const char *s);
-
-/*
- * Get one character.
- *
- * Get the first character of the string pointed by 's', and copy it
- * to 'buf', whose length is 'len'. Returns the number of bytes copied,
- * or zero if the encoding is invalid or len is too small.
- *
- * The area pointed by 'buf' must be large enough to store any UTF-8 encoded
- * character.
- *
- * Note that the copied string is not NUL-terminated.
- */
-IDN_EXPORT int
-idn_utf8_getmb(const char *s, size_t len, char *buf);
-
-/*
- * Get one character in UCS-4.
- *
- * Similar to 'idn_utf8_getmb', except that the result is not in UTF-8
- * encoding, but in UCS-4 format (plain 32bit integer value).
- */
-IDN_EXPORT int
-idn_utf8_getwc(const char *s, size_t len, unsigned long *vp);
-
-/*
- * Put one character.
- *
- * This function is an opposite of 'idn_utf8_getwc'. It takes a UCS-4
- * value 'v', convert it to UTF-8 encoded sequence, and store it to 's',
- * whose length is 'len'. It returns the number of bytes written, or
- * zero 'v' is out of range or 'len' is too small.
- */
-IDN_EXPORT int
-idn_utf8_putwc(char *s, size_t len, unsigned long v);
-
-/*
- * Check the validity of UTF-8 encoded character.
- *
- * Check if the character pointed by 's' is a valid UTF-8 encoded
- * character. Return the length of the character (in bytes) if it is valid,
- * 0 otherwise.
- */
-IDN_EXPORT int
-idn_utf8_isvalidchar(const char *s);
-
-/*
- * Check the validity of UTF-8 encoded string.
- *
- * Check if the NUL-terminated string 's' is valid as a UTF-8 encoded
- * string. Return 1 if it is valid, 0 otherwise.
- */
-IDN_EXPORT int
-idn_utf8_isvalidstring(const char *s);
-
-/*
- * Find first byte of a character.
- *
- * Find the first byte of a character 's' points to. 's' may point
- * the 2nd or later byte of a character. 'known_top' is a pointer to
- * a string which contains 's', and is known to be the first byte of
- * a character. If it couldn't find the first byte between 'known_top'
- * and 's', NULL will be returned.
- */
-IDN_EXPORT char *
-idn_utf8_findfirstbyte(const char *s, const char *known_top);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* IDN_UTF8_H */
+++ /dev/null
-/* $Id: util.h,v 1.1 2003/06/04 00:25:44 marka Exp $ */
-/*
- * Copyright (c) 2000,2002 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-#ifndef IDN_UTIL_H
-#define IDN_UTIL_H 1
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*
- * Utility functions.
- */
-
-/*
- * Check ACE prefix.
- *
- * These functions examine whether `str' begins with `prefix'.
- * They disregard the case difference of ASCII letters ([A-Za-z]).
- * They return 1 if `str' has the ACE prefix, 0 otherwise.
- */
-extern int
-idn__util_asciihaveaceprefix(const char *str, const char *prefix);
-extern int
-idn__util_ucs4haveaceprefix(const unsigned long *str, const char *prefix);
-
-/*
- * Check if all codepoints in the UCS4 string `str' are in the ASCII
- * range (i.e. U+0000...U+007F).
- *
- * The function return 1 if it is, 0 otherwise.
- */
-extern int
-idn__util_ucs4isasciirange(const unsigned long *str);
-
-/*
- * Get registry information from the system. (Windows only)
- */
-#ifdef WIN32
-/*
- * registry top type.
- */
-typedef enum {
- idn__util_hkey_currentuser,
- idn__util_hkey_localmachine
-} idn__util_hkey_t;
-
-extern int
-idn__util_getregistrystring(idn__util_hkey_t topkey, const char *name,
- char *str, size_t length);
-#endif /* WIN32 */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* IDN_UTIL_H */
+++ /dev/null
-/* $Id: version.h,v 1.1 2003/06/04 00:25:44 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-#ifndef IDN_VERSION_H
-#define IDN_VERSION_H 1
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <idn/export.h>
-
-/*
- * Version number of this package.
- */
-#define IDNKIT_VERSION "1.0"
-#define IDNKIT_MAJOR_VERSION 1
-#define IDNKIT_MINOR_VERSION 0
-
-/*
- * Get the version of the library (libidnkit).
- */
-IDN_EXPORT const char *
-idn_version_getstring(void);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* IDN_VERSION_H */
+++ /dev/null
-# $Id: Makefile.in,v 1.1 2003/06/04 00:25: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.
-#
-# 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) 2000-2002 Japan Network Information Center. All rights reserved."
-#
-# 4. The name of JPNIC may not 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.
-
-srcdir = @srcdir@
-VPATH = @srcdir@
-
-prefix = @prefix@
-exec_prefix = @exec_prefix@
-
-includedir = @includedir@
-mdnincludedir = $(includedir)/mdn
-
-INSTALL = @INSTALL@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_DATA = @INSTALL_DATA@
-MKINSTALLDIRS = @top_srcdir@/mkinstalldirs
-SHELL = @SHELL@
-
-HDRS = \
- api.h \
- log.h \
- res.h \
- resconf.h \
- result.h \
- utf8.h \
- version.h
-
-all:
-
-@COMPAT_TRUE@install: all install-compat
-@COMPAT_FALSE@install:
-
-install-compat:
- $(MKINSTALLDIRS) $(DESTDIR)$(mdnincludedir)
- for hdr in $(HDRS); do \
- $(INSTALL_DATA) $(srcdir)/$$hdr $(DESTDIR)$(mdnincludedir)/$$hdr; \
- done
-
-clean:
- rm -f *~
-
-distclean:
- rm -f Makefile
-
-test check:
+++ /dev/null
-/* $Id: api.h,v 1.1 2003/06/04 00:25:45 marka Exp $ */
-/*
- * Copyright (c) 2001,2002 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-#ifndef MDN_API_H
-#define MDN_API_H 1
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <mdn/result.h>
-#include <mdn/res.h>
-#include <idn/api.h>
-
-#define mdn_enable idn_enable
-
-extern idn_result_t
-mdn_nameinit(void);
-
-extern idn_result_t
-mdn_encodename(int actions, const char *from, char *to, size_t tolen);
-
-extern idn_result_t
-mdn_decodename(int actions, const char *from, char *to, size_t tolen);
-
-#define mdn_localtoutf8(from, to, tolen) \
- mdn_encodename(IDN_LOCALCONV, from, to, len)
-#define mdn_delimitermap(from, to, tolen) \
- mdn_encodename(IDN_DELIMMAP, from, to, len)
-#define mdn_localmap(from, to, tolen) \
- mdn_encodename(IDN_LOCALMAP, from, to, len)
-#define mdn_nameprep(from, to, tolen) \
- mdn_encodename(IDN_NAMEPREP, from, to, len)
-#define mdn_utf8toidn(from, to, tolen) \
- mdn_encodename(IDN_IDNCONV, from, to, len)
-#define mdn_idntoutf8(from, to, tolen) \
- mdn_decodename(IDN_IDNCONV, from, to, tolen)
-#define mdn_utf8tolocal(from, to, tolen) \
- mdn_decodename(IDN_LOCALCONV, from, to, tolen)
-
-#define mdn_localtoidn(from, to, tolen) \
- mdn_encodename(IDN_ENCODE_APP, from, to, tolen)
-#define mdn_idntolocal(from, to, tolen) \
- mdn_decodename(IDN_DECODE_APP, from, to, tolen)
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* MDN_API_H */
+++ /dev/null
-/* $Id: localencoding.h,v 1.1 2003/06/04 00:25: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.
- *
- * 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-#ifndef MDN_LOCALENCODING_H
-#define MDN_LOCALENCODING_H 1
-
-#define MDN_LOCALCS_ENV "MDN_LOCAL_CODESET"
-
-#endif /* MDN_LOCALENCODING_H */
+++ /dev/null
-/* $Id: log.h,v 1.1 2003/06/04 00:25: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.
- *
- * 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-#ifndef MDN_LOG_H
-#define MDN_LOG_H 1
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <idn/log.h>
-
-#define mdn_log_proc_t \
- idn_log_proc_t
-
-#define mdn_log_level_fatal \
- idn_log_level_fatal
-#define mdn_log_level_error \
- idn_log_level_error
-#define mdn_log_level_warning \
- idn_log_level_warning
-#define mdn_log_level_info \
- idn_log_level_info
-#define mdn_log_level_trace \
- idn_log_level_trace
-#define mdn_log_level_dump \
- idn_log_level_dump
-
-#define mdn_log_fatal \
- idn_log_fatal
-#define mdn_log_error \
- idn_log_error
-#define mdn_log_warning \
- idn_log_warning
-#define mdn_log_info \
- idn_log_info
-#define mdn_log_trace \
- idn_log_trace
-#define mdn_log_dump \
- idn_log_dump
-#define mdn_log_setlevel \
- idn_log_setlevel
-#define mdn_log_getlevel \
- idn_log_getlevel
-#define mdn_log_setproc \
- idn_log_setproc
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* MDN_LOG_H */
+++ /dev/null
-/* $Id: res.h,v 1.1 2003/06/04 00:25:45 marka Exp $ */
-/*
- * Copyright (c) 2001,2002 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-#ifndef MDN_RES_H
-#define MDN_RES_H 1
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <mdn/resconf.h>
-#include <mdn/result.h>
-#include <idn/res.h>
-
-#define MDN_LOCALCONV \
- IDN_LOCALCONV
-#define MDN_DELIMMAP \
- IDN_DELIMMAP
-#define MDN_LOCALMAP \
- IDN_LOCALMAP
-#define MDN_MAP \
- IDN_MAP
-#define MDN_NORMALIZE \
- IDN_NORMALIZE
-#define MDN_PROHCHECK \
- IDN_PROHCHECK
-#define MDN_UNASCHECK \
- IDN_UNASCHECK
-#define MDN_ASCCHECK \
- IDN_ASCCHECK
-#define MDN_IDNCONV \
- IDN_IDNCONV
-#define MDN_LENCHECK \
- IDN_LENCHECK
-#define MDN_RTCHECK \
- IDN_RTCHECK
-#define MDN_UNDOIFERR \
- IDN_UNDOIFERR
-#define MDN_ENCODE_APP \
- IDN_ENCODE_APP
-#define MDN_DECODE_APP \
- IDN_DECODE_APP
-#define MDN_NAMEPREP \
- IDN_NAMEPREP
-
-#define mdn_res_enable \
- idn_res_enable
-#define mdn_res_encodename \
- idn_res_encodename
-#define mdn_res_decodename \
- idn_res_decodename
-#define mdn_res_actiontostring \
- idn_res_actiontostring
-
-#define mdn_res_localtoutf8 \
- idn_res_localtoutf8
-#define mdn_res_delimitermap \
- idn_res_delimitermap
-#define mdn_res_localmap \
- idn_res_localmap
-#define mdn_res_nameprep \
- idn_res_nameprep
-#define mdn_res_utf8toidn \
- idn_res_utf8toidn
-#define mdn_res_idntoutf8 \
- idn_res_idntoutf8
-#define mdn_res_utf8tolocal \
- idn_res_utf8tolocal
-#define mdn_res_nameprepcheck \
- idn_res_nameprepcheck
-#define mdn_res_localtoidn \
- idn_res_localtoidn
-#define mdn_res_idntolocal \
- idn_res_idntolocal
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* MDN_RES_H */
+++ /dev/null
-/* $Id: resconf.h,v 1.1 2003/06/04 00:25:46 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, 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-#ifndef MDN_RESCONF_H
-#define MDN_RESCONF_H 1
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <mdn/result.h>
-#include <idn/resconf.h>
-
-#define mdn_resconf_t \
- idn_resconf_t
-
-#define mdn_resconf_initialize \
- idn_resconf_initialize
-#define mdn_resconf_create \
- idn_resconf_create
-#define mdn_resconf_destroy \
- idn_resconf_destroy
-
-#define mdn_resconf_incrref \
- idn_resconf_incrref
-#define mdn_resconf_loadfile \
- idn_resconf_loadfile
-#define mdn_resconf_defaultfile \
- idn_resconf_defaultfile
-#define mdn_resconf_getdelimitermap \
- idn_resconf_getdelimitermap
-#define mdn_resconf_getidnconverter \
- idn_resconf_getidnconverter
-#define mdn_resconf_getlocalconverter \
- idn_resconf_getlocalconverter
-#define mdn_resconf_getlocalmapselector \
- idn_resconf_getlocalmapselector
-#define mdn_resconf_getmapper \
- idn_resconf_getmapper
-#define mdn_resconf_getnormalizer \
- idn_resconf_getnormalizer
-#define mdn_resconf_getprohibitchecker \
- idn_resconf_getprohibitchecker
-#define mdn_resconf_getunassignedchecker \
- idn_resconf_getunassignedchecker
-#define mdn_resconf_setdelimitermap \
- idn_resconf_setdelimitermap
-#define mdn_resconf_setidnconverter \
- idn_resconf_setidnconverter
-#define mdn_resconf_setlocalconverter \
- idn_resconf_setlocalconverter
-#define mdn_resconf_setlocalmapselector \
- idn_resconf_setlocalmapselector
-#define mdn_resconf_setmapper \
- idn_resconf_setmapper
-#define mdn_resconf_setnormalizer \
- idn_resconf_setnormalizer
-#define mdn_resconf_setprohibitchecker \
- idn_resconf_setprohibitchecker
-#define mdn_resconf_setunassignedchecker \
- idn_resconf_setunassignedchecker
-#define mdn_resconf_setidnconvertername \
- idn_resconf_setidnconvertername
-#define mdn_resconf_addalldelimitermapucs \
- idn_resconf_addalldelimitermapucs
-#define mdn_resconf_setlocalconvertername \
- idn_resconf_setlocalconvertername
-#define mdn_resconf_addalllocalmapselectornames \
- idn_resconf_addalllocalmapselectornames
-#define mdn_resconf_addallmappernames \
- idn_resconf_addallmappernames
-#define mdn_resconf_addallnormalizernames \
- idn_resconf_addallnormalizernames
-#define mdn_resconf_addallprohibitcheckernames \
- idn_resconf_addallprohibitcheckernames
-#define mdn_resconf_addallunassignedcheckernames \
- idn_resconf_addallunassignedcheckernames
-#define mdn_resconf_setnameprepversion \
- idn_resconf_setnameprepversion
-#define mdn_resconf_setalternateconverter \
- idn_resconf_setalternateconverter
-#define mdn_resconf_setalternateconvertername \
- idn_resconf_setalternateconvertername
-#define mdn_resconf_getalternateconverter \
- idn_resconf_getalternateconverter
-
-#define mdn_resconf_localconverter \
- idn_resconf_localconverter
-#define mdn_resconf_idnconverter \
- idn_resconf_idnconverter
-#define mdn_resconf_alternateconverter \
- idn_resconf_alternateconverter
-#define mdn_resconf_normalizer \
- idn_resconf_normalizer
-#define mdn_resconf_mapper \
- idn_resconf_mapper
-#define mdn_resconf_delimitermap \
- idn_resconf_delimitermap
-#define mdn_resconf_localmapselector \
- idn_resconf_localmapselector
-#define mdn_resconf_prohibitchecker \
- idn_resconf_prohibitchecker
-#define mdn_resconf_unassignedchecker \
- idn_resconf_unassignedchecker
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* MDN_RESCONF_H */
+++ /dev/null
-/* $Id: result.h,v 1.1 2003/06/04 00:25:46 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, 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-#ifndef MDN_RESULT_H
-#define MDN_RESULT_H 1
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <idn/result.h>
-
-#define mdn_result_t \
- idn_result_t
-
-#define mdn_success \
- idn_success
-#define mdn_notfound \
- idn_notfound
-#define mdn_invalid_encoding \
- idn_invalid_encoding
-#define mdn_invalid_syntax \
- idn_invalid_syntax
-#define mdn_invalid_name \
- idn_invalid_name
-#define mdn_invalid_message \
- idn_invalid_message
-#define mdn_invalid_action \
- idn_invalid_action
-#define mdn_invalid_codepoint \
- idn_invalid_codepoint
-#define mdn_invalid_length \
- idn_invalid_length
-#define mdn_buffer_overflow \
- idn_buffer_overflow
-#define mdn_noentry \
- idn_noentry
-#define mdn_nomemory \
- idn_nomemory
-#define mdn_nofile \
- idn_nofile
-#define mdn_nomapping \
- idn_nomapping
-#define mdn_context_required \
- idn_context_required
-#define mdn_prohibited \
- idn_prohibited
-#define mdn_failure \
- idn_failure
-#define mdn_result_tostring \
- idn_result_tostring
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* MDN_RESULT_H */
+++ /dev/null
-/* $Id: utf8.h,v 1.1 2003/06/04 00:25:46 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, 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-#ifndef MDN_UTF8_H
-#define MDN_UTF8_H 1
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define mdn_utf8_mblen \
- idn_utf8_mblen
-#define mdn_utf8_getmb \
- idn_utf8_getmb
-#define mdn_utf8_getwc \
- idn_utf8_getwc
-#define mdn_utf8_putwc \
- idn_utf8_putwc
-#define mdn_utf8_isvalidchar \
- idn_utf8_isvalidchar
-#define mdn_utf8_isvalidstring \
- idn_utf8_isvalidstring
-#define mdn_utf8_findfirstbyte \
- idn_utf8_findfirstbyte
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* MDN_UTF8_H */
+++ /dev/null
-/* $Id: version.h,v 1.1 2003/06/04 00:25:46 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-#ifndef MDN_VERSION_H
-#define MDN_VERSION_H 1
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <idn/version.h>
-
-/*
- * Version number of this package.
- */
-#define MDNKIT_VERSION "idnkit " IDNKIT_VERSION
-#define MDNKIT_MAJOR_VERSION (IDNKIT_MAJOR_VERSION + 4)
-#define MDNKIT_MINOR_VERSION IDNKIT_MINOR_VERSION
-
-#define mdn_version_getstring idn_version_getstring
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* MDN_VERSION_H */
+++ /dev/null
-#! /bin/sh
-#
-# install - install a program, script, or datafile
-# This comes from X11R5 (mit/util/scripts/install.sh).
-#
-# Copyright 1991 by the Massachusetts Institute of Technology
-#
-# Permission to use, copy, modify, distribute, and sell this software and its
-# documentation for any purpose is hereby granted without fee, provided that
-# the above copyright notice appear in all copies and that both that
-# copyright notice and this permission notice appear in supporting
-# documentation, and that the name of M.I.T. not be used in advertising or
-# publicity pertaining to distribution of the software without specific,
-# written prior permission. M.I.T. makes no representations about the
-# suitability of this software for any purpose. It is provided "as is"
-# without express or implied warranty.
-#
-# Calling this script install-sh is preferred over install.sh, to prevent
-# `make' implicit rules from creating a file called install from it
-# when there is no Makefile.
-#
-# This script is compatible with the BSD install script, but was written
-# from scratch. It can only install one file at a time, a restriction
-# shared with many OS's install programs.
-
-
-# set DOITPROG to echo to test this script
-
-# Don't use :- since 4.3BSD and earlier shells don't like it.
-doit="${DOITPROG-}"
-
-
-# put in absolute paths if you don't have them in your path; or use env. vars.
-
-mvprog="${MVPROG-mv}"
-cpprog="${CPPROG-cp}"
-chmodprog="${CHMODPROG-chmod}"
-chownprog="${CHOWNPROG-chown}"
-chgrpprog="${CHGRPPROG-chgrp}"
-stripprog="${STRIPPROG-strip}"
-rmprog="${RMPROG-rm}"
-mkdirprog="${MKDIRPROG-mkdir}"
-
-transformbasename=""
-transform_arg=""
-instcmd="$mvprog"
-chmodcmd="$chmodprog 0755"
-chowncmd=""
-chgrpcmd=""
-stripcmd=""
-rmcmd="$rmprog -f"
-mvcmd="$mvprog"
-src=""
-dst=""
-dir_arg=""
-
-while [ x"$1" != x ]; do
- case $1 in
- -c) instcmd="$cpprog"
- shift
- continue;;
-
- -d) dir_arg=true
- shift
- continue;;
-
- -m) chmodcmd="$chmodprog $2"
- shift
- shift
- continue;;
-
- -o) chowncmd="$chownprog $2"
- shift
- shift
- continue;;
-
- -g) chgrpcmd="$chgrpprog $2"
- shift
- shift
- continue;;
-
- -s) stripcmd="$stripprog"
- shift
- continue;;
-
- -t=*) transformarg=`echo $1 | sed 's/-t=//'`
- shift
- continue;;
-
- -b=*) transformbasename=`echo $1 | sed 's/-b=//'`
- shift
- continue;;
-
- *) if [ x"$src" = x ]
- then
- src=$1
- else
- # this colon is to work around a 386BSD /bin/sh bug
- :
- dst=$1
- fi
- shift
- continue;;
- esac
-done
-
-if [ x"$src" = x ]
-then
- echo "install: no input file specified"
- exit 1
-else
- true
-fi
-
-if [ x"$dir_arg" != x ]; then
- dst=$src
- src=""
-
- if [ -d $dst ]; then
- instcmd=:
- else
- instcmd=mkdir
- fi
-else
-
-# Waiting for this to be detected by the "$instcmd $src $dsttmp" command
-# might cause directories to be created, which would be especially bad
-# if $src (and thus $dsttmp) contains '*'.
-
- if [ -f $src -o -d $src ]
- then
- true
- else
- echo "install: $src does not exist"
- exit 1
- fi
-
- if [ x"$dst" = x ]
- then
- echo "install: no destination specified"
- exit 1
- else
- true
- fi
-
-# If destination is a directory, append the input filename; if your system
-# does not like double slashes in filenames, you may need to add some logic
-
- if [ -d $dst ]
- then
- dst="$dst"/`basename $src`
- else
- true
- fi
-fi
-
-## this sed command emulates the dirname command
-dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
-
-# Make sure that the destination directory exists.
-# this part is taken from Noah Friedman's mkinstalldirs script
-
-# Skip lots of stat calls in the usual case.
-if [ ! -d "$dstdir" ]; then
-defaultIFS='
-'
-IFS="${IFS-${defaultIFS}}"
-
-oIFS="${IFS}"
-# Some sh's can't handle IFS=/ for some reason.
-IFS='%'
-set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'`
-IFS="${oIFS}"
-
-pathcomp=''
-
-while [ $# -ne 0 ] ; do
- pathcomp="${pathcomp}${1}"
- shift
-
- if [ ! -d "${pathcomp}" ] ;
- then
- $mkdirprog "${pathcomp}"
- else
- true
- fi
-
- pathcomp="${pathcomp}/"
-done
-fi
-
-if [ x"$dir_arg" != x ]
-then
- $doit $instcmd $dst &&
-
- if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi &&
- if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi &&
- if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi &&
- if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi
-else
-
-# If we're going to rename the final executable, determine the name now.
-
- if [ x"$transformarg" = x ]
- then
- dstfile=`basename $dst`
- else
- dstfile=`basename $dst $transformbasename |
- sed $transformarg`$transformbasename
- fi
-
-# don't allow the sed command to completely eliminate the filename
-
- if [ x"$dstfile" = x ]
- then
- dstfile=`basename $dst`
- else
- true
- fi
-
-# Make a temp file name in the proper directory.
-
- dsttmp=$dstdir/#inst.$$#
-
-# Move or copy the file name to the temp name
-
- $doit $instcmd $src $dsttmp &&
-
- trap "rm -f ${dsttmp}" 0 &&
-
-# and set any options; do chmod last to preserve setuid bits
-
-# If any of these fail, we abort the whole thing. If we want to
-# ignore errors from any of these, just make sure not to ignore
-# errors from the above "$doit $instcmd $src $dsttmp" command.
-
- if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi &&
- if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi &&
- if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi &&
- if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi &&
-
-# Now rename the file to the real destination.
-
- $doit $rmcmd -f $dstdir/$dstfile &&
- $doit $mvcmd $dsttmp $dstdir/$dstfile
-
-fi &&
-
-
-exit 0
+++ /dev/null
-# $Id: Makefile.in,v 1.2 2004/07/20 07:13:39 marka Exp $
-# Copyright (c) 2000, 2002 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) 2000-2002 Japan Network Information Center. All rights reserved."
-#
-# 4. The name of JPNIC may not 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.
-
-build = @build@
-
-LIB_CURRENT = 1
-LIB_REVISION = 2
-LIB_AGE = 0
-
-.SUFFIXES:
-.SUFFIXES: .c .lo .to
-
-top_builddir = ..
-
-srcdir = @srcdir@
-VPATH = @srcdir@
-
-prefix = @prefix@
-exec_prefix = @exec_prefix@
-
-libdir = @libdir@
-sysconfdir = @sysconfdir@
-datadir = @datadir@
-mapdir = $(datadir)/idnkit
-utf8_name = @UTF8_NAME@
-
-SUBDIRS = tests
-
-SHELL = @SHELL@
-CC = @CC@
-RANLIB = @RANLIB@
-INSTALL = @INSTALL@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_DATA = @INSTALL_DATA@
-MKINSTALLDIRS = @top_srcdir@/mkinstalldirs
-LIBTOOL = @LIBTOOL@
-
-ICONVINC = @ICONVINC@
-ICONVLIB = @ICONVLIB@
-
-INCS = -I$(srcdir)/../include -I../include $(ICONVINC)
-DEFS = -DIDN_RESCONF_DIR="\"$(sysconfdir)\""
-
-CFLAGS = $(OPTS) $(INCS) $(DEFS) @CPPFLAGS@ @CFLAGS@
-LDFLAGS = @LDFLAGS@
-
-SRCS = \
- aliaslist.c \
- api.c \
- checker.c \
- converter.c \
- debug.c \
- delimitermap.c \
- filechecker.c \
- filemapper.c \
- localencoding.c \
- log.c \
- mapper.c \
- mapselector.c \
- nameprep.c \
- nameprep_template.c \
- nameprepdata.c \
- normalizer.c \
- punycode.c \
- race.c \
- res.c \
- resconf.c \
- result.c \
- strhash.c \
- ucs4.c \
- ucsmap.c \
- ucsset.c \
- unicode.c \
- unicode_template.c \
- unicodedata_320.c \
- unormalize.c \
- util.c \
- utf8.c \
- version.c
-
-OBJS = \
- aliaslist.lo \
- api.lo \
- checker.lo \
- converter.lo \
- debug.lo \
- delimitermap.lo \
- filechecker.lo \
- filemapper.lo \
- localencoding.lo \
- log.lo \
- mapper.lo \
- mapselector.lo \
- nameprep.lo \
- normalizer.lo \
- punycode.lo \
- race.lo \
- res.lo \
- resconf.lo \
- result.lo \
- strhash.lo \
- ucs4.lo \
- ucsmap.lo \
- ucsset.lo \
- unicode.lo \
- unormalize.lo \
- utf8.lo \
- util.lo \
- version.lo
-
-LIB = libidnkit
-TESTLIB = libidntest
-
-LITELIBCFLAGS = $(CFLAGS) -DWITHOUT_ICONV
-LITELIB_OBJS = \
- apilite.lo \
- converterlite.lo \
- reslite.lo \
- resconflite.lo \
- aliaslist.lo \
- checker.lo \
- debug.lo \
- delimitermap.lo \
- filechecker.lo \
- filemapper.lo \
- log.lo \
- mapper.lo \
- mapselector.lo \
- nameprep.lo \
- normalizer.lo \
- punycode.lo \
- race.lo \
- result.lo \
- strhash.lo \
- ucsmap.lo \
- ucsset.lo \
- unicode.lo \
- unormalize.lo \
- ucs4.lo \
- utf8.lo \
- util.lo \
- version.lo
-
-LITELIB = libidnkitlite
-TESTLITELIB = libidntestlite
-
-SAMPLES = idn.conf.sample idnalias.conf.sample
-
-.c.lo:
- $(LIBTOOL) --mode=compile $(CC) $(CFLAGS) -c $<
-
-.c.to:
- $(CC) -o $@ -DTEST $(CFLAGS) $(LDFLAGS) -c $<
-
-all: all-localdir all-subdirs
-@LITEONLY_TRUE@all-localdir: $(LITELIB).la $(SAMPLES)
-@LITEONLY_FALSE@all-localdir: $(LIB).la $(LITELIB).la $(SAMPLES)
-
-$(LIB).la: $(OBJS)
- $(LIBTOOL) --mode=link $(LD) $(LDFLAGS) -o $@ \
- -version-info $(LIB_CURRENT):$(LIB_REVISION):$(LIB_AGE) \
- -rpath $(libdir) $(OBJS)
-
-$(TESTLIB).la: $(OBJS)
- $(LIBTOOL) --mode=link $(LD) $(LDFLAGS) -o $@ \
- -version-info $(LIB_CURRENT):$(LIB_REVISION):$(LIB_AGE) \
- -rpath $(libdir) $(OBJS)
-
-apilite.lo: api.c
- $(LIBTOOL) --mode=compile $(CC) $(LITELIBCFLAGS) -o $@ \
- -c $(srcdir)/api.c
-converterlite.lo: converter.c
- $(LIBTOOL) --mode=compile $(CC) $(LITELIBCFLAGS) -o $@ \
- -c $(srcdir)/converter.c
-reslite.lo: res.c
- $(LIBTOOL) --mode=compile $(CC) $(LITELIBCFLAGS) -o $@ \
- -c $(srcdir)/res.c
-resconflite.lo: resconf.c
- $(LIBTOOL) --mode=compile $(CC) $(LITELIBCFLAGS) -o $@ \
- -c $(srcdir)/resconf.c
-
-$(LITELIB).la: $(LITELIB_OBJS)
- $(LIBTOOL) --mode=link $(LD) $(LDFLAGS) -o $@ \
- -version-info $(LIB_CURRENT):$(LIB_REVISION):$(LIB_AGE) \
- -rpath $(libdir) $(LITELIB_OBJS)
-
-$(TESTLITELIB).la: $(LITELIB_OBJS)
- $(LIBTOOL) --mode=link $(LD) $(LDFLAGS) -o $@ \
- -version-info $(LIB_CURRENT):$(LIB_REVISION):$(LIB_AGE) \
- -rpath $(libdir) $(LITELIB_OBJS)
-
-idn.conf.sample: idn.conf.sample.in
- sed -e 's%[@]mapdir[@]%$(mapdir)%' \
- < $(srcdir)/idn.conf.sample.in > $@
-
-idnalias.conf.sample: Makefile
- $(SHELL) $(srcdir)/aliaslist.sh $(build) $(utf8_name) > $@
-
-install: install-localdir install-subdirs
-@LITEONLY_TRUE@install-localdir: all install-common
-@LITEONLY_FALSE@install-localdir: all install-common install-nolite
-
-install-common:
- $(MKINSTALLDIRS) $(DESTDIR)$(libdir)
- $(LIBTOOL) $(INSTALL_DATA) $(LITELIB).la \
- $(DESTDIR)$(libdir)/$(LITELIB).la
- -[ -f $(DESTDIR)$(libdir)/$(LITELIB).a ] \
- && $(RANLIB) $(DESTDIR)$(libdir)/$(LITELIB).a
- $(MKINSTALLDIRS) $(DESTDIR)$(sysconfdir)
- $(INSTALL_DATA) idn.conf.sample \
- $(DESTDIR)$(sysconfdir)/idn.conf.sample
- $(INSTALL_DATA) idnalias.conf.sample \
- $(DESTDIR)$(sysconfdir)/idnalias.conf.sample
- @if [ ! -f $(DESTDIR)$(sysconfdir)/idn.conf ]; then \
- echo "** installing default idn.conf"; \
- $(INSTALL_DATA) idn.conf.sample $(DESTDIR)$(sysconfdir)/idn.conf; \
- fi
- @if [ ! -f $(DESTDIR)$(sysconfdir)/idnalias.conf ]; then \
- echo "** installing default idnalias.conf"; \
- $(INSTALL_DATA) idnalias.conf.sample \
- $(DESTDIR)$(sysconfdir)/idnalias.conf; \
- fi
-
-install-nolite:
- $(MKINSTALLDIRS) $(DESTDIR)$(libdir)
- $(LIBTOOL) $(INSTALL_DATA) $(LIB).la \
- $(DESTDIR)$(libdir)/$(LIB).la
- -[ -f $(DESTDIR)$(libdir)/$(LIB).a ] \
- && $(RANLIB) $(DESTDIR)$(libdir)/$(LIB).a
-
-install-config:
- @if [ -f $(DESTDIR)$(sysconfdir)/idn.conf ]; then \
- echo "** backing up old idn.conf as idn.conf.old"; \
- mv -f $(DESTDIR)$(sysconfdir)/idn.conf \
- $(DESTDIR)$(sysconfdir)/idn.conf.old; \
- fi
- @echo "** installing default idn.conf forcibly"
- $(INSTALL_DATA) idn.conf.sample $(DESTDIR)$(sysconfdir)/idn.conf
- @if [ -f $(DESTDIR)$(sysconfdir)/idnalias.conf ]; then \
- echo "** backing up old idnalias.conf as idnalias.conf.old"; \
- mv -f $(DESTDIR)$(sysconfdir)/idnalias.conf \
- $(DESTDIR)$(sysconfdir)/idnalias.conf.old; \
- fi
- @echo "** installing default idnalias.conf forcibly"
- $(INSTALL_DATA) idnalias.conf.sample \
- $(DESTDIR)$(sysconfdir)/idnalias.conf
-
-clean: clean-localdir clean-subdirs
-clean-localdir: force
- rm -f *.o *.lo *.la *.a core *.core *~
- rm -f *.to *_test.c *_test
- rm -f idn.conf.sample idnalias.conf.sample
- rm -fr .libs/
-
-distclean: distclean-localdir distclean-subdirs
-distclean-localdir: force clean-localdir
- rm -f Makefile
-
-test check: test-localdir test-subdirs
-
-@LITEONLY_TRUE@test-localdir: $(TESTLITELIB).la $(SAMPLES)
-@LITEONLY_FALSE@test-localdir: $(TESTLIB).la $(TESTLITELIB).la $(SAMPLES)
-
-all-subdirs install-subdirs clean-subdirs distclean-subdirs test-subdirs:
- @target=`echo $@ | sed 's/-subdirs$$//'`; \
- for d in $(SUBDIRS) ; do \
- (cd $$d; $(MAKE) DESTDIR=$(DESTDIR) $$target); \
- done
-
-force:
+++ /dev/null
-#ifndef lint
-static char *rcsid = "$Id: aliaslist.c,v 1.1 2003/06/04 00:25:47 marka Exp $";
-#endif
-
-/*
- * Copyright (c) 2002 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-#include <config.h>
-
-#include <stddef.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <ctype.h>
-
-#include <idn/aliaslist.h>
-#include <idn/assert.h>
-#include <idn/logmacro.h>
-#include <idn/result.h>
-
-struct aliasitem {
- char *pattern; /* name pattern */
- char *encoding; /* MIME-preferred charset name */
- struct aliasitem *next;
-};
-typedef struct aliasitem *aliasitem_t;
-
-struct idn__aliaslist {
- aliasitem_t first_item; /* first item of the list */
-};
-
-static idn_result_t
-additem_to_top(idn__aliaslist_t list,
- const char *pattern, const char *encoding);
-
-static idn_result_t
-additem_to_bottom(idn__aliaslist_t list,
- const char *pattern, const char *encoding);
-
-static int match(const char *pattern, const char *str);
-
-static idn_result_t create_item(const char *pattern, const char *encoding,
- aliasitem_t *itemp);
-
-#ifdef DEBUG
-static void dump_list(idn__aliaslist_t list);
-#endif
-
-idn_result_t
-idn__aliaslist_create(idn__aliaslist_t *listp) {
- static int size = sizeof(struct idn__aliaslist);
-
- TRACE(("idn__aliaslist_create()\n"));
-
- assert(listp != NULL);
-
- if ((*listp = malloc(size)) == NULL) {
- return (idn_nomemory);
- }
- (*listp)->first_item = NULL;
-
- return (idn_success);
-}
-
-void
-idn__aliaslist_destroy(idn__aliaslist_t list) {
- aliasitem_t current;
- aliasitem_t next;
-
- TRACE(("idn__aliaslist_destroy()\n"));
-
- assert(list != NULL);
-
- current = list->first_item;
- while (current != NULL) {
- if (current->pattern != NULL) {
- free(current->pattern);
- }
- if (current->encoding != NULL) {
- free(current->encoding);
- }
- next = current->next;
- free(current);
- current = next;
- }
- free(list);
-}
-
-idn_result_t
-idn__aliaslist_aliasfile(idn__aliaslist_t list, const char *path) {
- FILE *fp;
- int line_no;
- idn_result_t r = idn_success;
- char line[200], alias[200], real[200];
-
- assert(path != NULL);
-
- TRACE(("idn__aliaslist_aliasfile(path=%s)\n", path));
-
- if ((fp = fopen(path, "r")) == NULL) {
- return (idn_nofile);
- }
- for (line_no = 1; fgets(line, sizeof(line), fp) != NULL; line_no++) {
- unsigned char *p = (unsigned char *)line;
-
- while (isascii(*p) && isspace(*p))
- p++;
- if (*p == '#' || *p == '\n')
- continue;
- if (sscanf((char *)p, "%s %s", alias, real) == 2) {
- r = additem_to_bottom(list, alias, real);
- if (r != idn_success)
- break;
- } else {
- INFO(("idn__aliaslist_aliasfile: file %s has "
- "invalid contents at line %d\n",
- path, line_no));
- r = idn_invalid_syntax;
- break;
- }
- }
- fclose(fp);
-
-#ifdef DEBUG
- dump_list(list);
-#endif
-
- return (r);
-}
-
-idn_result_t
-idn__aliaslist_additem(idn__aliaslist_t list,
- const char *pattern, const char *encoding,
- int first_item) {
- if (first_item) {
- return additem_to_top(list, pattern, encoding);
- } else {
- return additem_to_bottom(list, pattern, encoding);
- }
-}
-
-static idn_result_t
-additem_to_top(idn__aliaslist_t list,
- const char *pattern, const char *encoding) {
- aliasitem_t new_item;
- idn_result_t r;
-
- TRACE(("additem_to_top()\n"));
-
- assert(list != NULL);
- assert(pattern != NULL);
- assert(encoding != NULL);
-
- if ((r = create_item(pattern, encoding, &new_item))
- != idn_success) {
- WARNING(("additem_to_top: malloc failed\n"));
- return (r);
- }
-
- new_item->next = list->first_item;
- list->first_item = new_item;
-
-#ifdef DEBUG
- dump_list(list);
-#endif
-
- return (idn_success);
-}
-
-static idn_result_t
-additem_to_bottom(idn__aliaslist_t list,
- const char *pattern, const char *encoding) {
- aliasitem_t new_item;
- idn_result_t r;
-
- TRACE(("additem_to_bottom()\n"));
-
- assert(list != NULL);
- assert(pattern != NULL);
- assert(encoding != NULL);
-
- r = create_item(pattern, encoding, &new_item);
- if (r != idn_success) {
- WARNING(("additem_to_bottom: malloc failed\n"));
- return r;
- }
-
- if (list->first_item == NULL) {
- list->first_item = new_item;
- } else {
- aliasitem_t cur_item = list->first_item;
- for (;;) {
- if (cur_item->next == NULL) {
- break;
- }
- cur_item = cur_item->next;
- }
- cur_item->next = new_item;
- }
-
- return (idn_success);
-}
-
-idn_result_t
-idn__aliaslist_find(idn__aliaslist_t list,
- const char *pattern, char **encodingp) {
- aliasitem_t current;
-
- TRACE(("idn__aliaslist_find()\n"));
-
- assert(list != NULL);
- assert(pattern != NULL);
-
-#ifdef DEBUG
- DUMP(("target pattern: %s\n", pattern));
-#endif
- current = list->first_item;
- while (current != NULL) {
-#ifdef DEBUG
- DUMP(("current pattern: %s, encoding: %s\n",
- current->pattern, current->encoding));
-#endif
- if (match(current->pattern, pattern)) {
- *encodingp = current->encoding;
- return (idn_success);
- }
- current = current->next;
- }
-
- TRACE(("idn__aliaslist_find(): not found\n"));
- *encodingp = (char *)pattern;
- return (idn_notfound);
-}
-
-/*
- * Wild card matching function that supports only '*'.
- */
-static int
-match(const char *pattern, const char *str) {
- for (;;) {
- int c;
-
- switch (c = *pattern++) {
- case '\0':
- return (*str == '\0');
- case '*':
- while (!match(pattern, str)) {
- if (*str == '\0')
- return (0);
- str++;
- }
- return (1);
- break;
- default:
- if (*str++ != c)
- return (0);
- break;
- }
- }
-}
-
-/*
- * List item creation.
- * pattern and encoding must not be NULL.
- */
-static idn_result_t
-create_item(const char *pattern, const char *encoding,
- aliasitem_t *itemp) {
- static size_t size = sizeof(struct aliasitem);
-
- assert(pattern != NULL);
- assert(encoding != NULL);
-
- if ((*itemp = malloc(size)) == NULL)
- return (idn_nomemory);
-
- if (((*itemp)->pattern = malloc(strlen(pattern) + 1)) == NULL) {
- free(*itemp);
- *itemp = NULL;
- return (idn_nomemory);
- }
-
- if (((*itemp)->encoding = malloc(strlen(encoding) + 1)) == NULL) {
- free((*itemp)->pattern);
- free(*itemp);
- *itemp = NULL;
- return (idn_nomemory);
- }
-
- (void)strcpy((*itemp)->pattern, pattern);
- (void)strcpy((*itemp)->encoding, encoding);
- (*itemp)->next = NULL;
-
- return (idn_success);
-}
-
-#ifdef DEBUG
-static void
-dump_list(idn__aliaslist_t list) {
- aliasitem_t item;
- int i;
-
- TRACE(("dump_list()\n"));
- if (list == NULL) {
- TRACE(("list is NULL\n"));
- return;
- }
- item = list->first_item;
- i = 0;
- while (item != NULL) {
- DUMP(("%d: %s\t%s\n", i, item->pattern, item->encoding));
- item = item->next;
- i++;
- }
-}
-#endif
+++ /dev/null
-#!/bin/sh
-#
-# aliaslist.sh -- Generate `idnalias.conf.sample' file.
-#
-
-cpu_company_system="$1"
-utf8_name="$2"
-
-cat <<EOF
-*.ISO_8859-1 ISO-8859-1
-*.ISO_8859-2 ISO-8859-1
-*.SJIS Shift_JIS
-*.Shift_JIS Shift_JIS
-ja_JP.EUC EUC-JP
-ko_KR.EUC EUC-KR
-*.big5 Big5
-*.Big5 Big5
-*.KOI8-R KOI8-R
-*.GB2312 GB2312
-ja EUC-JP
-EOF
-
-case "$cpu_company_system" in
-*-*-hpux*)
- echo "japanese Shift_JIS"
- ;;
-*)
- echo "japanese EUC-JP"
-esac
-
-if [ "x$utf8_name" != xUTF-8 ] ; then
- echo "UTF-8 $utf8_name"
-fi
-
-exit 0
+++ /dev/null
-#ifndef lint
-static char *rcsid = "$Id: api.c,v 1.1 2003/06/04 00:25:48 marka Exp $";
-#endif
-
-/*
- * Copyright (c) 2001,2002 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-#include <config.h>
-
-#include <string.h>
-#include <stdlib.h>
-
-#include <idn/result.h>
-#include <idn/assert.h>
-#include <idn/log.h>
-#include <idn/logmacro.h>
-#include <idn/resconf.h>
-#include <idn/api.h>
-#include <idn/debug.h>
-#include <idn/res.h>
-
-static int initialized;
-static idn_resconf_t default_conf;
-
-static char *conf_file;
-
-void
-idn_enable(int on_off) {
- idn_res_enable(on_off);
-}
-
-idn_result_t
-idn__setconffile(const char *file) {
- idn_result_t r;
- char *s;
-
- TRACE(("idn__setconffile(%s)\n", (file == NULL) ? "<null>" : file));
-
- if (initialized) {
- r = idn_failure;
- goto ret;
- }
-
- if (file == NULL)
- s = NULL;
- else {
- s = (char *)malloc(strlen(file) + 1);
- if (s == NULL) {
- r = idn_nomemory;
- goto ret;
- }
- strcpy(s, file);
- }
- free(conf_file);
- conf_file = s;
-
- r = idn_success;
-ret:
- TRACE(("idn__setconffile(): %s\n", idn_result_tostring(r)));
- return (r);
-}
-
-idn_result_t
-idn_nameinit(int load_file) {
- idn_result_t r;
-
- TRACE(("idn_nameinit()\n"));
-
- if (initialized) {
- r = idn_success;
- goto ret;
- }
-
- idn_resconf_initialize();
-
- r = idn_resconf_create(&default_conf);
- if (r != idn_success)
- goto ret;
-
- if (load_file)
- r = idn_resconf_loadfile(default_conf, conf_file);
- else
- r = idn_resconf_setdefaults(default_conf);
- if (r != idn_success)
- goto ret;
-
- initialized = 1;
-
-ret:
- if (r != idn_success && default_conf != NULL) {
- idn_resconf_destroy(default_conf);
- default_conf = NULL;
- }
- TRACE(("idn_nameinit(): %s\n", idn_result_tostring(r)));
- return (r);
-}
-
-idn_result_t
-idn_encodename(idn_action_t actions, const char *from, char *to, size_t tolen) {
- idn_result_t r;
-
- assert(from != NULL && to != NULL);
-
- TRACE(("idn_encodename(actions=%s, from=\"%s\")\n",
- idn__res_actionstostring(actions),
- idn__debug_xstring(from, 50)));
-
- if (!initialized && ((r = idn_nameinit(0)) != idn_success))
- goto ret;
-
- r = idn_res_encodename(default_conf, actions, from, to, tolen);
-
-ret:
- if (r == idn_success) {
- TRACE(("idn_encodename(): success (to=\"%s\")\n",
- idn__debug_xstring(to, 50)));
- } else {
- TRACE(("idn_encodename(): %s\n", idn_result_tostring(r)));
- }
- return (r);
-}
-
-idn_result_t
-idn_decodename(idn_action_t actions, const char *from, char *to, size_t tolen) {
- idn_result_t r;
-
- assert(from != NULL && to != NULL);
-
- TRACE(("idn_decodename(actions=%s, from=\"%s\", tolen=%d)\n",
- idn__res_actionstostring(actions),
- idn__debug_xstring(from, 50), (int)tolen));
-
- if (!initialized && ((r = idn_nameinit(0)) != idn_success))
- goto ret;
-
- r = idn_res_decodename(default_conf, actions, from, to, tolen);
-
-ret:
- if (r == idn_success) {
- TRACE(("idn_decodename(): success (to=\"%s\")\n",
- idn__debug_xstring(to, 50)));
- } else {
- TRACE(("idn_decodename(): %s\n", idn_result_tostring(r)));
- }
- return (r);
-}
-
-idn_result_t
-idn_decodename2(idn_action_t actions, const char *from, char *to, size_t tolen,
- const char *auxencoding) {
- idn_result_t r;
-
- assert(from != NULL && to != NULL);
-
- TRACE(("idn_decodename2(actions=%s, from=\"%s\", tolen=%d)\n",
- idn__res_actionstostring(actions),
- idn__debug_xstring(from, 50), (int)tolen));
-
- if (!initialized && ((r = idn_nameinit(0)) != idn_success))
- goto ret;
-
- r = idn_res_decodename2(default_conf, actions, from, to, tolen,
- auxencoding);
-
-ret:
- if (r == idn_success) {
- TRACE(("idn_decodename2(): success (to=\"%s\")\n",
- idn__debug_xstring(to, 50)));
- } else {
- TRACE(("idn_decodename2(): %s\n", idn_result_tostring(r)));
- }
- return (r);
-}
-
-/*
- * These functions are for backward compatibility.
- */
-#ifdef ENABLE_MDNKIT_COMPAT
-
-idn_result_t
-mdn_nameinit(void) {
- return idn_nameinit(1);
-}
-
-idn_result_t
-mdn_encodename(int actions, const char *from, char *to, size_t tolen) {
- idn_result_t r;
-
- assert(from != NULL && to != NULL);
-
- TRACE(("mdn_encodename(actions=%s, from=\"%s\")\n",
- idn__res_actionstostring(actions),
- idn__debug_xstring(from, 50)));
-
- if (!initialized && ((r = idn_nameinit(1)) != idn_success))
- return (r);
-
- return (idn_res_encodename(default_conf, actions, from, to, tolen));
-}
-
-idn_result_t
-mdn_decodename(int actions, const char *from, char *to, size_t tolen) {
- idn_result_t r;
-
- assert(from != NULL && to != NULL);
-
- TRACE(("idn_decodename(actions=%s, from=\"%s\", tolen=%d)\n",
- idn__res_actionstostring(actions),
- idn__debug_xstring(from, 50), (int)tolen));
-
- if (!initialized && ((r = idn_nameinit(1)) != idn_success))
- return (r);
-
- return (idn_res_decodename(default_conf, actions, from, to, tolen));
-}
-
-#endif /* ENABLE_MDNKIT_COMPAT */
+++ /dev/null
-#ifndef lint
-static char *rcsid = "$Id: checker.c,v 1.1 2003/06/04 00:25:49 marka Exp $";
-#endif
-
-/*
- * Copyright (c) 2001,2002 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-#include <config.h>
-
-#include <stddef.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <idn/result.h>
-#include <idn/assert.h>
-#include <idn/logmacro.h>
-#include <idn/checker.h>
-#include <idn/strhash.h>
-#include <idn/debug.h>
-
-/*
- * Type for checking scheme.
- */
-typedef struct {
- char *prefix;
- char *parameter;
- idn_checker_createproc_t create;
- idn_checker_destroyproc_t destroy;
- idn_checker_lookupproc_t lookup;
- void *context;
-} check_scheme_t;
-
-/*
- * Standard checking schemes.
- */
-static const check_scheme_t rfc3491_prohibit_scheme = {
- "prohibit#RFC3491",
- "RFC3491",
- idn_nameprep_createproc,
- idn_nameprep_destroyproc,
- idn_nameprep_prohibitproc,
- NULL,
-};
-
-static const check_scheme_t rfc3491_unasigned_scheme = {
- "unassigned#RFC3491",
- "RFC3491",
- idn_nameprep_createproc,
- idn_nameprep_destroyproc,
- idn_nameprep_unassignedproc,
- NULL,
-};
-
-static const check_scheme_t rfc3491_bidi_scheme = {
- "bidi#RFC3491",
- "RFC3491",
- idn_nameprep_createproc,
- idn_nameprep_destroyproc,
- idn_nameprep_bidiproc,
- NULL,
-};
-
-static const check_scheme_t filecheck_prohibit_scheme = {
- "prohibit#fileset",
- NULL,
- idn__filechecker_createproc,
- idn__filechecker_destroyproc,
- idn__filechecker_lookupproc,
- NULL,
-};
-
-static const check_scheme_t filecheck_unassigned_scheme = {
- "unassigned#fileset",
- NULL,
- idn__filechecker_createproc,
- idn__filechecker_destroyproc,
- idn__filechecker_lookupproc,
- NULL,
-};
-
-static const check_scheme_t *standard_check_schemes[] = {
- &rfc3491_unasigned_scheme,
- &rfc3491_prohibit_scheme,
- &rfc3491_bidi_scheme,
- &filecheck_prohibit_scheme,
- &filecheck_unassigned_scheme,
- NULL,
-};
-
-/*
- * Hash table for checking schemes.
- */
-static idn__strhash_t scheme_hash = NULL;
-
-/*
- * Mapper object type.
- */
-struct idn_checker {
- int nschemes;
- int scheme_size;
- check_scheme_t *schemes;
- int reference_count;
-};
-
-#define MAPPER_INITIAL_SCHEME_SIZE 1
-
-idn_result_t
-idn_checker_initialize(void) {
- idn_result_t r;
- check_scheme_t **scheme;
-
- TRACE(("idn_checker_initialize()\n"));
-
- if (scheme_hash != NULL) {
- r = idn_success; /* already initialized */
- goto ret;
- }
-
- r = idn__strhash_create(&scheme_hash);
- if (r != idn_success) {
- goto ret;
- }
-
- for (scheme = (check_scheme_t **)standard_check_schemes;
- *scheme != NULL; scheme++) {
- r = idn__strhash_put(scheme_hash, (*scheme)->prefix, *scheme);
- if (r != idn_success)
- goto ret;
- }
-
- r = idn_success;
-ret:
- if (r != idn_success) {
- if (scheme_hash != NULL) {
- idn__strhash_destroy(scheme_hash, NULL);
- scheme_hash = NULL;
- }
- }
- TRACE(("idn_checker_initialize(): %s\n", idn_result_tostring(r)));
- return (r);
-}
-
-idn_result_t
-idn_checker_create(idn_checker_t *ctxp) {
- idn_checker_t ctx = NULL;
- idn_result_t r;
-
- assert(scheme_hash != NULL);
- assert(ctxp != NULL);
-
- TRACE(("idn_checker_create()\n"));
-
- ctx = (idn_checker_t) malloc(sizeof(struct idn_checker));
- if (ctx == NULL) {
- r = idn_nomemory;
- goto ret;
- }
-
- ctx->schemes = (check_scheme_t *) malloc(sizeof(check_scheme_t)
- * MAPPER_INITIAL_SCHEME_SIZE);
- if (ctx->schemes == NULL) {
- r = idn_nomemory;
- goto ret;
- }
-
- ctx->nschemes = 0;
- ctx->scheme_size = MAPPER_INITIAL_SCHEME_SIZE;
- ctx->reference_count = 1;
- *ctxp = ctx;
- r = idn_success;
-ret:
- if (r != idn_success) {
- if (ctx != NULL)
- free(ctx->schemes);
- free(ctx);
- }
- TRACE(("idn_checker_create(): %s\n", idn_result_tostring(r)));
- return (r);
-}
-
-void
-idn_checker_destroy(idn_checker_t ctx) {
- int i;
-
- assert(scheme_hash != NULL);
- assert(ctx != NULL);
-
- TRACE(("idn_checker_destroy()\n"));
-
- ctx->reference_count--;
- if (ctx->reference_count <= 0) {
- TRACE(("idn_checker_destroy(): the object is destroyed\n"));
- for (i = 0; i < ctx->nschemes; i++)
- ctx->schemes[i].destroy(ctx->schemes[i].context);
- free(ctx->schemes);
- free(ctx);
- } else {
- TRACE(("idn_checker_destroy(): "
- "update reference count (%d->%d)\n",
- ctx->reference_count + 1, ctx->reference_count));
- }
-}
-
-void
-idn_checker_incrref(idn_checker_t ctx) {
- assert(ctx != NULL && scheme_hash != NULL);
-
- TRACE(("idn_checker_incrref()\n"));
- TRACE(("idn_checker_incrref: update reference count (%d->%d)\n",
- ctx->reference_count, ctx->reference_count + 1));
-
- ctx->reference_count++;
-}
-
-idn_result_t
-idn_checker_add(idn_checker_t ctx, const char *scheme_name) {
- idn_result_t r;
- check_scheme_t *scheme;
- const char *scheme_prefix;
- const char *scheme_parameter;
- void *scheme_context = NULL;
- char *buffer = NULL;
-
- assert(scheme_hash != NULL);
- assert(ctx != NULL);
-
- TRACE(("idn_checker_add(scheme_name=%s)\n",
- idn__debug_xstring(scheme_name, 50)));
-
- /*
- * Split `scheme_name' into `scheme_prefix' and `scheme_parameter'.
- */
- scheme_parameter = strchr(scheme_name, ':');
- if (scheme_parameter == NULL) {
- scheme_prefix = scheme_name;
- scheme_parameter = NULL;
- } else {
- ptrdiff_t scheme_prefixlen;
-
- scheme_prefixlen = scheme_parameter - scheme_name;
- buffer = (char *) malloc(scheme_prefixlen + 1);
- if (buffer == NULL) {
- r = idn_nomemory;
- goto ret;
- }
- memcpy(buffer, scheme_name, scheme_prefixlen);
- *(buffer + scheme_prefixlen) = '\0';
- scheme_prefix = buffer;
- scheme_parameter++;
- }
-
- /*
- * Find a scheme.
- */
- if (idn__strhash_get(scheme_hash, scheme_prefix, (void **)&scheme)
- != idn_success) {
- ERROR(("idn_checker_add(): invalid scheme \"%-.30s\"\n",
- scheme_name));
- r = idn_invalid_name;
- goto ret;
- }
- if (scheme_parameter == NULL && scheme->parameter != NULL)
- scheme_parameter = scheme->parameter;
-
- /*
- * Add the scheme.
- */
- assert(ctx->nschemes <= ctx->scheme_size);
-
- if (ctx->nschemes == ctx->scheme_size) {
- check_scheme_t *new_schemes;
-
- new_schemes = (check_scheme_t *) realloc(ctx->schemes,
- sizeof(check_scheme_t) * ctx->scheme_size * 2);
- if (new_schemes == NULL) {
- r = idn_nomemory;
- goto ret;
- }
- ctx->schemes = new_schemes;
- ctx->scheme_size *= 2;
- }
-
- r = scheme->create(scheme_parameter, &scheme_context);
- if (r != idn_success)
- goto ret;
-
- memcpy(ctx->schemes + ctx->nschemes, scheme, sizeof(check_scheme_t));
- ctx->schemes[ctx->nschemes].context = scheme_context;
- ctx->nschemes++;
- r = idn_success;
-
-ret:
- free(buffer);
- if (r != idn_success)
- free(scheme_context);
- TRACE(("idn_checker_add(): %s\n", idn_result_tostring(r)));
- return (r);
-}
-
-idn_result_t
-idn_checker_addall(idn_checker_t ctx, const char **scheme_names,
- int nschemes) {
- idn_result_t r;
- int i;
-
- assert(scheme_hash != NULL);
- assert(ctx != NULL && scheme_names != NULL);
-
- TRACE(("idn_checker_addall(nschemes=%d)\n", nschemes));
-
- for (i = 0; i < nschemes; i++) {
- r = idn_checker_add(ctx, (const char *)*scheme_names);
- if (r != idn_success)
- goto ret;
- scheme_names++;
- }
-
- r = idn_success;
-ret:
- TRACE(("idn_checker_addall(): %s\n", idn_result_tostring(r)));
- return (r);
-}
-
-idn_result_t
-idn_checker_lookup(idn_checker_t ctx, const unsigned long *ucs4,
- const unsigned long **found) {
- idn_result_t r;
- int i;
-
- assert(scheme_hash != NULL);
- assert(ctx != NULL && ucs4 != NULL && found != NULL);
-
- TRACE(("idn_checker_lookup(ucs4=\"%s\")\n",
- idn__debug_ucs4xstring(ucs4, 50)));
-
- /*
- * Lookup.
- */
- *found = NULL;
-
- for (i = 0; i < ctx->nschemes; i++) {
- TRACE(("idn_checker_lookup(): lookup %s\n",
- ctx->schemes[i].prefix));
-
- r = (ctx->schemes[i].lookup)(ctx->schemes[i].context, ucs4,
- found);
- if (r != idn_success)
- goto ret;
- if (*found != NULL)
- break;
- }
-
- r = idn_success;
-ret:
- if (*found == NULL) {
- TRACE(("idn_checker_lookup(): %s (not found)\n",
- idn_result_tostring(r)));
- } else {
- TRACE(("idn_checker_lookup(): %s (found \\x%04lx)\n",
- idn_result_tostring(r), **found));
- }
- return (r);
-}
-
-idn_result_t
-idn_checker_register(const char *prefix,
- idn_checker_createproc_t create,
- idn_checker_destroyproc_t destroy,
- idn_checker_lookupproc_t lookup) {
- idn_result_t r;
- check_scheme_t *scheme = NULL;
-
- assert(scheme_hash != NULL);
- assert(prefix != NULL && create != NULL && destroy != NULL &&
- lookup != NULL);
-
- TRACE(("idn_checker_register(prefix=%s)\n", prefix));
-
- scheme = (check_scheme_t *) malloc(sizeof(check_scheme_t));
- if (scheme == NULL) {
- r = idn_nomemory;
- goto ret;
- }
-
- scheme->prefix = (char *) malloc(strlen(prefix) + 1);
- if (scheme->prefix == NULL) {
- r = idn_nomemory;
- goto ret;
- }
-
- strcpy(scheme->prefix, prefix);
- scheme->parameter = NULL;
- scheme->create = create;
- scheme->destroy = destroy;
- scheme->lookup = lookup;
-
- r = idn__strhash_put(scheme_hash, prefix, scheme);
-ret:
- if (r != idn_success) {
- if (scheme != NULL)
- free(scheme->prefix);
- free(scheme);
- }
- TRACE(("idn_checker_register(): %s\n", idn_result_tostring(r)));
- return (r);
-}
+++ /dev/null
-#ifndef lint
-static char *rcsid = "$Id: converter.c,v 1.1 2003/06/04 00:25:51 marka Exp $";
-#endif
-
-/*
- * Copyright (c) 2000,2002 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-#include <config.h>
-
-#include <stddef.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <ctype.h>
-#include <errno.h>
-#ifndef WITHOUT_ICONV
-#include <iconv.h>
-#endif
-
-#include <idn/result.h>
-#include <idn/assert.h>
-#include <idn/logmacro.h>
-#include <idn/converter.h>
-#include <idn/aliaslist.h>
-#include <idn/strhash.h>
-#include <idn/debug.h>
-#include <idn/ucs4.h>
-#include <idn/punycode.h>
-#include <idn/race.h>
-#include <idn/util.h>
-
-#ifndef IDN_UTF8_ENCODING_NAME
-#define IDN_UTF8_ENCODING_NAME "UTF-8" /* by IANA */
-#endif
-#ifndef IDN_RACE_ENCODING_NAME
-#define IDN_RACE_ENCODING_NAME "RACE"
-#endif
-#ifndef IDN_AMCACEZ_ENCODING_NAME
-#define IDN_AMCACEZ_ENCODING_NAME "AMC-ACE-Z"
-#endif
-#ifndef IDN_PUNYCODE_ENCODING_NAME
-#define IDN_PUNYCODE_ENCODING_NAME "Punycode"
-#endif
-
-#define MAX_RECURSE 20
-
-#ifdef WIN32
-
-#define IDNKEY_IDNKIT "Software\\JPNIC\\IDN"
-#define IDNVAL_ALIASFILE "AliasFile"
-
-#else /* WIN32 */
-
-#ifndef IDN_RESCONF_DIR
-#define IDN_RESCONF_DIR "/etc"
-#endif
-#define IDN_ALIAS_FILE IDN_RESCONF_DIR "/idnalias.conf"
-
-#endif /* WIN32 */
-
-typedef struct {
- idn_converter_openproc_t openfromucs4;
- idn_converter_openproc_t opentoucs4;
- idn_converter_convfromucs4proc_t convfromucs4;
- idn_converter_convtoucs4proc_t convtoucs4;
- idn_converter_closeproc_t close;
- int encoding_type;
-} converter_ops_t;
-
-struct idn_converter {
- char *local_encoding_name;
- converter_ops_t *ops;
- int flags;
- int opened_convfromucs4;
- int opened_convtoucs4;
- int reference_count;
- void *private_data;
-};
-
-static idn__strhash_t encoding_name_hash;
-static idn__aliaslist_t encoding_alias_list;
-
-static idn_result_t register_standard_encoding(void);
-static idn_result_t roundtrip_check(idn_converter_t ctx,
- const unsigned long *from,
- const char *to);
-
-static idn_result_t
- converter_none_open(idn_converter_t ctx, void **privdata);
-static idn_result_t
- converter_none_close(idn_converter_t ctx, void *privdata);
-static idn_result_t
- converter_none_convfromucs4(idn_converter_t ctx,
- void *privdata,
- const unsigned long *from,
- char *to, size_t tolen);
-static idn_result_t
- converter_none_convtoucs4(idn_converter_t ctx,
- void *privdata, const char *from,
- unsigned long *to, size_t tolen);
-
-#ifndef WITHOUT_ICONV
-static idn_result_t
- converter_iconv_openfromucs4(idn_converter_t ctx, void **privdata);
-static idn_result_t
- converter_iconv_opentoucs4(idn_converter_t ctx, void **privdata);
-static idn_result_t
- converter_iconv_close(idn_converter_t ctx, void *privdata);
-static idn_result_t
- converter_iconv_convfromucs4(idn_converter_t ctx,
- void *privdata,
- const unsigned long *from,
- char *to, size_t tolen);
-static idn_result_t
- converter_iconv_convtoucs4(idn_converter_t ctx,
- void *privdata,
- const char *from,
- unsigned long *to, size_t tolen);
-
-static idn_result_t
-iconv_initialize_privdata(void **privdata);
-static void
-iconv_finalize_privdata(void *privdata);
-
-static char * get_system_aliasfile(void);
-static int file_exist(const char *filename);
-
-#endif /* !WITHOUT_ICONV */
-
-#ifdef DEBUG
-static idn_result_t
- converter_uescape_convfromucs4(idn_converter_t ctx,
- void *privdata,
- const unsigned long *from,
- char *to, size_t tolen);
-static idn_result_t
- converter_uescape_convtoucs4(idn_converter_t ctx,
- void *privdata,
- const char *from,
- unsigned long *to,
- size_t tolen);
-#endif /* DEBUG */
-
-static converter_ops_t none_converter_ops = {
- converter_none_open,
- converter_none_open,
- converter_none_convfromucs4,
- converter_none_convtoucs4,
- converter_none_close,
- IDN_NONACE,
-};
-
-#ifndef WITHOUT_ICONV
-static converter_ops_t iconv_converter_ops = {
- converter_iconv_openfromucs4,
- converter_iconv_opentoucs4,
- converter_iconv_convfromucs4,
- converter_iconv_convtoucs4,
- converter_iconv_close,
- IDN_NONACE,
-};
-#endif
-
-/*
- * Initialize.
- */
-
-idn_result_t
-idn_converter_initialize(void) {
- idn_result_t r;
- idn__strhash_t hash;
- idn__aliaslist_t list;
-#ifndef WITHOUT_ICONV
- const char *fname;
-#endif
-
- TRACE(("idn_converter_initialize()\n"));
-
- if (encoding_name_hash == NULL) {
- if ((r = idn__strhash_create(&hash)) != idn_success)
- goto ret;
- encoding_name_hash = hash;
- r = register_standard_encoding();
- }
- if (encoding_alias_list == NULL) {
- if ((r = idn__aliaslist_create(&list)) != idn_success)
- goto ret;
- encoding_alias_list = list;
-#ifndef WITHOUT_ICONV
- fname = get_system_aliasfile();
- if (fname != NULL && file_exist(fname))
- idn_converter_aliasfile(fname);
-#endif
- }
-
- r = idn_success;
-ret:
- TRACE(("idn_converter_initialize(): %s\n", idn_result_tostring(r)));
- return (r);
-}
-
-#ifndef WITHOUT_ICONV
-static char *
-get_system_aliasfile() {
-#ifdef WIN32
- static char alias_path[500]; /* a good longer than MAX_PATH */
-
- if (idn__util_getregistrystring(idn__util_hkey_localmachine,
- IDNVAL_ALIASFILE,
- alias_path, sizeof(alias_path))) {
- return (alias_path);
- } else {
- return (NULL);
- }
-#else
- return (IDN_ALIAS_FILE);
-#endif
-}
-
-static int
-file_exist(const char *filename) {
- FILE *fp;
-
- if ((fp = fopen(filename, "r")) == NULL)
- return (0);
- fclose(fp);
- return (1);
-}
-#endif
-
-idn_result_t
-idn_converter_create(const char *name, idn_converter_t *ctxp, int flags) {
- const char *realname;
- idn_converter_t ctx;
- idn_result_t r;
- void *v;
-
- assert(name != NULL && ctxp != NULL);
-
- TRACE(("idn_converter_create(%s)\n", name));
-
- realname = idn_converter_getrealname(name);
-#ifdef DEBUG
- if (strcmp(name, realname) != 0) {
- TRACE(("idn_converter_create: realname=%s\n", realname));
- }
-#endif
-
- *ctxp = NULL;
-
- /* Allocate memory for a converter context and the name. */
- ctx = malloc(sizeof(struct idn_converter) + strlen(realname) + 1);
- if (ctx == NULL) {
- r = idn_nomemory;
- goto ret;
- }
-
- ctx->local_encoding_name = (char *)(ctx + 1);
- (void)strcpy(ctx->local_encoding_name, realname);
- ctx->flags = flags;
- ctx->reference_count = 1;
- ctx->opened_convfromucs4 = 0;
- ctx->opened_convtoucs4 = 0;
- ctx->private_data = NULL;
-
- assert(encoding_name_hash != NULL);
-
- if (strcmp(realname, IDN_UTF8_ENCODING_NAME) == 0) {
- /* No conversion needed */
- ctx->ops = &none_converter_ops;
- } else if ((r = idn__strhash_get(encoding_name_hash, realname, &v))
- == idn_success) {
- /* Special converter found */
- ctx->ops = (converter_ops_t *)v;
- } else {
- /* General case */
-#ifdef WITHOUT_ICONV
- free(ctx);
- *ctxp = NULL;
- r = idn_invalid_name;
- goto ret;
-#else
- ctx->ops = &iconv_converter_ops;
-#endif
- }
-
- if ((flags & IDN_CONVERTER_DELAYEDOPEN) == 0) {
- r = (ctx->ops->openfromucs4)(ctx, &(ctx->private_data));
- if (r != idn_success) {
- WARNING(("idn_converter_create(): open failed "
- "(ucs4->local)\n"));
- free(ctx);
- *ctxp = NULL;
- goto ret;
- }
- ctx->opened_convfromucs4 = 1;
-
- r = (*ctx->ops->opentoucs4)(ctx, &(ctx->private_data));
- if (r != idn_success) {
- WARNING(("idn_converter_create(): open failed "
- "(local->ucs4)\n"));
- free(ctx);
- *ctxp = NULL;
- goto ret;
- }
- ctx->opened_convtoucs4 = 1;
- }
-
- *ctxp = ctx;
- r = idn_success;
-ret:
- TRACE(("idn_converter_create(): %s\n", idn_result_tostring(r)));
- return (r);
-}
-
-void
-idn_converter_destroy(idn_converter_t ctx) {
- assert(ctx != NULL);
-
- TRACE(("idn_converter_destroy(ctx=%s)\n", ctx->local_encoding_name));
-
- ctx->reference_count--;
- if (ctx->reference_count <= 0) {
- TRACE(("idn_converter_destroy(): the object is destroyed\n"));
- (void)(*ctx->ops->close)(ctx, ctx->private_data);
- free(ctx);
- } else {
- TRACE(("idn_converter_destroy(): "
- "update reference count (%d->%d)\n",
- ctx->reference_count + 1, ctx->reference_count));
- }
-}
-
-void
-idn_converter_incrref(idn_converter_t ctx) {
- assert(ctx != NULL);
-
- TRACE(("idn_converter_incrref(ctx=%s)\n", ctx->local_encoding_name));
- TRACE(("idn_converter_incrref: update reference count (%d->%d)\n",
- ctx->reference_count, ctx->reference_count + 1));
-
- ctx->reference_count++;
-}
-
-char *
-idn_converter_localencoding(idn_converter_t ctx) {
- assert(ctx != NULL);
- TRACE(("idn_converter_localencoding(ctx=%s)\n",
- ctx->local_encoding_name));
- return (ctx->local_encoding_name);
-}
-
-int
-idn_converter_encodingtype(idn_converter_t ctx) {
- int encoding_type;
-
- assert(ctx != NULL);
- TRACE(("idn_converter_encodingtype(ctx=%s)\n",
- ctx->local_encoding_name));
-
- encoding_type = ctx->ops->encoding_type;
- TRACE(("idn_converter_encodingtype(): %d\n", encoding_type));
- return (encoding_type);
-}
-
-int
-idn_converter_isasciicompatible(idn_converter_t ctx) {
- int iscompat;
-
- assert(ctx != NULL);
- TRACE(("idn_converter_isasciicompatible(ctx=%s)\n",
- ctx->local_encoding_name));
-
- iscompat = (ctx->ops->encoding_type != IDN_NONACE);
- TRACE(("idn_converter_isasciicompatible(): %d\n", iscompat));
- return (iscompat);
-}
-
-idn_result_t
-idn_converter_convfromucs4(idn_converter_t ctx, const unsigned long *from,
- char *to, size_t tolen) {
- idn_result_t r;
-
- assert(ctx != NULL && from != NULL && to != NULL);
-
- TRACE(("idn_converter_convfromucs4(ctx=%s, from=\"%s\", tolen=%d)\n",
- ctx->local_encoding_name, idn__debug_ucs4xstring(from, 50),
- (int)tolen));
-
- if (!ctx->opened_convfromucs4) {
- r = (*ctx->ops->openfromucs4)(ctx, &(ctx->private_data));
- if (r != idn_success)
- goto ret;
- ctx->opened_convfromucs4 = 1;
- }
-
- r = (*ctx->ops->convfromucs4)(ctx, ctx->private_data, from, to, tolen);
- if (r != idn_success)
- goto ret;
- if ((ctx->flags & IDN_CONVERTER_RTCHECK) != 0) {
- r = roundtrip_check(ctx, from, to);
- if (r != idn_success)
- goto ret;
- }
-
- r = idn_success;
-ret:
- if (r == idn_success) {
- TRACE(("idn_converter_convfromucs4(): success (to=\"%s\")\n",
- idn__debug_xstring(to, 50)));
- } else {
- TRACE(("idn_converter_convfromucs4(): %s\n",
- idn_result_tostring(r)));
- }
- return (r);
-}
-
-idn_result_t
-idn_converter_convtoucs4(idn_converter_t ctx, const char *from,
- unsigned long *to, size_t tolen) {
- idn_result_t r;
-
- assert(ctx != NULL && from != NULL && to != NULL);
-
- TRACE(("idn_converter_convtoucs4(ctx=%s, from=\"%s\", tolen=%d)\n",
- ctx->local_encoding_name, idn__debug_xstring(from, 50),
- (int)tolen));
-
- if (!ctx->opened_convtoucs4) {
- r = (*ctx->ops->opentoucs4)(ctx, &(ctx->private_data));
- if (r != idn_success)
- goto ret;
- ctx->opened_convtoucs4 = 1;
- }
-
- r = (*ctx->ops->convtoucs4)(ctx, ctx->private_data, from, to, tolen);
-ret:
- if (r == idn_success) {
- TRACE(("idn_converter_convtoucs4(): success (to=\"%s\")\n",
- idn__debug_ucs4xstring(to, 50)));
- } else {
- TRACE(("idn_converter_convtoucs4(): %s\n",
- idn_result_tostring(r)));
- }
- return (r);
-}
-
-/*
- * Encoding registration.
- */
-
-idn_result_t
-idn_converter_register(const char *name,
- idn_converter_openproc_t openfromucs4,
- idn_converter_openproc_t opentoucs4,
- idn_converter_convfromucs4proc_t convfromucs4,
- idn_converter_convtoucs4proc_t convtoucs4,
- idn_converter_closeproc_t close,
- int encoding_type) {
- converter_ops_t *ops;
- idn_result_t r;
-
- assert(name != NULL && convfromucs4 != NULL && convtoucs4 != NULL);
-
- TRACE(("idn_converter_register(name=%s)\n", name));
-
- if ((ops = malloc(sizeof(*ops))) == NULL) {
- r = idn_nomemory;
- goto ret;
- }
-
- if (openfromucs4 == NULL)
- openfromucs4 = converter_none_open;
- if (opentoucs4 == NULL)
- opentoucs4 = converter_none_open;
- if (close == NULL)
- close = converter_none_close;
-
- ops->openfromucs4 = openfromucs4;
- ops->opentoucs4 = opentoucs4;
- ops->convfromucs4 = convfromucs4;
- ops->convtoucs4 = convtoucs4;
- ops->close = close;
- ops->encoding_type = encoding_type;
-
- r = idn__strhash_put(encoding_name_hash, name, ops);
- if (r != idn_success) {
- free(ops);
- goto ret;
- }
-
- r = idn_success;
-ret:
- TRACE(("idn_converter_register(): %s\n", idn_result_tostring(r)));
- return (r);
-}
-
-static idn_result_t
-register_standard_encoding(void) {
- idn_result_t r;
-
- r = idn_converter_register(IDN_PUNYCODE_ENCODING_NAME,
- NULL,
- NULL,
- idn__punycode_encode,
- idn__punycode_decode,
- converter_none_close,
- IDN_ACE_STRICTCASE);
- if (r != idn_success)
- return (r);
-
-#ifdef IDN_EXTRA_ACE
- r = idn_converter_register(IDN_AMCACEZ_ENCODING_NAME,
- NULL,
- NULL,
- idn__punycode_encode,
- idn__punycode_decode,
- converter_none_close,
- IDN_ACE_STRICTCASE);
- if (r != idn_success)
- return (r);
-
- r = idn_converter_register(IDN_RACE_ENCODING_NAME,
- NULL,
- NULL,
- idn__race_encode,
- idn__race_decode,
- converter_none_close,
- IDN_ACE_LOOSECASE);
- if (r != idn_success)
- return (r);
-#endif /* IDN_EXTRA_ACE */
-
-#ifdef DEBUG
- /* This is convenient for debug. Not useful for other purposes. */
- r = idn_converter_register("U-escape",
- NULL,
- NULL,
- converter_uescape_convfromucs4,
- converter_uescape_convtoucs4,
- NULL,
- IDN_NONACE);
- if (r != idn_success)
- return (r);
-#endif /* DEBUG */
-
- return (r);
-}
-
-/*
- * Encoding alias support.
- */
-idn_result_t
-idn_converter_addalias(const char *alias_name, const char *real_name,
- int first_item) {
- idn_result_t r;
-
- assert(alias_name != NULL && real_name != NULL);
-
- TRACE(("idn_converter_addalias(alias_name=%s,real_name=%s)\n",
- alias_name, real_name));
-
- if (strlen(alias_name) == 0 || strlen(real_name) == 0) {
- return idn_invalid_syntax;
- }
-
- if (strcmp(alias_name, real_name) == 0) {
- r = idn_success;
- goto ret;
- }
-
- if (encoding_alias_list == NULL) {
- WARNING(("idn_converter_addalias(): the module is not "
- "initialized\n"));
- r = idn_failure;
- goto ret;
- }
-
- r = idn__aliaslist_additem(encoding_alias_list, alias_name, real_name,
- first_item);
-ret:
- TRACE(("idn_converter_addalias(): %s\n", idn_result_tostring(r)));
- return (r);
-}
-
-idn_result_t
-idn_converter_aliasfile(const char *path) {
- idn_result_t r;
-
- assert(path != NULL);
-
- TRACE(("idn_converter_aliasfile(path=%s)\n", path));
-
- if (encoding_alias_list == NULL) {
- WARNING(("idn_converter_aliasfile(): the module is not "
- "initialized\n"));
- return (idn_failure);
- }
-
- r = idn__aliaslist_aliasfile(encoding_alias_list, path);
-
- TRACE(("idn_converter_aliasfile(): %s\n", idn_result_tostring(r)));
- return (r);
-}
-
-idn_result_t
-idn_converter_resetalias(void) {
- idn__aliaslist_t list;
- idn_result_t r;
-
- TRACE(("idn_converter_resetalias()\n"));
-
- if (encoding_alias_list == NULL) {
- WARNING(("idn_converter_resetalias(): the module is not "
- "initialized\n"));
- return (idn_failure);
- }
-
- list = encoding_alias_list;
- encoding_alias_list = NULL;
- idn__aliaslist_destroy(list);
- list = NULL;
- r = idn__aliaslist_create(&list);
- encoding_alias_list = list;
-
- TRACE(("idn_converter_resetalias(): %s\n", idn_result_tostring(r)));
- return (r);
-}
-
-const char *
-idn_converter_getrealname(const char *name) {
- char *realname;
- idn_result_t r;
-
- TRACE(("idn_converter_getrealname()\n"));
-
- assert(name != NULL);
-
- if (encoding_alias_list == NULL) {
- WARNING(("idn_converter_getrealname(): the module is not "
- "initialized\n"));
- return (name);
- }
-
- r = idn__aliaslist_find(encoding_alias_list, name, &realname);
- if (r != idn_success) {
- return (name);
- }
- return (realname);
-}
-
-/*
- * Round trip check.
- */
-
-static idn_result_t
-roundtrip_check(idn_converter_t ctx, const unsigned long *from, const char *to)
-{
- /*
- * One problem with iconv() convertion is that
- * iconv() doesn't signal an error if the input
- * string contains characters which are valid but
- * do not have mapping to the output codeset.
- * (the behavior of iconv() for that case is defined as
- * `implementation dependent')
- * One way to check this case is to perform round-trip
- * conversion and see if it is same as the original string.
- */
- idn_result_t r;
- unsigned long *back;
- unsigned long backbuf[256];
- size_t fromlen;
- size_t backlen;
-
- TRACE(("idn_converter_convert: round-trip checking (from=\"%s\")\n",
- idn__debug_ucs4xstring(from, 50)));
-
- /* Allocate enough buffer. */
- fromlen = idn_ucs4_strlen(from) + 1;
- if (fromlen * sizeof(*back) <= sizeof(backbuf)) {
- backlen = sizeof(backbuf);
- back = backbuf;
- } else {
- backlen = fromlen;
- back = (unsigned long *)malloc(backlen * sizeof(*back));
- if (back == NULL)
- return (idn_nomemory);
- }
-
- /*
- * Perform backward conversion.
- */
- r = idn_converter_convtoucs4(ctx, to, back, backlen);
- switch (r) {
- case idn_success:
- if (memcmp(back, from, sizeof(*from) * fromlen) != 0)
- r = idn_nomapping;
- break;
- case idn_invalid_encoding:
- case idn_buffer_overflow:
- r = idn_nomapping;
- break;
- default:
- break;
- }
-
- if (back != backbuf)
- free(back);
-
- if (r != idn_success) {
- TRACE(("round-trip check failed: %s\n",
- idn_result_tostring(r)));
- }
-
- return (r);
-}
-
-/*
- * Identity conversion (or, no conversion at all).
- */
-
-static idn_result_t
-converter_none_open(idn_converter_t ctx, void **privdata) {
- assert(ctx != NULL);
-
- return (idn_success);
-}
-
-static idn_result_t
-converter_none_close(idn_converter_t ctx, void *privdata) {
- assert(ctx != NULL);
-
- return (idn_success);
-}
-
-static idn_result_t
-converter_none_convfromucs4(idn_converter_t ctx, void *privdata,
- const unsigned long *from, char *to, size_t tolen) {
- assert(ctx != NULL && from != NULL && to != NULL);
-
- return idn_ucs4_ucs4toutf8(from, to, tolen);
-}
-
-static idn_result_t
-converter_none_convtoucs4(idn_converter_t ctx, void *privdata,
- const char *from, unsigned long *to, size_t tolen) {
- assert(ctx != NULL && from != NULL && to != NULL);
-
- return idn_ucs4_utf8toucs4(from, to, tolen);
-}
-
-#ifndef WITHOUT_ICONV
-
-/*
- * Conversion using iconv() interface.
- */
-
-static idn_result_t
-converter_iconv_openfromucs4(idn_converter_t ctx, void **privdata) {
- iconv_t *ictxp;
- idn_result_t r;
-
- assert(ctx != NULL);
-
- r = iconv_initialize_privdata(privdata);
- if (r != idn_success)
- return (r);
-
- ictxp = (iconv_t *)*privdata;
- *ictxp = iconv_open(ctx->local_encoding_name, IDN_UTF8_ENCODING_NAME);
- if (*ictxp == (iconv_t)(-1)) {
- free(*privdata);
- *privdata = NULL;
- switch (errno) {
- case ENOMEM:
- return (idn_nomemory);
- case EINVAL:
- return (idn_invalid_name);
- default:
- WARNING(("iconv_open failed with errno %d\n", errno));
- return (idn_failure);
- }
- }
-
- return (idn_success);
-}
-
-static idn_result_t
-converter_iconv_opentoucs4(idn_converter_t ctx, void **privdata) {
- iconv_t *ictxp;
- idn_result_t r;
-
- assert(ctx != NULL);
-
- r = iconv_initialize_privdata(privdata);
- if (r != idn_success)
- return (r);
-
- ictxp = (iconv_t *)*privdata + 1;
- *ictxp = iconv_open(IDN_UTF8_ENCODING_NAME, ctx->local_encoding_name);
- if (*ictxp == (iconv_t)(-1)) {
- free(*privdata);
- *privdata = NULL;
- switch (errno) {
- case ENOMEM:
- return (idn_nomemory);
- case EINVAL:
- return (idn_invalid_name);
- default:
- WARNING(("iconv_open failed with errno %d\n", errno));
- return (idn_failure);
- }
- }
-
- return (idn_success);
-}
-
-static idn_result_t
-iconv_initialize_privdata(void **privdata) {
- if (*privdata == NULL) {
- *privdata = malloc(sizeof(iconv_t) * 2);
- if (*privdata == NULL)
- return (idn_nomemory);
- *((iconv_t *)*privdata) = (iconv_t)(-1);
- *((iconv_t *)*privdata + 1) = (iconv_t)(-1);
- }
-
- return (idn_success);
-}
-
-static void
-iconv_finalize_privdata(void *privdata) {
- iconv_t *ictxp;
-
- if (privdata != NULL) {
- ictxp = (iconv_t *)privdata;
- if (*ictxp != (iconv_t)(-1))
- iconv_close(*ictxp);
-
- ictxp++;
- if (*ictxp != (iconv_t)(-1))
- iconv_close(*ictxp);
- free(privdata);
- }
-}
-
-static idn_result_t
-converter_iconv_close(idn_converter_t ctx, void *privdata) {
- assert(ctx != NULL);
-
- iconv_finalize_privdata(privdata);
-
- return (idn_success);
-}
-
-static idn_result_t
-converter_iconv_convfromucs4(idn_converter_t ctx, void *privdata,
- const unsigned long *from, char *to,
- size_t tolen) {
- iconv_t ictx;
- char *utf8 = NULL;
- size_t utf8size = 256; /* large enough */
- idn_result_t r;
- size_t sz;
- size_t inleft;
- size_t outleft;
- char *inbuf, *outbuf;
-
- assert(ctx != NULL && from != NULL && to != NULL);
-
- if (tolen <= 0) {
- r = idn_buffer_overflow; /* need space for NUL */
- goto ret;
- }
-
- /*
- * UCS4 -> UTF-8 conversion.
- */
- utf8 = (char *)malloc(utf8size);
- if (utf8 == NULL) {
- r = idn_nomemory;
- goto ret;
- }
-
-try_again:
- r = idn_ucs4_ucs4toutf8(from, utf8, utf8size);
- if (r == idn_buffer_overflow) {
- char *new_utf8;
-
- utf8size *= 2;
- new_utf8 = (char *)realloc(utf8, utf8size);
- if (new_utf8 == NULL) {
- r = idn_nomemory;
- goto ret;
- }
- utf8 = new_utf8;
- goto try_again;
- } else if (r != idn_success) {
- goto ret;
- }
-
- ictx = ((iconv_t *)privdata)[0];
-
- /*
- * Reset internal state.
- *
- * The following code should work according to the SUSv2 spec,
- * but causes segmentation fault with Solaris 2.6.
- * So.. a work-around.
- *
- * (void)iconv(ictx, (const char **)NULL, (size_t *)NULL,
- * (char **)NULL, (size_t *)NULL);
- */
- inleft = 0;
- outbuf = NULL;
- outleft = 0;
- (void)iconv(ictx, (const char **)NULL, &inleft, &outbuf, &outleft);
-
- inleft = strlen(utf8);
- inbuf = utf8;
- outleft = tolen - 1; /* reserve space for terminating NUL */
- sz = iconv(ictx, (const char **)&inbuf, &inleft, &to, &outleft);
-
- if (sz == (size_t)(-1) || inleft > 0) {
- switch (errno) {
- case EILSEQ:
- case EINVAL:
- /*
- * We already checked the validity of the input
- * string. So we assume a mapping error.
- */
- r = idn_nomapping;
- goto ret;
- case E2BIG:
- r = idn_buffer_overflow;
- goto ret;
- default:
- WARNING(("iconv failed with errno %d\n", errno));
- r = idn_failure;
- goto ret;
- }
- }
-
- /*
- * For UTF-8 -> local conversion, append a sequence of
- * state reset.
- */
- inleft = 0;
- sz = iconv(ictx, (const char **)NULL, &inleft, &to, &outleft);
- if (sz == (size_t)(-1)) {
- switch (errno) {
- case EILSEQ:
- case EINVAL:
- r = idn_invalid_encoding;
- goto ret;
- case E2BIG:
- r = idn_buffer_overflow;
- goto ret;
- default:
- WARNING(("iconv failed with errno %d\n", errno));
- r = idn_failure;
- goto ret;
- }
- }
- *to = '\0';
- r = idn_success;
-
-ret:
- free(utf8);
- return (r);
-
-}
-
-static idn_result_t
-converter_iconv_convtoucs4(idn_converter_t ctx, void *privdata,
- const char *from, unsigned long *to, size_t tolen) {
- iconv_t ictx;
- char *utf8 = NULL;
- size_t utf8size = 256; /* large enough */
- idn_result_t r;
- size_t sz;
- size_t inleft;
- size_t outleft;
- const char *from_ptr;
- char *outbuf;
-
- assert(ctx != NULL && from != NULL && to != NULL);
-
- if (tolen <= 0) {
- r = idn_buffer_overflow; /* need space for NUL */
- goto ret;
- }
- ictx = ((iconv_t *)privdata)[1];
- utf8 = (char *)malloc(utf8size);
- if (utf8 == NULL) {
- r = idn_nomemory;
- goto ret;
- }
-
-try_again:
- /*
- * Reset internal state.
- */
- inleft = 0;
- outbuf = NULL;
- outleft = 0;
- (void)iconv(ictx, (const char **)NULL, &inleft, &outbuf, &outleft);
-
- from_ptr = from;
- inleft = strlen(from);
- outbuf = utf8;
- outleft = utf8size - 1; /* reserve space for terminating NUL */
- sz = iconv(ictx, (const char **)&from_ptr, &inleft, &outbuf, &outleft);
-
- if (sz == (size_t)(-1) || inleft > 0) {
- char *new_utf8;
-
- switch (errno) {
- case EILSEQ:
- case EINVAL:
- /*
- * We assume all the characters in the local
- * codeset are included in UCS. This means mapping
- * error is not possible, so the input string must
- * have some problem.
- */
- r = idn_invalid_encoding;
- goto ret;
- case E2BIG:
- utf8size *= 2;
- new_utf8 = (char *)realloc(utf8, utf8size);
- if (new_utf8 == NULL) {
- r = idn_nomemory;
- goto ret;
- }
- utf8 = new_utf8;
- goto try_again;
- default:
- WARNING(("iconv failed with errno %d\n", errno));
- r = idn_failure;
- goto ret;
- }
- }
- *outbuf = '\0';
-
- /*
- * UTF-8 -> UCS4 conversion.
- */
- r = idn_ucs4_utf8toucs4(utf8, to, tolen);
-
-ret:
- free(utf8);
- return (r);
-}
-
-#endif /* !WITHOUT_ICONV */
-
-#ifdef DEBUG
-/*
- * Conversion to/from unicode escape string.
- * Arbitrary UCS-4 character can be specified by a special sequence
- * \u{XXXXXX}
- * where XXXXX denotes any hexadecimal string up to FFFFFFFF.
- * This is designed for debugging.
- */
-
-static idn_result_t
-converter_uescape_convfromucs4(idn_converter_t ctx, void *privdata,
- const unsigned long *from, char *to,
- size_t tolen) {
- idn_result_t r;
- unsigned long v;
-
- while (*from != '\0') {
- v = *from++;
-
- if (v <= 0x7f) {
- if (tolen < 1) {
- r = idn_buffer_overflow;
- goto failure;
- }
- *to++ = v;
- tolen--;
- } else if (v <= 0xffffffff) {
- char tmp[20];
- int len;
-
- (void)sprintf(tmp, "\\u{%lx}", v);
- len = strlen(tmp);
- if (tolen < len) {
- r = idn_buffer_overflow;
- goto failure;
- }
- (void)memcpy(to, tmp, len);
- to += len;
- tolen -= len;
- } else {
- r = idn_invalid_encoding;
- goto failure;
- }
- }
-
- if (tolen <= 0) {
- r = idn_buffer_overflow;
- goto failure;
- }
- *to = '\0';
-
- return (idn_success);
-
-failure:
- if (r != idn_buffer_overflow) {
- WARNING(("idn_uescape_convfromucs4(): %s\n",
- idn_result_tostring(r)));
- }
- return (r);
-}
-
-static idn_result_t
-converter_uescape_convtoucs4(idn_converter_t ctx, void *privdata,
- const char *from, unsigned long *to, size_t tolen)
-{
- idn_result_t r;
- size_t fromlen = strlen(from);
-
- while (*from != '\0') {
- if (tolen <= 0) {
- r = idn_buffer_overflow;
- goto failure;
- }
- if (strncmp(from, "\\u{", 3) == 0 ||
- strncmp(from, "\\U{", 3) == 0) {
- size_t ullen;
- unsigned long v;
- char *end;
-
- v = strtoul(from + 3, &end, 16);
- ullen = end - (from + 3);
- if (*end == '}' && ullen > 1 && ullen < 8) {
- *to = v;
- from = end + 1;
- fromlen -= ullen;
- } else {
- *to = '\\';
- from++;
- fromlen--;
- }
- } else {
- int c = *(unsigned char *)from;
- size_t width;
- char buf[8];
-
- if (c < 0x80)
- width = 1;
- else if (c < 0xc0)
- width = 0;
- else if (c < 0xe0)
- width = 2;
- else if (c < 0xf0)
- width = 3;
- else if (c < 0xf8)
- width = 4;
- else if (c < 0xfc)
- width = 5;
- else if (c < 0xfe)
- width = 6;
- else
- width = 0;
- if (width == 0 || width > fromlen) {
- r = idn_invalid_encoding;
- goto failure;
- }
-
- memcpy(buf, from, width);
- buf[width] = '\0';
- r = idn_ucs4_utf8toucs4(buf, to, tolen);
- if (r != idn_success) {
- r = idn_invalid_encoding;
- goto failure;
- }
- from += width;
- fromlen -= width;
- }
- to++;
- tolen--;
- }
-
- if (tolen <= 0) {
- r = idn_buffer_overflow;
- goto failure;
- }
- *to = '\0';
-
- return (idn_success);
-
-failure:
- if (r != idn_buffer_overflow) {
- WARNING(("idn_uescape_convtoucs4(): %s\n",
- idn_result_tostring(r)));
- }
- return (r);
-}
-
-#endif
+++ /dev/null
-#ifndef lint
-static char *rcsid = "$Id: debug.c,v 1.1 2003/06/04 00:25:51 marka Exp $";
-#endif
-
-/*
- * Copyright (c) 2000,2002 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-#include <config.h>
-
-#include <stdio.h>
-#include <stdarg.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <idn/debug.h>
-
-static char *hex = "0123456789abcdef";
-
-#define STRING_MAXBYTES 200
-#define STRING_NBUFS 4
-static char bufs[STRING_NBUFS][STRING_MAXBYTES + 16]; /* +16 for margin */
-static int bufno = 0;
-
-char *
-idn__debug_hexstring(const char *s, int maxbytes) {
- char *buf = bufs[bufno];
- char *p;
- int i;
-
- if (maxbytes > STRING_MAXBYTES)
- maxbytes = STRING_MAXBYTES;
-
- for (i = 0, p = buf; i < maxbytes; i += 3, s++) {
- int c = *(unsigned char *)s;
-
- if (c == '\0')
- break;
- *p++ = hex[c >> 4];
- *p++ = hex[c & 15];
- *p++ = ' ';
- }
-
- if (i >= maxbytes)
- strcpy(p, "...");
- else
- *p = '\0';
-
- bufno = (bufno + 1) % STRING_NBUFS;
- return (buf);
-}
-
-char *
-idn__debug_xstring(const char *s, int maxbytes) {
- char *buf = bufs[bufno];
- char *p;
- int i;
-
- if (maxbytes > STRING_MAXBYTES)
- maxbytes = STRING_MAXBYTES;
-
- i = 0;
- p = buf;
- while (i < maxbytes) {
- int c = *(unsigned char *)s;
-
- if (c == '\0') {
- break;
- } else if (0x20 <= c && c <= 0x7e) {
- *p++ = c;
- i++;
- } else {
- *p++ = '\\';
- *p++ = 'x';
- *p++ = hex[c >> 4];
- *p++ = hex[c & 15];
- i += 4;
- }
- s++;
- }
-
- if (i >= maxbytes)
- strcpy(p, "...");
- else
- *p = '\0';
-
- bufno = (bufno + 1) % STRING_NBUFS;
- return (buf);
-}
-
-char *
-idn__debug_ucs4xstring(const unsigned long *s, int maxbytes) {
- char *buf = bufs[bufno];
- char *p;
- int i;
-
- if (maxbytes > STRING_MAXBYTES)
- maxbytes = STRING_MAXBYTES;
-
- i = 0;
- p = buf;
- while (i < maxbytes) {
- if (*s == '\0') {
- break;
- } else if (0x20 <= *s && *s <= 0x7e) {
- *p++ = *s;
- i++;
- } else {
- *p++ = '\\';
- *p++ = 'x';
- i += 2;
- if (*s >= 0x1000000UL) {
- *p++ = hex[(*s >> 28) & 0x0f];
- *p++ = hex[(*s >> 24) & 0x0f];
- i += 2;
- }
- if (*s >= 0x10000UL) {
- *p++ = hex[(*s >> 20) & 0x0f];
- *p++ = hex[(*s >> 16) & 0x0f];
- i += 2;
- }
- if (*s >= 0x100UL) {
- *p++ = hex[(*s >> 12) & 0x0f];
- *p++ = hex[(*s >> 8) & 0x0f];
- i += 2;
- }
- *p++ = hex[(*s >> 4) & 0x0f];
- *p++ = hex[ *s & 0x0f];
- i += 2;
- }
- s++;
- }
-
- if (i >= maxbytes)
- strcpy(p, "...");
- else
- *p = '\0';
-
- bufno = (bufno + 1) % STRING_NBUFS;
- return (buf);
-}
-
-char *
-idn__debug_utf16xstring(const unsigned short *s, int maxbytes) {
- char *buf = bufs[bufno];
- char *p;
- int i;
-
- if (maxbytes > STRING_MAXBYTES)
- maxbytes = STRING_MAXBYTES;
-
- i = 0;
- p = buf;
- while (i < maxbytes) {
- if (*s == '\0') {
- break;
- } else if (0x20 <= *s && *s <= 0x7e) {
- *p++ = *s;
- i++;
- } else {
- *p++ = '\\';
- *p++ = 'x';
- *p++ = hex[(*s >> 12) & 0x0f];
- *p++ = hex[(*s >> 8) & 0x0f];
- *p++ = hex[(*s >> 4) & 0x0f];
- *p++ = hex[ *s & 0x0f];
- i += 6;
- }
- s++;
- }
-
- if (i >= maxbytes)
- strcpy(p, "...");
- else
- *p = '\0';
-
- bufno = (bufno + 1) % STRING_NBUFS;
- return (buf);
-}
-
-char *
-idn__debug_hexdata(const char *s, int length, int maxbytes) {
- char *buf = bufs[bufno];
- char *p;
- int i;
-
- if (maxbytes > STRING_MAXBYTES)
- maxbytes = STRING_MAXBYTES;
-
- i = 0;
- p = buf;
- while (length > 0 && i < maxbytes) {
- int c = *(const unsigned char *)s;
-
- *p++ = hex[c >> 4];
- *p++ = hex[c & 15];
- *p++ = ' ';
- i += 3;
- length--;
- s++;
- }
-
- if (i >= maxbytes)
- strcpy(p, "...");
- else
- *p = '\0';
-
- bufno = (bufno + 1) % STRING_NBUFS;
- return (buf);
-}
-
-void
-idn__debug_hexdump(const char *s, int length) {
- int i;
- const unsigned char *p = (const unsigned char *)s;
-
- i = 0;
- while (length-- > 0) {
- if (i % 16 == 0) {
- if (i > 0)
- fprintf(stderr, "\n");
- fprintf(stderr, "%4x:", i);
- }
- fprintf(stderr, " %02x", p[i]);
- i++;
- }
- fprintf(stderr, "\n");
-}
+++ /dev/null
-#ifndef lint
-static char *rcsid = "$Id: delimitermap.c,v 1.1 2003/06/04 00:25:52 marka Exp $";
-#endif
-
-/*
- * Copyright (c) 2001,2002 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-#include <config.h>
-
-#include <stddef.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <idn/result.h>
-#include <idn/assert.h>
-#include <idn/logmacro.h>
-#include <idn/delimitermap.h>
-#include <idn/util.h>
-#include <idn/debug.h>
-#include <idn/ucs4.h>
-
-/*
- * Mapper object type.
- */
-struct idn_delimitermap {
- int ndelimiters;
- int delimiter_size;
- unsigned long *delimiters;
- int reference_count;
-};
-
-#define DELIMITERMAP_INITIAL_DELIMITER_SIZE 4
-#define UNICODE_MAX 0x10ffff
-#define IS_SURROGATE_HIGH(v) (0xd800 <= (v) && (v) <= 0xdbff)
-#define IS_SURROGATE_LOW(v) (0xdc00 <= (v) && (v) <= 0xdfff)
-
-idn_result_t
-idn_delimitermap_create(idn_delimitermap_t *ctxp) {
- idn_delimitermap_t ctx = NULL;
- idn_result_t r;
-
- assert(ctxp != NULL);
- TRACE(("idn_delimitermap_create()\n"));
-
- ctx = (idn_delimitermap_t) malloc(sizeof(struct idn_delimitermap));
- if (ctx == NULL) {
- WARNING(("idn_mapper_create: malloc failed\n"));
- r = idn_nomemory;
- goto ret;
- }
-
- ctx->delimiters = (unsigned long *) malloc(sizeof(unsigned long)
- * DELIMITERMAP_INITIAL_DELIMITER_SIZE);
- if (ctx->delimiters == NULL) {
- r = idn_nomemory;
- goto ret;
- }
- ctx->ndelimiters = 0;
- ctx->delimiter_size = DELIMITERMAP_INITIAL_DELIMITER_SIZE;
- ctx->reference_count = 1;
- *ctxp = ctx;
- r = idn_success;
-
-ret:
- if (r != idn_success)
- free(ctx);
- TRACE(("idn_delimitermap_create(): %s\n", idn_result_tostring(r)));
- return (r);
-}
-
-void
-idn_delimitermap_destroy(idn_delimitermap_t ctx) {
- assert(ctx != NULL);
-
- TRACE(("idn_delimitermap_destroy()\n"));
-
- ctx->reference_count--;
- if (ctx->reference_count <= 0) {
- TRACE(("idn_mapper_destroy(): the object is destroyed\n"));
- free(ctx->delimiters);
- free(ctx);
- } else {
- TRACE(("idn_delimitermap_destroy(): "
- "update reference count (%d->%d)\n",
- ctx->reference_count + 1, ctx->reference_count));
- }
-}
-
-void
-idn_delimitermap_incrref(idn_delimitermap_t ctx) {
- assert(ctx != NULL);
-
- TRACE(("idn_delimitermap_incrref()\n"));
- TRACE(("idn_delimitermap_incrref: update reference count (%d->%d)\n",
- ctx->reference_count, ctx->reference_count + 1));
-
- ctx->reference_count++;
-}
-
-idn_result_t
-idn_delimitermap_add(idn_delimitermap_t ctx, unsigned long delimiter) {
- idn_result_t r;
-
- assert(ctx != NULL && ctx->ndelimiters <= ctx->delimiter_size);
- TRACE(("idn_delimitermap_add(delimiter=\\x%04lx)\n", delimiter));
-
- if (delimiter == 0 || delimiter > UNICODE_MAX ||
- IS_SURROGATE_HIGH(delimiter) || IS_SURROGATE_LOW(delimiter)) {
- r = idn_invalid_codepoint;
- goto ret;
- }
-
- if (ctx->ndelimiters == ctx->delimiter_size) {
- unsigned long *new_delimiters;
-
- new_delimiters = (unsigned long *) realloc(ctx->delimiters,
- sizeof(unsigned long) * ctx->delimiter_size * 2);
- if (new_delimiters == NULL) {
- r = idn_nomemory;
- goto ret;
- }
- ctx->delimiters = new_delimiters;
- ctx->delimiter_size *= 2;
- }
-
- ctx->delimiters[ctx->ndelimiters] = delimiter;
- ctx->ndelimiters++;
- r = idn_success;
-
-ret:
- TRACE(("idn_delimitermap_add(): %s\n", idn_result_tostring(r)));
- return (r);
-}
-
-idn_result_t
-idn_delimitermap_addall(idn_delimitermap_t ctx, unsigned long *delimiters,
- int ndelimiters) {
- idn_result_t r;
- int i;
-
- assert(ctx != NULL && delimiters != NULL);
-
- TRACE(("idn_delimitermap_addall(ndelimiters=%d)\n", ndelimiters));
-
- for (i = 0; i < ndelimiters; i++) {
- r = idn_delimitermap_add(ctx, *delimiters);
- if (r != idn_success)
- goto ret;
- delimiters++;
- }
-
- r = idn_success;
-ret:
- TRACE(("idn_delimitermap_addall(): %s\n", idn_result_tostring(r)));
- return (r);
-}
-
-idn_result_t
-idn_delimitermap_map(idn_delimitermap_t ctx, const unsigned long *from,
- unsigned long *to, size_t tolen) {
-
- /* default delimiters (label separators) from IDNA specification */
- static const unsigned long default_delimiters[] =
- { 0x002e, /* full stop */
- 0x3002, /* ideographic full stop */
- 0xff0e, /* fullwidth full stop */
- 0xff61, /* halfwidth ideographic full stop */
- 0x0000 };
-
- unsigned long *to_org = to;
- idn_result_t r;
- int i, j;
- int found;
-
- assert(ctx != NULL && from != NULL && to != NULL);
-
- TRACE(("idn_delimitermap_map(from=\"%s\", tolen=%d)\n",
- idn__debug_ucs4xstring(from, 50), (int)tolen));
-
- /*
- * Map.
- */
- while (*from != '\0') {
- found = 0;
- if (tolen < 1) {
- r = idn_buffer_overflow;
- goto ret;
- }
- for (j = 0; default_delimiters[j] != 0x0000; j++) {
- if (default_delimiters[j] == *from) {
- found = 1;
- break;
- }
- }
- if (!found) {
- for (i = 0; i < ctx->ndelimiters; i++) {
- if (ctx->delimiters[i] == *from) {
- found = 1;
- break;
- }
- }
- }
- if (found)
- *to = '.';
- else
- *to = *from;
- from++;
- to++;
- tolen--;
- }
-
- if (tolen < 1) {
- r = idn_buffer_overflow;
- goto ret;
- }
- *to = '\0';
- r = idn_success;
-
-ret:
- if (r == idn_success) {
- TRACE(("idn_delimitermap_map(): success (to=\"%s\")\n",
- idn__debug_ucs4xstring(to_org, 50)));
- } else {
- TRACE(("idn_delimitermap_map(): %s\n",
- idn_result_tostring(r)));
- }
- return (r);
-}
+++ /dev/null
-#ifndef lint
-static char *rcsid = "$Id: filechecker.c,v 1.1 2003/06/04 00:25:52 marka Exp $";
-#endif
-
-/*
- * Copyright (c) 2001,2002 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-#include <config.h>
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <ctype.h>
-
-#include <idn/result.h>
-#include <idn/assert.h>
-#include <idn/log.h>
-#include <idn/logmacro.h>
-#include <idn/ucsset.h>
-#include <idn/filechecker.h>
-#include <idn/debug.h>
-
-#define SUPPORT_VERSIONING
-
-struct idn__filechecker {
- idn_ucsset_t set;
-};
-
-static idn_result_t read_file(const char *file, FILE *fp,
- idn_ucsset_t set);
-static int get_range(char *s, unsigned long *ucs1,
- unsigned long *ucs2);
-static char *get_ucs(char *p, unsigned long *vp);
-
-
-idn_result_t
-idn__filechecker_create(const char *file, idn__filechecker_t *ctxp) {
- FILE *fp;
- idn__filechecker_t ctx;
- idn_result_t r;
-
- assert(file != NULL && ctxp != NULL);
-
- TRACE(("idn__filechecker_create(file=\"%-.100s\")\n", file));
-
- if ((fp = fopen(file, "r")) == NULL) {
- WARNING(("idn__filechecker_create: cannot open %-.100s\n",
- file));
- return (idn_nofile);
- }
-
- if ((ctx = malloc(sizeof(struct idn__filechecker))) == NULL)
- return (idn_nomemory);
-
- if ((r = idn_ucsset_create(&ctx->set)) != idn_success) {
- free(ctx);
- return (r);
- }
-
- r = read_file(file, fp, ctx->set);
- fclose(fp);
-
- if (r == idn_success) {
- idn_ucsset_fix(ctx->set);
- *ctxp = ctx;
- } else {
- idn_ucsset_destroy(ctx->set);
- free(ctx);
- }
- return (r);
-}
-
-void
-idn__filechecker_destroy(idn__filechecker_t ctx) {
- assert(ctx != NULL);
-
- TRACE(("idn__filechecker_destroy()\n"));
-
- idn_ucsset_destroy(ctx->set);
- free(ctx);
-}
-
-idn_result_t
-idn__filechecker_lookup(idn__filechecker_t ctx, const unsigned long *str,
- const unsigned long **found) {
- idn_result_t r = idn_success;
-
- assert(ctx != NULL && str != NULL);
-
- TRACE(("idn__filechecker_lookup(str=\"%s\")\n",
- idn__debug_ucs4xstring(str, 50)));
-
- while (*str != '\0') {
- int exists;
-
- r = idn_ucsset_lookup(ctx->set, *str, &exists);
-
- if (r != idn_success) {
- return (r);
- } else if (exists) {
- /* Found. */
- *found = str;
- return (idn_success);
- }
- str++;
- }
- *found = NULL;
- return (idn_success);
-}
-
-static idn_result_t
-read_file(const char *file, FILE *fp, idn_ucsset_t set) {
- char line[256];
- idn_result_t r;
- int lineno = 0;
-
- while (fgets(line, sizeof(line), fp) != NULL) {
- char *p = line;
- unsigned long ucs1, ucs2;
-
- lineno++;
- while (isspace((unsigned char)*p))
- p++;
- if (*p == '\0' || *p == '#')
- continue;
-
-#ifdef SUPPORT_VERSIONING
- /* Skip version tag. */
- if (lineno == 1 && strncmp("version=", line, 8) == 0)
- continue;
-#endif
- if (!get_range(p, &ucs1, &ucs2)) {
- WARNING(("syntax error in file \"%-.100s\" line %d: "
- "%-.100s", file, lineno, line));
- return (idn_invalid_syntax);
- }
- if ((r = idn_ucsset_addrange(set, ucs1, ucs2)) != idn_success)
- return (r);
- }
- return (idn_success);
-}
-
-static int
-get_range(char *s, unsigned long *ucs1, unsigned long *ucs2) {
- if ((s = get_ucs(s, ucs1)) == NULL)
- return (0);
- *ucs2 = *ucs1;
-
- switch (s[0]) {
- case '\0':
- case '\n':
- case '#':
- case ';':
- return (1);
- case '-':
- break;
- default:
- return (0);
- }
-
- if ((s = get_ucs(s + 1, ucs2)) == NULL)
- return (0);
-
- if (*ucs1 > *ucs2) {
- INFO(("idn__filechecker_create: invalid range spec "
- "U+%X-U+%X\n", *ucs1, *ucs2));
- return (0);
- }
-
- switch (s[0]) {
- case '\0':
- case '\n':
- case '#':
- case ';':
- return (1);
- default:
- return (0);
- }
-}
-
-
-static char *
-get_ucs(char *p, unsigned long *vp) {
- char *end;
-
- /* Skip leading space */
- while (isspace((unsigned char)*p))
- p++;
-
- /* Skip optional 'U+' */
- if (strncmp(p, "U+", 2) == 0)
- p += 2;
-
- *vp = strtoul(p, &end, 16);
- if (end == p) {
- INFO(("idn__filechecker_create: UCS code point expected\n"));
- return (NULL);
- }
- p = end;
-
- /* Skip trailing space */
- while (isspace((unsigned char)*p))
- p++;
- return p;
-}
-
-idn_result_t
-idn__filechecker_createproc(const char *parameter, void **ctxp) {
- return idn__filechecker_create(parameter, (idn__filechecker_t *)ctxp);
-}
-
-void
-idn__filechecker_destroyproc(void *ctxp) {
- idn__filechecker_destroy((idn__filechecker_t)ctxp);
-}
-
-idn_result_t
-idn__filechecker_lookupproc(void *ctx, const unsigned long *str,
- const unsigned long **found) {
- return idn__filechecker_lookup((idn__filechecker_t)ctx, str, found);
-}
+++ /dev/null
-#ifndef lint
-static char *rcsid = "$Id: filemapper.c,v 1.1 2003/06/04 00:25:53 marka Exp $";
-#endif
-
-/*
- * Copyright (c) 2001,2002 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-#include <config.h>
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <ctype.h>
-
-#include <idn/result.h>
-#include <idn/assert.h>
-#include <idn/log.h>
-#include <idn/logmacro.h>
-#include <idn/debug.h>
-#include <idn/ucs4.h>
-#include <idn/ucsmap.h>
-#include <idn/filemapper.h>
-
-#define SUPPORT_VERSIONING
-
-#define UCSBUF_LOCAL_SIZE 20
-
-typedef struct ucsbuf {
- unsigned long *ucs;
- size_t size;
- size_t len;
- unsigned long local[UCSBUF_LOCAL_SIZE];
-} ucsbuf_t;
-
-struct idn__filemapper {
- idn_ucsmap_t map;
-};
-
-static void ucsbuf_init(ucsbuf_t *b);
-static idn_result_t ucsbuf_grow(ucsbuf_t *b);
-static idn_result_t ucsbuf_append(ucsbuf_t *b, unsigned long v);
-static void ucsbuf_free(ucsbuf_t *b);
-static idn_result_t read_file(const char *file, FILE *fp,
- idn_ucsmap_t map);
-static idn_result_t get_map(char *p, ucsbuf_t *b);
-static char *get_ucs(char *p, unsigned long *vp);
-
-
-idn_result_t
-idn__filemapper_create(const char *file, idn__filemapper_t *ctxp) {
- FILE *fp;
- idn__filemapper_t ctx;
- idn_result_t r;
-
- assert(file != NULL && ctxp != NULL);
-
- TRACE(("idn__filemapper_create(file=\"%-.100s\")\n", file));
-
- if ((fp = fopen(file, "r")) == NULL) {
- WARNING(("idn__filemapper_create: cannot open %-.100s\n",
- file));
- return (idn_nofile);
- }
- if ((ctx = malloc(sizeof(struct idn__filemapper))) == NULL)
- return (idn_nomemory);
-
- if ((r = idn_ucsmap_create(&ctx->map)) != idn_success) {
- free(ctx);
- return (r);
- }
-
- r = read_file(file, fp, ctx->map);
- fclose(fp);
-
- if (r == idn_success) {
- idn_ucsmap_fix(ctx->map);
- *ctxp = ctx;
- } else {
- idn_ucsmap_destroy(ctx->map);
- free(ctx);
- }
- return (r);
-}
-
-void
-idn__filemapper_destroy(idn__filemapper_t ctx) {
-
- assert(ctx != NULL);
-
- TRACE(("idn__filemapper_destroy()\n"));
-
- idn_ucsmap_destroy(ctx->map);
- free(ctx);
-}
-
-idn_result_t
-idn__filemapper_map(idn__filemapper_t ctx, const unsigned long *from,
- unsigned long *to, size_t tolen)
-{
- idn_result_t r = idn_success;
- ucsbuf_t ub;
-
- assert(ctx != NULL && from != NULL && to != NULL);
-
- TRACE(("idn__filemapper_map(from=\"%s\")\n",
- idn__debug_ucs4xstring(from, 50)));
-
- /* Initialize temporary buffer. */
- ucsbuf_init(&ub);
-
- while (*from != '\0') {
- /* Try mapping. */
- r = idn_ucsmap_map(ctx->map, *from, ub.ucs, ub.size, &ub.len);
- switch (r) {
- case idn_buffer_overflow:
- /* Temporary buffer too small. Enlarge and retry. */
- if ((r = ucsbuf_grow(&ub)) != idn_success)
- break;
- continue;
- case idn_nomapping:
- /* There is no mapping. */
- r = idn_success;
- /* fallthrough */
- case idn_success:
- if (tolen < ub.len) {
- r = idn_buffer_overflow;
- goto ret;
- }
- memcpy(to, ub.ucs, sizeof(*to) * ub.len);
- to += ub.len;
- tolen -= ub.len;
- break;
- default:
- goto ret;
- }
- from++;
- }
-
- ret:
- ucsbuf_free(&ub);
-
- if (r == idn_success) {
- /* Terminate with NUL. */
- if (tolen == 0)
- return (idn_buffer_overflow);
- *to = '\0';
- }
-
- return (r);
-}
-
-static void
-ucsbuf_init(ucsbuf_t *b) {
- b->ucs = b->local;
- b->size = UCSBUF_LOCAL_SIZE;
- b->len = 0;
-}
-
-static idn_result_t
-ucsbuf_grow(ucsbuf_t *b) {
- unsigned long *newbuf;
-
- b->size *= 2;
- if (b->ucs == b->local) {
- b->ucs = malloc(sizeof(unsigned long) * b->size);
- if (b->ucs == NULL)
- return (idn_nomemory);
- memcpy(b->ucs, b->local, sizeof(b->local));
- } else {
- newbuf = realloc(b->ucs, sizeof(unsigned long) * b->size);
- if (newbuf == NULL)
- return (idn_nomemory);
- b->ucs = newbuf;
- }
- return (idn_success);
-}
-
-static idn_result_t
-ucsbuf_append(ucsbuf_t *b, unsigned long v) {
- idn_result_t r;
-
- if (b->len + 1 > b->size) {
- r = ucsbuf_grow(b);
- if (r != idn_success)
- return (r);
- }
- b->ucs[b->len++] = v;
- return (idn_success);
-}
-
-static void
-ucsbuf_free(ucsbuf_t *b) {
- if (b->ucs != b->local && b->ucs != NULL)
- free(b->ucs);
-}
-
-static idn_result_t
-read_file(const char *file, FILE *fp, idn_ucsmap_t map) {
- char line[1024];
- ucsbuf_t ub;
- idn_result_t r = idn_success;
- int lineno = 0;
-
- ucsbuf_init(&ub);
-
- while (fgets(line, sizeof(line), fp) != NULL) {
- char *p = line;
-
- lineno++;
- while (isspace((unsigned char)*p))
- p++;
- if (*p == '\0' || *p == '#')
- continue;
-#ifdef SUPPORT_VERSIONING
- /* Skip version tag. */
- if (lineno == 1 && strncmp("version=", line, 8) == 0)
- continue;
-#endif
- again:
- ub.len = 0;
- r = get_map(p, &ub);
- switch (r) {
- case idn_success:
- r = idn_ucsmap_add(map, ub.ucs[0],
- &ub.ucs[1], ub.len - 1);
- break;
- case idn_buffer_overflow:
- if ((r = ucsbuf_grow(&ub)) != idn_success)
- break;
- goto again;
- case idn_invalid_syntax:
- WARNING(("syntax error in file \"%-.100s\" line %d: "
- "%-.100s", file, lineno, line));
- /* fall through */
- default:
- ucsbuf_free(&ub);
- return (r);
- }
- }
- ucsbuf_free(&ub);
- return (r);
-}
-
-static idn_result_t
-get_map(char *p, ucsbuf_t *b) {
- unsigned long v;
- idn_result_t r = idn_success;
-
- for (;;) {
- if ((p = get_ucs(p, &v)) == NULL)
- return (idn_invalid_syntax);
- if ((r = ucsbuf_append(b, v)) != idn_success)
- return (r);
- if (b->len == 1) {
- if (*p != ';')
- return (idn_invalid_syntax);
- p++;
- while (isspace((unsigned char)*p))
- p++;
- }
-
- if (*p == ';' || *p == '#' || *p == '\0')
- return (r);
- }
- return (r);
-}
-
-static char *
-get_ucs(char *p, unsigned long *vp) {
- char *end;
-
- /* Skip leading space */
- while (isspace((unsigned char)*p))
- p++;
-
- /* Skip optional 'U+' */
- if (strncmp(p, "U+", 2) == 0)
- p += 2;
-
- *vp = strtoul(p, &end, 16);
- if (end == p) {
- INFO(("idn__filemapper_create: UCS code point expected\n"));
- return (NULL);
- }
- p = end;
-
- /* Skip trailing space */
- while (isspace((unsigned char)*p))
- p++;
- return p;
-}
-
-idn_result_t
-idn__filemapper_createproc(const char *parameter, void **ctxp) {
- return idn__filemapper_create(parameter, (idn__filemapper_t *)ctxp);
-}
-
-void
-idn__filemapper_destroyproc(void *ctxp) {
- idn__filemapper_destroy((idn__filemapper_t)ctxp);
-}
-
-idn_result_t
-idn__filemapper_mapproc(void *ctx, const unsigned long *from,
- unsigned long *to, size_t tolen) {
- return idn__filemapper_map((idn__filemapper_t)ctx, from, to, tolen);
-}
+++ /dev/null
-# $Id: idn.conf.sample.in,v 1.1 2003/06/04 00:26:45 marka Exp $
-#
-# Sample file for idnkit configuration file (idn.conf).
-#
-
-#
-# `idn-encoding' entry specifies the encoding name used as the encoding
-# of multilingualized names by resolvers and DNS servers. Currently, the
-# following encodings are available:
-#
-# Punycode
-# UTF-8
-# <codeset names your iconv_open() accepts>
-#
-# If you enabled extra ace feature, following IDN encoding can be used.
-#
-# AMC-ACE-Z (old name of Punycode)
-# RACE
-#
-# syntax)
-# idn-encoding <encoding>
-#
-idn-encoding Punycode
-
-#
-# `nameprep' entry specifies the version of NAMEPREP.
-# idnkit currently supports the following version:
-#
-# RFC3491 -- name preparation scheme described in the
-# RFC3491
-#
-# syntax)
-# nameprep <nameprep version>
-#
-nameprep RFC3491
-
-#
-# `local-map' entry specifies TLD (top level domain) based local mapping
-# schemes, which is performed before NAMEPREP. Available schemes are:
-#
-# <nameprep version> -- nameprep version
-# filemap:<pathname> -- read mapping rules from a file
-#
-# syntax)
-# local-map <tld> <scheme> ...
-#
-# If the TLD of the domain name matches <tld>, local mapping specified
-# by <scheme> is performed on the name. Otherwise no mapping are
-# performed. Multiple schemes can be specified; they are applied in
-# turn.
-#
-# There are two special <tld>s for specifying a default mapping rule
-# and a mapping rule for local names (domain names containing no
-# dots). If <tld> is `.', its schemes are applied to domain names
-# whose TLD does not match any TLDs specified in local-map entries.
-# If <tld> is `-', its schemes are applied to domain names which
-# contain no dots.
-#
-#local-map - filemap:/some/where/local.map
-#local-map . filemap:/some/where/default.map
-local-map .jp filemap:@mapdir@/jp.map
+++ /dev/null
-#ifndef lint
-static char *rcsid = "$Id: localencoding.c,v 1.1 2003/06/04 00:25:53 marka Exp $";
-#endif
-
-/*
- * 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, 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-#include <config.h>
-
-#ifdef WIN32
-#include <windows.h>
-#endif
-#include <stddef.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-
-#ifdef HAVE_LOCALE_H
-#include <locale.h>
-#endif
-#ifdef HAVE_LANGINFO_H
-#include <langinfo.h>
-#endif
-
-#include <idn/logmacro.h>
-#include <idn/localencoding.h>
-#include <idn/debug.h>
-
-#ifdef ENABLE_MDNKIT_COMPAT
-#include <mdn/localencoding.h>
-#endif
-
-const char *
-idn_localencoding_name(void) {
- char *name;
-
- TRACE(("idn_localencoding_name()\n"));
-
- if ((name = getenv(IDN_LOCALCS_ENV)) != NULL) {
- TRACE(("local encoding=\"%-.30s\"\n",
- name == NULL ? "<null>" : name));
- return (name);
- }
-#ifdef ENABLE_MDNKIT_COMPAT
- if ((name = getenv(MDN_LOCALCS_ENV)) != NULL) {
- TRACE(("local encoding=\"%-.30s\"\n",
- name == NULL ? "<null>" : name));
- return (name);
- }
-#endif
-
-#ifdef WIN32
- {
- static char cp_str[40]; /* enough */
- (void)sprintf(cp_str, "CP%u", GetACP());
- TRACE(("local encoding(codepage)=\"%-.30s\"\n", cp_str));
- return (cp_str);
- }
-#else /* WIN32 */
-#ifdef HAVE_LIBCHARSET
- name = locale_charset();
- TRACE(("local encoding=\"%-.30s\"\n",
- name == NULL ? "<null>" : name));
- return (name);
-#endif
-
-#if defined(HAVE_NL_LANGINFO) && defined(CODESET)
- if ((name = nl_langinfo(CODESET)) != NULL) {
- TRACE(("local encoding=\"%-.30s\"\n",
- name == NULL ? "<null>" : name));
- return (name);
- }
-#endif
- (void)(
-#ifdef HAVE_SETLOCALE
- (name = setlocale(LC_CTYPE, NULL)) ||
-#endif
- (name = getenv("LC_ALL")) ||
- (name = getenv("LC_CTYPE")) ||
- (name = getenv("LANG")));
- TRACE(("local encoding=\"%-.30s\"\n", name == NULL ? "<null>" : name));
- return (name);
-#endif /* WIN32 */
-}
+++ /dev/null
-#ifndef lint
-static char *rcsid = "$Id: log.c,v 1.1 2003/06/04 00:25:53 marka Exp $";
-#endif
-
-/*
- * 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, 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-#include <config.h>
-
-#include <stdio.h>
-#include <stdarg.h>
-#include <stdlib.h>
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-
-#include <idn/log.h>
-
-#define LOGLEVEL_ENV "IDN_LOG_LEVEL"
-
-#ifdef DEBUG
-#define DEFAULT_LOG_LEVEL idn_log_level_info
-#else
-#define DEFAULT_LOG_LEVEL idn_log_level_error
-#endif
-
-static int log_level = -1;
-static idn_log_proc_t log_proc;
-
-static void initialize(void);
-static void log(int level, const char *fmt, va_list args);
-static void log_to_stderr(int level, const char *buf);
-
-void
-idn_log_fatal(const char *fmt, ...) {
- va_list args;
-
- va_start(args, fmt);
- log(idn_log_level_fatal, fmt, args);
- va_end(args);
- exit(1);
-}
-
-void
-idn_log_error(const char *fmt, ...) {
- va_list args;
-
- va_start(args, fmt);
- log(idn_log_level_error, fmt, args);
- va_end(args);
-}
-
-void
-idn_log_warning(const char *fmt, ...) {
- va_list args;
-
- va_start(args, fmt);
- log(idn_log_level_warning, fmt, args);
- va_end(args);
-}
-
-void
-idn_log_info(const char *fmt, ...) {
- va_list args;
-
- va_start(args, fmt);
- log(idn_log_level_info, fmt, args);
- va_end(args);
-}
-
-void
-idn_log_trace(const char *fmt, ...) {
- va_list args;
-
- va_start(args, fmt);
- log(idn_log_level_trace, fmt, args);
- va_end(args);
-}
-
-void
-idn_log_dump(const char *fmt, ...) {
- va_list args;
-
- va_start(args, fmt);
- log(idn_log_level_dump, fmt, args);
- va_end(args);
-}
-
-void
-idn_log_setlevel(int level) {
- if (level >= 0)
- log_level = level;
-}
-
-int
-idn_log_getlevel(void) {
- if (log_level < 0)
- initialize();
- return log_level;
-}
-
-void
-idn_log_setproc(idn_log_proc_t proc) {
- if (proc == NULL)
- log_proc = log_to_stderr;
- else
- log_proc = proc;
-}
-
-static void
-initialize(void) {
- char *s;
-
- if (log_level < 0) {
- if ((s = getenv(LOGLEVEL_ENV)) != NULL) {
- int level = atoi(s);
- if (level >= 0)
- log_level = level;
- }
- if (log_level < 0)
- log_level = DEFAULT_LOG_LEVEL;
- }
-
- if (log_proc == NULL)
- log_proc = log_to_stderr;
-}
-
-static void
-log(int level, const char *fmt, va_list args) {
- char buf[1024];
-
- initialize();
-
- if (log_level < level)
- return;
-
-#if HAVE_VSNPRINTF
- (void)vsnprintf(buf, sizeof(buf), fmt, args);
-#else
- /* Let's hope 1024 is enough.. */
- (void)vsprintf(buf, fmt, args);
-#endif
- (*log_proc)(level, buf);
-}
-
-static void
-log_to_stderr(int level, const char *buf) {
- char *title;
- char tmp[20];
-
- switch (level) {
- case idn_log_level_fatal:
- title = "FATAL";
- break;
- case idn_log_level_error:
- title = "ERROR";
- break;
- case idn_log_level_warning:
- title = "WARNING";
- break;
- case idn_log_level_info:
- title = "INFO";
- break;
- case idn_log_level_trace:
- title = "TRACE";
- break;
- case idn_log_level_dump:
- title = "DUMP";
- break;
- default:
- (void)sprintf(tmp, "LEVEL%d", level);
- title = tmp;
- break;
- }
- fprintf(stderr, "%u: [%s] %s", (unsigned int)getpid(), title, buf);
-}
+++ /dev/null
-# $Id: make.wnt,v 1.1 2003/06/04 00:25:54 marka Exp $
-# Makefile for MDN library, manually configured for WIN-NT (VC5.0)
-#
-# Copyright (c) 2000,2002 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) 2000-2002 Japan Network Information Center. All rights reserved."
-#
-# 4. The name of JPNIC may not 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.
-
-!include <ntwin32.mak>
-
-INCDIR = ..\include
-ICONVDIR = ..\win
-LIBS = $(ICONVDIR)\iconv.lib
-LIBS_LITE =
-SYSLIBS = $(conlibsdll)
-
-#
-# Files to build MDN library
-#
-
-HDRS_LITE = \
- $(INCDIR)\config.h \
- $(INCDIR)\idn\aliaslist.h \
- $(INCDIR)\idn\api.h \
- $(INCDIR)\idn\assert.h \
- $(INCDIR)\idn\checker.h \
- $(INCDIR)\idn\converter.h \
- $(INCDIR)\idn\debug.h \
- $(INCDIR)\idn\delimitermap.h \
- $(INCDIR)\idn\export.h \
- $(INCDIR)\idn\filechecker.h \
- $(INCDIR)\idn\filemapper.h \
- $(INCDIR)\idn\localencoding.h \
- $(INCDIR)\idn\log.h \
- $(INCDIR)\idn\logmacro.h \
- $(INCDIR)\idn\mapper.h \
- $(INCDIR)\idn\mapselector.h \
- $(INCDIR)\idn\nameprep.h \
- $(INCDIR)\idn\normalizer.h \
- $(INCDIR)\idn\punycode.h \
- $(INCDIR)\idn\race.h \
- $(INCDIR)\idn\res.h \
- $(INCDIR)\idn\resconf.h \
- $(INCDIR)\idn\result.h \
- $(INCDIR)\idn\strhash.h \
- $(INCDIR)\idn\ucs4.h \
- $(INCDIR)\idn\ucsmap.h \
- $(INCDIR)\idn\ucsset.h \
- $(INCDIR)\idn\unicode.h \
- $(INCDIR)\idn\unormalize.h \
- $(INCDIR)\idn\utf8.h \
- $(INCDIR)\idn\util.h \
- $(INCDIR)\idn\version.h
-
-HDRS = $(ICONVDIR)\iconv.h \
- $(HDRS_LITE)
-
-SRCS = aliaslist.c api.c checker.c \
- converter.c debug.c delimitermap.c \
- filechecker.c filemapper.c \
- localencoding.c log.c mapper.c \
- mapselector.c nameprep.c nameprep_template.c \
- nameprepdata.c normalizer.c punycode.c race.c \
- res.c resconf.c result.c \
- strhash.c ucs4.c ucsmap.c \
- ucsset.c unicode.c unicode_template.c \
- unicodedata_320.c unormalize.c \
- utf8.c util.c version.c
-
-OBJS = aliaslist.obj api.obj checker.obj \
- converter.obj debug.obj delimitermap.obj \
- filechecker.obj filemapper.obj \
- localencoding.obj log.obj mapper.obj \
- mapselector.obj nameprep.obj \
- normalizer.obj punycode.obj race.obj \
- res.obj resconf.obj result.obj \
- strhash.obj ucs4.obj ucsmap.obj \
- ucsset.obj unicode.obj \
- unormalize.obj \
- utf8.obj util.obj version.obj
-
-OBJS_LITE = \
- aliaslist_l.obj api_l.obj checker_l.obj \
- converter_l.obj debug_l.obj delimitermap_l.obj \
- filechecker_l.obj filemapper_l.obj \
- localencoding_l.obj log_l.obj mapper_l.obj \
- mapselector_l.obj nameprep_l.obj \
- normalizer_l.obj punycode_l.obj race_l.obj \
- res_l.obj resconf_l.obj result_l.obj \
- strhash_l.obj ucs4_l.obj ucsmap_l.obj \
- ucsset_l.obj unicode_l.obj \
- unormalize_l.obj \
- utf8_l.obj util_l.obj version_l.obj
-
-
-#DBG = -DDEBUG
-
-#
-# Target to build
-#
-
-TARGETS = idnkit.dll idnkitlite.dll
-
-all: $(TARGETS)
-
-idnkit.dll: $(OBJS)
- -del idnkit.dll
- $(link) /out:"idnkit.dll" /implib:"idnkit.lib" $(dlllflags) $(OBJS) $(LIBS) $(SYSLIBS)
-
-idnkitlite.dll: $(OBJS_LITE)
- -del idnkitlite.dll
- $(link) /out:"idnkitlite.dll" /implib:"idnkitlite.lib" $(dlllflags) $(OBJS_LITE) $(LIBS_LITE) $(SYSLIBS)
-
-install:
-
-clean:
- -del *.obj
- -del *.lib
- -del *.dll
- -del *.exp
-
-#
-# Dependencies
-#
-
-EXP = -DIDN_EXPORT="extern __declspec(dllexport)"
-CCARGS = $(cflags) $(cvarsdll) -I$(INCDIR) -I$(ICONVDIR) $(EXP) $(DBG)
-CCARGS_LITE = $(cflags) $(cvarsdll) -I$(INCDIR) -DWITHOUT_ICONV $(EXP) $(DBG)
-
-aliaslist.obj: aliaslist.c $(HDRS)
- $(cc) $(CCARGS) /Foaliaslist.obj aliaslist.c
-api.obj: api.c $(HDRS)
- $(cc) $(CCARGS) /Foapi.obj api.c
-checker.obj: checker.c $(HDRS)
- $(cc) $(CCARGS) /Fochecker.obj checker.c
-converter.obj: converter.c $(HDRS)
- $(cc) $(CCARGS) /Foconverter.obj converter.c
-debug.obj: debug.c $(HDRS)
- $(cc) $(CCARGS) /Fodebug.obj debug.c
-delimitermap.obj: delimitermap.c $(HDRS)
- $(cc) $(CCARGS) /Fodelimitermap.obj delimitermap.c
-filechecker.obj: filechecker.c $(HDRS)
- $(cc) $(CCARGS) /Fofilechecker.obj filechecker.c
-filemapper.obj: filemapper.c $(HDRS)
- $(cc) $(CCARGS) /Fofilemapper.obj filemapper.c
-localencoding.obj: localencoding.c $(HDRS)
- $(cc) $(CCARGS) /Folocalencoding.obj localencoding.c
-log.obj: log.c $(HDRS)
- $(cc) $(CCARGS) /Folog.obj log.c
-mapper.obj: mapper.c $(HDRS)
- $(cc) $(CCARGS) /Fomapper.obj mapper.c
-mapselector.obj: mapselector.c $(HDRS)
- $(cc) $(CCARGS) /Fomapselector.obj mapselector.c
-nameprep.obj: nameprep.c nameprepdata.c nameprep_template.c $(HDRS)
- $(cc) $(CCARGS) /Fonameprep.obj nameprep.c
-normalizer.obj: normalizer.c $(HDRS)
- $(cc) $(CCARGS) /Fonormalizer.obj normalizer.c
-punycode.obj: punycode.c $(HDRS)
- $(cc) $(CCARGS) /Fopunycode.obj punycode.c
-race.obj: race.c $(HDRS)
- $(cc) $(CCARGS) /Forace.obj race.c
-res.obj: res.c $(HDRS)
- $(cc) $(CCARGS) /Fores.obj res.c
-resconf.obj: resconf.c $(HDRS)
- $(cc) $(CCARGS) /Foresconf.obj resconf.c
-result.obj: result.c $(HDRS)
- $(cc) $(CCARGS) /Foresult.obj result.c
-strhash.obj: strhash.c $(HDRS)
- $(cc) $(CCARGS) /Fostrhash.obj strhash.c
-ucs4.obj: ucs4.c $(HDRS)
- $(cc) $(CCARGS) /Foucs4.obj ucs4.c
-ucsmap.obj: ucsmap.c $(HDRS)
- $(cc) $(CCARGS) /Foucsmap.obj ucsmap.c
-ucsset.obj: ucsset.c $(HDRS)
- $(cc) $(CCARGS) /Foucsset.obj ucsset.c
-unicode.obj: unicode.c unicodedata_320.c unicode_template.c $(HDRS)
- $(cc) $(CCARGS) /Founicode.obj unicode.c
-unormalize.obj: unormalize.c $(HDRS)
- $(cc) $(CCARGS) /Founormalize.obj unormalize.c
-utf8.obj: utf8.c $(HDRS)
- $(cc) $(CCARGS) /Foutf8.obj utf8.c
-util.obj: util.c $(HDRS)
- $(cc) $(CCARGS) /Foutil.obj util.c
-version.obj: version.c $(HDRS)
- $(cc) $(CCARGS) /Foversion.obj version.c
-
-aliaslist_l.obj: aliaslist.c $(HDRS_LITE)
- $(cc) $(CCARGS_LITE) /Foaliaslist_l.obj aliaslist.c
-api_l.obj: api.c $(HDRS_LITE)
- $(cc) $(CCARGS_LITE) /Foapi_l.obj api.c
-checker_l.obj: checker.c $(HDRS_LITE)
- $(cc) $(CCARGS_LITE) /Fochecker_l.obj checker.c
-converter_l.obj: converter.c $(HDRS_LITE)
- $(cc) $(CCARGS_LITE) /Foconverter_l.obj converter.c
-debug_l.obj: debug.c $(HDRS_LITE)
- $(cc) $(CCARGS_LITE) /Fodebug_l.obj debug.c
-delimitermap_l.obj: delimitermap.c $(HDRS_LITE)
- $(cc) $(CCARGS_LITE) /Fodelimitermap_l.obj delimitermap.c
-dude_l.obj: dude.c $(HDRS_LITE)
- $(cc) $(CCARGS_LITE) /Fodude_l.obj dude.c
-filechecker_l.obj: filechecker.c $(HDRS_LITE)
- $(cc) $(CCARGS_LITE) /Fofilechecker_l.obj filechecker.c
-filemapper_l.obj: filemapper.c $(HDRS_LITE)
- $(cc) $(CCARGS_LITE) /Fofilemapper_l.obj filemapper.c
-localencoding_l.obj: localencoding.c $(HDRS_LITE)
- $(cc) $(CCARGS_LITE) /Folocalencoding_l.obj localencoding.c
-log_l.obj: log.c $(HDRS_LITE)
- $(cc) $(CCARGS_LITE) /Folog_l.obj log.c
-mapper_l.obj: mapper.c $(HDRS_LITE)
- $(cc) $(CCARGS_LITE) /Fomapper_l.obj mapper.c
-mapselector_l.obj: mapselector.c $(HDRS_LITE)
- $(cc) $(CCARGS_LITE) /Fomapselector_l.obj mapselector.c
-nameprep_l.obj: nameprep.c nameprepdata.c nameprep_template.c $(HDRS_LITE)
- $(cc) $(CCARGS_LITE) /Fonameprep_l.obj nameprep.c
-normalizer_l.obj: normalizer.c $(HDRS_LITE)
- $(cc) $(CCARGS_LITE) /Fonormalizer_l.obj normalizer.c
-punycode_l.obj: punycode.c $(HDRS_LITE)
- $(cc) $(CCARGS_LITE) /Fopunycode_l.obj punycode.c
-race_l.obj: race.c $(HDRS_LITE)
- $(cc) $(CCARGS_LITE) /Forace_l.obj race.c
-res_l.obj: res.c $(HDRS_LITE)
- $(cc) $(CCARGS_LITE) /Fores_l.obj res.c
-resconf_l.obj: resconf.c $(HDRS_LITE)
- $(cc) $(CCARGS_LITE) /Foresconf_l.obj resconf.c
-result_l.obj: result.c $(HDRS_LITE)
- $(cc) $(CCARGS_LITE) /Foresult_l.obj result.c
-strhash_l.obj: strhash.c $(HDRS_LITE)
- $(cc) $(CCARGS_LITE) /Fostrhash_l.obj strhash.c
-ucs4_l.obj: ucs4.c $(HDRS_LITE)
- $(cc) $(CCARGS_LITE) /Foucs4_l.obj ucs4.c
-ucsmap_l.obj: ucsmap.c $(HDRS_LITE)
- $(cc) $(CCARGS_LITE) /Foucsmap_l.obj ucsmap.c
-ucsset_l.obj: ucsset.c $(HDRS_LITE)
- $(cc) $(CCARGS_LITE) /Foucsset_l.obj ucsset.c
-unicode_l.obj: unicode.c unicodedata_320.c unicode_template.c $(HDRS_LITE)
- $(cc) $(CCARGS_LITE) /Founicode_l.obj unicode.c
-unormalize_l.obj: unormalize.c $(HDRS_LITE)
- $(cc) $(CCARGS_LITE) /Founormalize_l.obj unormalize.c
-utf8_l.obj: utf8.c $(HDRS_LITE)
- $(cc) $(CCARGS_LITE) /Foutf8_l.obj utf8.c
-util_l.obj: util.c $(HDRS_LITE)
- $(cc) $(CCARGS_LITE) /Foutil_l.obj util.c
-version_l.obj: version.c $(HDRS_LITE)
- $(cc) $(CCARGS_LITE) /Foversion_l.obj version.c
+++ /dev/null
-#ifndef lint
-static char *rcsid = "$Id: mapper.c,v 1.1 2003/06/04 00:25:55 marka Exp $";
-#endif
-
-/*
- * Copyright (c) 2001,2002 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-#include <config.h>
-
-#include <stddef.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <idn/result.h>
-#include <idn/assert.h>
-#include <idn/logmacro.h>
-#include <idn/mapper.h>
-#include <idn/strhash.h>
-#include <idn/debug.h>
-#include <idn/util.h>
-#include <idn/ucs4.h>
-
-/*
- * Type for mapping scheme.
- */
-typedef struct {
- char *prefix;
- char *parameter;
- idn_mapper_createproc_t create;
- idn_mapper_destroyproc_t destroy;
- idn_mapper_mapproc_t map;
- void *context;
-} map_scheme_t;
-
-/*
- * Standard mapping schemes.
- */
-static const map_scheme_t nameprep_scheme = {
- "RFC3491",
- NULL,
- idn_nameprep_createproc,
- idn_nameprep_destroyproc,
- idn_nameprep_mapproc,
- NULL,
-};
-
-static const map_scheme_t filemap_scheme = {
- "filemap",
- "",
- idn__filemapper_createproc,
- idn__filemapper_destroyproc,
- idn__filemapper_mapproc,
- NULL,
-};
-
-static const map_scheme_t *standard_map_schemes[] = {
- &nameprep_scheme,
- &filemap_scheme,
- NULL,
-};
-
-/*
- * Hash table for mapping schemes.
- */
-static idn__strhash_t scheme_hash = NULL;
-
-/*
- * Mapper object type.
- */
-struct idn_mapper {
- int nschemes;
- int scheme_size;
- map_scheme_t *schemes;
- int reference_count;
-};
-
-#define MAPPER_INITIAL_SCHEME_SIZE 1
-
-idn_result_t
-idn_mapper_initialize(void) {
- idn_result_t r;
- map_scheme_t **scheme;
-
- TRACE(("idn_mapper_initialize()\n"));
-
- if (scheme_hash != NULL) {
- r = idn_success; /* already initialized */
- goto ret;
- }
-
- r = idn__strhash_create(&scheme_hash);
- if (r != idn_success)
- goto ret;
-
- for (scheme = (map_scheme_t **)standard_map_schemes;
- *scheme != NULL; scheme++) {
- r = idn__strhash_put(scheme_hash, (*scheme)->prefix, *scheme);
- if (r != idn_success)
- goto ret;
- }
-
- r = idn_success;
-ret:
- if (r != idn_success && scheme_hash != NULL) {
- idn__strhash_destroy(scheme_hash, NULL);
- scheme_hash = NULL;
- }
- TRACE(("idn_mapper_initialize(): %s\n", idn_result_tostring(r)));
- return (r);
-}
-
-idn_result_t
-idn_mapper_create(idn_mapper_t *ctxp) {
- idn_mapper_t ctx = NULL;
- idn_result_t r;
-
- assert(scheme_hash != NULL);
- assert(ctxp != NULL);
-
- TRACE(("idn_mapper_create()\n"));
-
- ctx = (idn_mapper_t) malloc(sizeof(struct idn_mapper));
- if (ctx == NULL) {
- r = idn_nomemory;
- goto ret;
- }
-
- ctx->schemes = (map_scheme_t *) malloc(sizeof(map_scheme_t)
- * MAPPER_INITIAL_SCHEME_SIZE);
- if (ctx->schemes == NULL) {
- r = idn_nomemory;
- goto ret;
- }
-
- ctx->nschemes = 0;
- ctx->scheme_size = MAPPER_INITIAL_SCHEME_SIZE;
- ctx->reference_count = 1;
- *ctxp = ctx;
- r = idn_success;
-
-ret:
- if (r != idn_success) {
- if (ctx != NULL)
- free(ctx->schemes);
- free(ctx);
- }
- TRACE(("idn_mapper_create(): %s\n", idn_result_tostring(r)));
- return (r);
-}
-
-void
-idn_mapper_destroy(idn_mapper_t ctx) {
- int i;
-
- assert(scheme_hash != NULL);
- assert(ctx != NULL);
-
- TRACE(("idn_mapper_destroy()\n"));
-
- ctx->reference_count--;
- if (ctx->reference_count <= 0) {
- TRACE(("idn_mapper_destroy(): the object is destroyed\n"));
- for (i = 0; i < ctx->nschemes; i++)
- ctx->schemes[i].destroy(ctx->schemes[i].context);
- free(ctx->schemes);
- free(ctx);
- } else {
- TRACE(("idn_mapper_destroy(): "
- "update reference count (%d->%d)\n",
- ctx->reference_count + 1, ctx->reference_count));
- }
-}
-
-void
-idn_mapper_incrref(idn_mapper_t ctx) {
- assert(ctx != NULL && scheme_hash != NULL);
-
- TRACE(("idn_mapper_incrref()\n"));
- TRACE(("idn_mapper_incrref: update reference count (%d->%d)\n",
- ctx->reference_count, ctx->reference_count + 1));
-
- ctx->reference_count++;
-}
-
-idn_result_t
-idn_mapper_add(idn_mapper_t ctx, const char *scheme_name) {
- idn_result_t r;
- map_scheme_t *scheme;
- const char *scheme_prefix;
- const char *scheme_parameter;
- void *scheme_context = NULL;
- char static_buffer[128]; /* large enough */
- char *buffer = static_buffer;
-
- assert(scheme_hash != NULL);
- assert(ctx != NULL);
-
- TRACE(("idn_mapper_add(scheme_name=%s)\n",
- idn__debug_xstring(scheme_name, 50)));
-
- /*
- * Split `scheme_name' into `scheme_prefix' and `scheme_parameter'.
- */
- scheme_parameter = strchr(scheme_name, ':');
- if (scheme_parameter == NULL) {
- scheme_prefix = scheme_name;
- } else {
- ptrdiff_t scheme_prefixlen;
-
- scheme_prefixlen = scheme_parameter - scheme_name;
- if (scheme_prefixlen + 1 > sizeof(static_buffer)) {
- buffer = (char *) malloc(scheme_prefixlen + 1);
- if (buffer == NULL) {
- r = idn_nomemory;
- goto ret;
- }
- }
- memcpy(buffer, scheme_name, scheme_prefixlen);
- *(buffer + scheme_prefixlen) = '\0';
- scheme_prefix = buffer;
- scheme_parameter++;
- }
-
- /*
- * Find a scheme.
- */
- if (idn__strhash_get(scheme_hash, scheme_prefix, (void **)&scheme)
- != idn_success) {
- ERROR(("idn_mapper_add(): invalid scheme name \"%-.30s\"\n",
- scheme_prefix));
- r = idn_invalid_name;
- goto ret;
- }
- if (scheme_parameter == NULL) {
- if (scheme->parameter != NULL)
- scheme_parameter = scheme->parameter;
- else
- scheme_parameter = scheme->prefix;
- }
-
- /*
- * Add the scheme.
- */
- assert(ctx->nschemes <= ctx->scheme_size);
-
- if (ctx->nschemes == ctx->scheme_size) {
- map_scheme_t *new_schemes;
-
- new_schemes = (map_scheme_t *) realloc(ctx->schemes,
- sizeof(map_scheme_t) * ctx->scheme_size * 2);
- if (new_schemes == NULL) {
- r = idn_nomemory;
- goto ret;
- }
- ctx->schemes = new_schemes;
- ctx->scheme_size *= 2;
- }
-
- r = scheme->create(scheme_parameter, &scheme_context);
- if (r != idn_success)
- goto ret;
-
- memcpy(ctx->schemes + ctx->nschemes, scheme, sizeof(map_scheme_t));
- ctx->schemes[ctx->nschemes].context = scheme_context;
- ctx->nschemes++;
- r = idn_success;
-ret:
- if (r != idn_success)
- free(scheme_context);
- if (buffer != static_buffer)
- free(buffer);
- TRACE(("idn_mapper_add(): %s\n", idn_result_tostring(r)));
- return (r);
-}
-
-idn_result_t
-idn_mapper_addall(idn_mapper_t ctx, const char **scheme_names, int nschemes) {
- idn_result_t r;
- int i;
-
- assert(scheme_hash != NULL);
- assert(ctx != NULL && scheme_names != NULL);
-
- TRACE(("idn_mapper_addall(nschemes=%d)\n", nschemes));
-
- for (i = 0; i < nschemes; i++) {
- r = idn_mapper_add(ctx, (const char *)*scheme_names);
- if (r != idn_success)
- goto ret;
- scheme_names++;
- }
-
- r = idn_success;
-ret:
- TRACE(("idn_mapper_addall(): %s\n", idn_result_tostring(r)));
- return (r);
-}
-
-idn_result_t
-idn_mapper_map(idn_mapper_t ctx, const unsigned long *from,
- unsigned long *to, size_t tolen) {
- idn_result_t r;
- unsigned long *src, *dst;
- unsigned long *buffers[2] = {NULL, NULL};
- size_t buflen[2] = {0, 0};
- size_t dstlen;
- int idx;
- int i;
-
- assert(scheme_hash != NULL);
- assert(ctx != NULL && from != NULL && to != NULL);
-
- TRACE(("idn_mapper_map(from=\"%s\", tolen=%d)\n",
- idn__debug_ucs4xstring(from, 50), (int)tolen));
-
- if (ctx->nschemes <= 0) {
- if (tolen < idn_ucs4_strlen(from) + 1) {
- r = idn_buffer_overflow;
- goto ret;
- }
- idn_ucs4_strcpy(to, from);
- r = idn_success;
- goto ret;
- }
-
- /*
- * Map.
- */
- src = (void *)from;
- dstlen = idn_ucs4_strlen(from) + 1;
-
- i = 0;
- while (i < ctx->nschemes) {
- TRACE(("idn_mapper_map(): map %s\n", ctx->schemes[i].prefix));
-
- /*
- * Choose destination area to restore the result of a mapping.
- */
- if (i + 1 == ctx->nschemes) {
- dst = to;
- dstlen = tolen;
-
- } else {
- if (src == buffers[0])
- idx = 1;
- else
- idx = 0;
-
- if (buflen[idx] < dstlen) {
- void *newbuf;
-
- newbuf = realloc(buffers[idx],
- sizeof(long) * dstlen);
- if (newbuf == NULL) {
- r = idn_nomemory;
- goto ret;
- }
- buffers[idx] = (unsigned long *)newbuf;
- buflen[idx] = dstlen;
- }
-
- dst = buffers[idx];
- dstlen = buflen[idx];
- }
-
- /*
- * Perform i-th map scheme.
- * If buffer size is not enough, we double it and try again.
- */
- r = (ctx->schemes[i].map)(ctx->schemes[i].context, src, dst,
- dstlen);
- if (r == idn_buffer_overflow && dst != to) {
- dstlen *= 2;
- continue;
- }
- if (r != idn_success)
- goto ret;
-
- src = dst;
- i++;
- }
-
- r = idn_success;
-ret:
- free(buffers[0]);
- free(buffers[1]);
- if (r == idn_success) {
- TRACE(("idn_mapper_map(): success (to=\"%s\")\n",
- idn__debug_ucs4xstring(to, 50)));
- } else {
- TRACE(("idn_mapper_map(): %s\n", idn_result_tostring(r)));
- }
- return (r);
-}
-
-idn_result_t
-idn_mapper_register(const char *prefix,
- idn_mapper_createproc_t create,
- idn_mapper_destroyproc_t destroy,
- idn_mapper_mapproc_t map) {
- idn_result_t r;
- map_scheme_t *scheme = NULL;
-
- assert(scheme_hash != NULL);
- assert(prefix != NULL && create != NULL && destroy != NULL &&
- map != NULL);
-
- TRACE(("idn_mapper_register(prefix=%s)\n", prefix));
-
- scheme = (map_scheme_t *) malloc(sizeof(map_scheme_t));
- if (scheme == NULL) {
- r = idn_nomemory;
- goto ret;
- }
-
- scheme->prefix = (char *) malloc(strlen(prefix) + 1);
- if (scheme->prefix == NULL) {
- r = idn_nomemory;
- goto ret;
- }
-
- strcpy(scheme->prefix, prefix);
- scheme->parameter = NULL;
- scheme->create = create;
- scheme->destroy = destroy;
- scheme->map = map;
-
- r = idn__strhash_put(scheme_hash, prefix, scheme);
- if (r != idn_success)
- goto ret;
-
- r = idn_success;
-ret:
- if (r != idn_success) {
- if (scheme != NULL)
- free(scheme->prefix);
- free(scheme);
- }
-
- TRACE(("idn_mapper_register(): %s\n", idn_result_tostring(r)));
- return (r);
-}
+++ /dev/null
-#ifndef lint
-static char *rcsid = "$Id: mapselector.c,v 1.1 2003/06/04 00:25:56 marka Exp $";
-#endif
-
-/*
- * Copyright (c) 2001,2002 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-#include <config.h>
-
-#include <stddef.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <idn/assert.h>
-#include <idn/logmacro.h>
-#include <idn/result.h>
-#include <idn/mapselector.h>
-#include <idn/strhash.h>
-#include <idn/debug.h>
-#include <idn/util.h>
-#include <idn/ucs4.h>
-
-struct idn_mapselector {
- idn__strhash_t maphash;
- int reference_count;
-};
-
-/*
- * Maximum length of a top level domain name. (e.g. `com', `jp', ...)
- */
-#define MAPSELECTOR_MAX_TLD_LENGTH 63
-
-static void string_ascii_tolower(char *string);
-
-
-const unsigned long *
-idn_mapselector_getnotld(void) {
- static const unsigned long notld[] = {0x002d, 0x0000}; /* "-" */
- return (notld);
-}
-
-const unsigned long *
-idn_mapselector_getdefaulttld(void) {
- const static unsigned long defaulttld[] = {0x002e, 0x0000}; /* "." */
- return (defaulttld);
-}
-
-idn_result_t
-idn_mapselector_initialize(void) {
- idn_result_t r;
-
- TRACE(("idn_mapselector_initialize()\n"));
-
- r = idn_mapper_initialize();
-
- TRACE(("idn_mapselector_initialize(): %s\n", idn_result_tostring(r)));
- return (r);
-}
-
-idn_result_t
-idn_mapselector_create(idn_mapselector_t *ctxp) {
- idn_mapselector_t ctx = NULL;
- idn_result_t r;
-
- assert(ctxp != NULL);
- TRACE(("idn_mapselector_create()\n"));
-
- ctx = (idn_mapselector_t)malloc(sizeof(struct idn_mapselector));
- if (ctx == NULL) {
- r = idn_nomemory;
- goto ret;
- }
-
- ctx->maphash = NULL;
- ctx->reference_count = 1;
-
- r = idn__strhash_create(&(ctx->maphash));
- if (r != idn_success)
- goto ret;
-
- *ctxp = ctx;
- r = idn_success;
-
-ret:
- if (r != idn_success) {
- if (ctx != NULL)
- free(ctx->maphash);
- free(ctx);
- }
- TRACE(("idn_mapselector_create(): %s\n", idn_result_tostring(r)));
- return (r);
-}
-
-void
-idn_mapselector_destroy(idn_mapselector_t ctx) {
- assert(ctx != NULL);
-
- TRACE(("idn_mapselector_destroy()\n"));
-
- ctx->reference_count--;
- if (ctx->reference_count <= 0) {
- TRACE(("idn_mapselector_destroy(): "
- "the object is destroyed\n"));
- idn__strhash_destroy(ctx->maphash,
- (idn__strhash_freeproc_t)&idn_mapper_destroy);
- free(ctx);
- } else {
- TRACE(("idn_mapselector_destroy(): "
- "update reference count (%d->%d)\n",
- ctx->reference_count + 1, ctx->reference_count));
- }
-}
-
-void
-idn_mapselector_incrref(idn_mapselector_t ctx) {
- assert(ctx != NULL);
-
- TRACE(("idn_mapselector_incrref()\n"));
- TRACE(("idn_mapselector_incrref: update reference count (%d->%d)\n",
- ctx->reference_count, ctx->reference_count + 1));
-
- ctx->reference_count++;
-}
-
-idn_result_t
-idn_mapselector_add(idn_mapselector_t ctx, const char *tld, const char *name) {
- idn_result_t r;
- idn_mapper_t mapper;
- char hash_key[MAPSELECTOR_MAX_TLD_LENGTH + 1];
-
- assert(ctx != NULL && tld != NULL);
-
- TRACE(("idn_mapselector_add(tld=%s, name=%s)\n", tld, name));
-
- if (!(tld[0] == '.' && tld[1] == '\0')) {
- if (tld[0] == '.')
- tld++;
- if (strchr(tld, '.') != NULL) {
- ERROR(("idn_mapselector_add: "
- "invalid TLD \"%-.100s\"\n", tld));
- r = idn_invalid_name;
- goto ret;
- }
- }
- if (strlen(tld) > MAPSELECTOR_MAX_TLD_LENGTH) {
- ERROR(("idn_mapselector_add: "
- "too long TLD \"%-.100s\"\n", tld));
- r = idn_invalid_name;
- goto ret;
- }
- strcpy(hash_key, tld);
- string_ascii_tolower(hash_key);
-
- if (idn__strhash_get(ctx->maphash, hash_key, (void **)&mapper)
- != idn_success) {
- r = idn_mapper_create(&mapper);
- if (r != idn_success)
- goto ret;
-
- r = idn__strhash_put(ctx->maphash, hash_key, mapper);
- if (r != idn_success)
- goto ret;
- }
-
- r = idn_mapper_add(mapper, name);
-ret:
- TRACE(("idn_mapselector_add(): %s\n", idn_result_tostring(r)));
- return (r);
-}
-
-idn_result_t
-idn_mapselector_addall(idn_mapselector_t ctx, const char *tld,
- const char **scheme_names, int nschemes) {
- idn_result_t r;
- int i;
-
- assert(ctx != NULL && tld != NULL && scheme_names != NULL);
-
- TRACE(("idn_mapselector_addall(tld=%s, nschemes=%d)\n",
- tld, nschemes));
-
- for (i = 0; i < nschemes; i++) {
- r = idn_mapselector_add(ctx, tld, (const char *)*scheme_names);
- if (r != idn_success)
- goto ret;
- scheme_names++;
- }
-
- r = idn_success;
-ret:
- TRACE(("idn_mapselector_addall(): %s\n", idn_result_tostring(r)));
- return (r);
-}
-
-idn_mapper_t
-idn_mapselector_mapper(idn_mapselector_t ctx, const char *tld) {
- idn_result_t r;
- idn_mapper_t mapper;
- char hash_key[MAPSELECTOR_MAX_TLD_LENGTH + 1];
-
- assert(ctx != NULL && tld != NULL);
-
- TRACE(("idn_mapselector_mapper(tld=%s)\n", tld));
-
- if (!(tld[0] == '.' && tld[1] == '\0')) {
- if (tld[0] == '.')
- tld++;
- if (strchr(tld, '.') != NULL)
- return (NULL);
- }
- if (strlen(tld) > MAPSELECTOR_MAX_TLD_LENGTH)
- return (NULL);
- strcpy(hash_key, tld);
- string_ascii_tolower(hash_key);
-
- mapper = NULL;
- r = idn__strhash_get(ctx->maphash, hash_key, (void **)&mapper);
- if (r != idn_success)
- return (NULL);
-
- idn_mapper_incrref(mapper);
-
- return (mapper);
-}
-
-idn_result_t
-idn_mapselector_map(idn_mapselector_t ctx, const unsigned long *from,
- const char *tld, unsigned long *to, size_t tolen) {
- idn_result_t r;
- idn_mapper_t mapper = NULL;
- char hash_key[MAPSELECTOR_MAX_TLD_LENGTH + 1];
- size_t fromlen;
-
- assert(ctx != NULL && from != NULL && to != NULL);
-
- TRACE(("idn_mapselector_map(from=\"%s\", tld=\"%s\", tolen=%d)\n",
- idn__debug_ucs4xstring(from, 50), idn__debug_xstring(tld, 50),
- (int)tolen));
-
- if (!(tld[0] == '.' && tld[1] == '\0')) {
- if (tld[0] == '.')
- tld++;
- if (strchr(tld, '.') != NULL) {
- r = idn_invalid_name;
- goto ret;
- }
- }
- if (strlen(tld) > MAPSELECTOR_MAX_TLD_LENGTH) {
- r = idn_invalid_name;
- goto ret;
- }
- strcpy(hash_key, tld);
- string_ascii_tolower(hash_key);
-
- fromlen = idn_ucs4_strlen(from);
-
- /*
- * Get mapper for the TLD.
- */
- if (idn__strhash_get(ctx->maphash, hash_key, (void **)&mapper)
- != idn_success) {
- strcpy(hash_key, IDN_MAPSELECTOR_DEFAULTTLD);
- idn__strhash_get(ctx->maphash, hash_key, (void **)&mapper);
- }
-
- /*
- * Map.
- * If default mapper has not been registered, copy the string.
- */
- if (mapper == NULL) {
- TRACE(("idn_mapselector_map(): no mapper\n"));
- if (fromlen + 1 > tolen) {
- r = idn_buffer_overflow;
- goto ret;
- }
- memcpy(to, from, (fromlen + 1) * sizeof(*from));
- } else {
- TRACE(("idn_mapselector_map(): tld=%s\n", tld));
- r = idn_mapper_map(mapper, from, to, tolen);
- if (r != idn_success)
- goto ret;
- }
-
- r = idn_success;
-ret:
- if (r == idn_success) {
- TRACE(("idn_mapselector_map(): succcess (to=\"%s\")\n",
- idn__debug_ucs4xstring(to, 50)));
- } else {
- TRACE(("idn_mapselector_map(): %s\n", idn_result_tostring(r)));
- }
- return (r);
-}
-
-idn_result_t
-idn_mapselector_map2(idn_mapselector_t ctx, const unsigned long *from,
- const unsigned long *tld, unsigned long *to,
- size_t tolen) {
- char tld_utf8[MAPSELECTOR_MAX_TLD_LENGTH + 1];
- idn_result_t r;
-
- assert(ctx != NULL && from != NULL && to != NULL);
-
- TRACE(("idn_mapselector_map2(from=\"%s\", tld=\"%s\")\n",
- idn__debug_ucs4xstring(from, 50),
- idn__debug_ucs4xstring(tld, 50)));
-
- r = idn_ucs4_ucs4toutf8(tld, tld_utf8, sizeof(tld_utf8));
- if (r == idn_buffer_overflow) {
- r = idn_invalid_name;
- goto ret;
- } else if (r != idn_success) {
- goto ret;
- }
-
- r = idn_mapselector_map(ctx, from, tld_utf8, to, tolen);
-ret:
- if (r == idn_success) {
- TRACE(("idn_mapselector_map2(): success (to=\"%s\")\n",
- idn__debug_ucs4xstring(to, 50)));
- } else {
- TRACE(("idn_mapselector_map2(): %s\n", idn_result_tostring(r)));
- }
- return (r);
-}
-
-static void
-string_ascii_tolower(char *string) {
- unsigned char *p;
-
- for (p = (unsigned char *) string; *p != '\0'; p++) {
- if ('A' <= *p && *p <= 'Z')
- *p = *p - 'A' + 'a';
- }
-}
+++ /dev/null
-#ifndef lint
-static char *rcsid = "$Id: nameprep.c,v 1.1 2003/06/04 00:25:56 marka Exp $";
-#endif
-
-/*
- * Copyright (c) 2001,2002 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-#include <config.h>
-
-#include <stdlib.h>
-#include <string.h>
-
-#include <idn/result.h>
-#include <idn/assert.h>
-#include <idn/log.h>
-#include <idn/logmacro.h>
-#include <idn/debug.h>
-#include <idn/nameprep.h>
-
-#define UCS_MAX 0x7fffffff
-#define UNICODE_MAX 0x10ffff
-
-
-/*
- * Load NAMEPREP compiled tables.
- */
-#include "nameprepdata.c"
-
-/*
- * Define mapping/checking functions for each version of the draft.
- */
-
-#define VERSION rfc3491
-#include "nameprep_template.c"
-#undef VERSION
-
-typedef const char *(*nameprep_mapproc)(unsigned long v);
-typedef int (*nameprep_checkproc)(unsigned long v);
-typedef idn_biditype_t (*nameprep_biditypeproc)(unsigned long v);
-
-static struct idn_nameprep {
- char *version;
- nameprep_mapproc map_proc;
- nameprep_checkproc prohibited_proc;
- nameprep_checkproc unassigned_proc;
- nameprep_biditypeproc biditype_proc;
-} nameprep_versions[] = {
-#define MAKE_NAMEPREP_HANDLE(version, id) \
- { version, \
- compose_sym2(nameprep_map_, id), \
- compose_sym2(nameprep_prohibited_, id), \
- compose_sym2(nameprep_unassigned_, id), \
- compose_sym2(nameprep_biditype_, id), }
- MAKE_NAMEPREP_HANDLE("RFC3491", rfc3491),
- { NULL, NULL, NULL },
-};
-
-static idn_result_t idn_nameprep_check(nameprep_checkproc proc,
- const unsigned long *str,
- const unsigned long **found);
-
-idn_result_t
-idn_nameprep_create(const char *version, idn_nameprep_t *handlep) {
- idn_nameprep_t handle;
-
- assert(handlep != NULL);
-
- TRACE(("idn_nameprep_create(version=%-.50s)\n",
- version == NULL ? "<NULL>" : version));
-
- if (version == NULL)
- version = IDN_NAMEPREP_CURRENT;
-
- /*
- * Lookup table for the specified version. Since the number of
- * versions won't be large (I don't want see draft-23 or such :-),
- * simple linear search is OK.
- */
- for (handle = nameprep_versions; handle->version != NULL; handle++) {
- if (strcmp(handle->version, version) == 0) {
- *handlep = handle;
- return (idn_success);
- }
- }
- return (idn_notfound);
-}
-
-void
-idn_nameprep_destroy(idn_nameprep_t handle) {
- assert(handle != NULL);
-
- TRACE(("idn_nameprep_destroy()\n"));
-
- /* Nothing to do. */
-}
-
-idn_result_t
-idn_nameprep_map(idn_nameprep_t handle, const unsigned long *from,
- unsigned long *to, size_t tolen) {
- assert(handle != NULL && from != NULL && to != NULL);
-
- TRACE(("idn_nameprep_map(ctx=%s, from=\"%s\")\n",
- handle->version, idn__debug_ucs4xstring(from, 50)));
-
- while (*from != '\0') {
- unsigned long v = *from;
- const char *mapped;
-
- if (v > UCS_MAX) {
- /* This cannot happen, but just in case.. */
- return (idn_invalid_codepoint);
- } else if (v > UNICODE_MAX) {
- /* No mapping is possible. */
- mapped = NULL;
- } else {
- /* Try mapping. */
- mapped = (*handle->map_proc)(v);
- }
-
- if (mapped == NULL) {
- /* No mapping. Just copy verbatim. */
- if (tolen < 1)
- return (idn_buffer_overflow);
- *to++ = v;
- tolen--;
- } else {
- const unsigned char *mappeddata;
- size_t mappedlen;
-
- mappeddata = (const unsigned char *)mapped + 1;
- mappedlen = *mapped;
-
- if (tolen < (mappedlen + 3) / 4)
- return (idn_buffer_overflow);
- tolen -= (mappedlen + 3) / 4;
- while (mappedlen >= 4) {
- *to = *mappeddata++;
- *to |= *mappeddata++ << 8;
- *to |= *mappeddata++ << 16;
- *to |= *mappeddata++ << 24;
- mappedlen -= 4;
- to++;
- }
- if (mappedlen > 0) {
- *to = *mappeddata++;
- *to |= (mappedlen >= 2) ?
- *mappeddata++ << 8: 0;
- *to |= (mappedlen >= 3) ?
- *mappeddata++ << 16: 0;
- to++;
- }
- }
- from++;
- }
- if (tolen == 0)
- return (idn_buffer_overflow);
- *to = '\0';
- return (idn_success);
-}
-
-idn_result_t
-idn_nameprep_isprohibited(idn_nameprep_t handle, const unsigned long *str,
- const unsigned long **found) {
- assert(handle != NULL && str != NULL && found != NULL);
-
- TRACE(("idn_nameprep_isprohibited(ctx=%s, str=\"%s\")\n",
- handle->version, idn__debug_ucs4xstring(str, 50)));
-
- return (idn_nameprep_check(handle->prohibited_proc, str, found));
-}
-
-idn_result_t
-idn_nameprep_isunassigned(idn_nameprep_t handle, const unsigned long *str,
- const unsigned long **found) {
- assert(handle != NULL && str != NULL && found != NULL);
-
- TRACE(("idn_nameprep_isunassigned(handle->version, str=\"%s\")\n",
- handle->version, idn__debug_ucs4xstring(str, 50)));
-
- return (idn_nameprep_check(handle->unassigned_proc, str, found));
-}
-
-static idn_result_t
-idn_nameprep_check(nameprep_checkproc proc, const unsigned long *str,
- const unsigned long **found) {
- unsigned long v;
-
- while (*str != '\0') {
- v = *str;
-
- if (v > UCS_MAX) {
- /* This cannot happen, but just in case.. */
- return (idn_invalid_codepoint);
- } else if (v > UNICODE_MAX) {
- /* It is invalid.. */
- *found = str;
- return (idn_success);
- } else if ((*proc)(v)) {
- *found = str;
- return (idn_success);
- }
- str++;
- }
- *found = NULL;
- return (idn_success);
-}
-
-idn_result_t
-idn_nameprep_isvalidbidi(idn_nameprep_t handle, const unsigned long *str,
- const unsigned long **found) {
- unsigned long v;
- idn_biditype_t first_char;
- idn_biditype_t last_char;
- int found_r_al;
-
- assert(handle != NULL && str != NULL && found != NULL);
-
- TRACE(("idn_nameprep_isvalidbidi(ctx=%s, str=\"%s\")\n",
- handle->version, idn__debug_ucs4xstring(str, 50)));
-
- if (*str == '\0') {
- *found = NULL;
- return (idn_success);
- }
-
- /*
- * check first character's type and initialize variables.
- */
- found_r_al = 0;
- if (*str > UCS_MAX) {
- /* This cannot happen, but just in case.. */
- return (idn_invalid_codepoint);
- } else if (*str > UNICODE_MAX) {
- /* It is invalid.. */
- *found = str;
- return (idn_success);
- }
- first_char = last_char = (*(handle->biditype_proc))(*str);
- if (first_char == idn_biditype_r_al) {
- found_r_al = 1;
- }
- str++;
-
- /*
- * see whether string is valid or not.
- */
- while (*str != '\0') {
- v = *str;
-
- if (v > UCS_MAX) {
- /* This cannot happen, but just in case.. */
- return (idn_invalid_codepoint);
- } else if (v > UNICODE_MAX) {
- /* It is invalid.. */
- *found = str;
- return (idn_success);
- } else {
- last_char = (*(handle->biditype_proc))(v);
- if (found_r_al && last_char == idn_biditype_l) {
- *found = str;
- return (idn_success);
- }
- if (first_char != idn_biditype_r_al && last_char == idn_biditype_r_al) {
- *found = str;
- return (idn_success);
- }
- if (last_char == idn_biditype_r_al) {
- found_r_al = 1;
- }
- }
- str++;
- }
-
- if (found_r_al) {
- if (last_char != idn_biditype_r_al) {
- *found = str - 1;
- return (idn_success);
- }
- }
-
- *found = NULL;
- return (idn_success);
-}
-
-idn_result_t
-idn_nameprep_createproc(const char *parameter, void **handlep) {
- return idn_nameprep_create(parameter, (idn_nameprep_t *)handlep);
-}
-
-void
-idn_nameprep_destroyproc(void *handle) {
- idn_nameprep_destroy((idn_nameprep_t)handle);
-}
-
-idn_result_t
-idn_nameprep_mapproc(void *handle, const unsigned long *from,
- unsigned long *to, size_t tolen) {
- return idn_nameprep_map((idn_nameprep_t)handle, from, to, tolen);
-}
-
-idn_result_t
-idn_nameprep_prohibitproc(void *handle, const unsigned long *str,
- const unsigned long **found) {
- return idn_nameprep_isprohibited((idn_nameprep_t)handle, str, found);
-}
-
-idn_result_t
-idn_nameprep_unassignedproc(void *handle, const unsigned long *str,
- const unsigned long **found) {
- return idn_nameprep_isunassigned((idn_nameprep_t)handle, str, found);
-}
-
-idn_result_t
-idn_nameprep_bidiproc(void *handle, const unsigned long *str,
- const unsigned long **found) {
- return idn_nameprep_isvalidbidi((idn_nameprep_t)handle, str, found);
-}
+++ /dev/null
-/* $Id: nameprep_template.c,v 1.1 2003/06/04 00:25:57 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-/*
- * Include this file once for each version of NAMEPREP.
- * VERSION should be defined to appropriate value before inclusion.
- */
-
-#ifndef NAMEPREP_TEMPLATE_INIT
-#define NAMEPREP_TEMPLATE_INIT
-
-/* Symbol composition. */
-#define compose_sym2(a, b) compose_sym2X(a, b)
-#define compose_sym2X(a, b) a ## b
-#define compose_sym3(a, b, c) compose_sym3X(a, b, c)
-#define compose_sym3X(a, b, c) a ## b ## c
-
-/* Index calculation for multi-level index tables. */
-#define IDX0(type, v) IDX_0(v, BITS1(type), BITS2(type))
-#define IDX1(type, v) IDX_1(v, BITS1(type), BITS2(type))
-#define IDX2(type, v) IDX_2(v, BITS1(type), BITS2(type))
-
-#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(type) type ## _BITS_1
-#define BITS2(type) type ## _BITS_2
-
-#endif /* NAMEPREP_TEMPLATE_INIT */
-
-static const char *
-compose_sym2(nameprep_map_, VERSION) (unsigned long v) {
- int idx0 = IDX0(MAP, v);
- int idx1 = IDX1(MAP, v);
- int idx2 = IDX2(MAP, v);
- int offset;
-
-#define IMAP compose_sym3(nameprep_, VERSION, _map_imap)
-#define TABLE compose_sym3(nameprep_, VERSION, _map_table)
-#define DATA compose_sym3(nameprep_, VERSION, _map_data)
- offset = TABLE[IMAP[IMAP[idx0] + idx1]].tbl[idx2];
- if (offset == 0)
- return (NULL); /* no mapping */
- return (const char *)(DATA + offset);
-#undef IMAP
-#undef TABLE
-#undef DATA
-}
-
-static int
-compose_sym2(nameprep_prohibited_, VERSION) (unsigned long v) {
- int idx0 = IDX0(PROH, v);
- int idx1 = IDX1(PROH, v);
- int idx2 = IDX2(PROH, v);
- const unsigned char *bm;
-
-#define IMAP compose_sym3(nameprep_, VERSION, _prohibited_imap)
-#define BITMAP compose_sym3(nameprep_, VERSION, _prohibited_bitmap)
- bm = BITMAP[IMAP[IMAP[idx0] + idx1]].bm;
- return (bm[idx2 / 8] & (1 << (idx2 % 8)));
-#undef IMAP
-#undef BITMAP
-}
-
-static int
-compose_sym2(nameprep_unassigned_, VERSION) (unsigned long v) {
- int idx0 = IDX0(UNAS, v);
- int idx1 = IDX1(UNAS, v);
- int idx2 = IDX2(UNAS, v);
- const unsigned char *bm;
-
-#define IMAP compose_sym3(nameprep_, VERSION, _unassigned_imap)
-#define BITMAP compose_sym3(nameprep_, VERSION, _unassigned_bitmap)
- bm = BITMAP[IMAP[IMAP[idx0] + idx1]].bm;
- return (bm[idx2 / 8] & (1 << (idx2 % 8)));
-#undef IMAP
-#undef BITMAP
-}
-
-static idn_biditype_t
-compose_sym2(nameprep_biditype_, VERSION) (unsigned long v) {
- int idx0 = IDX0(BIDI, v);
- int idx1 = IDX1(BIDI, v);
- int idx2 = IDX2(BIDI, v);
- int offset;
-
-#define IMAP compose_sym3(nameprep_, VERSION, _bidi_imap)
-#define TABLE compose_sym3(nameprep_, VERSION, _bidi_table)
-#define DATA compose_sym3(nameprep_, VERSION, _bidi_data)
- offset = TABLE[IMAP[IMAP[idx0] + idx1]].tbl[idx2];
- return DATA[offset];
-#undef IMAP
-#undef TABLE
-#undef DATA
-}
+++ /dev/null
-/* $Id: nameprepdata.c,v 1.1 2003/06/04 00:26:05 marka Exp $ */
-/* $-Id: generate_nameprep_data.pl,v 1.9 2002/11/29 09:08:13 ishisone Exp -$ */
-/*
- * Do not edit this file!
- * This file is generated from NAMEPREP specification.
- */
-
-#define MAP_BITS_0 9
-#define MAP_BITS_1 7
-#define MAP_BITS_2 5
-
-#define PROH_BITS_0 7
-#define PROH_BITS_1 7
-#define PROH_BITS_2 7
-
-#define UNAS_BITS_0 7
-#define UNAS_BITS_1 7
-#define UNAS_BITS_2 7
-
-#define BIDI_BITS_0 9
-#define BIDI_BITS_1 7
-#define BIDI_BITS_2 5
-
-static const unsigned short nameprep_rfc3491_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,
- 27, 28, 29, 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, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 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, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 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,
- 48, 0, 0, 49, 0, 50, 0, 0,
- 51, 52, 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, 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, 0, 0, 0, 0, 0,
- 0, 0, 0, 57, 58, 59, 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, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 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, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 62, 0, 0, 0, 0, 0, 0, 63,
- 0, 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,
- 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, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 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, 68, 69, 70, 71, 72, 73, 74,
- 75, 76, 77, 78, 79, 67, 68, 69,
- 70, 80, 81, 73, 74, 82, 83, 84,
- 85, 86, 87, 88, 89, 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, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 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_rfc3491_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, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20,
- 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42,
- 44, 46, 48, 50, 52, 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, 54,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- }},
- {{
- 57, 59, 61, 63, 65, 67, 69, 71, 73, 75, 77,
- 79, 81, 83, 85, 87, 89, 91, 93, 95, 97, 99,
- 101, 0, 103, 105, 107, 109, 111, 113, 115, 117,
- }},
- {{
- 123, 0, 126, 0, 129, 0, 132, 0, 135, 0, 138,
- 0, 141, 0, 144, 0, 147, 0, 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, 202, 0, 205, 0,
- 208, 0, 0, 211, 0, 214, 0, 217, 0, 220,
- }},
- {{
- 0, 223, 0, 226, 0, 229, 0, 232, 0, 235, 241,
- 0, 244, 0, 247, 0, 250, 0, 253, 0, 256, 0,
- 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, 312, 0, 315, 0, 318, 0, 38,
- }},
- {{
- 0, 321, 324, 0, 327, 0, 330, 333, 0, 336, 339,
- 342, 0, 0, 345, 348, 351, 354, 0, 357, 360, 0,
- 363, 366, 369, 0, 0, 0, 372, 375, 0, 378,
- }},
- {{
- 381, 0, 384, 0, 387, 0, 390, 393, 0, 396, 0,
- 0, 399, 0, 402, 405, 0, 408, 411, 414, 0, 417,
- 0, 420, 423, 0, 0, 0, 426, 0, 0, 0,
- }},
- {{
- 0, 0, 0, 0, 429, 429, 0, 432, 432, 0, 435,
- 435, 0, 438, 0, 441, 0, 444, 0, 447, 0, 450,
- 0, 453, 0, 456, 0, 459, 0, 0, 462, 0,
- }},
- {{
- 465, 0, 468, 0, 471, 0, 474, 0, 477, 0, 480,
- 0, 483, 0, 486, 0, 489, 496, 496, 0, 499, 0,
- 502, 505, 508, 0, 511, 0, 514, 0, 517, 0,
- }},
- {{
- 520, 0, 523, 0, 526, 0, 529, 0, 532, 0, 535,
- 0, 538, 0, 541, 0, 544, 0, 547, 0, 550, 0,
- 553, 0, 556, 0, 559, 0, 562, 0, 565, 0,
- }},
- {{
- 568, 0, 571, 0, 574, 0, 577, 0, 580, 0, 583,
- 0, 586, 0, 589, 0, 592, 0, 595, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- }},
- {{
- 0, 0, 0, 0, 0, 598, 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,
- }},
- {{
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 601, 0, 0, 0, 0, 0,
- }},
- {{
- 0, 0, 0, 0, 0, 0, 608, 0, 611, 614, 617,
- 0, 620, 0, 623, 626, 629, 640, 643, 646, 649, 652,
- 655, 658, 661, 598, 664, 667, 54, 670, 673, 676,
- }},
- {{
- 679, 682, 0, 685, 688, 691, 694, 697, 700, 703, 706,
- 709, 0, 0, 0, 0, 712, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- }},
- {{
- 0, 0, 685, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 643, 661, 691, 623, 709, 694,
- 679, 0, 723, 0, 726, 0, 729, 0, 732, 0,
- }},
- {{
- 735, 0, 738, 0, 741, 0, 744, 0, 747, 0, 750,
- 0, 753, 0, 756, 0, 664, 682, 685, 0, 661, 652,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- }},
- {{
- 759, 762, 765, 768, 771, 774, 777, 780, 783, 786, 789,
- 792, 795, 798, 801, 804, 807, 810, 813, 816, 819, 822,
- 825, 828, 831, 834, 837, 840, 843, 846, 849, 852,
- }},
- {{
- 855, 858, 861, 864, 867, 870, 873, 876, 879, 882, 885,
- 888, 891, 894, 897, 900, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- }},
- {{
- 903, 0, 906, 0, 909, 0, 912, 0, 915, 0, 918,
- 0, 921, 0, 924, 0, 927, 0, 930, 0, 933, 0,
- 936, 0, 939, 0, 942, 0, 945, 0, 948, 0,
- }},
- {{
- 951, 0, 0, 0, 0, 0, 0, 0, 0, 0, 954,
- 0, 957, 0, 960, 0, 963, 0, 966, 0, 969, 0,
- 972, 0, 975, 0, 978, 0, 981, 0, 984, 0,
- }},
- {{
- 987, 0, 990, 0, 993, 0, 996, 0, 999, 0, 1002,
- 0, 1005, 0, 1008, 0, 1011, 0, 1014, 0, 1017, 0,
- 1020, 0, 1023, 0, 1026, 0, 1029, 0, 1032, 0,
- }},
- {{
- 0, 1035, 0, 1038, 0, 1041, 0, 1044, 0, 1047, 0,
- 1050, 0, 1053, 0, 0, 1056, 0, 1059, 0, 1062, 0,
- 1065, 0, 1068, 0, 1071, 0, 1074, 0, 1077, 0,
- }},
- {{
- 1080, 0, 1083, 0, 1086, 0, 1089, 0, 1092, 0, 1095,
- 0, 1098, 0, 1101, 0, 1104, 0, 1107, 0, 1110, 0,
- 0, 0, 1113, 0, 0, 0, 0, 0, 0, 0,
- }},
- {{
- 1116, 0, 1119, 0, 1122, 0, 1125, 0, 1128, 0, 1131,
- 0, 1134, 0, 1137, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- }},
- {{
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1140, 1143, 1146, 1149, 1152,
- 1155, 1158, 1161, 1164, 1167, 1170, 1173, 1176, 1179, 1182,
- }},
- {{
- 1185, 1188, 1191, 1194, 1197, 1200, 1203, 1206, 1209, 1212, 1215,
- 1218, 1221, 1224, 1227, 1230, 1233, 1236, 1239, 1242, 1245, 1248,
- 1251, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- }},
- {{
- 0, 0, 0, 0, 0, 0, 0, 1254, 0, 0, 0,
- 0, 0, 0, 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,
- 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- }},
- {{
- 1261, 0, 1264, 0, 1267, 0, 1270, 0, 1273, 0, 1276,
- 0, 1279, 0, 1282, 0, 1285, 0, 1288, 0, 1291, 0,
- 1294, 0, 1297, 0, 1300, 0, 1303, 0, 1306, 0,
- }},
- {{
- 1309, 0, 1312, 0, 1315, 0, 1318, 0, 1321, 0, 1324,
- 0, 1327, 0, 1330, 0, 1333, 0, 1336, 0, 1339, 0,
- 1342, 0, 1345, 0, 1348, 0, 1351, 0, 1354, 0,
- }},
- {{
- 1357, 0, 1360, 0, 1363, 0, 1366, 0, 1369, 0, 1372,
- 0, 1375, 0, 1378, 0, 1381, 0, 1384, 0, 1387, 0,
- 1390, 0, 1393, 0, 1396, 0, 1399, 0, 1402, 0,
- }},
- {{
- 1405, 0, 1408, 0, 1411, 0, 1414, 0, 1417, 0, 1420,
- 0, 1423, 0, 1426, 0, 1429, 0, 1432, 0, 1435, 0,
- 1438, 0, 1441, 0, 1444, 0, 1447, 0, 1450, 0,
- }},
- {{
- 1453, 0, 1456, 0, 1459, 0, 1462, 0, 1465, 0, 1468,
- 0, 1471, 0, 1474, 0, 1477, 0, 1480, 0, 1483, 0,
- 1486, 1493, 1500, 1507, 1514, 1405, 0, 0, 0, 0,
- }},
- {{
- 1521, 0, 1524, 0, 1527, 0, 1530, 0, 1533, 0, 1536,
- 0, 1539, 0, 1542, 0, 1545, 0, 1548, 0, 1551, 0,
- 1554, 0, 1557, 0, 1560, 0, 1563, 0, 1566, 0,
- }},
- {{
- 1569, 0, 1572, 0, 1575, 0, 1578, 0, 1581, 0, 1584,
- 0, 1587, 0, 1590, 0, 1593, 0, 1596, 0, 1599, 0,
- 1602, 0, 1605, 0, 1608, 0, 1611, 0, 1614, 0,
- }},
- {{
- 1617, 0, 1620, 0, 1623, 0, 1626, 0, 1629, 0, 1632,
- 0, 1635, 0, 1638, 0, 1641, 0, 1644, 0, 1647, 0,
- 1650, 0, 1653, 0, 0, 0, 0, 0, 0, 0,
- }},
- {{
- 0, 0, 0, 0, 0, 0, 0, 0, 1656, 1659, 1662,
- 1665, 1668, 1671, 1674, 1677, 0, 0, 0, 0, 0, 0,
- 0, 0, 1680, 1683, 1686, 1689, 1692, 1695, 0, 0,
- }},
- {{
- 0, 0, 0, 0, 0, 0, 0, 0, 1698, 1701, 1704,
- 1707, 1710, 1713, 1716, 1719, 0, 0, 0, 0, 0, 0,
- 0, 0, 1722, 1725, 1728, 1731, 1734, 1737, 1740, 1743,
- }},
- {{
- 0, 0, 0, 0, 0, 0, 0, 0, 1746, 1749, 1752,
- 1755, 1758, 1761, 0, 0, 1764, 0, 1771, 0, 1782, 0,
- 1793, 0, 0, 1804, 0, 1807, 0, 1810, 0, 1813,
- }},
- {{
- 0, 0, 0, 0, 0, 0, 0, 0, 1816, 1819, 1822,
- 1825, 1828, 1831, 1834, 1837, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- }},
- {{
- 1840, 1847, 1854, 1861, 1868, 1875, 1882, 1889, 1840, 1847, 1854,
- 1861, 1868, 1875, 1882, 1889, 1896, 1903, 1910, 1917, 1924, 1931,
- 1938, 1945, 1896, 1903, 1910, 1917, 1924, 1931, 1938, 1945,
- }},
- {{
- 1952, 1959, 1966, 1973, 1980, 1987, 1994, 2001, 1952, 1959, 1966,
- 1973, 1980, 1987, 1994, 2001, 0, 0, 2008, 2015, 2022, 0,
- 2029, 2036, 2047, 2050, 2053, 2056, 2015, 0, 598, 0,
- }},
- {{
- 0, 0, 2059, 2066, 2073, 0, 2080, 2087, 2098, 2101, 2104,
- 2107, 2066, 0, 0, 0, 0, 0, 2110, 629, 0, 0,
- 2121, 2128, 2139, 2142, 2145, 2148, 0, 0, 0, 0,
- }},
- {{
- 0, 0, 2151, 712, 2162, 0, 2169, 2176, 2187, 2190, 2193,
- 2196, 2199, 0, 0, 0, 0, 0, 2202, 2209, 2216, 0,
- 2223, 2230, 2241, 2244, 2247, 2250, 2209, 0, 0, 0,
- }},
- {{
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 1, 1, 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, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- }},
- {{
- 0, 0, 0, 0, 0, 0, 0, 0, 2253, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- }},
- {{
- 0, 0, 6, 2259, 0, 0, 0, 351, 0, 2265, 0,
- 16, 16, 16, 0, 0, 18, 18, 24, 0, 0, 28,
- 2271, 0, 0, 32, 34, 36, 36, 36, 0, 0,
- }},
- {{
- 2277, 2283, 2293, 0, 52, 0, 703, 0, 52, 0, 22,
- 67, 4, 6, 0, 0, 10, 12, 0, 26, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 646, 679,
- }},
- {{
- 0, 0, 0, 0, 0, 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,
- }},
- {{
- 2299, 2302, 2305, 2308, 2311, 2314, 2317, 2320, 2323, 2326, 2329,
- 2332, 2335, 2338, 2341, 2344, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- }},
- {{
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 2347, 2350, 2353, 2356, 2359, 2362, 2365, 2368, 2371, 2374,
- }},
- {{
- 2377, 2380, 2383, 2386, 2389, 2392, 2395, 2398, 2401, 2404, 2407,
- 2410, 2413, 2416, 2419, 2422, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- }},
- {{
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 2425, 0, 2435, 0, 2441,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- }},
- {{
- 2447, 2453, 2459, 2465, 2471, 2477, 2483, 2489, 0, 0, 2495,
- 2501, 2507, 0, 0, 0, 2513, 2519, 2529, 2539, 2549, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- }},
- {{
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 2447, 2559,
- 2569, 2579, 0, 0, 0, 0, 0, 0, 0, 2589, 2595,
- 2601, 2607, 2613, 2607, 2619, 2625, 2631, 2637, 2643, 2637,
- }},
- {{
- 2649, 2656, 0, 2663, 0, 0, 2669, 2683, 2693, 2699, 0,
- 2705, 0, 2711, 2717, 0, 0, 0, 0, 0, 0, 0,
- 0, 2723, 0, 2729, 2739, 0, 2745, 2751, 0, 0,
- }},
- {{
- 2757, 2763, 2769, 2775, 2785, 2795, 2795, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 2801, 2808, 2815,
- 2822, 2829, 0, 0, 0, 0, 0, 0, 0, 0,
- }},
- {{
- 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
- }},
- {{
- 0, 2836, 2839, 2842, 2845, 2848, 2851, 2854, 2857, 2860, 2863,
- 2866, 2869, 2872, 2875, 2878, 2881, 2884, 2887, 2890, 2893, 2896,
- 2899, 2902, 2905, 2908, 2911, 0, 0, 0, 0, 0,
- }},
- {{
- 2914, 2918, 2922, 2926, 2930, 2934, 2938, 2942, 2946, 2950, 2954,
- 2958, 2962, 2966, 2970, 2974, 2978, 2982, 2986, 2990, 2994, 2998,
- 3002, 3006, 3010, 3014, 3018, 3022, 3026, 3030, 3034, 3038,
- }},
- {{
- 3042, 3046, 3050, 3054, 3058, 3062, 0, 0, 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, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22,
- 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44,
- 46, 48, 50, 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, 2, 4,
- 6, 8, 10, 12, 14, 16, 18, 20, 22, 24,
- }},
- {{
- 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46,
- 48, 50, 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, 2, 4, 6,
- 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28,
- 30, 32, 34, 36, 38, 40, 42, 44, 46, 48,
- }},
- {{
- 50, 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, 2, 0, 6, 8,
- }},
- {{
- 0, 0, 14, 0, 0, 20, 22, 0, 0, 28, 30,
- 32, 34, 0, 38, 40, 42, 44, 46, 48, 50, 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, 2, 4, 6, 8, 10, 12,
- 14, 16, 18, 20, 22, 24, 26, 28, 30, 32,
- }},
- {{
- 34, 36, 38, 40, 42, 44, 46, 48, 50, 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, 2, 4, 0, 8, 10, 12, 14,
- 0, 0, 20, 22, 24, 26, 28, 30, 32, 34, 0,
- 38, 40, 42, 44, 46, 48, 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, 2, 4, 0, 8, 10, 12, 14, 0,
- }},
- {{
- 18, 20, 22, 24, 26, 0, 30, 0, 0, 0, 38,
- 40, 42, 44, 46, 48, 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, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20,
- 22, 24, 26, 28, 30, 32, 34, 36, 38, 40,
- }},
- {{
- 42, 44, 46, 48, 50, 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,
- }},
- {{
- 50, 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, 2, 4, 6, 8,
- }},
- {{
- 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30,
- 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- }},
- {{
- 0, 0, 0, 0, 0, 0, 0, 0, 640, 643, 646,
- 649, 652, 655, 658, 661, 598, 664, 667, 54, 670, 673,
- 676, 679, 682, 661, 685, 688, 691, 694, 697, 700,
- }},
- {{
- 703, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 685, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- }},
- {{
- 0, 0, 640, 643, 646, 649, 652, 655, 658, 661, 598,
- 664, 667, 54, 670, 673, 676, 679, 682, 661, 685, 688,
- 691, 694, 697, 700, 703, 0, 0, 0, 0, 0,
- }},
- {{
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 685, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 640, 643, 646, 649,
- }},
- {{
- 652, 655, 658, 661, 598, 664, 667, 54, 670, 673, 676,
- 679, 682, 661, 685, 688, 691, 694, 697, 700, 703, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- }},
- {{
- 0, 0, 0, 0, 0, 0, 0, 685, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 640, 643, 646, 649, 652, 655, 658, 661, 598, 664,
- }},
- {{
- 667, 54, 670, 673, 676, 679, 682, 661, 685, 688, 691,
- 694, 697, 700, 703, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- }},
- {{
- 0, 685, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 640, 643, 646, 649, 652, 655,
- 658, 661, 598, 664, 667, 54, 670, 673, 676, 679,
- }},
- {{
- 682, 661, 685, 688, 691, 694, 697, 700, 703, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 685, 0, 0, 0, 0,
- }},
-};
-
-static const unsigned char nameprep_rfc3491_map_data[] = {
- 0, 0, 1, 97, 1, 98, 1, 99, 1, 100, 1, 101,
- 1, 102, 1, 103, 1, 104, 1, 105, 1, 106, 1, 107,
- 1, 108, 1, 109, 1, 110, 1, 111, 1, 112, 1, 113,
- 1, 114, 1, 115, 1, 116, 1, 117, 1, 118, 1, 119,
- 1, 120, 1, 121, 1, 122, 2, 188, 3, 1, 224, 1,
- 225, 1, 226, 1, 227, 1, 228, 1, 229, 1, 230, 1,
- 231, 1, 232, 1, 233, 1, 234, 1, 235, 1, 236, 1,
- 237, 1, 238, 1, 239, 1, 240, 1, 241, 1, 242, 1,
- 243, 1, 244, 1, 245, 1, 246, 1, 248, 1, 249, 1,
- 250, 1, 251, 1, 252, 1, 253, 1, 254, 5, 115, 0,
- 0, 0, 115, 2, 1, 1, 2, 3, 1, 2, 5, 1,
- 2, 7, 1, 2, 9, 1, 2, 11, 1, 2, 13, 1,
- 2, 15, 1, 2, 17, 1, 2, 19, 1, 2, 21, 1,
- 2, 23, 1, 2, 25, 1, 2, 27, 1, 2, 29, 1,
- 2, 31, 1, 2, 33, 1, 2, 35, 1, 2, 37, 1,
- 2, 39, 1, 2, 41, 1, 2, 43, 1, 2, 45, 1,
- 2, 47, 1, 6, 105, 0, 0, 0, 7, 3, 2, 51,
- 1, 2, 53, 1, 2, 55, 1, 2, 58, 1, 2, 60,
- 1, 2, 62, 1, 2, 64, 1, 2, 66, 1, 2, 68,
- 1, 2, 70, 1, 2, 72, 1, 5, 188, 2, 0, 0,
- 110, 2, 75, 1, 2, 77, 1, 2, 79, 1, 2, 81,
- 1, 2, 83, 1, 2, 85, 1, 2, 87, 1, 2, 89,
- 1, 2, 91, 1, 2, 93, 1, 2, 95, 1, 2, 97,
- 1, 2, 99, 1, 2, 101, 1, 2, 103, 1, 2, 105,
- 1, 2, 107, 1, 2, 109, 1, 2, 111, 1, 2, 113,
- 1, 2, 115, 1, 2, 117, 1, 2, 119, 1, 1, 255,
- 2, 122, 1, 2, 124, 1, 2, 126, 1, 2, 83, 2,
- 2, 131, 1, 2, 133, 1, 2, 84, 2, 2, 136, 1,
- 2, 86, 2, 2, 87, 2, 2, 140, 1, 2, 221, 1,
- 2, 89, 2, 2, 91, 2, 2, 146, 1, 2, 96, 2,
- 2, 99, 2, 2, 105, 2, 2, 104, 2, 2, 153, 1,
- 2, 111, 2, 2, 114, 2, 2, 117, 2, 2, 161, 1,
- 2, 163, 1, 2, 165, 1, 2, 128, 2, 2, 168, 1,
- 2, 131, 2, 2, 173, 1, 2, 136, 2, 2, 176, 1,
- 2, 138, 2, 2, 139, 2, 2, 180, 1, 2, 182, 1,
- 2, 146, 2, 2, 185, 1, 2, 189, 1, 2, 198, 1,
- 2, 201, 1, 2, 204, 1, 2, 206, 1, 2, 208, 1,
- 2, 210, 1, 2, 212, 1, 2, 214, 1, 2, 216, 1,
- 2, 218, 1, 2, 220, 1, 2, 223, 1, 2, 225, 1,
- 2, 227, 1, 2, 229, 1, 2, 231, 1, 2, 233, 1,
- 2, 235, 1, 2, 237, 1, 2, 239, 1, 6, 106, 0,
- 0, 0, 12, 3, 2, 243, 1, 2, 245, 1, 2, 149,
- 1, 2, 191, 1, 2, 249, 1, 2, 251, 1, 2, 253,
- 1, 2, 255, 1, 2, 1, 2, 2, 3, 2, 2, 5,
- 2, 2, 7, 2, 2, 9, 2, 2, 11, 2, 2, 13,
- 2, 2, 15, 2, 2, 17, 2, 2, 19, 2, 2, 21,
- 2, 2, 23, 2, 2, 25, 2, 2, 27, 2, 2, 29,
- 2, 2, 31, 2, 2, 158, 1, 2, 35, 2, 2, 37,
- 2, 2, 39, 2, 2, 41, 2, 2, 43, 2, 2, 45,
- 2, 2, 47, 2, 2, 49, 2, 2, 51, 2, 2, 185,
- 3, 6, 32, 0, 0, 0, 185, 3, 2, 172, 3, 2,
- 173, 3, 2, 174, 3, 2, 175, 3, 2, 204, 3, 2,
- 205, 3, 2, 206, 3, 10, 185, 3, 0, 0, 8, 3,
- 0, 0, 1, 3, 2, 177, 3, 2, 178, 3, 2, 179,
- 3, 2, 180, 3, 2, 181, 3, 2, 182, 3, 2, 183,
- 3, 2, 184, 3, 2, 186, 3, 2, 187, 3, 2, 189,
- 3, 2, 190, 3, 2, 191, 3, 2, 192, 3, 2, 193,
- 3, 2, 195, 3, 2, 196, 3, 2, 197, 3, 2, 198,
- 3, 2, 199, 3, 2, 200, 3, 2, 201, 3, 2, 202,
- 3, 2, 203, 3, 10, 197, 3, 0, 0, 8, 3, 0,
- 0, 1, 3, 2, 217, 3, 2, 219, 3, 2, 221, 3,
- 2, 223, 3, 2, 225, 3, 2, 227, 3, 2, 229, 3,
- 2, 231, 3, 2, 233, 3, 2, 235, 3, 2, 237, 3,
- 2, 239, 3, 2, 80, 4, 2, 81, 4, 2, 82, 4,
- 2, 83, 4, 2, 84, 4, 2, 85, 4, 2, 86, 4,
- 2, 87, 4, 2, 88, 4, 2, 89, 4, 2, 90, 4,
- 2, 91, 4, 2, 92, 4, 2, 93, 4, 2, 94, 4,
- 2, 95, 4, 2, 48, 4, 2, 49, 4, 2, 50, 4,
- 2, 51, 4, 2, 52, 4, 2, 53, 4, 2, 54, 4,
- 2, 55, 4, 2, 56, 4, 2, 57, 4, 2, 58, 4,
- 2, 59, 4, 2, 60, 4, 2, 61, 4, 2, 62, 4,
- 2, 63, 4, 2, 64, 4, 2, 65, 4, 2, 66, 4,
- 2, 67, 4, 2, 68, 4, 2, 69, 4, 2, 70, 4,
- 2, 71, 4, 2, 72, 4, 2, 73, 4, 2, 74, 4,
- 2, 75, 4, 2, 76, 4, 2, 77, 4, 2, 78, 4,
- 2, 79, 4, 2, 97, 4, 2, 99, 4, 2, 101, 4,
- 2, 103, 4, 2, 105, 4, 2, 107, 4, 2, 109, 4,
- 2, 111, 4, 2, 113, 4, 2, 115, 4, 2, 117, 4,
- 2, 119, 4, 2, 121, 4, 2, 123, 4, 2, 125, 4,
- 2, 127, 4, 2, 129, 4, 2, 139, 4, 2, 141, 4,
- 2, 143, 4, 2, 145, 4, 2, 147, 4, 2, 149, 4,
- 2, 151, 4, 2, 153, 4, 2, 155, 4, 2, 157, 4,
- 2, 159, 4, 2, 161, 4, 2, 163, 4, 2, 165, 4,
- 2, 167, 4, 2, 169, 4, 2, 171, 4, 2, 173, 4,
- 2, 175, 4, 2, 177, 4, 2, 179, 4, 2, 181, 4,
- 2, 183, 4, 2, 185, 4, 2, 187, 4, 2, 189, 4,
- 2, 191, 4, 2, 194, 4, 2, 196, 4, 2, 198, 4,
- 2, 200, 4, 2, 202, 4, 2, 204, 4, 2, 206, 4,
- 2, 209, 4, 2, 211, 4, 2, 213, 4, 2, 215, 4,
- 2, 217, 4, 2, 219, 4, 2, 221, 4, 2, 223, 4,
- 2, 225, 4, 2, 227, 4, 2, 229, 4, 2, 231, 4,
- 2, 233, 4, 2, 235, 4, 2, 237, 4, 2, 239, 4,
- 2, 241, 4, 2, 243, 4, 2, 245, 4, 2, 249, 4,
- 2, 1, 5, 2, 3, 5, 2, 5, 5, 2, 7, 5,
- 2, 9, 5, 2, 11, 5, 2, 13, 5, 2, 15, 5,
- 2, 97, 5, 2, 98, 5, 2, 99, 5, 2, 100, 5,
- 2, 101, 5, 2, 102, 5, 2, 103, 5, 2, 104, 5,
- 2, 105, 5, 2, 106, 5, 2, 107, 5, 2, 108, 5,
- 2, 109, 5, 2, 110, 5, 2, 111, 5, 2, 112, 5,
- 2, 113, 5, 2, 114, 5, 2, 115, 5, 2, 116, 5,
- 2, 117, 5, 2, 118, 5, 2, 119, 5, 2, 120, 5,
- 2, 121, 5, 2, 122, 5, 2, 123, 5, 2, 124, 5,
- 2, 125, 5, 2, 126, 5, 2, 127, 5, 2, 128, 5,
- 2, 129, 5, 2, 130, 5, 2, 131, 5, 2, 132, 5,
- 2, 133, 5, 2, 134, 5, 6, 101, 5, 0, 0, 130,
- 5, 2, 1, 30, 2, 3, 30, 2, 5, 30, 2, 7,
- 30, 2, 9, 30, 2, 11, 30, 2, 13, 30, 2, 15,
- 30, 2, 17, 30, 2, 19, 30, 2, 21, 30, 2, 23,
- 30, 2, 25, 30, 2, 27, 30, 2, 29, 30, 2, 31,
- 30, 2, 33, 30, 2, 35, 30, 2, 37, 30, 2, 39,
- 30, 2, 41, 30, 2, 43, 30, 2, 45, 30, 2, 47,
- 30, 2, 49, 30, 2, 51, 30, 2, 53, 30, 2, 55,
- 30, 2, 57, 30, 2, 59, 30, 2, 61, 30, 2, 63,
- 30, 2, 65, 30, 2, 67, 30, 2, 69, 30, 2, 71,
- 30, 2, 73, 30, 2, 75, 30, 2, 77, 30, 2, 79,
- 30, 2, 81, 30, 2, 83, 30, 2, 85, 30, 2, 87,
- 30, 2, 89, 30, 2, 91, 30, 2, 93, 30, 2, 95,
- 30, 2, 97, 30, 2, 99, 30, 2, 101, 30, 2, 103,
- 30, 2, 105, 30, 2, 107, 30, 2, 109, 30, 2, 111,
- 30, 2, 113, 30, 2, 115, 30, 2, 117, 30, 2, 119,
- 30, 2, 121, 30, 2, 123, 30, 2, 125, 30, 2, 127,
- 30, 2, 129, 30, 2, 131, 30, 2, 133, 30, 2, 135,
- 30, 2, 137, 30, 2, 139, 30, 2, 141, 30, 2, 143,
- 30, 2, 145, 30, 2, 147, 30, 2, 149, 30, 6, 104,
- 0, 0, 0, 49, 3, 6, 116, 0, 0, 0, 8, 3,
- 6, 119, 0, 0, 0, 10, 3, 6, 121, 0, 0, 0,
- 10, 3, 6, 97, 0, 0, 0, 190, 2, 2, 161, 30,
- 2, 163, 30, 2, 165, 30, 2, 167, 30, 2, 169, 30,
- 2, 171, 30, 2, 173, 30, 2, 175, 30, 2, 177, 30,
- 2, 179, 30, 2, 181, 30, 2, 183, 30, 2, 185, 30,
- 2, 187, 30, 2, 189, 30, 2, 191, 30, 2, 193, 30,
- 2, 195, 30, 2, 197, 30, 2, 199, 30, 2, 201, 30,
- 2, 203, 30, 2, 205, 30, 2, 207, 30, 2, 209, 30,
- 2, 211, 30, 2, 213, 30, 2, 215, 30, 2, 217, 30,
- 2, 219, 30, 2, 221, 30, 2, 223, 30, 2, 225, 30,
- 2, 227, 30, 2, 229, 30, 2, 231, 30, 2, 233, 30,
- 2, 235, 30, 2, 237, 30, 2, 239, 30, 2, 241, 30,
- 2, 243, 30, 2, 245, 30, 2, 247, 30, 2, 249, 30,
- 2, 0, 31, 2, 1, 31, 2, 2, 31, 2, 3, 31,
- 2, 4, 31, 2, 5, 31, 2, 6, 31, 2, 7, 31,
- 2, 16, 31, 2, 17, 31, 2, 18, 31, 2, 19, 31,
- 2, 20, 31, 2, 21, 31, 2, 32, 31, 2, 33, 31,
- 2, 34, 31, 2, 35, 31, 2, 36, 31, 2, 37, 31,
- 2, 38, 31, 2, 39, 31, 2, 48, 31, 2, 49, 31,
- 2, 50, 31, 2, 51, 31, 2, 52, 31, 2, 53, 31,
- 2, 54, 31, 2, 55, 31, 2, 64, 31, 2, 65, 31,
- 2, 66, 31, 2, 67, 31, 2, 68, 31, 2, 69, 31,
- 6, 197, 3, 0, 0, 19, 3, 10, 197, 3, 0, 0,
- 19, 3, 0, 0, 0, 3, 10, 197, 3, 0, 0, 19,
- 3, 0, 0, 1, 3, 10, 197, 3, 0, 0, 19, 3,
- 0, 0, 66, 3, 2, 81, 31, 2, 83, 31, 2, 85,
- 31, 2, 87, 31, 2, 96, 31, 2, 97, 31, 2, 98,
- 31, 2, 99, 31, 2, 100, 31, 2, 101, 31, 2, 102,
- 31, 2, 103, 31, 6, 0, 31, 0, 0, 185, 3, 6,
- 1, 31, 0, 0, 185, 3, 6, 2, 31, 0, 0, 185,
- 3, 6, 3, 31, 0, 0, 185, 3, 6, 4, 31, 0,
- 0, 185, 3, 6, 5, 31, 0, 0, 185, 3, 6, 6,
- 31, 0, 0, 185, 3, 6, 7, 31, 0, 0, 185, 3,
- 6, 32, 31, 0, 0, 185, 3, 6, 33, 31, 0, 0,
- 185, 3, 6, 34, 31, 0, 0, 185, 3, 6, 35, 31,
- 0, 0, 185, 3, 6, 36, 31, 0, 0, 185, 3, 6,
- 37, 31, 0, 0, 185, 3, 6, 38, 31, 0, 0, 185,
- 3, 6, 39, 31, 0, 0, 185, 3, 6, 96, 31, 0,
- 0, 185, 3, 6, 97, 31, 0, 0, 185, 3, 6, 98,
- 31, 0, 0, 185, 3, 6, 99, 31, 0, 0, 185, 3,
- 6, 100, 31, 0, 0, 185, 3, 6, 101, 31, 0, 0,
- 185, 3, 6, 102, 31, 0, 0, 185, 3, 6, 103, 31,
- 0, 0, 185, 3, 6, 112, 31, 0, 0, 185, 3, 6,
- 177, 3, 0, 0, 185, 3, 6, 172, 3, 0, 0, 185,
- 3, 6, 177, 3, 0, 0, 66, 3, 10, 177, 3, 0,
- 0, 66, 3, 0, 0, 185, 3, 2, 176, 31, 2, 177,
- 31, 2, 112, 31, 2, 113, 31, 6, 116, 31, 0, 0,
- 185, 3, 6, 183, 3, 0, 0, 185, 3, 6, 174, 3,
- 0, 0, 185, 3, 6, 183, 3, 0, 0, 66, 3, 10,
- 183, 3, 0, 0, 66, 3, 0, 0, 185, 3, 2, 114,
- 31, 2, 115, 31, 2, 116, 31, 2, 117, 31, 10, 185,
- 3, 0, 0, 8, 3, 0, 0, 0, 3, 6, 185, 3,
- 0, 0, 66, 3, 10, 185, 3, 0, 0, 8, 3, 0,
- 0, 66, 3, 2, 208, 31, 2, 209, 31, 2, 118, 31,
- 2, 119, 31, 10, 197, 3, 0, 0, 8, 3, 0, 0,
- 0, 3, 6, 193, 3, 0, 0, 19, 3, 6, 197, 3,
- 0, 0, 66, 3, 10, 197, 3, 0, 0, 8, 3, 0,
- 0, 66, 3, 2, 224, 31, 2, 225, 31, 2, 122, 31,
- 2, 123, 31, 2, 229, 31, 6, 124, 31, 0, 0, 185,
- 3, 6, 201, 3, 0, 0, 185, 3, 6, 206, 3, 0,
- 0, 185, 3, 6, 201, 3, 0, 0, 66, 3, 10, 201,
- 3, 0, 0, 66, 3, 0, 0, 185, 3, 2, 120, 31,
- 2, 121, 31, 2, 124, 31, 2, 125, 31, 5, 114, 0,
- 0, 0, 115, 5, 176, 0, 0, 0, 99, 5, 176, 0,
- 0, 0, 102, 5, 110, 0, 0, 0, 111, 5, 115, 0,
- 0, 0, 109, 9, 116, 0, 0, 0, 101, 0, 0, 0,
- 108, 5, 116, 0, 0, 0, 109, 2, 112, 33, 2, 113,
- 33, 2, 114, 33, 2, 115, 33, 2, 116, 33, 2, 117,
- 33, 2, 118, 33, 2, 119, 33, 2, 120, 33, 2, 121,
- 33, 2, 122, 33, 2, 123, 33, 2, 124, 33, 2, 125,
- 33, 2, 126, 33, 2, 127, 33, 2, 208, 36, 2, 209,
- 36, 2, 210, 36, 2, 211, 36, 2, 212, 36, 2, 213,
- 36, 2, 214, 36, 2, 215, 36, 2, 216, 36, 2, 217,
- 36, 2, 218, 36, 2, 219, 36, 2, 220, 36, 2, 221,
- 36, 2, 222, 36, 2, 223, 36, 2, 224, 36, 2, 225,
- 36, 2, 226, 36, 2, 227, 36, 2, 228, 36, 2, 229,
- 36, 2, 230, 36, 2, 231, 36, 2, 232, 36, 2, 233,
- 36, 9, 104, 0, 0, 0, 112, 0, 0, 0, 97, 5,
- 97, 0, 0, 0, 117, 5, 111, 0, 0, 0, 118, 5,
- 112, 0, 0, 0, 97, 5, 110, 0, 0, 0, 97, 5,
- 188, 3, 0, 0, 97, 5, 109, 0, 0, 0, 97, 5,
- 107, 0, 0, 0, 97, 5, 107, 0, 0, 0, 98, 5,
- 109, 0, 0, 0, 98, 5, 103, 0, 0, 0, 98, 5,
- 112, 0, 0, 0, 102, 5, 110, 0, 0, 0, 102, 5,
- 188, 3, 0, 0, 102, 5, 104, 0, 0, 0, 122, 9,
- 107, 0, 0, 0, 104, 0, 0, 0, 122, 9, 109, 0,
- 0, 0, 104, 0, 0, 0, 122, 9, 103, 0, 0, 0,
- 104, 0, 0, 0, 122, 9, 116, 0, 0, 0, 104, 0,
- 0, 0, 122, 9, 107, 0, 0, 0, 112, 0, 0, 0,
- 97, 9, 109, 0, 0, 0, 112, 0, 0, 0, 97, 9,
- 103, 0, 0, 0, 112, 0, 0, 0, 97, 5, 112, 0,
- 0, 0, 118, 5, 110, 0, 0, 0, 118, 5, 188, 3,
- 0, 0, 118, 5, 109, 0, 0, 0, 118, 5, 107, 0,
- 0, 0, 118, 5, 112, 0, 0, 0, 119, 5, 110, 0,
- 0, 0, 119, 5, 188, 3, 0, 0, 119, 5, 109, 0,
- 0, 0, 119, 5, 107, 0, 0, 0, 119, 6, 107, 0,
- 0, 0, 201, 3, 6, 109, 0, 0, 0, 201, 3, 5,
- 98, 0, 0, 0, 113, 13, 99, 0, 0, 0, 21, 34,
- 0, 0, 107, 0, 0, 0, 103, 9, 99, 0, 0, 0,
- 111, 0, 0, 0, 46, 5, 100, 0, 0, 0, 98, 5,
- 103, 0, 0, 0, 121, 5, 104, 0, 0, 0, 112, 5,
- 107, 0, 0, 0, 107, 5, 107, 0, 0, 0, 109, 5,
- 112, 0, 0, 0, 104, 9, 112, 0, 0, 0, 112, 0,
- 0, 0, 109, 5, 112, 0, 0, 0, 114, 5, 115, 0,
- 0, 0, 118, 5, 119, 0, 0, 0, 98, 5, 102, 0,
- 0, 0, 102, 5, 102, 0, 0, 0, 105, 5, 102, 0,
- 0, 0, 108, 9, 102, 0, 0, 0, 102, 0, 0, 0,
- 105, 9, 102, 0, 0, 0, 102, 0, 0, 0, 108, 5,
- 115, 0, 0, 0, 116, 6, 116, 5, 0, 0, 118, 5,
- 6, 116, 5, 0, 0, 101, 5, 6, 116, 5, 0, 0,
- 107, 5, 6, 126, 5, 0, 0, 118, 5, 6, 116, 5,
- 0, 0, 109, 5, 2, 65, 255, 2, 66, 255, 2, 67,
- 255, 2, 68, 255, 2, 69, 255, 2, 70, 255, 2, 71,
- 255, 2, 72, 255, 2, 73, 255, 2, 74, 255, 2, 75,
- 255, 2, 76, 255, 2, 77, 255, 2, 78, 255, 2, 79,
- 255, 2, 80, 255, 2, 81, 255, 2, 82, 255, 2, 83,
- 255, 2, 84, 255, 2, 85, 255, 2, 86, 255, 2, 87,
- 255, 2, 88, 255, 2, 89, 255, 2, 90, 255, 3, 40,
- 4, 1, 3, 41, 4, 1, 3, 42, 4, 1, 3, 43,
- 4, 1, 3, 44, 4, 1, 3, 45, 4, 1, 3, 46,
- 4, 1, 3, 47, 4, 1, 3, 48, 4, 1, 3, 49,
- 4, 1, 3, 50, 4, 1, 3, 51, 4, 1, 3, 52,
- 4, 1, 3, 53, 4, 1, 3, 54, 4, 1, 3, 55,
- 4, 1, 3, 56, 4, 1, 3, 57, 4, 1, 3, 58,
- 4, 1, 3, 59, 4, 1, 3, 60, 4, 1, 3, 61,
- 4, 1, 3, 62, 4, 1, 3, 63, 4, 1, 3, 64,
- 4, 1, 3, 65, 4, 1, 3, 66, 4, 1, 3, 67,
- 4, 1, 3, 68, 4, 1, 3, 69, 4, 1, 3, 70,
- 4, 1, 3, 71, 4, 1, 3, 72, 4, 1, 3, 73,
- 4, 1, 3, 74, 4, 1, 3, 75, 4, 1, 3, 76,
- 4, 1, 3, 77, 4, 1,
-};
-
-static const unsigned short nameprep_rfc3491_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, 0, 0,
- 0, 0, 2, 0, 0, 0, 0, 0,
- 0, 3, 4, 0, 0, 0, 0, 0,
- 0, 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, 0, 0, 6, 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, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 8, 5, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 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, 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, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 10,
- 0, 0, 0, 11, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 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, 13, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 13, 14, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 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, 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_rfc3491_prohibited_bitmap[] = {
- {{
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- }},
- {{
- 255,255,255,255, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- }},
- {{
- 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0,
- }},
- {{
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 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,128, 14,252, 0, 0,
- }},
- {{
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 15,
- }},
- {{
- 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_rfc3491_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, 38, 39, 40, 41, 12, 12,
- 12, 12, 12, 12, 12, 12, 12, 12,
- 0, 42, 43, 44, 45, 46, 47, 48,
- 0, 0, 0, 49, 50, 51, 0, 0,
- 52, 53, 54, 55, 0, 0, 0, 0,
- 0, 0, 12, 12, 12, 12, 12, 12,
- 12, 56, 0, 57, 58, 59, 60, 61,
- 62, 63, 64, 65, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 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, 68, 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, 69, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 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, 12, 71, 72, 0, 0, 73, 74,
- 75, 76, 35, 77, 12, 12, 12, 12,
- 12, 12, 78, 12, 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, 12, 12, 12, 12, 12, 12, 12,
- 12, 12, 12, 12, 12, 12, 12, 12,
- 12, 12, 12, 12, 12, 12, 12, 12,
- 12, 12, 12, 12, 12, 12, 12, 12,
- 12, 12, 12, 12, 12, 12, 12, 12,
- 12, 12, 12, 12, 12, 12, 12, 12,
- 12, 12, 12, 12, 12, 12, 12, 12,
- 12, 12, 12, 12, 12, 12, 12, 12,
- 12, 12, 12, 12, 12, 12, 12, 12,
- 12, 12, 12, 12, 12, 12, 12, 12,
- 12, 12, 12, 12, 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, 80, 81, 82,
- 12, 12, 12, 12, 83, 84, 85, 0,
- 0, 86, 0, 87, 12, 12, 12, 12,
- 12, 12, 12, 12, 12, 12, 12, 12,
- 12, 12, 12, 12, 12, 12, 12, 12,
- 12, 12, 12, 12, 12, 12, 12, 12,
- 12, 12, 12, 12, 12, 12, 12, 12,
- 12, 12, 12, 12, 12, 12, 12, 12,
- 12, 12, 12, 12, 12, 12, 12, 12,
- 12, 12, 12, 12, 12, 12, 12, 12,
- 12, 12, 12, 12, 12, 12, 12, 12,
- 12, 12, 12, 12, 12, 12, 12, 12,
- 12, 12, 12, 88, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 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, 12, 12, 12, 12, 12, 12, 12,
- 12, 12, 12, 12, 12, 12, 12, 12,
- 12, 12, 12, 12, 12, 12, 12, 12,
- 12, 12, 12, 12, 12, 12, 12, 12,
- 12, 12, 12, 12, 12, 12, 12, 12,
- 12, 12, 12, 12, 12, 12, 12, 12,
- 12, 12, 12, 12, 12, 12, 12, 12,
- 12, 12, 12, 12, 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,
- 90, 12, 12, 12, 12, 12, 12, 12,
- 12, 12, 12, 88, 12, 12, 12, 12,
- 12, 12, 12, 12, 12, 12, 12, 12,
- 12, 12, 12, 12, 12, 12, 12, 12,
- 12, 12, 12, 12, 12, 12, 12, 12,
- 12, 12, 12, 12, 12, 12, 12, 12,
- 12, 12, 12, 12, 12, 12, 12, 12,
- 12, 12, 12, 12, 12, 12, 12, 12,
- 12, 12, 12, 12, 12, 12, 12, 12,
- 12, 12, 12, 12, 12, 12, 12, 12,
- 12, 12, 12, 12, 12, 12, 12, 12,
- 12, 12, 12, 12, 12, 12, 12, 12,
- 12, 12, 12, 12, 12, 12, 12, 12,
- 12, 12, 12, 12, 12, 12, 12, 12,
- 12, 12, 12, 12, 12, 12, 12, 12,
- 12, 12, 12, 12, 12, 12, 12, 12,
- 12, 12, 12, 12, 12, 12, 12, 12,
- 12, 12, 12, 88, 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,
-};
-
-static const struct {
- unsigned char bm[16];
-} nameprep_rfc3491_unassigned_bitmap[] = {
- {{
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- }},
- {{
- 0, 0, 0, 0, 2, 0,240,255,255,255, 0, 0, 0, 0, 0, 0,
- }},
- {{
- 0, 0, 0, 0, 0,192, 0, 0, 0, 0, 0, 0, 0,128,255,255,
- }},
- {{
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255, 0, 0,207,187,
- }},
- {{
- 15, 40, 0, 0, 4, 0, 0, 0, 0,128, 0, 0, 0, 0,128,255,
- }},
- {{
- 128, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 0,192,252,
- }},
- {{
- 0, 0,255,255,255,255, 1, 0, 0, 0,128, 1, 1, 0, 0, 0,
- }},
- {{
- 0,249, 1, 0, 4, 0, 0, 4,224,255, 0, 0, 0,248,224,255,
- }},
- {{
- 255,239,255,119, 1, 0, 0,248, 0, 0,192,255, 0, 0, 0, 0,
- }},
- {{
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 0,128,
- }},
- {{
- 0, 64, 0, 0, 0,224, 0, 0, 0,248,255,255,255,255,255,255,
- }},
- {{
- 0, 0, 0, 0, 0, 0,252,255,255,255,255,255,255,255,255,255,
- }},
- {{
- 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
- }},
- {{
- 17, 0, 0, 0, 0, 0, 0, 12, 0,192,224, 0, 0, 0,254,255,
- }},
- {{
- 17, 96, 6, 0, 0, 2, 58, 44, 96,198,127, 79, 48, 0, 0,248,
- }},
- {{
- 27,120, 6, 0, 0, 2,146, 44,120,198,255,161, 63, 0,224,255,
- }},
- {{
- 17, 80, 4, 0, 0, 2, 18, 12, 64,196,254,255, 62, 0,255,255,
- }},
- {{
- 17, 96, 6, 0, 0, 2, 50, 12,112,198, 63, 79, 60, 0,254,255,
- }},
- {{
- 19, 56,194, 41,231, 56, 64, 60, 56,194,127,255,127, 0,248,255,
- }},
- {{
- 17, 32, 2, 0, 0, 2, 16, 60, 32,194,159,255, 60, 0,255,255,
- }},
- {{
- 19, 32, 2, 0, 0, 2, 16, 60, 32,194,159,191, 60, 0,255,255,
- }},
- {{
- 19, 32, 2, 0, 0, 2, 0, 60, 48,194,127,255, 60, 0,255,255,
- }},
- {{
- 19, 0,128, 3, 0, 0, 4,208,128,123,160, 0,255,255,227,255,
- }},
- {{
- 1, 0, 0, 0, 0, 0, 0,120, 0, 0, 0,240,255,255,255,255,
- }},
- {{
- 105,218, 15, 1, 81, 19, 0,196,160,192, 0,204,255,255,255,255,
- }},
- {{
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,248, 1, 0,
- }},
- {{
- 0,240, 0, 1, 0, 0, 0, 32, 0, 96,255,255,255,255,255,255,
- }},
- {{
- 0, 0, 0, 0, 4, 9, 56,252, 0, 0, 0,252,255,255,255,255,
- }},
- {{
- 255,255,255,255, 0, 0, 0, 0,192,255, 0, 0, 0, 0, 0,246,
- }},
- {{
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,124, 0, 0, 0, 0,
- }},
- {{
- 0, 0, 0, 0,248, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,252,
- }},
- {{
- 128, 0, 0, 0, 0, 0, 0, 0,128,194,128,194, 0, 0, 0, 0,
- }},
- {{
- 128,194, 0, 0, 0,128,194,128,194,128,128, 0, 0,128, 0, 0,
- }},
- {{
- 0,128,194,128, 0, 0, 0, 0,128, 0, 0,248, 1, 0, 0,224,
- }},
- {{
- 255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,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, 0,128,255,
- }},
- {{
- 0, 0, 0,224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254,255,
- }},
- {{
- 0, 32,224,255, 0, 0,128,255, 0, 0,240,255, 0, 32,242,255,
- }},
- {{
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224, 0,252,255,255,
- }},
- {{
- 0,128, 0,252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,
- }},
- {{
- 0, 0, 0, 0, 0,252,255,255,255,255,255,255,255,255,255,255,
- }},
- {{
- 0, 0, 0,240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,252,
- }},
- {{
- 0, 0,192,192, 0, 0, 0, 0,192,192, 0, 85, 0, 0, 0,192,
- }},
- {{
- 0, 0, 0, 0, 0, 0, 32, 0, 32, 0, 48, 16, 0, 0, 35,128,
- }},
- {{
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120,127,240, 3, 12, 0,
- }},
- {{
- 0,128,255,255, 0, 0,252,255,255,255, 0, 0, 0,248,255,255,
- }},
- {{
- 0, 0, 0, 0, 0, 0, 0, 24, 0,240, 7, 0, 0, 0, 0, 0,
- }},
- {{
- 240,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- }},
- {{
- 0, 0, 0, 0, 0, 0, 0, 0, 0,128,255,255,255,255,255,255,
- }},
- {{
- 0, 0, 0, 0,128,255,255,255, 0,248,255,255, 0, 0, 0, 0,
- }},
- {{
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,
- }},
- {{
- 0, 0, 48, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,
- }},
- {{
- 0,252,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
- }},
- {{
- 33, 12, 0, 0, 0, 1, 0, 0, 0, 80,184,128, 1, 0, 0, 0,
- }},
- {{
- 0, 0,224, 0, 0, 0, 1,128,255,255, 0, 0, 0,240, 0, 0,
- }},
- {{
- 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,255,
- }},
- {{
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,255,255,255, 0,240,
- }},
- {{
- 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
- }},
- {{
- 0, 0,128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- }},
- {{
- 31, 0, 0, 0, 0,224, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- }},
- {{
- 0,128, 0, 0, 0, 0, 0,255,255,255,255,255,255,255, 0, 0,
- }},
- {{
- 0, 0, 0,224, 0, 0, 0, 0,240,255, 1, 0, 0, 0, 0,112,
- }},
- {{
- 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 0, 0, 0, 0, 0,128,
- }},
- {{
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7,
- }},
- {{
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 0, 0, 0,128,
- }},
- {{
- 0, 0, 0, 0, 0, 0,192,255,255,255,255,255,255,255,255,255,
- }},
- {{
- 0, 0, 0, 0,192,255,255,255,255,255,255,255,255,255,255,255,
- }},
- {{
- 0,224, 0, 0, 0, 0, 0, 0,128,255,255,255,255,255,255,255,
- }},
- {{
- 0, 0, 0, 0,240,255,255,255,255,255,255,255,255,255,255,255,
- }},
- {{
- 0, 0, 0, 0, 0,192, 0, 0, 0, 0, 0, 0, 0,248,255,255,
- }},
- {{
- 128,255, 7, 31, 0, 0,128,160, 36, 0, 0, 0, 0, 0, 0, 0,
- }},
- {{
- 0, 0, 0, 0, 0, 0,252,255,255,255, 7, 0, 0, 0, 0, 0,
- }},
- {{
- 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,224,
- }},
- {{
- 0, 0,255,255,240,255, 0, 0,128, 1, 8, 0,128,240, 32, 0,
- }},
- {{
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96,
- }},
- {{
- 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,
- }},
-};
-
-static const unsigned short nameprep_rfc3491_bidi_imap[] = {
- 272, 400, 528, 656, 784, 912, 912, 912,
- 912, 1040, 1168, 912, 912, 1296, 912, 1424,
- 1552, 1680, 1680, 1680, 1680, 1680, 1680, 1680,
- 1680, 1680, 1680, 1680, 1680, 1808, 1680, 1680,
- 912, 912, 912, 912, 912, 912, 912, 912,
- 912, 912, 1936, 1680, 1680, 1680, 1680, 2064,
- 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680,
- 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680,
- 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680,
- 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680,
- 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680,
- 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680,
- 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680,
- 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680,
- 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680,
- 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680,
- 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680,
- 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680,
- 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680,
- 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680,
- 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680,
- 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680,
- 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680,
- 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680,
- 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680,
- 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680,
- 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680,
- 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680,
- 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680,
- 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680,
- 912, 912, 912, 912, 912, 912, 912, 912,
- 912, 912, 912, 912, 912, 912, 912, 2192,
- 912, 912, 912, 912, 912, 912, 912, 912,
- 912, 912, 912, 912, 912, 912, 912, 2192,
- 0, 0, 1, 1, 0, 2, 3, 3,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 5, 6, 4, 4, 7, 8, 9,
- 0, 0, 0, 10, 11, 12, 13, 14,
- 4, 4, 4, 4, 15, 4, 13, 16,
- 17, 18, 19, 20, 21, 22, 23, 24,
- 25, 26, 27, 28, 29, 29, 30, 31,
- 32, 33, 0, 0, 29, 34, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 35, 36, 37, 38, 39, 40, 41, 42,
- 43, 44, 45, 46, 47, 48, 49, 50,
- 39, 51, 41, 52, 53, 54, 55, 56,
- 57, 58, 59, 60, 61, 62, 63, 60,
- 61, 64, 65, 60, 66, 67, 68, 69,
- 20, 70, 71, 0, 72, 73, 74, 0,
- 75, 76, 77, 78, 79, 80, 81, 0,
- 4, 82, 83, 0, 0, 4, 84, 85,
- 4, 4, 86, 4, 4, 87, 4, 88,
- 89, 4, 90, 4, 91, 92, 93, 13,
- 92, 4, 94, 95, 0, 4, 4, 96,
- 20, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 97, 1, 4, 4, 98,
- 99, 100, 101, 102, 4, 103, 104, 105,
- 106, 4, 4, 83, 4, 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,
- 4, 4, 4, 4, 108, 4, 4, 88,
- 109, 4, 110, 111, 4, 112, 113, 114,
- 115, 0, 0, 116, 0, 0, 0, 0,
- 117, 118, 119, 4, 120, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 121, 4, 122, 123, 0, 0, 0,
- 0, 0, 0, 0, 124, 4, 4, 105,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 125, 126, 20, 4, 127, 20, 4, 128,
- 129, 130, 4, 4, 13, 83, 0, 6,
- 131, 4, 120, 132, 4, 98, 133, 134,
- 4, 4, 4, 135, 4, 4, 111, 134,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 14, 0, 0,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 136, 0, 0,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 137, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 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, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 120, 0, 0,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 138, 4, 139, 0, 0, 0, 0,
- 140, 141, 142, 29, 29, 143, 144, 29,
- 29, 29, 29, 29, 29, 29, 29, 29,
- 29, 145, 146, 29, 147, 29, 148, 149,
- 0, 0, 0, 150, 29, 29, 29, 151,
- 0, 1, 1, 152, 4, 134, 153, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 134, 154, 139, 0, 0, 0, 0, 0,
- 4, 155, 156, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 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, 4, 4, 4, 14,
- 4, 157, 4, 158, 159, 160, 111, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 4, 4, 161, 4, 162, 163, 164, 4,
- 165, 166, 167, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 168, 4, 4,
- 4, 4, 4, 4, 4, 4, 105, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 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, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 97, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 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, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 111, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 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, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 111,
-};
-
-static const struct {
- unsigned char tbl[32];
-} nameprep_rfc3491_bidi_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, 2, 2, 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, 2, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 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, 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, 0, 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, 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, 0, 0, 2,
- 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, 2,
- 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- }},
- {{
- 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, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0,
- }},
- {{
- 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 2, 0, 2, 0, 2, 2, 2,
- 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, 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, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 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,
- }},
- {{
- 2, 2, 2, 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, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0,
- }},
- {{
- 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, 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, 0, 0, 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, 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, 0, 0, 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, 0, 0, 1, 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, 0, 0, 0, 0, 0, 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, 1, 0, 0, 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, 0, 0, 0, 0, 0,
- }},
- {{
- 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, 0, 0, 0, 0, 0, 0, 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, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 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, 1, 1, 1, 1, 1, 0,
- }},
- {{
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 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, 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, 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, 0, 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, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 2, 2, 2,
- }},
- {{
- 2, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, 2,
- 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2,
- }},
- {{
- 2, 2, 0, 0, 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, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 2,
- 0, 0, 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, 2, 2, 2, 2,
- 0, 2, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2,
- }},
- {{
- 2, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 2, 0, 2,
- }},
- {{
- 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 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, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2,
- 0, 0, 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, 2, 2, 2, 2,
- 0, 2, 2, 0, 2, 2, 0, 2, 2, 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, 2, 2, 2, 2, 0, 2, 0,
- }},
- {{
- 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0,
- 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- }},
- {{
- 0, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 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, 0, 2, 2, 2, 2, 2, 2, 2,
- 0, 2, 2, 0, 2, 2, 2, 2, 2, 0, 0, 0, 2, 2, 2,
- }},
- {{
- 2, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 0, 0, 0, 2,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- }},
- {{
- 2, 0, 0, 0, 0, 0, 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, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2,
- 0, 2, 2, 0, 0, 2, 2, 2, 2, 0, 0, 0, 2, 2, 0,
- }},
- {{
- 2, 2, 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, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 2, 2, 2,
- 0, 2, 2, 2, 2, 0, 0, 0, 2, 2, 0, 2, 0, 2, 2,
- }},
- {{
- 0, 0, 0, 2, 2, 0, 0, 0, 2, 2, 2, 0, 0, 0, 2, 2, 2,
- 2, 2, 2, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 2, 2,
- }},
- {{
- 0, 2, 2, 0, 0, 0, 2, 2, 2, 0, 2, 2, 2, 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, 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, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 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, 2, 2, 2, 2,
- 2, 2, 2, 0, 2, 2, 2, 2, 2, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- }},
- {{
- 2, 2, 0, 0, 0, 0, 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, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 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, 2, 2, 2, 2,
- 2, 2, 2, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 0,
- }},
- {{
- 2, 2, 2, 2, 2, 0, 0, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0,
- }},
- {{
- 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, 0, 0, 0, 0, 2, 2,
- }},
- {{
- 2, 0, 0, 0, 0, 0, 2, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0,
- }},
- {{
- 0, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 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, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0,
- }},
- {{
- 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2,
- 2, 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, 2, 2, 2, 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,
- 0, 2, 2, 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, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0,
- }},
- {{
- 0, 2, 2, 0, 2, 0, 0, 2, 2, 0, 2, 0, 0, 2, 0, 0, 0,
- 0, 0, 0, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2,
- }},
- {{
- 0, 2, 2, 2, 0, 2, 0, 2, 0, 0, 2, 2, 0, 2, 2, 2, 2,
- 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0,
- }},
- {{
- 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 2, 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, 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, 2, 0, 2, 0, 0, 0, 0, 0, 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,
- }},
- {{
- 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, 2,
- }},
- {{
- 0, 0, 0, 0, 0, 2, 0, 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, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2,
- }},
- {{
- 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- }},
- {{
- 2, 2, 0, 2, 2, 2, 2, 2, 0, 2, 2, 0, 2, 0, 0, 0, 0,
- 2, 0, 0, 0, 0, 0, 0, 2, 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, 0, 0, 0, 0, 0, 0, 0, 0,
- }},
- {{
- 2, 2, 2, 2, 2, 2, 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, 0, 0, 2, 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, 0, 0, 0, 0, 0, 2,
- }},
- {{
- 2, 2, 2, 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, 2, 2, 2, 0, 0, 0, 0, 0, 0,
- }},
- {{
- 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, 0, 2, 0, 2, 2, 2, 2, 0, 0, 2,
- 2, 2, 2, 2, 2, 2, 0, 2, 0, 2, 2, 2, 2, 0, 0,
- }},
- {{
- 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 2, 2, 2, 2, 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, 0, 2,
- 0, 2, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 2, 0,
- }},
- {{
- 2, 0, 2, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 2, 0, 2,
- 2, 2, 2, 2, 2, 2, 0, 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, 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, 0, 0, 0,
- }},
- {{
- 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,
- }},
- {{
- 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, 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,
- }},
- {{
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2,
- 2, 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, 0, 0, 0, 2, 2, 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, 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, 2, 2, 2,
- 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, 0, 0, 0, 0, 0, 0, 0, 2, 2,
- }},
- {{
- 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, 2, 0, 2, 0, 0, 0,
- }},
- {{
- 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0,
- }},
- {{
- 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,
- }},
- {{
- 2, 2, 2, 2, 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,
- }},
- {{
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0,
- }},
- {{
- 2, 2, 2, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2,
- 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 2, 0, 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, 0, 0,
- }},
- {{
- 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, 2, 2, 2, 2, 0, 2, 0,
- }},
- {{
- 0, 0, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 2,
- 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0,
- }},
- {{
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0,
- 0, 2, 2, 2, 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, 2, 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,
- 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,
- }},
- {{
- 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 0, 2, 0, 0, 0, 2, 2, 2, 2, 2, 0, 0,
- }},
- {{
- 0, 0, 0, 0, 2, 0, 2, 0, 2, 0, 2, 2, 2, 2, 0, 2, 2,
- 2, 0, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 2, 2, 2,
- }},
- {{
- 0, 0, 0, 0, 0, 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,
- }},
- {{
- 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, 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, 0, 0, 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, 0, 2, 2, 2, 2,
- }},
- {{
- 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, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0,
- 2, 2, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 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, 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, 0, 2, 2, 2, 2,
- }},
- {{
- 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, 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, 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, 0, 0, 0, 2,
- }},
- {{
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 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,
- }},
- {{
- 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, 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, 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,
- }},
- {{
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 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,
- }},
- {{
- 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 1, 0, 1,
- }},
- {{
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0,
- }},
- {{
- 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, 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, 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, 1, 1, 1, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0,
- }},
- {{
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 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,
- }},
- {{
- 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0,
- 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 2, 2, 0, 0, 0,
- }},
- {{
- 2, 2, 2, 2, 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, 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, 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, 2, 2, 2, 2, 2, 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, 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, 2, 2, 2, 2, 2,
- 2, 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, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 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, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- }},
- {{
- 2, 2, 2, 2, 2, 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, 2, 2,
- }},
- {{
- 0, 0, 2, 0, 0, 2, 2, 0, 0, 2, 2, 2, 2, 0, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 2, 2, 2,
- }},
- {{
- 2, 0, 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, 0, 2, 2, 2, 2, 0, 0, 2, 2, 2, 2,
- 2, 2, 2, 2, 0, 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, 0, 2, 2, 2, 2, 0,
- }},
- {{
- 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 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, 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,
- }},
-};
-
-static const unsigned char nameprep_rfc3491_bidi_data[] = {
- idn_biditype_others,
- idn_biditype_r_al,
- idn_biditype_l,
-};
-
+++ /dev/null
-#ifndef lint
-static char *rcsid = "$Id: normalizer.c,v 1.1 2003/06/04 00:26:05 marka Exp $";
-#endif
-
-/*
- * Copyright (c) 2000,2002 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-#include <config.h>
-
-#include <stddef.h>
-#include <stdlib.h>
-#include <string.h>
-#include <ctype.h>
-
-#include <idn/assert.h>
-#include <idn/logmacro.h>
-#include <idn/result.h>
-#include <idn/normalizer.h>
-#include <idn/strhash.h>
-#include <idn/unormalize.h>
-#include <idn/unicode.h>
-#include <idn/ucs4.h>
-#include <idn/debug.h>
-#include <idn/util.h>
-
-#define MAX_LOCAL_SCHEME 3
-
-#define INITIALIZED (scheme_hash != NULL)
-
-typedef struct {
- char *name;
- idn_normalizer_proc_t proc;
-} normalize_scheme_t;
-
-struct idn_normalizer {
- int nschemes;
- int scheme_size;
- normalize_scheme_t **schemes;
- normalize_scheme_t *local_buf[MAX_LOCAL_SCHEME];
- int reference_count;
-};
-
-static idn__strhash_t scheme_hash;
-
-static idn__unicode_version_t vcur = NULL;
-static idn__unicode_version_t v320 = NULL;
-#define INIT_VERSION(version, var) \
- if (var == NULL) { \
- idn_result_t r = idn__unicode_create(version, &var); \
- if (r != idn_success) \
- return (r); \
- }
-
-static idn_result_t expand_schemes(idn_normalizer_t ctx);
-static idn_result_t register_standard_normalizers(void);
-static idn_result_t normalizer_formkc(const unsigned long *from,
- unsigned long *to, size_t tolen);
-static idn_result_t normalizer_formkc_v320(const unsigned long *from,
- unsigned long *to,
- size_t tolen);
-
-static struct standard_normalizer {
- char *name;
- idn_normalizer_proc_t proc;
-} standard_normalizer[] = {
- { "unicode-form-kc", normalizer_formkc },
- { "unicode-form-kc/3.2.0", normalizer_formkc_v320 },
- { "RFC3491", normalizer_formkc_v320 },
- { NULL, NULL },
-};
-
-idn_result_t
-idn_normalizer_initialize(void) {
- idn__strhash_t hash;
- idn_result_t r;
-
- TRACE(("idn_normalizer_initialize()\n"));
-
- if (scheme_hash != NULL) {
- r = idn_success; /* already initialized */
- goto ret;
- }
-
- if ((r = idn__strhash_create(&hash)) != idn_success)
- goto ret;
- scheme_hash = hash;
-
- /* Register standard normalizers */
- r = register_standard_normalizers();
-ret:
- TRACE(("idn_normalizer_initialize(): %s\n", idn_result_tostring(r)));
- return (r);
-}
-
-idn_result_t
-idn_normalizer_create(idn_normalizer_t *ctxp) {
- idn_normalizer_t ctx;
- idn_result_t r;
-
- assert(ctxp != NULL);
- TRACE(("idn_normalizer_create()\n"));
-
- if ((ctx = malloc(sizeof(struct idn_normalizer))) == NULL) {
- r = idn_nomemory;
- goto ret;
- }
-
- ctx->nschemes = 0;
- ctx->scheme_size = MAX_LOCAL_SCHEME;
- ctx->schemes = ctx->local_buf;
- ctx->reference_count = 1;
- *ctxp = ctx;
-
- r = idn_success;
-ret:
- TRACE(("idn_normalizer_create(): %s\n", idn_result_tostring(r)));
- return (r);
-}
-
-void
-idn_normalizer_destroy(idn_normalizer_t ctx) {
- assert(ctx != NULL);
-
- TRACE(("idn_normalizer_destroy()\n"));
-
- ctx->reference_count--;
- if (ctx->reference_count <= 0) {
- TRACE(("idn_normalizer_destroy(): the object is destroyed\n"));
- if (ctx->schemes != ctx->local_buf)
- free(ctx->schemes);
- free(ctx);
- } else {
- TRACE(("idn_normalizer_destroy(): "
- "update reference count (%d->%d)\n",
- ctx->reference_count + 1, ctx->reference_count));
- }
-}
-
-void
-idn_normalizer_incrref(idn_normalizer_t ctx) {
- assert(ctx != NULL);
-
- TRACE(("idn_normalizer_incrref()\n"));
- TRACE(("idn_normalizer_incrref: update reference count (%d->%d)\n",
- ctx->reference_count, ctx->reference_count + 1));
-
- ctx->reference_count++;
-}
-
-idn_result_t
-idn_normalizer_add(idn_normalizer_t ctx, const char *scheme_name) {
- idn_result_t r;
- void *v;
- normalize_scheme_t *scheme;
-
- assert(ctx != NULL && scheme_name != NULL);
-
- TRACE(("idn_normalizer_add(scheme_name=%s)\n", scheme_name));
-
- assert(INITIALIZED);
-
- if (idn__strhash_get(scheme_hash, scheme_name, &v) != idn_success) {
- ERROR(("idn_normalizer_add(): invalid scheme \"%-.30s\"\n",
- scheme_name));
- r = idn_invalid_name;
- goto ret;
- }
-
- scheme = v;
-
- assert(ctx->nschemes <= ctx->scheme_size);
-
- if (ctx->nschemes == ctx->scheme_size &&
- (r = expand_schemes(ctx)) != idn_success) {
- goto ret;
- }
-
- ctx->schemes[ctx->nschemes++] = scheme;
- r = idn_success;
-ret:
- TRACE(("idn_normalizer_add(): %s\n", idn_result_tostring(r)));
- return (r);
-}
-
-idn_result_t
-idn_normalizer_addall(idn_normalizer_t ctx, const char **scheme_names,
- int nschemes) {
- idn_result_t r;
- int i;
-
- assert(ctx != NULL && scheme_names != NULL);
-
- TRACE(("idn_normalizer_addall(nschemes=%d)\n", nschemes));
-
- for (i = 0; i < nschemes; i++) {
- r = idn_normalizer_add(ctx, (const char *)*scheme_names);
- if (r != idn_success)
- goto ret;
- scheme_names++;
- }
-
- r = idn_success;
-ret:
- TRACE(("idn_normalizer_addall(): %s\n", idn_result_tostring(r)));
- return (r);
-}
-
-idn_result_t
-idn_normalizer_normalize(idn_normalizer_t ctx, const unsigned long *from,
- unsigned long *to, size_t tolen) {
- idn_result_t r;
- unsigned long *src, *dst;
- unsigned long *buffers[2] = {NULL, NULL};
- size_t buflen[2] = {0, 0};
- size_t dstlen;
- int idx;
- int i;
-
- assert(scheme_hash != NULL);
- assert(ctx != NULL && from != NULL && to != NULL);
-
- TRACE(("idn_normalizer_normalize(from=\"%s\", tolen=%d)\n",
- idn__debug_ucs4xstring(from, 50), (int)tolen));
-
- if (ctx->nschemes <= 0) {
- if (tolen < idn_ucs4_strlen(from) + 1) {
- r = idn_buffer_overflow;
- goto ret;
- }
- idn_ucs4_strcpy(to, from);
- r = idn_success;
- goto ret;
- }
-
- /*
- * Normalize.
- */
- src = (void *)from;
- dstlen = idn_ucs4_strlen(from) + 1;
-
- i = 0;
- while (i < ctx->nschemes) {
- TRACE(("idn_normalizer_normalize(): normalize %s\n",
- ctx->schemes[i]->name));
-
- /*
- * Choose destination area to restore the result of a mapping.
- */
- if (i + 1 == ctx->nschemes) {
- dst = to;
- dstlen = tolen;
- } else {
- if (src == buffers[0])
- idx = 1;
- else
- idx = 0;
-
- if (buflen[idx] < dstlen) {
- void *newbuf;
-
- newbuf = realloc(buffers[idx],
- sizeof(long) * dstlen);
- if (newbuf == NULL) {
- r = idn_nomemory;
- goto ret;
- }
- buffers[idx] = (unsigned long *)newbuf;
- buflen[idx] = dstlen;
- }
-
- dst = buffers[idx];
- dstlen = buflen[idx];
- }
-
- /*
- * Perform i-th normalization scheme.
- * If buffer size is not enough, we double it and try again.
- */
- r = (ctx->schemes[i]->proc)(src, dst, dstlen);
- if (r == idn_buffer_overflow && dst != to) {
- dstlen *= 2;
- continue;
- }
- if (r != idn_success)
- goto ret;
-
- src = dst;
- i++;
- }
-
- r = idn_success;
-ret:
- free(buffers[0]);
- free(buffers[1]);
- if (r == idn_success) {
- TRACE(("idn_normalizer_normalize(): success (to=\"%s\")\n",
- idn__debug_ucs4xstring(to, 50)));
- } else {
- TRACE(("idn_normalizer_normalize(): %s\n",
- idn_result_tostring(r)));
- }
- return (r);
-}
-
-idn_result_t
-idn_normalizer_register(const char *scheme_name, idn_normalizer_proc_t proc) {
- idn_result_t r;
- normalize_scheme_t *scheme;
-
- assert(scheme_name != NULL && proc != NULL);
-
- TRACE(("idn_normalizer_register(scheme_name=%s)\n", scheme_name));
-
- assert(INITIALIZED);
-
- scheme = malloc(sizeof(*scheme) + strlen(scheme_name) + 1);
- if (scheme == NULL) {
- r = idn_nomemory;
- goto ret;
- }
- scheme->name = (char *)(scheme + 1);
- (void)strcpy(scheme->name, scheme_name);
- scheme->proc = proc;
-
- r = idn__strhash_put(scheme_hash, scheme_name, scheme);
- if (r != idn_success)
- goto ret;
-
- r = idn_success;
-ret:
- TRACE(("idn_normalizer_register(): %s\n", idn_result_tostring(r)));
- return (r);
-}
-
-static idn_result_t
-expand_schemes(idn_normalizer_t ctx) {
- normalize_scheme_t **new_schemes;
- int new_size = ctx->scheme_size * 2;
-
- if (ctx->schemes == ctx->local_buf) {
- new_schemes = malloc(sizeof(normalize_scheme_t) * new_size);
- } else {
- new_schemes = realloc(ctx->schemes,
- sizeof(normalize_scheme_t) * new_size);
- }
- if (new_schemes == NULL)
- return (idn_nomemory);
-
- if (ctx->schemes == ctx->local_buf)
- memcpy(new_schemes, ctx->local_buf, sizeof(ctx->local_buf));
-
- ctx->schemes = new_schemes;
- ctx->scheme_size = new_size;
-
- return (idn_success);
-}
-
-static idn_result_t
-register_standard_normalizers(void) {
- int i;
- int failed = 0;
-
- for (i = 0; standard_normalizer[i].name != NULL; i++) {
- idn_result_t r;
- r = idn_normalizer_register(standard_normalizer[i].name,
- standard_normalizer[i].proc);
- if (r != idn_success) {
- WARNING(("idn_normalizer_initialize(): "
- "failed to register \"%-.100s\"\n",
- standard_normalizer[i].name));
- failed++;
- }
- }
- if (failed > 0)
- return (idn_failure);
- else
- return (idn_success);
-}
-
-/*
- * Unicode Normalization Forms -- latest version
- */
-
-static idn_result_t
-normalizer_formkc(const unsigned long *from, unsigned long *to, size_t tolen) {
- INIT_VERSION(NULL, vcur);
- return (idn__unormalize_formkc(vcur, from, to, tolen));
-}
-
-/*
- * Unicode Normalization Forms -- version 3.2.0
- */
-
-static idn_result_t
-normalizer_formkc_v320(const unsigned long *from, unsigned long *to,
- size_t tolen) {
- INIT_VERSION("3.2.0", v320);
- return (idn__unormalize_formkc(v320, from, to, tolen));
-}
+++ /dev/null
-#ifndef lint
-static char *rcsid = "$Id: punycode.c,v 1.1 2003/06/04 00:26:06 marka Exp $";
-#endif
-
-/*
- * Copyright (c) 2001,2002 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-#include <config.h>
-
-#include <stddef.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <idn/result.h>
-#include <idn/assert.h>
-#include <idn/logmacro.h>
-#include <idn/converter.h>
-#include <idn/ucs4.h>
-#include <idn/debug.h>
-#include <idn/punycode.h>
-#include <idn/util.h>
-
-/*
- * Although draft-ietf-idn-punycode-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.
- */
-#ifndef IDN_PUNYCODE_PREFIX
-#define IDN_PUNYCODE_PREFIX "xn--"
-#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> + <max. difference in code point> *
- * <# 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 PUNYCODE_MAXINPUT 3800
-
-/*
- * Parameters.
- */
-#define PUNYCODE_BASE 36
-#define PUNYCODE_TMIN 1
-#define PUNYCODE_TMAX 26
-#define PUNYCODE_SKEW 38
-#define PUNYCODE_DAMP 700
-#define PUNYCODE_INITIAL_BIAS 72
-#define PUNYCODE_INITIAL_N 0x80
-
-static int punycode_getwc(const char *s, size_t len,
- int bias, unsigned long *vp);
-static int punycode_putwc(char *s, size_t len,
- unsigned long delta, int bias);
-static int punycode_update_bias(unsigned long delta,
- size_t npoints, int first);
-
-idn_result_t
-idn__punycode_decode(idn_converter_t ctx, void *privdata,
- const char *from, unsigned long *to, size_t tolen) {
- unsigned long *to_org = to;
- unsigned long c, idx;
- size_t prefixlen = strlen(IDN_PUNYCODE_PREFIX);
- size_t fromlen;
- size_t uidx, fidx, ucslen;
- int first, bias;
- idn_result_t r;
-
- assert(ctx != NULL);
-
- TRACE(("idn__punycode_decode(from=\"%s\", tolen=%d)\n",
- idn__debug_xstring(from, 50), (int)tolen));
-
- if (!idn__util_asciihaveaceprefix(from, IDN_PUNYCODE_PREFIX)) {
- if (*from == '\0') {
- r = idn_ucs4_utf8toucs4(from, to, tolen);
- goto ret;
- }
- r = idn_invalid_encoding;
- goto ret;
- }
- from += prefixlen;
- fromlen = strlen(from);
-
- /*
- * Find the last delimiter, and copy the characters
- * before it verbatim.
- */
- ucslen = 0;
- for (fidx = fromlen; fidx > 0; fidx--) {
- if (from[fidx - 1] == '-') {
- if (tolen < fidx) {
- r = idn_buffer_overflow;
- goto ret;
- }
- for (uidx = 0; uidx < fidx - 1; uidx++) {
- to[uidx] = from[uidx];
- }
- ucslen = uidx;
- break;
- }
- }
-
- first = 1;
- bias = PUNYCODE_INITIAL_BIAS;
- c = PUNYCODE_INITIAL_N;
- idx = 0;
- while (fidx < fromlen) {
- int len;
- unsigned long delta;
- int i;
-
- len = punycode_getwc(from + fidx, fromlen - fidx, bias, &delta);
- if (len == 0) {
- r = idn_invalid_encoding;
- goto ret;
- }
- fidx += len;
-
- bias = punycode_update_bias(delta, ucslen + 1, first);
- first = 0;
- idx += delta;
- c += idx / (ucslen + 1);
- uidx = idx % (ucslen + 1);
-
- /* Insert 'c' at uidx. */
- if (tolen-- <= 0) {
- r = idn_buffer_overflow;
- goto ret;
- }
- for (i = ucslen; i > uidx; i--)
- to[i] = to[i - 1];
- to[uidx] = c;
-
- ucslen++;
- idx = uidx + 1;
- }
-
- /* Terminate with NUL. */
- if (tolen <= 0) {
- r = idn_buffer_overflow;
- goto ret;
- }
- to[ucslen] = '\0';
- r = idn_success;
-
-ret:
- if (r == idn_success) {
- TRACE(("idn__punycode_decode(): succcess (to=\"%s\")\n",
- idn__debug_ucs4xstring(to_org, 50)));
- } else {
- TRACE(("idn__punycode_decode(): %s\n", idn_result_tostring(r)));
- }
- return (r);
-}
-
-idn_result_t
-idn__punycode_encode(idn_converter_t ctx, void *privdata,
- const unsigned long *from, char *to, size_t tolen) {
- char *to_org = to;
- unsigned long cur_code, next_code, delta;
- size_t prefixlen = strlen(IDN_PUNYCODE_PREFIX);
- size_t fromlen;
- size_t ucsdone;
- size_t toidx;
- int uidx, bias, first;
- idn_result_t r;
-
- assert(ctx != NULL);
-
- TRACE(("idn__punycode_encode(from=\"%s\", tolen=%d)\n",
- idn__debug_ucs4xstring(from, 50), (int)tolen));
-
- if (*from == '\0') {
- r = idn_ucs4_ucs4toutf8(from, to, tolen);
- goto ret;
- } else if (idn__util_ucs4haveaceprefix(from, IDN_PUNYCODE_PREFIX)) {
- r = idn_prohibited;
- goto ret;
- }
-
- if (tolen < prefixlen) {
- r = idn_buffer_overflow;
- goto ret;
- }
- memcpy(to, IDN_PUNYCODE_PREFIX, prefixlen);
- to += prefixlen;
- tolen -= prefixlen;
-
- fromlen = idn_ucs4_strlen(from);
-
- /*
- * If the input string is too long (actually too long to be sane),
- * return failure in order to prevent possible overflow.
- */
- if (fromlen > PUNYCODE_MAXINPUT) {
- ERROR(("idn__punycode_encode(): "
- "the input string is too long to convert Punycode\n",
- idn__debug_ucs4xstring(from, 50)));
- r = idn_failure;
- goto ret;
- }
-
- ucsdone = 0; /* number of characters processed */
- toidx = 0;
-
- /*
- * First, pick up basic code points and copy them to 'to'.
- */
- for (uidx = 0; uidx < fromlen; uidx++) {
- if (from[uidx] < 0x80) {
- if (toidx >= tolen) {
- r = idn_buffer_overflow;
- goto ret;
- }
- to[toidx++] = from[uidx];
- ucsdone++;
- }
- }
-
- /*
- * If there are any basic code points, output a delimiter
- * (hyphen-minus).
- */
- if (toidx > 0) {
- if (toidx >= tolen) {
- r = idn_buffer_overflow;
- goto ret;
- }
- to[toidx++] = '-';
- to += toidx;
- tolen -= toidx;
- }
-
- /*
- * Then encode non-basic characters.
- */
- first = 1;
- cur_code = PUNYCODE_INITIAL_N;
- bias = PUNYCODE_INITIAL_BIAS;
- delta = 0;
- while (ucsdone < fromlen) {
- 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 = fromlen - 1;
- uidx >= 0; uidx--) {
- if (from[uidx] >= cur_code && from[uidx] < next_code) {
- next_code = from[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 (from[uidx] < cur_code) {
- delta++;
- rest--;
- } else if (from[uidx] == cur_code) {
- int sz = punycode_putwc(to, tolen, delta, bias);
- if (sz == 0) {
- r = idn_buffer_overflow;
- goto ret;
- }
- to += sz;
- tolen -= sz;
- ucsdone++;
- bias = punycode_update_bias(delta, ucsdone,
- first);
- delta = 0;
- first = 0;
- }
- }
- delta += rest + 1;
- cur_code++;
- }
-
- /*
- * Terminate with NUL.
- */
- if (tolen <= 0) {
- r = idn_buffer_overflow;
- goto ret;
- }
- *to = '\0';
- r = idn_success;
-
-ret:
- if (r == idn_success) {
- TRACE(("idn__punycode_encode(): succcess (to=\"%s\")\n",
- idn__debug_xstring(to_org, 50)));
- } else {
- TRACE(("idn__punycode_encode(): %s\n", idn_result_tostring(r)));
- }
- return (r);
-}
-
-static int
-punycode_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 = PUNYCODE_BASE - bias; len > 0; k += PUNYCODE_BASE) {
- int c = *s++;
- int t = (k < PUNYCODE_TMIN) ? PUNYCODE_TMIN :
- (k > PUNYCODE_TMAX) ? PUNYCODE_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 *= (PUNYCODE_BASE - t);
- }
-
- return (0); /* final character missing */
-}
-
-static int
-punycode_putwc(char *s, size_t len, unsigned long delta, int bias) {
- const char *punycode_base36 = "abcdefghijklmnopqrstuvwxyz0123456789";
- int k;
- char *sorg = s;
-
- for (k = PUNYCODE_BASE - bias; 1; k += PUNYCODE_BASE) {
- int t = (k < PUNYCODE_TMIN) ? PUNYCODE_TMIN :
- (k > PUNYCODE_TMAX) ? PUNYCODE_TMAX : k;
-
- if (delta < t)
- break;
- if (len < 1)
- return (0);
- *s++ = punycode_base36[t + ((delta - t) % (PUNYCODE_BASE - t))];
- len--;
- delta = (delta - t) / (PUNYCODE_BASE - t);
- }
- if (len < 1)
- return (0);
- *s++ = punycode_base36[delta];
- return (s - sorg);
-}
-
-static int
-punycode_update_bias(unsigned long delta, size_t npoints, int first) {
- int k = 0;
-
- delta /= first ? PUNYCODE_DAMP : 2;
- delta += delta / npoints;
-
- while (delta > ((PUNYCODE_BASE - PUNYCODE_TMIN) * PUNYCODE_TMAX) / 2) {
- delta /= PUNYCODE_BASE - PUNYCODE_TMIN;
- k++;
- }
- return (PUNYCODE_BASE * k +
- (((PUNYCODE_BASE - PUNYCODE_TMIN + 1) * delta) /
- (delta + PUNYCODE_SKEW)));
-}
+++ /dev/null
-#ifndef lint
-static char *rcsid = "$Id: race.c,v 1.1 2003/06/04 00:26:07 marka Exp $";
-#endif
-
-/*
- * Copyright (c) 2000,2001,2002 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-#include <config.h>
-
-#include <stddef.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <idn/result.h>
-#include <idn/assert.h>
-#include <idn/logmacro.h>
-#include <idn/converter.h>
-#include <idn/ucs4.h>
-#include <idn/debug.h>
-#include <idn/race.h>
-#include <idn/util.h>
-
-#ifndef IDN_RACE_PREFIX
-#define IDN_RACE_PREFIX "bq--"
-#endif
-#define RACE_2OCTET_MODE 0xd8
-#define RACE_ESCAPE 0xff
-#define RACE_ESCAPE_2ND 0x99
-
-#define RACE_BUF_SIZE 128 /* more than enough */
-
-/*
- * Unicode surrogate pair.
- */
-#define IS_SURROGATE_HIGH(v) (0xd800 <= (v) && (v) <= 0xdbff)
-#define IS_SURROGATE_LOW(v) (0xdc00 <= (v) && (v) <= 0xdfff)
-#define SURROGATE_HIGH(v) (SURROGATE_H_OFF + (((v) - 0x10000) >> 10))
-#define SURROGATE_LOW(v) (SURROGATE_L_OFF + ((v) & 0x3ff))
-#define SURROGATE_BASE 0x10000
-#define SURROGATE_H_OFF 0xd800
-#define SURROGATE_L_OFF 0xdc00
-#define COMBINE_SURROGATE(h, l) \
- (SURROGATE_BASE + (((h)-SURROGATE_H_OFF)<<10) + ((l)-SURROGATE_L_OFF))
-
-/*
- * Compression type.
- */
-enum {
- compress_one, /* all characters are in a single row */
- compress_two, /* row 0 and another row */
- compress_none /* nope */
-};
-
-static idn_result_t race_decode_decompress(const char *from,
- unsigned short *buf,
- size_t buflen);
-static idn_result_t race_compress_encode(const unsigned short *p,
- int compress_mode,
- char *to, size_t tolen);
-static int get_compress_mode(unsigned short *p);
-
-idn_result_t
-idn__race_decode(idn_converter_t ctx, void *privdata,
- const char *from, unsigned long *to, size_t tolen) {
- unsigned short *buf = NULL;
- size_t prefixlen = strlen(IDN_RACE_PREFIX);
- size_t fromlen;
- size_t buflen;
- idn_result_t r;
-
- assert(ctx != NULL);
-
- TRACE(("idn__race_decode(from=\"%s\", tolen=%d)\n",
- idn__debug_xstring(from, 50), (int)tolen));
-
- if (!idn__util_asciihaveaceprefix(from, IDN_RACE_PREFIX)) {
- if (*from == '\0') {
- r = idn_ucs4_utf8toucs4(from, to, tolen);
- goto ret;
- }
- r = idn_invalid_encoding;
- goto ret;
- }
- from += prefixlen;
- fromlen = strlen(from);
-
- /*
- * Allocate sufficient buffer.
- */
- buflen = fromlen + 1;
- buf = malloc(sizeof(*buf) * buflen);
- if (buf == NULL) {
- r = idn_nomemory;
- goto ret;
- }
-
- /*
- * Decode base32 and decompress.
- */
- r = race_decode_decompress(from, buf, buflen);
- if (r != idn_success)
- goto ret;
-
- /*
- * Now 'buf' points the decompressed string, which must contain
- * UTF-16 characters.
- */
-
- /*
- * Convert to UCS4.
- */
- r = idn_ucs4_utf16toucs4(buf, to, tolen);
- if (r != idn_success)
- goto ret;
-
-ret:
- free(buf);
- if (r == idn_success) {
- TRACE(("idn__race_decode(): succcess (to=\"%s\")\n",
- idn__debug_ucs4xstring(to, 50)));
- } else {
- TRACE(("idn__race_decode(): %s\n", idn_result_tostring(r)));
- }
- return (r);
-}
-
-static idn_result_t
-race_decode_decompress(const char *from, unsigned short *buf, size_t buflen)
-{
- unsigned short *p = buf;
- unsigned int bitbuf = 0;
- int bitlen = 0;
- int i, j;
- size_t len;
-
- while (*from != '\0') {
- int c = *from++;
- int x;
-
- if ('a' <= c && c <= 'z')
- x = c - 'a';
- else if ('A' <= c && c <= 'Z')
- x = c - 'A';
- else if ('2' <= c && c <= '7')
- x = c - '2' + 26;
- else
- return (idn_invalid_encoding);
-
- bitbuf = (bitbuf << 5) + x;
- bitlen += 5;
- if (bitlen >= 8) {
- *p++ = (bitbuf >> (bitlen - 8)) & 0xff;
- bitlen -= 8;
- }
- }
- len = p - buf;
-
- /*
- * Now 'buf' holds the decoded string.
- */
-
- /*
- * Decompress.
- */
- if (buf[0] == RACE_2OCTET_MODE) {
- if ((len - 1) % 2 != 0)
- return (idn_invalid_encoding);
- for (i = 1, j = 0; i < len; i += 2, j++)
- buf[j] = (buf[i] << 8) + buf[i + 1];
- len = j;
- } else {
- unsigned short c = buf[0] << 8; /* higher octet */
-
- for (i = 1, j = 0; i < len; j++) {
- if (buf[i] == RACE_ESCAPE) {
- if (i + 1 >= len)
- return (idn_invalid_encoding);
- else if (buf[i + 1] == RACE_ESCAPE_2ND)
- buf[j] = c | 0xff;
- else
- buf[j] = buf[i + 1];
- i += 2;
-
- } else if (buf[i] == 0x99 && c == 0x00) {
- /*
- * The RACE specification says this is error.
- */
- return (idn_invalid_encoding);
-
- } else {
- buf[j] = c | buf[i++];
- }
- }
- len = j;
- }
- buf[len] = '\0';
-
- return (idn_success);
-}
-
-idn_result_t
-idn__race_encode(idn_converter_t ctx, void *privdata,
- const unsigned long *from, char *to, size_t tolen) {
- char *to_org = to;
- unsigned short *p, *buf = NULL;
- size_t prefixlen = strlen(IDN_RACE_PREFIX);
- size_t buflen;
- size_t fromlen;
- idn_result_t r;
- int compress_mode;
-
- assert(ctx != NULL);
-
- TRACE(("idn__race_encode(from=\"%s\", tolen=%d)\n",
- idn__debug_ucs4xstring(from, 50), (int)tolen));
-
- if (*from == '\0') {
- r = idn_ucs4_ucs4toutf8(from, to, tolen);
- goto ret;
- } else if (idn__util_ucs4haveaceprefix(from, IDN_RACE_PREFIX)) {
- r = idn_prohibited;
- goto ret;
- }
-
- if (tolen < prefixlen) {
- r = idn_buffer_overflow;
- goto ret;
- }
- memcpy(to, IDN_RACE_PREFIX, prefixlen);
- to += prefixlen;
- tolen -= prefixlen;
-
- fromlen = idn_ucs4_strlen(from);
- buflen = fromlen * 2 + 2;
-
- /*
- * Convert to UTF-16.
- * Preserve space for a character at the top of the buffer.
- */
- for (;;) {
- unsigned short *new_buf;
-
- new_buf = realloc(buf, sizeof(*buf) * buflen);
- if (new_buf == NULL) {
- r = idn_nomemory;
- goto ret;
- }
- buf = new_buf;
-
- r = idn_ucs4_ucs4toutf16(from, buf + 1, buflen - 1);
- if (r == idn_success)
- break;
- else if (r != idn_buffer_overflow)
- goto ret;
-
- buflen = fromlen * 2 + 2;
- }
- p = buf + 1;
-
- /*
- * Now 'p' contains UTF-16 encoded string.
- */
-
- /*
- * Check U+0099.
- * RACE doesn't permit U+0099 in an input string.
- */
- for (p = buf + 1; *p != '\0'; p++) {
- if (*p == 0x0099) {
- r = idn_invalid_encoding;
- goto ret;
- }
- }
-
- /*
- * Compress, encode in base-32 and output.
- */
- compress_mode = get_compress_mode(buf + 1);
- r = race_compress_encode(buf, compress_mode, to, tolen);
-
-ret:
- free(buf);
- if (r == idn_success) {
- TRACE(("idn__race_encode(): succcess (to=\"%s\")\n",
- idn__debug_xstring(to_org, 50)));
- } else {
- TRACE(("idn__race_encode(): %s\n", idn_result_tostring(r)));
- }
- return (r);
-}
-
-static idn_result_t
-race_compress_encode(const unsigned short *p, int compress_mode,
- char *to, size_t tolen)
-{
- unsigned long bitbuf = *p++; /* bit stream buffer */
- int bitlen = 8; /* # of bits in 'bitbuf' */
-
- while (*p != '\0' || bitlen > 0) {
- unsigned int c = *p;
-
- if (c == '\0') {
- /* End of data. Flush. */
- bitbuf <<= (5 - bitlen);
- bitlen = 5;
- } else if (compress_mode == compress_none) {
- /* Push 16 bit data. */
- bitbuf = (bitbuf << 16) | c;
- bitlen += 16;
- p++;
- } else {/* compress_mode == compress_one/compress_two */
- /* Push 8 or 16 bit data. */
- if (compress_mode == compress_two &&
- (c & 0xff00) == 0) {
- /* Upper octet is zero (and not U1). */
- bitbuf = (bitbuf << 16) | 0xff00 | c;
- bitlen += 16;
- } else if ((c & 0xff) == 0xff) {
- /* Lower octet is 0xff. */
- bitbuf = (bitbuf << 16) |
- (RACE_ESCAPE << 8) | RACE_ESCAPE_2ND;
- bitlen += 16;
- } else {
- /* Just output lower octet. */
- bitbuf = (bitbuf << 8) | (c & 0xff);
- bitlen += 8;
- }
- p++;
- }
-
- /*
- * Output bits in 'bitbuf' in 5-bit unit.
- */
- while (bitlen >= 5) {
- int x;
-
- /* Get top 5 bits. */
- x = (bitbuf >> (bitlen - 5)) & 0x1f;
- bitlen -= 5;
-
- /* Encode. */
- if (x < 26)
- x += 'a';
- else
- x = (x - 26) + '2';
-
- if (tolen < 1)
- return (idn_buffer_overflow);
-
- *to++ = x;
- tolen--;
- }
- }
-
- if (tolen <= 0)
- return (idn_buffer_overflow);
-
- *to = '\0';
- return (idn_success);
-}
-
-static int
-get_compress_mode(unsigned short *p) {
- int zero = 0;
- unsigned int upper = 0;
- unsigned short *modepos = p - 1;
-
- while (*p != '\0') {
- unsigned int hi = *p++ & 0xff00;
-
- if (hi == 0) {
- zero++;
- } else if (hi == upper) {
- ;
- } else if (upper == 0) {
- upper = hi;
- } else {
- *modepos = RACE_2OCTET_MODE;
- return (compress_none);
- }
- }
- *modepos = upper >> 8;
- if (upper > 0 && zero > 0)
- return (compress_two);
- else
- return (compress_one);
-}
+++ /dev/null
-#ifndef lint
-static char *rcsid = "$Id: res.c,v 1.1 2003/06/04 00:26:10 marka Exp $";
-#endif
-
-/*
- * Copyright (c) 2000,2002 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-#include <config.h>
-
-#include <stddef.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <idn/result.h>
-#include <idn/assert.h>
-#include <idn/logmacro.h>
-#include <idn/converter.h>
-#include <idn/normalizer.h>
-#include <idn/checker.h>
-#include <idn/mapper.h>
-#include <idn/mapselector.h>
-#include <idn/delimitermap.h>
-#include <idn/resconf.h>
-#include <idn/res.h>
-#include <idn/util.h>
-#include <idn/debug.h>
-#include <idn/ucs4.h>
-
-#ifndef IDN_UTF8_ENCODING_NAME
-#define IDN_UTF8_ENCODING_NAME "UTF-8" /* by IANA */
-#endif
-
-#ifndef WITHOUT_ICONV
-#define ENCODE_MASK \
- (IDN_LOCALCONV | IDN_DELIMMAP | IDN_LOCALMAP | IDN_MAP | \
- IDN_NORMALIZE | IDN_PROHCHECK | IDN_UNASCHECK | IDN_BIDICHECK | \
- IDN_ASCCHECK | IDN_IDNCONV | IDN_LENCHECK | IDN_ENCODE_QUERY | \
- IDN_UNDOIFERR)
-#define DECODE_MASK \
- (IDN_DELIMMAP | IDN_MAP | IDN_NORMALIZE | IDN_PROHCHECK | \
- IDN_UNASCHECK | IDN_BIDICHECK | IDN_IDNCONV | IDN_ASCCHECK | \
- IDN_RTCHECK | IDN_LOCALCONV | IDN_DECODE_QUERY)
-#else
-#define ENCODE_MASK \
- (IDN_DELIMMAP | IDN_LOCALMAP | IDN_MAP | IDN_NORMALIZE | \
- IDN_PROHCHECK | IDN_UNASCHECK | IDN_BIDICHECK | IDN_ASCCHECK | \
- IDN_IDNCONV | IDN_LENCHECK | IDN_ENCODE_QUERY | IDN_UNDOIFERR)
-#define DECODE_MASK \
- (IDN_DELIMMAP | IDN_MAP | IDN_NORMALIZE | IDN_PROHCHECK | \
- IDN_UNASCHECK | IDN_BIDICHECK | IDN_IDNCONV | IDN_ASCCHECK | \
- IDN_RTCHECK | IDN_DECODE_QUERY)
-#endif
-
-#define MAX_LABEL_LENGTH 63
-
-/*
- * label to convert.
- */
-typedef struct labellist * labellist_t;
-struct labellist {
- unsigned long *name;
- size_t name_length;
- unsigned long *undo_name;
- labellist_t next;
- labellist_t previous;
- int dot_followed;
-};
-
-typedef idn_result_t (*res_insnproc_t)(idn_resconf_t ctx,
- labellist_t label);
-
-static void idn_res_initialize(void);
-static idn_result_t copy_verbatim(const char *from, char *to,
- size_t tolen);
-static idn_result_t labellist_create(const unsigned long *name,
- labellist_t *labelp);
-static void labellist_destroy(labellist_t label);
-static idn_result_t labellist_setname(labellist_t label,
- const unsigned long *name);
-static const unsigned long *
- labellist_getname(labellist_t label);
-static const unsigned long *
- labellist_gettldname(labellist_t label);
-static idn_result_t labellist_getnamelist(labellist_t label,
- unsigned long *name,
- size_t label_length);
-static void labellist_undo(labellist_t label);
-static labellist_t labellist_tail(labellist_t label);
-static labellist_t labellist_previous(labellist_t label);
-
-#ifndef WITHOUT_ICONV
-static idn_result_t label_localdecodecheck(idn_resconf_t ctx,
- labellist_t label);
-#endif
-static idn_result_t label_idnencode_ace(idn_resconf_t ctx,
- labellist_t label);
-static idn_result_t label_idndecode(idn_resconf_t ctx, labellist_t label);
-static idn_result_t label_localmap(idn_resconf_t ctx, labellist_t label);
-static idn_result_t label_map(idn_resconf_t ctx, labellist_t label);
-static idn_result_t label_normalize(idn_resconf_t ctx, labellist_t label);
-static idn_result_t label_prohcheck(idn_resconf_t ctx, labellist_t label);
-static idn_result_t label_unascheck(idn_resconf_t ctx, labellist_t label);
-static idn_result_t label_bidicheck(idn_resconf_t ctx, labellist_t label);
-static idn_result_t label_asccheck(idn_resconf_t ctx, labellist_t label);
-static idn_result_t label_lencheck_ace(idn_resconf_t ctx,
- labellist_t label);
-static idn_result_t label_lencheck_nonace(idn_resconf_t ctx,
- labellist_t label);
-static idn_result_t label_rtcheck(idn_resconf_t ctx, idn_action_t actions,
- labellist_t label,
- const unsigned long *original_name);
-
-static int initialized;
-static int enabled;
-
-void
-idn_res_enable(int on_off) {
- if (!initialized) {
- idn_res_initialize();
- }
-
- if (on_off == 0) {
- enabled = 0;
- } else {
- enabled = 1;
- }
-}
-
-static void
-idn_res_initialize(void) {
- if (!initialized) {
- char *value = getenv("IDN_DISABLE");
-
- if (value == NULL) {
- enabled = 1;
- } else {
- enabled = 0;
- }
- initialized = 1;
- }
-}
-
-idn_result_t
-idn_res_encodename(idn_resconf_t ctx, idn_action_t actions, const char *from,
- char *to, size_t tolen) {
- idn_converter_t local_converter = NULL;
- idn_converter_t idn_converter = NULL;
- idn_delimitermap_t delimiter_mapper;
- idn_result_t r;
- labellist_t labels = NULL, l;
- unsigned long *buffer = NULL;
- size_t buffer_length;
- int from_is_root;
- int idn_is_ace;
-
- assert(ctx != NULL && from != NULL && to != NULL);
-
- TRACE(("idn_res_encodename(actions=%s, from=\"%s\", tolen=%d)\n",
- idn__res_actionstostring(actions),
- idn__debug_xstring(from, 50), (int)tolen));
-
- if (actions & ~ENCODE_MASK) {
- WARNING(("idn_res_encodename: invalid actions 0x%x\n",
- actions));
- r = idn_invalid_action;
- goto ret;
- }
-
- if (!initialized)
- idn_res_initialize();
- if (!enabled || actions == 0) {
- r = copy_verbatim(from, to, tolen);
- goto ret;
- } else if (tolen <= 0) {
- r = idn_buffer_overflow;
- goto ret;
- }
-
- if (actions & IDN_ENCODE_QUERY) {
-#ifndef WITHOUT_ICONV
- actions |= (IDN_LOCALCONV | IDN_DELIMMAP | IDN_LOCALMAP | \
- IDN_MAP | IDN_NORMALIZE | IDN_PROHCHECK | \
- IDN_BIDICHECK | IDN_IDNCONV | IDN_LENCHECK);
-#else
- actions |= (IDN_DELIMMAP | IDN_LOCALMAP | IDN_MAP | \
- IDN_NORMALIZE | IDN_PROHCHECK | IDN_BIDICHECK | \
- IDN_IDNCONV | IDN_LENCHECK);
-#endif
- }
-
- /*
- * Convert `from' to UCS4.
- */
- local_converter = idn_resconf_getlocalconverter(ctx);
-#ifndef WITHOUT_ICONV
- if (local_converter == NULL) {
- r = idn_invalid_name;
- goto ret;
- }
-#endif
-
- idn_converter = idn_resconf_getidnconverter(ctx);
- if (idn_converter != NULL &&
- idn_converter_isasciicompatible(idn_converter))
- idn_is_ace = 1;
- else
- idn_is_ace = 0;
-
- buffer_length = tolen * 2;
-
- for (;;) {
- void *new_buffer;
-
- new_buffer = realloc(buffer, sizeof(*buffer) * buffer_length);
- if (new_buffer == NULL) {
- r = idn_nomemory;
- goto ret;
- }
- buffer = (unsigned long *)new_buffer;
-
- if (actions & IDN_LOCALCONV) {
- r = idn_converter_convtoucs4(local_converter, from,
- buffer, buffer_length);
- } else {
- r = idn_ucs4_utf8toucs4(from, buffer, buffer_length);
- }
- if (r == idn_success)
- break;
- else if (r != idn_buffer_overflow)
- goto ret;
-
- buffer_length *= 2;
- }
-
- if (*buffer == '\0') {
- if (tolen <= 0) {
- r = idn_buffer_overflow;
- goto ret;
- }
- *to = '\0';
- r = idn_success;
- goto ret;
- }
-
- /*
- * Delimiter map.
- */
- if (actions & IDN_DELIMMAP) {
- TRACE(("res delimitermap(name=\"%s\")\n",
- idn__debug_ucs4xstring(buffer, 50)));
-
- delimiter_mapper = idn_resconf_getdelimitermap(ctx);
- if (delimiter_mapper != NULL) {
- r = idn_delimitermap_map(delimiter_mapper, buffer,
- buffer, buffer_length);
- idn_delimitermap_destroy(delimiter_mapper);
- if (r != idn_success)
- goto ret;
- }
- TRACE(("res delimitermap(): success (name=\"%s\")\n",
- idn__debug_ucs4xstring(buffer, 50)));
- }
-
- from_is_root = (buffer[0] == '.' && buffer[1] == '\0');
-
- /*
- * Split the name into a list of labels.
- */
- r = labellist_create(buffer, &labels);
- if (r != idn_success)
- goto ret;
-
- /*
- * Perform conversions and tests.
- */
- for (l = labellist_tail(labels); l != NULL;
- l = labellist_previous(l)) {
-
- if (!idn__util_ucs4isasciirange(labellist_getname(l))) {
- if (actions & IDN_LOCALMAP) {
- r = label_localmap(ctx, l);
- if (r != idn_success)
- goto ret;
- }
- }
-
- if (!idn__util_ucs4isasciirange(labellist_getname(l))) {
- if (actions & IDN_MAP) {
- r = label_map(ctx, l);
- if (r != idn_success)
- goto ret;
- }
- if (actions & IDN_NORMALIZE) {
- r = label_normalize(ctx, l);
- if (r != idn_success)
- goto ret;
- }
- if (actions & IDN_PROHCHECK) {
- r = label_prohcheck(ctx, l);
- if (r == idn_prohibited &&
- (actions & IDN_UNDOIFERR)) {
- labellist_undo(l);
- continue;
- } else if (r != idn_success) {
- goto ret;
- }
- }
- if (actions & IDN_UNASCHECK) {
- r = label_unascheck(ctx, l);
- if (r == idn_prohibited &&
- (actions & IDN_UNDOIFERR)) {
- labellist_undo(l);
- continue;
- } else if (r != idn_success) {
- goto ret;
- }
- }
- if (actions & IDN_BIDICHECK) {
- r = label_bidicheck(ctx, l);
- if (r == idn_prohibited &&
- (actions & IDN_UNDOIFERR)) {
- labellist_undo(l);
- continue;
- } else if (r != idn_success) {
- goto ret;
- }
- }
- }
-
- if (actions & IDN_ASCCHECK) {
- r = label_asccheck(ctx, l);
- if (r == idn_prohibited && (actions & IDN_UNDOIFERR)) {
- labellist_undo(l);
- continue;
- } else if (r != idn_success) {
- goto ret;
- }
- }
-
- if (!idn__util_ucs4isasciirange(labellist_getname(l))) {
- if ((actions & IDN_IDNCONV) && idn_is_ace) {
- r = label_idnencode_ace(ctx, l);
- if (r != idn_success)
- goto ret;
- }
- }
-
- if (!from_is_root && (actions & IDN_LENCHECK)) {
- if (idn_is_ace)
- r = label_lencheck_ace(ctx, l);
- else
- r = label_lencheck_nonace(ctx, l);
- if (r == idn_invalid_length &&
- (actions & IDN_UNDOIFERR)) {
- labellist_undo(l);
- continue;
- } else if (r != idn_success) {
- goto ret;
- }
- }
- }
-
- /*
- * Concat a list of labels to a name.
- */
- for (;;) {
- void *new_buffer;
-
- new_buffer = realloc(buffer, sizeof(*buffer) * buffer_length);
- if (new_buffer == NULL) {
- r = idn_nomemory;
- goto ret;
- }
- buffer = (unsigned long *)new_buffer;
-
- r = labellist_getnamelist(labels, buffer, buffer_length);
- if (r == idn_success)
- break;
- else if (r != idn_buffer_overflow)
- goto ret;
-
- buffer_length *= 2;
- }
-
- if ((actions & IDN_IDNCONV) && idn_converter != NULL && !idn_is_ace) {
- r = idn_converter_convfromucs4(idn_converter, buffer, to,
- tolen);
- } else {
- r = idn_ucs4_ucs4toutf8(buffer, to, tolen);
- }
-
-ret:
- if (r == idn_success) {
- TRACE(("idn_res_encodename(): success (to=\"%s\")\n",
- idn__debug_xstring(to, 50)));
- } else {
- TRACE(("idn_res_encodename(): %s\n", idn_result_tostring(r)));
- }
- free(buffer);
- if (local_converter != NULL)
- idn_converter_destroy(local_converter);
- if (idn_converter != NULL)
- idn_converter_destroy(idn_converter);
- if (labels != NULL)
- labellist_destroy(labels);
- return (r);
-}
-
-idn_result_t
-idn_res_decodename(idn_resconf_t ctx, idn_action_t actions, const char *from,
- char *to, size_t tolen) {
- idn_converter_t local_converter = NULL;
- idn_converter_t idn_converter = NULL;
- idn_delimitermap_t delimiter_mapper;
- idn_result_t r;
- labellist_t labels = NULL, l;
- unsigned long *buffer = NULL;
- unsigned long *saved_name = NULL;
- size_t buffer_length;
- int idn_is_ace;
-
- assert(ctx != NULL && from != NULL && to != NULL);
-
- TRACE(("idn_res_decodename(actions=%s, from=\"%s\", tolen=%d)\n",
- idn__res_actionstostring(actions),
- idn__debug_xstring(from, 50), (int)tolen));
-
- if (actions & ~DECODE_MASK) {
- WARNING(("idn_res_decodename: invalid actions 0x%x\n",
- actions));
- r = idn_invalid_action;
- goto ret;
- }
-
- if (!initialized)
- idn_res_initialize();
- if (!enabled || actions == 0) {
- r = copy_verbatim(from, to, tolen);
- goto ret;
- } else if (tolen <= 0) {
- r = idn_buffer_overflow;
- goto ret;
- }
-
- if (actions & IDN_DECODE_QUERY) {
-#ifndef WITHOUT_ICONV
- actions |= (IDN_DELIMMAP | IDN_MAP | IDN_NORMALIZE | \
- IDN_PROHCHECK | IDN_BIDICHECK | IDN_IDNCONV | \
- IDN_RTCHECK | IDN_LOCALCONV);
-#else
- actions |= (IDN_DELIMMAP | IDN_MAP | IDN_NORMALIZE | \
- IDN_PROHCHECK | IDN_BIDICHECK | IDN_IDNCONV | \
- IDN_RTCHECK);
-#endif
- }
-
- /*
- * Convert `from' to UCS4.
- */
- local_converter = idn_resconf_getlocalconverter(ctx);
-#ifndef WITHOUT_ICONV
- if (local_converter == NULL) {
- r = idn_invalid_name;
- goto ret;
- }
-#endif
-
- idn_converter = idn_resconf_getidnconverter(ctx);
- if (idn_converter != NULL &&
- idn_converter_isasciicompatible(idn_converter))
- idn_is_ace = 1;
- else
- idn_is_ace = 0;
-
- buffer_length = tolen * 2;
-
- TRACE(("res idndecode(name=\"%s\")\n", idn__debug_xstring(from, 50)));
-
- for (;;) {
- void *new_buffer;
-
- new_buffer = realloc(buffer, sizeof(*buffer) * buffer_length);
- if (new_buffer == NULL) {
- r = idn_nomemory;
- goto ret;
- }
- buffer = (unsigned long *)new_buffer;
-
- if ((actions & IDN_IDNCONV) &&
- idn_converter != NULL && !idn_is_ace) {
- r = idn_converter_convtoucs4(idn_converter, from,
- buffer, buffer_length);
- } else {
- r = idn_ucs4_utf8toucs4(from, buffer, buffer_length);
- }
- if (r == idn_success)
- break;
- else if (r != idn_buffer_overflow)
- goto ret;
-
- buffer_length *= 2;
- }
-
- if (*buffer == '\0') {
- if (tolen <= 0) {
- r = idn_buffer_overflow;
- goto ret;
- }
- *to = '\0';
- r = idn_success;
- goto ret;
- }
-
- /*
- * Delimiter map.
- */
- if (actions & IDN_DELIMMAP) {
- TRACE(("res delimitermap(name=\"%s\")\n",
- idn__debug_ucs4xstring(buffer, 50)));
-
- delimiter_mapper = idn_resconf_getdelimitermap(ctx);
- if (delimiter_mapper != NULL) {
- r = idn_delimitermap_map(delimiter_mapper, buffer,
- buffer, buffer_length);
- idn_delimitermap_destroy(delimiter_mapper);
- if (r != idn_success)
- goto ret;
- }
- TRACE(("res delimitermap(): success (name=\"%s\")\n",
- idn__debug_ucs4xstring(buffer, 50)));
- }
-
- /*
- * Split the name into a list of labels.
- */
- r = labellist_create(buffer, &labels);
- if (r != idn_success)
- goto ret;
-
- /*
- * Perform conversions and tests.
- */
- for (l = labellist_tail(labels); l != NULL;
- l = labellist_previous(l)) {
-
- free(saved_name);
- saved_name = NULL;
-
- if (!idn__util_ucs4isasciirange(labellist_getname(l))) {
- if (actions & IDN_MAP) {
- r = label_map(ctx, l);
- if (r != idn_success)
- goto ret;
- }
- if (actions & IDN_NORMALIZE) {
- r = label_normalize(ctx, l);
- if (r != idn_success)
- goto ret;
- }
- if (actions & IDN_PROHCHECK) {
- r = label_prohcheck(ctx, l);
- if (r == idn_prohibited) {
- labellist_undo(l);
- continue;
- } else if (r != idn_success) {
- goto ret;
- }
- }
- if (actions & IDN_UNASCHECK) {
- r = label_unascheck(ctx, l);
- if (r == idn_prohibited) {
- labellist_undo(l);
- continue;
- } else if (r != idn_success) {
- goto ret;
- }
- }
- if (actions & IDN_BIDICHECK) {
- r = label_bidicheck(ctx, l);
- if (r == idn_prohibited) {
- labellist_undo(l);
- continue;
- } else if (r != idn_success) {
- goto ret;
- }
- }
- }
-
- if ((actions & IDN_IDNCONV) && idn_is_ace) {
- saved_name = idn_ucs4_strdup(labellist_getname(l));
- if (saved_name == NULL) {
- r = idn_nomemory;
- goto ret;
- }
- r = label_idndecode(ctx, l);
- if (r == idn_invalid_encoding) {
- labellist_undo(l);
- continue;
- } else if (r != idn_success) {
- goto ret;
- }
- }
- if ((actions & IDN_RTCHECK) && saved_name != NULL) {
- r = label_rtcheck(ctx, actions, l, saved_name);
- if (r == idn_invalid_encoding) {
- labellist_undo(l);
- continue;
- } else if (r != idn_success) {
- goto ret;
- }
- }
-
-#ifndef WITHOUT_ICONV
- if (actions & IDN_LOCALCONV) {
- r = label_localdecodecheck(ctx, l);
- if (r != idn_success)
- goto ret;
- }
-#endif
- }
-
- /*
- * Concat a list of labels to a name.
- */
- for (;;) {
- void *new_buffer;
-
- new_buffer = realloc(buffer, sizeof(*buffer) * buffer_length);
- if (new_buffer == NULL) {
- r = idn_nomemory;
- goto ret;
- }
- buffer = (unsigned long *)new_buffer;
-
- r = labellist_getnamelist(labels, buffer, buffer_length);
- if (r == idn_success)
- break;
- else if (r != idn_buffer_overflow)
- goto ret;
-
- buffer_length *= 2;
- }
-
- if (actions & IDN_LOCALCONV) {
- r = idn_converter_convfromucs4(local_converter, buffer, to,
- tolen);
- } else {
- r = idn_ucs4_ucs4toutf8(buffer, to, tolen);
- }
-
-ret:
- if (r == idn_success) {
- TRACE(("idn_res_decodename(): success (to=\"%s\")\n",
- idn__debug_xstring(to, 50)));
- } else {
- TRACE(("idn_res_decodename(): %s\n", idn_result_tostring(r)));
- }
- free(saved_name);
- free(buffer);
- if (local_converter != NULL)
- idn_converter_destroy(local_converter);
- if (idn_converter != NULL)
- idn_converter_destroy(idn_converter);
- if (labels != NULL)
- labellist_destroy(labels);
- return (r);
-}
-
-idn_result_t
-idn_res_decodename2(idn_resconf_t ctx, idn_action_t actions, const char *from,
- char *to, size_t tolen, const char *auxencoding) {
-#ifdef WITHOUT_ICONV
- return idn_failure;
-
-#else /* WITHOUT_ICONV */
- idn_result_t r;
- idn_converter_t aux_converter = NULL;
- unsigned long *buffer_ucs4 = NULL;
- char *buffer_utf8 = NULL;
- size_t buffer_length;
-
- assert(ctx != NULL && from != NULL && to != NULL);
-
- TRACE(("idn_res_decodename2(actions=%s, from=\"%s\", tolen=%d, "
- "auxencoding=\"%s\")\n",
- idn__res_actionstostring(actions),
- idn__debug_xstring(from, 50), (int)tolen,
- (auxencoding != NULL) ? auxencoding : "<null>"));
-
- if (!initialized)
- idn_res_initialize();
- if (!enabled || actions == 0) {
- r = copy_verbatim(from, to, tolen);
- goto ret;
- } else if (tolen <= 0) {
- r = idn_buffer_overflow;
- goto ret;
- }
-
- if (auxencoding == NULL ||
- strcmp(auxencoding, IDN_UTF8_ENCODING_NAME) == 0 ||
- strcmp(auxencoding, "UTF-8") == 0) {
- return idn_res_decodename(ctx, actions, from, to, tolen);
- }
-
- /*
- * Convert `from' to UCS4.
- */
- r = idn_resconf_setauxidnconvertername(ctx, auxencoding,
- IDN_CONVERTER_DELAYEDOPEN);
- if (r != idn_success) {
- goto ret;
- }
-
- aux_converter = idn_resconf_getauxidnconverter(ctx);
- if (aux_converter == NULL) {
- r = idn_failure;
- goto ret;
- }
-
- buffer_length = tolen * 2;
- for (;;) {
- void *new_buffer;
-
- new_buffer = realloc(buffer_ucs4,
- sizeof(*buffer_ucs4) * buffer_length);
- if (new_buffer == NULL) {
- r = idn_nomemory;
- goto ret;
- }
- buffer_ucs4 = (unsigned long *)new_buffer;
-
- r = idn_converter_convtoucs4(aux_converter, from,
- buffer_ucs4,
- buffer_length);
- if (r == idn_success)
- break;
- else if (r != idn_buffer_overflow)
- goto ret;
-
- buffer_length *= 2;
- }
-
- if (*buffer_ucs4 == '\0') {
- if (tolen <= 0) {
- r = idn_buffer_overflow;
- goto ret;
- }
- *to = '\0';
- r = idn_success;
- goto ret;
- }
-
- /*
- * Convert `buffer_ucs4' to UTF-8.
- */
- buffer_length = tolen * 2;
- for (;;) {
- void *new_buffer;
-
- new_buffer = realloc(buffer_utf8,
- sizeof(*buffer_utf8) * buffer_length);
- if (new_buffer == NULL) {
- r = idn_nomemory;
- goto ret;
- }
- buffer_utf8 = (char *)new_buffer;
- r = idn_ucs4_ucs4toutf8(buffer_ucs4, buffer_utf8,
- buffer_length);
-
- if (r == idn_success)
- break;
- else if (r != idn_buffer_overflow)
- goto ret;
-
- buffer_length *= 2;
- }
-
- if (*buffer_utf8 == '\0') {
- if (tolen <= 0) {
- r = idn_buffer_overflow;
- goto ret;
- }
- *to = '\0';
- r = idn_success;
- goto ret;
- }
-
- r = idn_res_decodename(ctx, actions, buffer_utf8, to, tolen);
-
-ret:
- if (r == idn_success) {
- TRACE(("idn_res_decodename2(): success (to=\"%s\")\n",
- idn__debug_xstring(to, 50)));
- } else {
- TRACE(("idn_res_decodename2(): %s\n", idn_result_tostring(r)));
- }
- free(buffer_ucs4);
- free(buffer_utf8);
- if (aux_converter != NULL)
- idn_converter_destroy(aux_converter);
-
- return (r);
-
-#endif /* WITHOUT_ICONV */
-}
-
-static idn_result_t
-copy_verbatim(const char *from, char *to, size_t tolen) {
- size_t fromlen = strlen(from);
-
- if (fromlen + 1 > tolen)
- return (idn_buffer_overflow);
- (void)memcpy(to, from, fromlen + 1);
- return (idn_success);
-}
-
-static idn_result_t
-labellist_create(const unsigned long *name, labellist_t *labelp) {
- size_t length, malloc_length;
- labellist_t head_label = NULL;
- labellist_t tail_label = NULL;
- labellist_t new_label = NULL;
- const unsigned long *endp = NULL;
- idn_result_t r;
-
- while (*name != '\0') {
- for (endp = name; *endp != '.' && *endp != '\0'; endp++)
- ; /* nothing to be done */
- length = (endp - name) + 1;
- malloc_length = length + 15; /* add 15 for margin */
-
- new_label = (labellist_t)
- malloc(sizeof(struct labellist));
- if (new_label == NULL) {
- r = idn_nomemory;
- goto ret;
- }
- if (head_label == NULL)
- head_label = new_label;
-
- new_label->name = NULL;
- new_label->undo_name = NULL;
- new_label->name_length = malloc_length;
- new_label->next = NULL;
- new_label->previous = NULL;
- new_label->dot_followed = (*endp == '.');
-
- new_label->name = (unsigned long *)
- malloc(sizeof(long) * malloc_length);
- if (new_label->name == NULL) {
- r = idn_nomemory;
- goto ret;
- }
- memcpy(new_label->name, name, sizeof(long) * length);
- *(new_label->name + length - 1) = '\0';
-
- new_label->undo_name = (unsigned long *)
- malloc(sizeof(long) * malloc_length);
- if (new_label->undo_name == NULL) {
- r = idn_nomemory;
- goto ret;
- }
- memcpy(new_label->undo_name, name, sizeof(long) * length);
- *(new_label->undo_name + length - 1) = '\0';
-
- if (tail_label != NULL) {
- tail_label->next = new_label;
- new_label->previous = tail_label;
- }
- tail_label = new_label;
-
- if (*endp == '.')
- name = endp + 1;
- else
- name = endp;
- }
-
- *labelp = head_label;
- r = idn_success;
-
-ret:
- if (r != idn_success) {
- if (new_label != NULL) {
- free(new_label->name);
- free(new_label->undo_name);
- free(new_label);
- }
- if (head_label != NULL)
- labellist_destroy(head_label);
- }
- return (r);
-}
-
-
-static void
-labellist_destroy(labellist_t label) {
- labellist_t l, l_next;
-
- for (l = label; l != NULL; l = l_next) {
- l_next = l->next;
- free(l->name);
- free(l->undo_name);
- free(l);
- }
-}
-
-static idn_result_t
-labellist_setname(labellist_t label, const unsigned long *name) {
- unsigned long *new_name;
- size_t length, new_length;
-
- length = idn_ucs4_strlen(name) + 1;
- new_length = length + 15; /* add 15 for margin */
-
- if (label->name_length < new_length) {
- new_name = (unsigned long *)
- realloc(label->name, sizeof(long) * new_length);
- if (new_name == NULL)
- return (idn_nomemory);
- label->name = new_name;
- label->name_length = new_length;
- }
- memcpy(label->name, name, sizeof(long) * length);
-
- return (idn_success);
-}
-
-static const unsigned long *
-labellist_getname(labellist_t label) {
- return (label->name);
-}
-
-static const unsigned long *
-labellist_gettldname(labellist_t label) {
- labellist_t l;
-
- if (label->previous == NULL && label->next == NULL &&
- !label->dot_followed)
- return (idn_mapselector_getnotld());
-
- for (l = label; l->next != NULL; l = l->next)
- ; /* nothing to be done */
-
- return (l->name);
-}
-
-static idn_result_t
-labellist_getnamelist(labellist_t label, unsigned long *name,
- size_t name_length) {
- static const unsigned long dot_string[] = {0x002e, 0x0000}; /* "." */
- size_t length;
- labellist_t l;
-
- for (l = label, length = 0; l != NULL; l = l->next)
- length += idn_ucs4_strlen(l->name) + 1; /* name + `.' */
- length++; /* for NUL */
-
- if (name_length < length)
- return (idn_buffer_overflow);
-
- *name = '\0';
- for (l = label; l != NULL; l = l->next) {
- idn_ucs4_strcat(name, l->name);
- name += idn_ucs4_strlen(name);
- if (l->dot_followed)
- idn_ucs4_strcat(name, dot_string);
- }
- return (idn_success);
-}
-
-static void
-labellist_undo(labellist_t label) {
- size_t length;
-
- length = idn_ucs4_strlen(label->undo_name) + 1;
- memcpy(label->name, label->undo_name, sizeof(long) * length);
-}
-
-static labellist_t
-labellist_tail(labellist_t label) {
- labellist_t l;
-
- if (label == NULL)
- return (NULL);
- for (l = label; l->next != NULL; l = l->next)
- ; /* nothing to be done */
- return (l);
-}
-
-static labellist_t
-labellist_previous(labellist_t label) {
- return (label->previous);
-}
-
-#ifndef WITHOUT_ICONV
-
-static idn_result_t
-label_localdecodecheck(idn_resconf_t ctx, labellist_t label) {
- idn_converter_t local_converter = NULL;
- const unsigned long *from;
- char *to = NULL;
- size_t to_length;
- idn_result_t r;
-
- from = labellist_getname(label);
- to_length = idn_ucs4_strlen(from) + 1 + 15; /* 15 for margin */
- TRACE(("res ucs4tolocal_check(label=\"%s\")\n",
- idn__debug_ucs4xstring(from, 50)));
-
- local_converter = idn_resconf_getlocalconverter(ctx);
- if (local_converter == NULL) {
- r = idn_success;
- goto ret;
- }
-
- for (;;) {
- char *new_buffer;
-
- new_buffer = (char *)realloc(to, to_length);
- if (new_buffer == NULL) {
- r = idn_nomemory;
- goto ret;
- }
- to = new_buffer;
- r = idn_converter_convfromucs4(local_converter, from, to,
- to_length);
- if (r == idn_success)
- break;
- else if (r == idn_nomapping) {
- r = label_idnencode_ace(ctx, label);
- if (r != idn_success)
- goto ret;
- break;
- } else if (r != idn_buffer_overflow) {
- goto ret;
- }
- to_length *= 2;
- }
-
- r = idn_success;
-ret:
- TRACE(("res ucs4tolocal_check(): %s\n", idn_result_tostring(r)));
- if (local_converter != NULL)
- idn_converter_destroy(local_converter);
- free(to);
- return (r);
-}
-
-#endif /* !WITHOUT_ICONV */
-
-static idn_result_t
-label_idndecode(idn_resconf_t ctx, labellist_t label) {
- idn_converter_t idn_converter = NULL;
- const unsigned long *from;
- char *ascii_from = NULL;
- unsigned long *to = NULL;
- size_t from_length, to_length;
- idn_result_t r;
-
- from = labellist_getname(label);
- from_length = idn_ucs4_strlen(from) + 1;
- TRACE(("res idntoucs4(label=\"%s\")\n",
- idn__debug_ucs4xstring(from, 50)));
-
- idn_converter = idn_resconf_getidnconverter(ctx);
- if (idn_converter == NULL) {
- r = idn_success;
- goto ret;
- }
-
- for (;;) {
- char *new_buffer;
-
- new_buffer = (char *) realloc(ascii_from, from_length);
- if (new_buffer == NULL) {
- r = idn_nomemory;
- goto ret;
- }
- ascii_from = new_buffer;
- r = idn_ucs4_ucs4toutf8(from, ascii_from, from_length);
- if (r == idn_success)
- break;
- else if (r != idn_buffer_overflow)
- goto ret;
- from_length *= 2;
- }
-
- to = NULL;
- to_length = from_length;
-
- for (;;) {
- unsigned long *new_buffer;
-
- new_buffer = (unsigned long *)
- realloc(to, sizeof(long) * to_length);
- if (new_buffer == NULL) {
- r = idn_nomemory;
- goto ret;
- }
- to = new_buffer;
- r = idn_converter_convtoucs4(idn_converter, ascii_from, to,
- to_length);
- if (r == idn_success)
- break;
- else if (r != idn_buffer_overflow)
- goto ret;
- to_length *= 2;
- }
-
- r = labellist_setname(label, to);
-ret:
- if (r == idn_success) {
- TRACE(("res idntoucs4(): success (label=\"%s\")\n",
- idn__debug_ucs4xstring(labellist_getname(label),
- 50)));
- } else {
- TRACE(("res idntoucs4(): %s\n", idn_result_tostring(r)));
- }
- if (idn_converter != NULL)
- idn_converter_destroy(idn_converter);
- free(to);
- free(ascii_from);
- return (r);
-}
-
-static idn_result_t
-label_idnencode_ace(idn_resconf_t ctx, labellist_t label) {
- idn_converter_t idn_converter = NULL;
- const unsigned long *from;
- char *ascii_to = NULL;
- unsigned long *to = NULL;
- size_t to_length;
- idn_result_t r;
-
- from = labellist_getname(label);
- TRACE(("res ucs4toidn(label=\"%s\")\n",
- idn__debug_ucs4xstring(from, 50)));
-
- idn_converter = idn_resconf_getidnconverter(ctx);
- if (idn_converter == NULL) {
- r = idn_success;
- goto ret;
- }
-
- ascii_to = NULL;
- to_length = idn_ucs4_strlen(from) * 4 + 16; /* add mergin */
-
- for (;;) {
- char *new_buffer;
-
- new_buffer = (char *) realloc(ascii_to, to_length);
- if (new_buffer == NULL) {
- r = idn_nomemory;
- goto ret;
- }
- ascii_to = new_buffer;
- r = idn_converter_convfromucs4(idn_converter, from, ascii_to,
- to_length);
- if (r == idn_success)
- break;
- else if (r != idn_buffer_overflow)
- goto ret;
- to_length *= 2;
- }
-
- for (;;) {
- unsigned long *new_buffer;
-
- new_buffer = (unsigned long *)
- realloc(to, sizeof(long) * to_length);
- if (new_buffer == NULL) {
- r = idn_nomemory;
- goto ret;
- }
- to = new_buffer;
- r = idn_ucs4_utf8toucs4(ascii_to, to, to_length);
- if (r == idn_success)
- break;
- else if (r != idn_buffer_overflow)
- goto ret;
- to_length *= 2;
- }
-
- if (r != idn_success)
- goto ret;
-
- r = labellist_setname(label, to);
-ret:
- if (r == idn_success) {
- TRACE(("res ucs4toidn(): success (label=\"%s\")\n",
- idn__debug_ucs4xstring(labellist_getname(label),
- 50)));
- } else {
- TRACE(("res ucs4toidn(): %s\n", idn_result_tostring(r)));
- }
- if (idn_converter != NULL)
- idn_converter_destroy(idn_converter);
- free(to);
- free(ascii_to);
- return (r);
-}
-
-static idn_result_t
-label_localmap(idn_resconf_t ctx, labellist_t label) {
- const unsigned long *from;
- const unsigned long *tld;
- unsigned long *to = NULL;
- size_t to_length;
- idn_mapselector_t local_mapper;
- idn_result_t r;
-
- from = labellist_getname(label);
- tld = labellist_gettldname(label);
- TRACE(("res localmap(label=\"%s\", tld=\"%s\")\n",
- idn__debug_ucs4xstring(from, 50),
- idn__debug_ucs4xstring(tld, 50)));
-
- local_mapper = idn_resconf_getlocalmapselector(ctx);
- if (local_mapper == NULL) {
- r = idn_success;
- goto ret;
- }
-
- if (tld == from)
- tld = idn_mapselector_getdefaulttld();
- to_length = idn_ucs4_strlen(from) + 1 + 15; /* 15 for margin */
-
- for (;;) {
- unsigned long *new_buffer;
-
- new_buffer = (unsigned long *)
- realloc(to, sizeof(long) * to_length);
- if (new_buffer == NULL) {
- r = idn_nomemory;
- goto ret;
- }
- to = new_buffer;
- r = idn_mapselector_map2(local_mapper, from, tld, to,
- to_length);
- if (r == idn_success)
- break;
- else if (r != idn_buffer_overflow)
- goto ret;
- to_length *= 2;
- }
-
- r = labellist_setname(label, to);
-ret:
- if (r == idn_success) {
- TRACE(("res localmap(): success (label=\"%s\")\n",
- idn__debug_ucs4xstring(labellist_getname(label),
- 50)));
- } else {
- TRACE(("res localmap(): %s\n", idn_result_tostring(r)));
- }
- if (local_mapper != NULL)
- idn_mapselector_destroy(local_mapper);
- free(to);
- return (r);
-}
-
-static idn_result_t
-label_map(idn_resconf_t ctx, labellist_t label) {
- const unsigned long *from;
- unsigned long *to = NULL;
- size_t to_length;
- idn_mapper_t mapper;
- idn_result_t r;
-
- from = labellist_getname(label);
- TRACE(("res map(label=\"%s\")\n", idn__debug_ucs4xstring(from, 50)));
-
- mapper = idn_resconf_getmapper(ctx);
- if (mapper == NULL) {
- r = idn_success;
- goto ret;
- }
- to_length = idn_ucs4_strlen(from) + 1 + 15; /* 15 for margin */
-
- for (;;) {
- unsigned long *new_buffer;
-
- new_buffer = (unsigned long *)
- realloc(to, sizeof(long) * to_length);
- if (new_buffer == NULL) {
- r = idn_nomemory;
- goto ret;
- }
- to = new_buffer;
- r = idn_mapper_map(mapper, from, to, to_length);
- if (r == idn_success)
- break;
- else if (r != idn_buffer_overflow)
- goto ret;
- to_length *= 2;
- }
-
- r = labellist_setname(label, to);
-ret:
- if (r == idn_success) {
- TRACE(("res map(): success (label=\"%s\")\n",
- idn__debug_ucs4xstring(labellist_getname(label),
- 50)));
- } else {
- TRACE(("res map(): %s\n", idn_result_tostring(r)));
- }
- if (mapper != NULL)
- idn_mapper_destroy(mapper);
- free(to);
- return (r);
-}
-
-static idn_result_t
-label_normalize(idn_resconf_t ctx, labellist_t label) {
- const unsigned long *from;
- unsigned long *to = NULL;
- size_t to_length;
- idn_normalizer_t normalizer;
- idn_result_t r;
-
- from = labellist_getname(label);
- TRACE(("res normalzie(label=\"%s\")\n",
- idn__debug_ucs4xstring(from, 50)));
-
- normalizer = idn_resconf_getnormalizer(ctx);
- if (normalizer == NULL) {
- r = idn_success;
- goto ret;
- }
- to_length = idn_ucs4_strlen(from) + 1 + 15; /* 15 for margin */
-
- for (;;) {
- unsigned long *new_buffer;
-
- new_buffer = (unsigned long *)
- realloc(to, sizeof(long) * to_length);
- if (new_buffer == NULL) {
- r = idn_nomemory;
- goto ret;
- }
- to = new_buffer;
- r = idn_normalizer_normalize(normalizer, from, to, to_length);
- if (r == idn_success)
- break;
- else if (r != idn_buffer_overflow)
- goto ret;
- to_length *= 2;
- }
-
- r = labellist_setname(label, to);
-ret:
- if (r == idn_success) {
- TRACE(("res normalize(): success (label=\"%s\")\n",
- idn__debug_ucs4xstring(labellist_getname(label),
- 50)));
- } else {
- TRACE(("res normalize(): %s\n", idn_result_tostring(r)));
- }
- if (normalizer != NULL)
- idn_normalizer_destroy(normalizer);
- free(to);
- return (r);
-}
-
-static idn_result_t
-label_prohcheck(idn_resconf_t ctx, labellist_t label) {
- const unsigned long *name, *found;
- idn_checker_t prohibit_checker;
- idn_result_t r;
-
- name = labellist_getname(label);
- TRACE(("res prohcheck(label=\"%s\")\n",
- idn__debug_ucs4xstring(name, 50)));
-
- prohibit_checker = idn_resconf_getprohibitchecker(ctx);
- if (prohibit_checker == NULL) {
- r = idn_success;
- goto ret;
- }
-
- r = idn_checker_lookup(prohibit_checker, name, &found);
- idn_checker_destroy(prohibit_checker);
- if (r == idn_success && found != NULL)
- r = idn_prohibited;
-
-ret:
- TRACE(("res prohcheck(): %s\n", idn_result_tostring(r)));
- return (r);
-}
-
-static idn_result_t
-label_unascheck(idn_resconf_t ctx, labellist_t label) {
- const unsigned long *name, *found;
- idn_checker_t unassigned_checker;
- idn_result_t r;
-
- name = labellist_getname(label);
- TRACE(("res unascheck(label=\"%s\")\n",
- idn__debug_ucs4xstring(name, 50)));
-
- unassigned_checker = idn_resconf_getunassignedchecker(ctx);
- if (unassigned_checker == NULL) {
- r = idn_success;
- goto ret;
- }
-
- r = idn_checker_lookup(unassigned_checker, name, &found);
- idn_checker_destroy(unassigned_checker);
- if (r == idn_success && found != NULL)
- r = idn_prohibited;
-
-ret:
- TRACE(("res unascheck(): %s\n", idn_result_tostring(r)));
- return (r);
-}
-
-static idn_result_t
-label_bidicheck(idn_resconf_t ctx, labellist_t label) {
- const unsigned long *name, *found;
- idn_checker_t bidi_checker;
- idn_result_t r;
-
- name = labellist_getname(label);
- TRACE(("res bidicheck(label=\"%s\")\n",
- idn__debug_ucs4xstring(name, 50)));
-
- bidi_checker = idn_resconf_getbidichecker(ctx);
- if (bidi_checker == NULL) {
- r = idn_success;
- goto ret;
- }
-
- r = idn_checker_lookup(bidi_checker, name, &found);
- idn_checker_destroy(bidi_checker);
- if (r == idn_success && found != NULL)
- r = idn_prohibited;
-
-ret:
- TRACE(("res bidicheck(): %s\n", idn_result_tostring(r)));
- return (r);
-}
-
-static idn_result_t
-label_asccheck(idn_resconf_t ctx, labellist_t label) {
- const unsigned long *name, *n;
- idn_result_t r;
-
- name = labellist_getname(label);
- TRACE(("res asccheck(label=\"%s\")\n",
- idn__debug_ucs4xstring(name, 50)));
-
- if (*name == '-') {
- r = idn_prohibited;
- goto ret;
- }
-
- for (n = name; *n != '\0'; n++) {
- if (*n <= '\177') {
- if ((*n < '0' || *n > '9') &&
- (*n < 'A' || *n > 'Z') &&
- (*n < 'a' || *n > 'z') &&
- *n != '-') {
- r = idn_prohibited;
- goto ret;
- }
- }
- }
-
- if (n > name && *(n - 1) == '-') {
- r = idn_prohibited;
- goto ret;
- }
-
- r = idn_success;
-ret:
- TRACE(("res asccheck(): %s\n", idn_result_tostring(r)));
- return (r);
-}
-
-static idn_result_t
-label_lencheck_ace(idn_resconf_t ctx, labellist_t label) {
- const unsigned long *name;
- size_t name_length;
- idn_result_t r;
-
- name = labellist_getname(label);
- name_length = idn_ucs4_strlen(name);
- TRACE(("res lencheck(label=\"%s\")\n",
- idn__debug_ucs4xstring(name, 50)));
-
- if (name_length == 0 || name_length > MAX_LABEL_LENGTH) {
- r = idn_invalid_length;
- goto ret;
- }
-
- r = idn_success;
-ret:
- TRACE(("res lencheck(): %s\n", idn_result_tostring(r)));
- return (r);
-}
-
-static idn_result_t
-label_lencheck_nonace(idn_resconf_t ctx, labellist_t label) {
- idn_converter_t idn_converter;
- const unsigned long *from;
- size_t to_length;
- idn_result_t r;
- char *buffer = NULL;
- size_t buffer_length;
-
- from = labellist_getname(label);
- TRACE(("res lencheck(label=\"%s\")\n",
- idn__debug_ucs4xstring(from, 50)));
-
- buffer_length = idn_ucs4_strlen(from) * 4 + 16; /* 16 for margin */
- idn_converter = idn_resconf_getidnconverter(ctx);
-
- for (;;) {
- void *new_buffer;
-
- new_buffer = realloc(buffer, sizeof(*buffer) * buffer_length);
- if (new_buffer == NULL) {
- r = idn_nomemory;
- goto ret;
- }
- buffer = (char *)new_buffer;
-
- if (idn_converter != NULL) {
- r = idn_converter_convfromucs4(idn_converter, from,
- buffer, buffer_length);
- } else {
- r = idn_ucs4_ucs4toutf8(from, buffer, buffer_length);
- }
- if (r == idn_success)
- break;
- else if (r != idn_buffer_overflow)
- goto ret;
-
- buffer_length *= 2;
- }
-
- to_length = strlen(buffer);
- if (to_length == 0 || to_length > MAX_LABEL_LENGTH) {
- r = idn_invalid_length;
- goto ret;
- }
-
- r = idn_success;
-ret:
- TRACE(("res lencheck(): %s\n", idn_result_tostring(r)));
- if (idn_converter != NULL)
- idn_converter_destroy(idn_converter);
- free(buffer);
- return (r);
-}
-
-static idn_result_t
-label_rtcheck(idn_resconf_t ctx, idn_action_t actions, labellist_t label,
- const unsigned long *original_name) {
- labellist_t rt_label = NULL;
- const unsigned long *rt_name;
- const unsigned long *cur_name;
- idn_result_t r;
-
- cur_name = labellist_getname(label);
- TRACE(("res rtcheck(label=\"%s\", org_label=\"%s\")\n",
- idn__debug_ucs4xstring(cur_name, 50),
- idn__debug_ucs4xstring(original_name, 50)));
-
- r = labellist_create(cur_name, &rt_label);
- if (r != idn_success)
- goto ret;
- if (rt_label == NULL) {
- if (*original_name == '\0')
- r = idn_success;
- else
- r = idn_invalid_encoding;
- goto ret;
- }
-
- if (!idn__util_ucs4isasciirange(labellist_getname(rt_label))) {
- r = label_map(ctx, rt_label);
- if (r != idn_success)
- goto ret;
- r = label_normalize(ctx, rt_label);
- if (r != idn_success)
- goto ret;
- r = label_prohcheck(ctx, rt_label);
- if (r != idn_success)
- goto ret;
- if (actions & IDN_UNASCHECK) {
- r = label_unascheck(ctx, rt_label);
- if (r != idn_success)
- goto ret;
- }
- r = label_bidicheck(ctx, rt_label);
- if (r != idn_success)
- goto ret;
- }
-
- if (actions & IDN_ASCCHECK) {
- r = label_asccheck(ctx, rt_label);
- if (r != idn_success)
- goto ret;
- }
- if (!idn__util_ucs4isasciirange(labellist_getname(rt_label))) {
- r = label_idnencode_ace(ctx, rt_label);
- if (r != idn_success)
- goto ret;
- }
- r = label_lencheck_ace(ctx, rt_label);
- if (r != idn_success)
- goto ret;
- rt_name = labellist_getname(rt_label);
-
- if (idn_ucs4_strcasecmp(rt_name, original_name) != 0) {
- TRACE(("res rtcheck(): round trip failed, org =\"%s\", rt=\"%s\"\n",
- idn__debug_ucs4xstring(original_name, 50),
- idn__debug_ucs4xstring(rt_name, 50)));
- r = idn_invalid_encoding;
- goto ret;
- }
-
- r = idn_success;
-ret:
- if (r != idn_nomemory && r != idn_success)
- r = idn_invalid_encoding;
- TRACE(("res rtcheck(): %s\n", idn_result_tostring(r)));
- if (rt_label != NULL)
- labellist_destroy(rt_label);
- return (r);
-}
-
-const char *
-idn__res_actionstostring(idn_action_t actions) {
- static char buf[100];
-
- buf[0] = '\0';
-
- if (actions == IDN_ENCODE_QUERY)
- strcpy(buf, "encode-query");
- else if (actions == IDN_DECODE_QUERY)
- strcpy(buf, "decode-query");
- else if (actions == IDN_ENCODE_APP)
- strcpy(buf, "encode-app");
- else if (actions == IDN_DECODE_APP)
- strcpy(buf, "decode-app");
- else if (actions == IDN_ENCODE_STORED)
- strcpy(buf, "encode-stored");
- else if (actions == IDN_DECODE_STORED)
- strcpy(buf, "decode-stored");
- else {
- if (actions & IDN_LOCALCONV)
- strcat(buf, "|localconv");
- if (actions & IDN_DELIMMAP)
- strcat(buf, "|delimmap");
- if (actions & IDN_LOCALMAP)
- strcat(buf, "|localmap");
-
- if (actions & IDN_MAP)
- strcat(buf, "|map");
- if (actions & IDN_NORMALIZE)
- strcat(buf, "|normalize");
- if (actions & IDN_PROHCHECK)
- strcat(buf, "|prohcheck");
- if (actions & IDN_UNASCHECK)
- strcat(buf, "|unascheck");
- if (actions & IDN_BIDICHECK)
- strcat(buf, "|bidicheck");
-
- if (actions & IDN_IDNCONV)
- strcat(buf, "|idnconv");
- if (actions & IDN_ASCCHECK)
- strcat(buf, "|asccheck");
- if (actions & IDN_LENCHECK)
- strcat(buf, "|lencheck");
- if (actions & IDN_RTCHECK)
- strcat(buf, "|rtcheck");
- }
-
- if (buf[0] == '|')
- return (buf + 1);
- else
- return (buf);
-}
+++ /dev/null
-#ifndef lint
-static char *rcsid = "$Id: resconf.c,v 1.1 2003/06/04 00:26:12 marka Exp $";
-#endif
-
-/*
- * 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, 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-#include <config.h>
-
-#include <stddef.h>
-#include <stdarg.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <ctype.h>
-#include <errno.h>
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-#ifdef HAVE_PWD_H
-#include <pwd.h>
-#endif
-
-#include <idn/result.h>
-#include <idn/assert.h>
-#include <idn/logmacro.h>
-#include <idn/converter.h>
-#include <idn/nameprep.h>
-#include <idn/normalizer.h>
-#include <idn/checker.h>
-#include <idn/mapper.h>
-#include <idn/mapselector.h>
-#include <idn/delimitermap.h>
-#include <idn/localencoding.h>
-#include <idn/resconf.h>
-#include <idn/debug.h>
-#include <idn/util.h>
-
-#ifdef WIN32
-#define MAX_PATH_SIZE 500 /* a good longer than MAX_PATH */
-#define IDNVAL_CONFFILE "ConfFile"
-#else /* WIN32 */
-
-#ifndef IDN_RESCONF_DIR
-#define IDN_RESCONF_DIR "/etc"
-#endif
-#define IDN_RESCONF_FILE IDN_RESCONF_DIR "/idn.conf"
-#define IDN_USER_RESCONF_FILE "/.idnrc"
-
-#endif /* WIN32 */
-
-#define MAX_CONF_LINE_LENGTH 255
-#define MAX_CONF_LINE_ARGS 63
-
-#define DEFAULT_CONF_NAMEPREP 0x0001
-#define DEFAULT_CONF_IDN_ENCODING 0x0010
-#define DEFAULT_CONF_ALL (DEFAULT_CONF_NAMEPREP | \
- DEFAULT_CONF_IDN_ENCODING)
-
-#define IDN_ENCODING_CURRENT "Punycode"
-
-#ifdef ENABLE_MDNKIT_COMPAT
-#define MDN_RESCONF_FILE IDN_RESCONF_DIR "/mdn.conf"
-#endif
-
-struct idn_resconf {
- int local_converter_is_static;
- idn_converter_t local_converter;
- idn_converter_t idn_converter;
- idn_converter_t aux_idn_converter;
- idn_normalizer_t normalizer;
- idn_checker_t prohibit_checker;
- idn_checker_t unassigned_checker;
- idn_checker_t bidi_checker;
- idn_mapper_t mapper;
- idn_mapselector_t local_mapper;
- idn_delimitermap_t delimiter_mapper;
- int reference_count;
-};
-
-static int initialized;
-
-#ifndef WIN32
-static const char * userhomedir(void);
-#endif
-static idn_result_t open_userdefaultfile(FILE **fpp);
-static idn_result_t open_defaultfile(FILE **fpp);
-static idn_result_t parse_conf(idn_resconf_t ctx, FILE *fp);
-static idn_result_t parse_idn_encoding(idn_resconf_t ctx, char *args,
- int lineno);
-static idn_result_t parse_local_map(idn_resconf_t ctx, char *args,
- int lineno);
-static idn_result_t parse_nameprep(idn_resconf_t ctx, char *args,
- int lineno);
-static int split_args(char *s, char **av, int max_ac);
-static void resetconf(idn_resconf_t ctx);
-#ifndef WITHOUT_ICONV
-static idn_result_t update_local_converter(idn_resconf_t ctx);
-#endif
-static idn_result_t setdefaults_body(idn_resconf_t ctx, int conf_mask);
-
-idn_result_t
-idn_resconf_initialize(void) {
- idn_result_t r;
-
- TRACE(("idn_resconf_initialize()\n"));
-
- if (initialized) {
- r = idn_success;
- goto ret;
- }
-
- /*
- * Initialize sub modules.
- */
- if ((r = idn_converter_initialize()) != idn_success)
- goto ret;
- if ((r = idn_normalizer_initialize()) != idn_success)
- goto ret;
- if ((r = idn_checker_initialize()) != idn_success)
- goto ret;
- if ((r = idn_mapselector_initialize()) != idn_success)
- goto ret;
- if ((r = idn_mapper_initialize()) != idn_success)
- goto ret;
-
- r = idn_success;
- initialized = 1;
-ret:
- TRACE(("idn_resconf_initialize(): %s\n", idn_result_tostring(r)));
- return (r);
-}
-
-idn_result_t
-idn_resconf_create(idn_resconf_t *ctxp) {
- idn_resconf_t ctx = NULL;
- idn_result_t r;
-
- assert(ctxp != NULL);
-
- TRACE(("idn_resconf_create()\n"));
-
- if (!initialized) {
- r = idn_failure;
- goto ret;
- }
- if ((ctx = malloc(sizeof(*ctx))) == NULL) {
- r = idn_nomemory;
- goto ret;
- }
-
- ctx->local_converter_is_static = 0;
- ctx->local_converter = NULL;
- ctx->idn_converter = NULL;
- ctx->aux_idn_converter = NULL;
- ctx->normalizer = NULL;
- ctx->prohibit_checker = NULL;
- ctx->unassigned_checker = NULL;
- ctx->bidi_checker = NULL;
- ctx->mapper = NULL;
- ctx->local_mapper = NULL;
- ctx->reference_count = 1;
-
- r = idn_delimitermap_create(&ctx->delimiter_mapper);
- if (r != idn_success)
- goto ret;
-
- *ctxp = ctx;
- r = idn_success;
-ret:
- TRACE(("idn_resconf_create(): %s\n", idn_result_tostring(r)));
- return (r);
-}
-
-char *
-idn_resconf_defaultfile() {
-#ifdef WIN32
- static char default_path[MAX_PATH_SIZE];
-
- if (idn__util_getregistrystring(idn__util_hkey_localmachine,
- IDNVAL_CONFFILE, default_path,
- sizeof(default_path))) {
- return (default_path);
- } else {
- return (NULL);
- }
-#else
- return (IDN_RESCONF_FILE);
-#endif
-}
-
-#ifndef WIN32
-static const char *
-userhomedir() {
- uid_t uid;
- struct passwd *pwd;
-
- uid = getuid();
- pwd = getpwuid(uid);
- if (pwd == NULL) {
- return (NULL);
- }
-
- return (pwd->pw_dir);
-}
-#endif
-
-static idn_result_t
-open_userdefaultfile(FILE **fpp) {
-#ifdef WIN32
- char user_path[MAX_PATH_SIZE];
-
- TRACE(("open_userdefaultfile()\n"));
-
- if (idn__util_getregistrystring(idn__util_hkey_currentuser,
- IDNVAL_CONFFILE, user_path,
- sizeof(user_path)) == 0) {
- return (idn_nofile);
- }
- *fpp = fopen(user_path, "r");
- if (*fpp == NULL) {
- return (idn_nofile);
- }
- return (idn_success);
-#else /* WIN32 */
- const char *homedir;
- char *file;
- int len;
-
- TRACE(("open_userdefaultfile()\n"));
-
- homedir = userhomedir();
- len = strlen(IDN_USER_RESCONF_FILE) + 1;
- if (homedir != NULL) {
- len += strlen(homedir);
- } else {
- return (idn_notfound);
- }
-
- file = (char *)malloc(sizeof(char) * len);
- if (file == NULL) {
- WARNING(("open_userdefaultfile(): malloc failed\n"));
- return (idn_nomemory);
- }
-
- (void)strcpy(file, homedir);
- strcat(file, IDN_USER_RESCONF_FILE);
-
- *fpp = fopen(file, "r");
- free(file);
- if (*fpp == NULL) {
- return (idn_nofile);
- }
-
- return (idn_success);
-#endif /* WIN32 */
-}
-
-static idn_result_t
-open_defaultfile(FILE **fpp) {
- idn_result_t r;
- const char *file;
-
- r = open_userdefaultfile(fpp);
- if (r == idn_nofile || r == idn_notfound) {
- TRACE(("open_defaultfile: "
- "cannot open user configuration file\n"));
- file = idn_resconf_defaultfile();
- *fpp = fopen(file, "r");
-#ifdef ENABLE_MDNKIT_COMPAT
- if (*fpp == NULL)
- *fpp = fopen(MDN_RESCONF_FILE, "r");
-#endif
- if (*fpp == NULL) {
- TRACE(("open_defaultfile: "
- "cannot open system configuration file\n"));
- return (idn_nofile);
- }
- } else if (r != idn_success) {
- return (r);
- }
-
- return (idn_success);
-}
-
-idn_result_t
-idn_resconf_loadfile(idn_resconf_t ctx, const char *file) {
- FILE *fp = NULL;
- idn_result_t r;
-
- assert(ctx != NULL);
-
- TRACE(("idn_resconf_loadfile(file=%s)\n",
- file == NULL ? "<null>" : file));
-
- resetconf(ctx);
- r = idn_delimitermap_create(&ctx->delimiter_mapper);
- if (r != idn_success) {
- goto ret;
- }
-
- if (file == NULL) {
- r = open_defaultfile(&fp);
- if (r == idn_nofile || r == idn_notfound) {
- r = setdefaults_body(ctx, 0);
- goto ret;
- } else if (r != idn_success) {
- goto ret;
- }
- } else {
- fp = fopen(file, "r");
- if (fp == NULL) {
- TRACE(("idn_resconf_loadfile: cannot open %-.40s\n",
- file));
- r = idn_nofile;
- goto ret;
- }
- }
-
- r = parse_conf(ctx, fp);
- fclose(fp);
-
-ret:
- TRACE(("idn_resconf_loadfile(): %s\n", idn_result_tostring(r)));
- return (r);
-}
-
-void
-idn_resconf_destroy(idn_resconf_t ctx) {
- assert(ctx != NULL);
-
- TRACE(("idn_resconf_destroy()\n"));
-
- ctx->reference_count--;
- if (ctx->reference_count <= 0) {
- resetconf(ctx);
- free(ctx);
- TRACE(("idn_resconf_destroy: the object is destroyed\n"));
- } else {
- TRACE(("idn_resconf_destroy(): "
- "update reference count (%d->%d)\n",
- ctx->reference_count + 1, ctx->reference_count));
- }
-}
-
-void
-idn_resconf_incrref(idn_resconf_t ctx) {
- assert(ctx != NULL);
-
- TRACE(("idn_resconf_incrref()\n"));
- TRACE(("idn_resconf_incrref: update reference count (%d->%d)\n",
- ctx->reference_count, ctx->reference_count + 1));
-
- ctx->reference_count++;
-}
-
-idn_converter_t
-idn_resconf_getalternateconverter(idn_resconf_t ctx) {
- assert(ctx != NULL);
-
- TRACE(("idn_resconf_getalternateconverter()\n"));
-
- return (idn_resconf_getidnconverter(ctx));
-}
-
-idn_delimitermap_t
-idn_resconf_getdelimitermap(idn_resconf_t ctx) {
- assert(ctx != NULL);
-
- TRACE(("idn_resconf_getdelimitermap()\n"));
-
- if (ctx->delimiter_mapper != NULL)
- idn_delimitermap_incrref(ctx->delimiter_mapper);
- return (ctx->delimiter_mapper);
-}
-
-idn_converter_t
-idn_resconf_getidnconverter(idn_resconf_t ctx) {
- assert(ctx != NULL);
-
- TRACE(("idn_resconf_getidnconverter()\n"));
-
- if (ctx->idn_converter != NULL)
- idn_converter_incrref(ctx->idn_converter);
- return (ctx->idn_converter);
-}
-
-idn_converter_t
-idn_resconf_getauxidnconverter(idn_resconf_t ctx) {
- assert(ctx != NULL);
-
- TRACE(("idn_resconf_getauxidnconverter()\n"));
-
- if (ctx->aux_idn_converter != NULL)
- idn_converter_incrref(ctx->aux_idn_converter);
- return (ctx->aux_idn_converter);
-}
-
-idn_converter_t
-idn_resconf_getlocalconverter(idn_resconf_t ctx) {
- assert(ctx != NULL);
-
- TRACE(("idn_resconf_getlocalconverter()\n"));
-
-#ifdef WITHOUT_ICONV
- return NULL;
-
-#else /* WITHOUT_ICONV */
- if (update_local_converter(ctx) != idn_success)
- return (NULL);
-
- idn_converter_incrref(ctx->local_converter);
- return (ctx->local_converter);
-
-#endif /* WITHOUT_ICONV */
-}
-
-idn_mapselector_t
-idn_resconf_getlocalmapselector(idn_resconf_t ctx) {
- assert(ctx != NULL);
-
- TRACE(("idn_resconf_getlocalmapselector()\n"));
-
- if (ctx->local_mapper != NULL)
- idn_mapselector_incrref(ctx->local_mapper);
- return (ctx->local_mapper);
-}
-
-idn_mapper_t
-idn_resconf_getmapper(idn_resconf_t ctx) {
- assert(ctx != NULL);
-
- TRACE(("idn_resconf_getmapper()\n"));
-
- if (ctx->mapper != NULL)
- idn_mapper_incrref(ctx->mapper);
- return (ctx->mapper);
-}
-
-idn_normalizer_t
-idn_resconf_getnormalizer(idn_resconf_t ctx) {
- assert(ctx != NULL);
-
- TRACE(("idn_resconf_getnormalizer()\n"));
-
- if (ctx->normalizer != NULL)
- idn_normalizer_incrref(ctx->normalizer);
- return (ctx->normalizer);
-}
-
-idn_checker_t
-idn_resconf_getprohibitchecker(idn_resconf_t ctx) {
- assert(ctx != NULL);
-
- TRACE(("idn_resconf_getprohibitchecker()\n"));
-
- if (ctx->prohibit_checker != NULL)
- idn_checker_incrref(ctx->prohibit_checker);
- return (ctx->prohibit_checker);
-}
-
-idn_checker_t
-idn_resconf_getunassignedchecker(idn_resconf_t ctx) {
- assert(ctx != NULL);
-
- TRACE(("idn_resconf_getunassignedchecker()\n"));
-
- if (ctx->unassigned_checker != NULL)
- idn_checker_incrref(ctx->unassigned_checker);
- return (ctx->unassigned_checker);
-}
-
-idn_checker_t
-idn_resconf_getbidichecker(idn_resconf_t ctx) {
- assert(ctx != NULL);
-
- TRACE(("idn_resconf_getbidichecker()\n"));
-
- if (ctx->bidi_checker != NULL)
- idn_checker_incrref(ctx->bidi_checker);
- return (ctx->bidi_checker);
-}
-
-void
-idn_resconf_setalternateconverter(idn_resconf_t ctx,
- idn_converter_t alternate_converter) {
- assert(ctx != NULL);
-
- TRACE(("idn_resconf_setalternateconverter()\n"));
-}
-
-void
-idn_resconf_setdelimitermap(idn_resconf_t ctx,
- idn_delimitermap_t delimiter_mapper) {
- assert(ctx != NULL);
-
- TRACE(("idn_resconf_setdelimitermap()\n"));
-
- if (ctx->delimiter_mapper != NULL)
- idn_delimitermap_destroy(ctx->delimiter_mapper);
- ctx->delimiter_mapper = delimiter_mapper;
- if (delimiter_mapper != NULL)
- idn_delimitermap_incrref(ctx->delimiter_mapper);
-}
-
-void
-idn_resconf_setidnconverter(idn_resconf_t ctx,
- idn_converter_t idn_converter) {
- assert(ctx != NULL);
-
- TRACE(("idn_resconf_setidnconverter()\n"));
-
- if (ctx->idn_converter != NULL)
- idn_converter_destroy(ctx->idn_converter);
- ctx->idn_converter = idn_converter;
- if (idn_converter != NULL)
- idn_converter_incrref(ctx->idn_converter);
-}
-
-void
-idn_resconf_setauxidnconverter(idn_resconf_t ctx,
- idn_converter_t aux_idn_converter) {
- assert(ctx != NULL);
-
- TRACE(("idn_resconf_setauxidnconverter()\n"));
-
- if (ctx->aux_idn_converter != NULL)
- idn_converter_destroy(ctx->aux_idn_converter);
- ctx->aux_idn_converter = aux_idn_converter;
- if (aux_idn_converter != NULL)
- idn_converter_incrref(ctx->aux_idn_converter);
-}
-
-void
-idn_resconf_setlocalconverter(idn_resconf_t ctx,
- idn_converter_t local_converter) {
-#ifndef WITHOUT_ICONV
- assert(ctx != NULL);
-
- TRACE(("idn_resconf_setlocalconverter()\n"));
-
- if (ctx->local_converter != NULL) {
- idn_converter_destroy(ctx->local_converter);
- ctx->local_converter = NULL;
- }
-
- if (local_converter == NULL)
- ctx->local_converter_is_static = 0;
- else {
- ctx->local_converter = local_converter;
- idn_converter_incrref(local_converter);
- ctx->local_converter_is_static = 1;
- }
-#endif /* WITHOUT_ICONV */
-}
-
-void
-idn_resconf_setlocalmapselector(idn_resconf_t ctx,
- idn_mapselector_t local_mapper) {
- assert(ctx != NULL);
-
- TRACE(("idn_resconf_setlocalmapselector()\n"));
-
- if (ctx->local_mapper != NULL)
- idn_mapselector_destroy(ctx->local_mapper);
- ctx->local_mapper = local_mapper;
- if (local_mapper != NULL)
- idn_mapselector_incrref(ctx->local_mapper);
-}
-
-void
-idn_resconf_setmapper(idn_resconf_t ctx, idn_mapper_t mapper) {
- assert(ctx != NULL);
-
- TRACE(("idn_resconf_setmapper()\n"));
-
- if (ctx->mapper != NULL)
- idn_mapper_destroy(ctx->mapper);
- ctx->mapper = mapper;
- if (mapper != NULL)
- idn_mapper_incrref(ctx->mapper);
-}
-
-void
-idn_resconf_setnormalizer(idn_resconf_t ctx, idn_normalizer_t normalizer) {
- assert(ctx != NULL);
-
- TRACE(("idn_resconf_setnormalizer()\n"));
-
- if (ctx->normalizer != NULL)
- idn_normalizer_destroy(ctx->normalizer);
- ctx->normalizer = normalizer;
- if (normalizer != NULL)
- idn_normalizer_incrref(ctx->normalizer);
-}
-
-void
-idn_resconf_setprohibitchecker(idn_resconf_t ctx,
- idn_checker_t prohibit_checker) {
- assert(ctx != NULL);
-
- TRACE(("idn_resconf_setprohibitchecker()\n"));
-
- if (ctx->prohibit_checker != NULL)
- idn_checker_destroy(ctx->prohibit_checker);
- ctx->prohibit_checker = prohibit_checker;
- if (prohibit_checker != NULL)
- idn_checker_incrref(ctx->prohibit_checker);
-}
-
-void
-idn_resconf_setunassignedchecker(idn_resconf_t ctx,
- idn_checker_t unassigned_checker) {
- assert(ctx != NULL);
-
- TRACE(("idn_resconf_setunassignedchecker()\n"));
-
- if (ctx->unassigned_checker != NULL)
- idn_checker_destroy(ctx->unassigned_checker);
- ctx->unassigned_checker = unassigned_checker;
- if (unassigned_checker != NULL)
- idn_checker_incrref(ctx->unassigned_checker);
-}
-
-void
-idn_resconf_setbidichecker(idn_resconf_t ctx,
- idn_checker_t bidi_checker) {
- assert(ctx != NULL);
-
- TRACE(("idn_resconf_setbidichecker()\n"));
-
- if (ctx->bidi_checker != NULL)
- idn_checker_destroy(ctx->bidi_checker);
- ctx->bidi_checker = bidi_checker;
- if (bidi_checker != NULL)
- idn_checker_incrref(ctx->bidi_checker);
-}
-
-idn_result_t
-idn_resconf_setnameprepversion(idn_resconf_t ctx, const char *version)
-{
- char prohibit_scheme_name[MAX_CONF_LINE_LENGTH + 1];
- char unassigned_scheme_name[MAX_CONF_LINE_LENGTH + 1];
- char bidi_scheme_name[MAX_CONF_LINE_LENGTH + 1];
- idn_mapper_t mapper = NULL;
- idn_normalizer_t normalizer = NULL;
- idn_checker_t prohibit_checker = NULL;
- idn_checker_t unassigned_checker = NULL;
- idn_checker_t bidi_checker = NULL;
- idn_result_t r;
-
- assert(ctx != NULL && version != NULL);
-
- TRACE(("idn_resconf_setnameprepversion()\n"));
-
- /*
- * Set canonical scheme names.
- */
- if (strlen(version) + strlen(IDN_CHECKER_PROHIBIT_PREFIX)
- > MAX_CONF_LINE_LENGTH) {
- r = idn_invalid_name;
- goto failure;
- }
- sprintf(prohibit_scheme_name, "%s%s",
- IDN_CHECKER_PROHIBIT_PREFIX, version);
-
- if (strlen(version) + strlen(IDN_CHECKER_UNASSIGNED_PREFIX)
- > MAX_CONF_LINE_LENGTH) {
- r = idn_invalid_name;
- goto failure;
- }
- sprintf(unassigned_scheme_name, "%s%s",
- IDN_CHECKER_UNASSIGNED_PREFIX, version);
-
- if (strlen(version) + strlen(IDN_CHECKER_BIDI_PREFIX)
- > MAX_CONF_LINE_LENGTH) {
- r = idn_invalid_name;
- goto failure;
- }
- sprintf(bidi_scheme_name, "%s%s",
- IDN_CHECKER_BIDI_PREFIX, version);
-
- /*
- * Create objects.
- */
- r = idn_mapper_create(&mapper);
- if (r != idn_success)
- goto failure;
- r = idn_normalizer_create(&normalizer);
- if (r != idn_success)
- goto failure;
- r = idn_checker_create(&prohibit_checker);
- if (r != idn_success)
- goto failure;
- r = idn_checker_create(&unassigned_checker);
- if (r != idn_success)
- goto failure;
- r = idn_checker_create(&bidi_checker);
- if (r != idn_success)
- goto failure;
-
- r = idn_mapper_add(mapper, version);
- if (r != idn_success)
- goto failure;
- r = idn_normalizer_add(normalizer, version);
- if (r != idn_success)
- goto failure;
- r = idn_checker_add(prohibit_checker, prohibit_scheme_name);
- if (r != idn_success)
- goto failure;
- r = idn_checker_add(unassigned_checker, unassigned_scheme_name);
- if (r != idn_success)
- goto failure;
- r = idn_checker_add(bidi_checker, bidi_scheme_name);
- if (r != idn_success)
- goto failure;
-
- /*
- * Set the objects.
- */
- idn_resconf_setmapper(ctx, mapper);
- idn_resconf_setnormalizer(ctx, normalizer);
- idn_resconf_setprohibitchecker(ctx, prohibit_checker);
- idn_resconf_setunassignedchecker(ctx, unassigned_checker);
- idn_resconf_setbidichecker(ctx, bidi_checker);
-
- /*
- * Destroy the objects.
- */
- idn_mapper_destroy(mapper);
- idn_normalizer_destroy(normalizer);
- idn_checker_destroy(prohibit_checker);
- idn_checker_destroy(unassigned_checker);
- idn_checker_destroy(bidi_checker);
-
- return (idn_success);
-
-failure:
- if (mapper != NULL)
- idn_mapper_destroy(mapper);
- if (normalizer != NULL)
- idn_normalizer_destroy(normalizer);
- if (prohibit_checker != NULL)
- idn_checker_destroy(prohibit_checker);
- if (unassigned_checker != NULL)
- idn_checker_destroy(unassigned_checker);
- if (bidi_checker != NULL)
- idn_checker_destroy(bidi_checker);
-
- return (r);
-}
-
-idn_result_t
-idn_resconf_setalternateconvertername(idn_resconf_t ctx, const char *name,
- int flags) {
- assert(ctx != NULL && name != NULL);
-
- TRACE(("idn_resconf_setalternateconvertername(name=%s, flags=%d)\n",
- name, flags));
-
- return (idn_success);
-}
-
-idn_result_t
-idn_resconf_setidnconvertername(idn_resconf_t ctx, const char *name,
- int flags) {
- idn_converter_t idn_converter;
- idn_result_t r;
-
- assert(ctx != NULL && name != NULL);
-
- TRACE(("idn_resconf_setidnconvertername(name=%s, flags=%d)\n",
- name, flags));
-
- r = idn_converter_create(name, &idn_converter, flags);
- if (r != idn_success)
- return (r);
-
- if (ctx->idn_converter != NULL)
- idn_converter_destroy(ctx->idn_converter);
- ctx->idn_converter = idn_converter;
-
- return (idn_success);
-}
-
-idn_result_t
-idn_resconf_setauxidnconvertername(idn_resconf_t ctx, const char *name,
- int flags) {
- idn_converter_t aux_idn_converter;
- const char *old_name;
- idn_result_t r;
-
- assert(ctx != NULL && name != NULL);
-
- TRACE(("idn_resconf_setauxidnconvertername(name=%s, flags=%d)\n",
- name, flags));
-
- if (ctx->aux_idn_converter != NULL) {
- old_name = idn_converter_localencoding(ctx->aux_idn_converter);
- if (old_name != NULL && strcmp(old_name, name) == 0)
- return (idn_success);
- }
-
- r = idn_converter_create(name, &aux_idn_converter, flags);
- if (r != idn_success)
- return (r);
-
- if (ctx->aux_idn_converter != NULL)
- idn_converter_destroy(ctx->aux_idn_converter);
- ctx->aux_idn_converter = aux_idn_converter;
-
- return (idn_success);
-}
-
-idn_result_t
-idn_resconf_setlocalconvertername(idn_resconf_t ctx, const char *name,
- int flags) {
-#ifdef WITHOUT_ICONV
- return idn_failure;
-
-#else /* WITHOUT_ICONV */
- idn_converter_t local_converter;
- idn_result_t r;
-
- assert(ctx != NULL);
-
- TRACE(("idn_resconf_setlocalconvertername(name=%s, flags=%d)\n",
- name == NULL ? "<null>" : name, flags));
-
- if (ctx->local_converter != NULL) {
- idn_converter_destroy(ctx->local_converter);
- ctx->local_converter = NULL;
- }
- ctx->local_converter_is_static = 0;
-
- if (name != NULL) {
- r = idn_converter_create(name, &local_converter, flags);
- if (r != idn_success)
- return (r);
- ctx->local_converter = local_converter;
- ctx->local_converter_is_static = 1;
- }
-
- return (idn_success);
-
-#endif /* WITHOUT_ICONV */
-}
-
-idn_result_t
-idn_resconf_addalldelimitermapucs(idn_resconf_t ctx, unsigned long *v,
- int nv) {
- idn_result_t r;
-
- TRACE(("idn_resconf_addalldelimitermapucs(nv=%d)\n", nv));
-
- if (ctx->delimiter_mapper == NULL) {
- r = idn_delimitermap_create(&(ctx->delimiter_mapper));
- if (r != idn_success)
- return (r);
- }
-
- r = idn_delimitermap_addall(ctx->delimiter_mapper, v, nv);
- return (r);
-}
-
-idn_result_t
-idn_resconf_addalllocalmapselectornames(idn_resconf_t ctx, const char *tld,
- const char **names, int nnames) {
- idn_result_t r;
-
- assert(ctx != NULL && names != NULL && tld != NULL);
-
- TRACE(("idn_resconf_addalllocalmapselectorname(tld=%s, nnames=%d)\n",
- tld, nnames));
-
- if (ctx->local_mapper == NULL) {
- r = idn_mapselector_create(&(ctx->local_mapper));
- if (r != idn_success)
- return (r);
- }
-
- r = idn_mapselector_addall(ctx->local_mapper, tld, names, nnames);
- return (r);
-}
-
-idn_result_t
-idn_resconf_addallmappernames(idn_resconf_t ctx, const char **names,
- int nnames) {
- idn_result_t r;
-
- assert(ctx != NULL && names != NULL);
-
- TRACE(("idn_resconf_addallmappername()\n"));
-
- if (ctx->mapper == NULL) {
- r = idn_mapper_create(&(ctx->mapper));
- if (r != idn_success)
- return (r);
- }
-
- r = idn_mapper_addall(ctx->mapper, names, nnames);
- return (r);
-}
-
-idn_result_t
-idn_resconf_addallnormalizernames(idn_resconf_t ctx, const char **names,
- int nnames) {
- idn_result_t r;
-
- assert(ctx != NULL && names != NULL);
-
- TRACE(("idn_resconf_addallnormalizername(nnames=%d)\n", nnames));
-
- if (ctx->normalizer == NULL) {
- r = idn_normalizer_create(&(ctx->normalizer));
- if (r != idn_success)
- return (r);
- }
-
- r = idn_normalizer_addall(ctx->normalizer, names, nnames);
- return (r);
-}
-
-idn_result_t
-idn_resconf_addallprohibitcheckernames(idn_resconf_t ctx, const char **names,
- int nnames) {
- char long_name[MAX_CONF_LINE_LENGTH + 1];
- idn_result_t r;
- int i;
-
- assert(ctx != NULL && names != NULL);
-
- TRACE(("idn_resconf_addallprohibitcheckername(nnames=%d)\n", nnames));
-
- if (ctx->prohibit_checker == NULL) {
- r = idn_checker_create(&(ctx->prohibit_checker));
- if (r != idn_success)
- return (r);
- }
-
- for (i = 0; i < nnames; i++, names++) {
- if (strlen(*names) + strlen(IDN_CHECKER_PROHIBIT_PREFIX)
- > MAX_CONF_LINE_LENGTH) {
- return (idn_invalid_name);
- }
- strcpy(long_name, IDN_CHECKER_PROHIBIT_PREFIX);
- strcat(long_name, *names);
-
- r = idn_checker_add(ctx->prohibit_checker, long_name);
- if (r != idn_success)
- return (r);
- }
-
- return (idn_success);
-}
-
-idn_result_t
-idn_resconf_addallunassignedcheckernames(idn_resconf_t ctx, const char **names,
- int nnames) {
- char long_name[MAX_CONF_LINE_LENGTH + 1];
- idn_result_t r;
- int i;
-
- assert(ctx != NULL && names != NULL);
-
- TRACE(("idn_resconf_addallunassignedcheckername(nnames=%d)\n",
- nnames));
-
- if (ctx->unassigned_checker == NULL) {
- r = idn_checker_create(&(ctx->unassigned_checker));
- if (r != idn_success)
- return (r);
- }
-
- for (i = 0; i < nnames; i++, names++) {
- if (strlen(*names) + strlen(IDN_CHECKER_UNASSIGNED_PREFIX)
- > MAX_CONF_LINE_LENGTH) {
- return (idn_invalid_name);
- }
- strcpy(long_name, IDN_CHECKER_UNASSIGNED_PREFIX);
- strcat(long_name, *names);
-
- r = idn_checker_add(ctx->unassigned_checker, long_name);
- if (r != idn_success)
- return (r);
- }
-
- return (idn_success);
-}
-
-idn_result_t
-idn_resconf_addallbidicheckernames(idn_resconf_t ctx, const char **names,
- int nnames) {
- char long_name[MAX_CONF_LINE_LENGTH + 1];
- idn_result_t r;
- int i;
-
- assert(ctx != NULL && names != NULL);
-
- TRACE(("idn_resconf_addallbidicheckername(nnames=%d)\n", nnames));
-
- if (ctx->bidi_checker == NULL) {
- r = idn_checker_create(&(ctx->bidi_checker));
- if (r != idn_success)
- return (r);
- }
-
- for (i = 0; i < nnames; i++, names++) {
- if (strlen(*names) + strlen(IDN_CHECKER_BIDI_PREFIX)
- > MAX_CONF_LINE_LENGTH) {
- return (idn_invalid_name);
- }
- strcpy(long_name, IDN_CHECKER_BIDI_PREFIX);
- strcat(long_name, *names);
-
- r = idn_checker_add(ctx->bidi_checker, long_name);
- if (r != idn_success)
- return (r);
- }
-
- return (idn_success);
-}
-
-static idn_result_t
-parse_conf(idn_resconf_t ctx, FILE *fp) {
- char line[MAX_CONF_LINE_LENGTH + 1];
- int lineno = 0;
- char *argv[3];
- int argc;
- idn_result_t r;
- int conf_mask = 0;
-
- TRACE(("parse_conf()\n"));
-
- /*
- * 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;
-
- lineno++;
- newline = strpbrk(line, "\r\n");
- if (newline != NULL)
- *newline = '\0';
- else if (fgetc(fp) != EOF) {
- ERROR(("libidnkit: too long line \"%-.30s\", "
- "line %d\n", line, lineno));
- return (idn_invalid_syntax);
- }
-
- argc = split_args(line, argv, 2);
- if (argc == -1) {
- ERROR(("libidnkit: syntax error, line %d\n", lineno));
- return (idn_invalid_syntax);
- } else if (argc == 0 || argv[0][0] == '#') {
- continue;
- } else if (argc == 1) {
- ERROR(("libidnkit: syntax error, line %d\n", lineno));
- return (idn_invalid_syntax);
- }
-
- if (strcmp(argv[0], "idn-encoding") == 0) {
- if (conf_mask & DEFAULT_CONF_IDN_ENCODING) {
- ERROR(("libidnkit: \"%s\" redefined, "
- "line %d\n", argv[0], lineno));
- r = idn_invalid_syntax;
- } else {
- conf_mask |= DEFAULT_CONF_IDN_ENCODING;
- r = parse_idn_encoding(ctx, argv[1], lineno);
- }
- } else if (strcmp(argv[0], "local-map") == 0) {
- r = parse_local_map(ctx, argv[1], lineno);
-
- } else if (strcmp(argv[0], "nameprep") == 0) {
- if (conf_mask & DEFAULT_CONF_NAMEPREP) {
- ERROR(("libidnkit: \"%s\" redefined, "
- "line %d\n", argv[0], lineno));
- r = idn_invalid_syntax;
- } else {
- conf_mask |= DEFAULT_CONF_NAMEPREP;
- r = parse_nameprep(ctx, argv[1], lineno);
- }
- } else if (strcmp(argv[0], "nameprep-map") == 0 ||
- strcmp(argv[0], "nameprep-normalize") == 0 ||
- strcmp(argv[0], "nameprep-prohibit") == 0 ||
- strcmp(argv[0], "nameprep-unassigned") == 0 ||
- strcmp(argv[0], "alias-file") == 0 ||
- strcmp(argv[0], "encoding-alias-file") == 0 ||
- strcmp(argv[0], "normalize") == 0 ||
- strcmp(argv[0], "server-encoding") == 0 ||
- strcmp(argv[0], "alternate-encoding") == 0 ||
- strcmp(argv[0], "delimiter-map") == 0) {
- WARNING(("libidnkit: obsolete command \"%s\", line %d "
- "(ignored)\n", argv[0], lineno));
- r = idn_success;
- } else {
- ERROR(("libidnkit: unknown command \"%-.30s\", "
- "line %d\n", argv[0], lineno));
- r = idn_invalid_syntax;
- }
- if (r != idn_success)
- return (r);
- }
-
- lineno++;
-
- if (conf_mask != DEFAULT_CONF_ALL) {
- return setdefaults_body(ctx, conf_mask);
- }
-
- return (idn_success);
-}
-
-static idn_result_t
-parse_idn_encoding(idn_resconf_t ctx, char *args, int lineno) {
- idn_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) {
- ERROR(("libidnkit: wrong # of args for idn-encoding, "
- "line %d\n", lineno));
- return (idn_invalid_syntax);
- }
-
- r = idn_converter_create(argv[0], &ctx->idn_converter,
- IDN_CONVERTER_DELAYEDOPEN |
- IDN_CONVERTER_RTCHECK);
- if (r != idn_success) {
- ERROR(("libidnkit: cannot create idn converter, %s, "
- "line %d\n", idn_result_tostring(r), lineno));
- }
-
- return (r);
-}
-
-static idn_result_t
-parse_local_map(idn_resconf_t ctx, char *args, int lineno) {
- idn_result_t r;
- char *argv[MAX_CONF_LINE_ARGS + 1];
- int argc;
- int i;
-
- argc = split_args(args, argv, MAX_CONF_LINE_ARGS + 1);
-
- if (argc < 2 || argc > MAX_CONF_LINE_ARGS) {
- ERROR(("libidnkit: wrong # of args for local-map, line %d\n",
- lineno));
- return (idn_invalid_syntax);
- }
-
- if (ctx->local_mapper == NULL) {
- r = idn_mapselector_create(&ctx->local_mapper);
- if (r != idn_success) {
- ERROR(("libidnkit: cannot create local mapper, %s, "
- "line %d\n", idn_result_tostring(r), lineno));
- return (r);
- }
- }
-
- for (i = 1; i < argc; i++) {
- r = idn_mapselector_add(ctx->local_mapper, argv[0], argv[i]);
- if (r == idn_invalid_name) {
- ERROR(("libidnkit: map scheme unavailable \"%-.30s\""
- " or invalid TLD \"%-.30s\", line %d\n",
- argv[i], argv[0], lineno));
- return (r);
- } else if (r != idn_success) {
- return (r);
- }
- }
-
- return (idn_success);
-}
-
-static idn_result_t
-parse_nameprep(idn_resconf_t ctx, char *args, int lineno) {
- idn_result_t r;
- char *argv[MAX_CONF_LINE_ARGS + 1];
- char scheme_name[MAX_CONF_LINE_LENGTH + 1];
- int argc;
-
- argc = split_args(args, argv, MAX_CONF_LINE_ARGS + 1);
-
- if (argc != 1) {
- ERROR(("libidnkit: wrong # of args for nameprep, line %d\n",
- lineno));
- return (idn_invalid_syntax);
- }
-
- /*
- * Set mapper.
- */
- r = idn_mapper_create(&ctx->mapper);
- if (r != idn_success) {
- ERROR(("libidnkit: cannot create mapper, %s, line %d\n",
- idn_result_tostring(r), lineno));
- return (r);
- }
-
- r = idn_mapper_add(ctx->mapper, argv[0]);
- if (r == idn_invalid_name) {
- ERROR(("libidnkit: map scheme unavailable \"%-.30s\", "
- "line %d\n", argv[0], lineno));
- return (r);
- } else if (r != idn_success) {
- return (r);
- }
-
- /*
- * Set normalizer.
- */
- r = idn_normalizer_create(&ctx->normalizer);
- if (r != idn_success) {
- ERROR(("libidnkit: cannot create normalizer, %s, line %d\n",
- idn_result_tostring(r), lineno));
- return (r);
- }
-
- r = idn_normalizer_add(ctx->normalizer, argv[0]);
- if (r == idn_invalid_name) {
- ERROR(("libidnkit: unknown normalization scheme \"%-.30s\", "
- "line %d\n", argv[0], lineno));
- return (r);
- } else if (r != idn_success) {
- return (r);
- }
-
- /*
- * Set prohibit checker.
- */
- r = idn_checker_create(&ctx->prohibit_checker);
- if (r != idn_success) {
- ERROR(("libidnkit: cannot create prohibit checker, %s, "
- "line %d\n", idn_result_tostring(r), lineno));
- return (r);
- }
-
- sprintf(scheme_name, "%s%s", IDN_CHECKER_PROHIBIT_PREFIX, argv[0]);
- r = idn_checker_add(ctx->prohibit_checker, scheme_name);
- if (r == idn_invalid_name) {
- ERROR(("libidnkit: unknown prohibit scheme \"%-.30s\", "
- "line %d\n", argv[0], lineno));
- return (r);
- } else if (r != idn_success) {
- return (r);
- }
-
- /*
- * Set unassigned checker.
- */
- r = idn_checker_create(&ctx->unassigned_checker);
- if (r != idn_success) {
- ERROR(("libidnkit: cannot create unassigned checker, %s, "
- "line %d\n", idn_result_tostring(r), lineno));
- return (r);
- }
-
- sprintf(scheme_name, "%s%s", IDN_CHECKER_UNASSIGNED_PREFIX, argv[0]);
- r = idn_checker_add(ctx->unassigned_checker, scheme_name);
- if (r == idn_invalid_name) {
- ERROR(("libidnkit: unknown unassigned scheme \"%-.30s\", "
- "line %d\n", argv[0], lineno));
- return (r);
- } else if (r != idn_success) {
- return (r);
- }
-
- /*
- * Set bidi checker.
- */
- r = idn_checker_create(&ctx->bidi_checker);
- if (r != idn_success) {
- ERROR(("libidnkit: cannot create bidi checker, %s, line %d\n",
- idn_result_tostring(r), lineno));
- return (r);
- }
-
- sprintf(scheme_name, "%s%s", IDN_CHECKER_BIDI_PREFIX, argv[0]);
- r = idn_checker_add(ctx->bidi_checker, scheme_name);
- if (r == idn_invalid_name) {
- ERROR(("libidnkit: unknown bidi scheme \"%-.30s\", "
- "line %d\n", argv[0], lineno));
- return (r);
- } else if (r != idn_success) {
- return (r);
- }
-
- return (idn_success);
-}
-
-static int
-split_args(char *s, char **av, int max_ac) {
- int ac;
- int i;
-
- for (ac = 0; *s != '\0' && ac < max_ac; ac++) {
- if (ac > 0)
- *s++ = '\0';
- while (isspace((unsigned char)*s))
- s++;
- if (*s == '\0')
- break;
- if (*s == '"' || *s == '\'') {
- int qc = *s++;
- av[ac] = s;
- while (*s != qc) {
- if (*s == '\0')
- return (-1);
- s++;
- }
- } else {
- av[ac] = s;
- while (*s != '\0' && !isspace((unsigned char)*s))
- s++;
- }
- }
-
- for (i = ac; i < max_ac; i++)
- av[i] = NULL;
-
- return (ac);
-}
-
-static void
-resetconf(idn_resconf_t ctx) {
-#ifndef WITHOUT_ICONV
- idn_resconf_setlocalconverter(ctx, NULL);
-#endif
- idn_resconf_setidnconverter(ctx, NULL);
- idn_resconf_setauxidnconverter(ctx, NULL);
- idn_resconf_setdelimitermap(ctx, NULL);
- idn_resconf_setlocalmapselector(ctx, NULL);
- idn_resconf_setmapper(ctx, NULL);
- idn_resconf_setnormalizer(ctx, NULL);
- idn_resconf_setprohibitchecker(ctx, NULL);
- idn_resconf_setunassignedchecker(ctx, NULL);
- idn_resconf_setbidichecker(ctx, NULL);
-}
-
-#ifndef WITHOUT_ICONV
-static idn_result_t
-update_local_converter(idn_resconf_t ctx) {
- idn_result_t r;
- const char *old_encoding;
- const char *new_encoding;
-
- /*
- * We don't update local converter, if the converter is set
- * by idn_resconf_setlocalconverter() or
- * idn_resconf_setlocalconvertername().
- */
- if (ctx->local_converter_is_static)
- return (idn_success);
-
- /*
- * Update the local converter if the local encoding is changed.
- */
- old_encoding = (ctx->local_converter != NULL) ?
- idn_converter_localencoding(ctx->local_converter) :
- NULL;
- new_encoding = idn_localencoding_name();
- if (new_encoding == NULL) {
- ERROR(("cannot determine local codeset name\n"));
- return (idn_notfound);
- }
-
- if (old_encoding != NULL &&
- new_encoding != NULL &&
- strcmp(old_encoding, new_encoding) == 0) {
- return (idn_success);
- }
-
- if (ctx->local_converter != NULL) {
- idn_converter_destroy(ctx->local_converter);
- ctx->local_converter = NULL;
- }
-
- r = idn_converter_create(new_encoding,
- &ctx->local_converter,
- IDN_CONVERTER_RTCHECK);
- return (r);
-}
-#endif
-
-idn_result_t
-idn_resconf_setdefaults(idn_resconf_t ctx)
-{
- idn_result_t r;
-
- assert(ctx != NULL);
-
- TRACE(("idn_resconf_setdefaults()\n"));
-
- resetconf(ctx);
- r = idn_delimitermap_create(&ctx->delimiter_mapper);
- if (r != idn_success) {
- ERROR(("libidnkit: cannot create delimiter mapper, %s\n",
- idn_result_tostring(r)));
- return (r);
- }
-
- return setdefaults_body(ctx, 0);
-}
-
-static idn_result_t
-setdefaults_body(idn_resconf_t ctx, int conf_mask) {
- idn_result_t r;
-
- TRACE(("setdefaults_body()\n"));
- assert(ctx != NULL);
-
- if (!(conf_mask & DEFAULT_CONF_NAMEPREP)) {
- TRACE(("set default nameprep\n"));
- r = idn_resconf_setnameprepversion(ctx, IDN_NAMEPREP_CURRENT);
- if (r != idn_success) {
- return (r);
- }
- }
- if (!(conf_mask & DEFAULT_CONF_IDN_ENCODING)) {
- TRACE(("set default idn encoding\n"));
- r = idn_converter_create(IDN_ENCODING_CURRENT,
- &ctx->idn_converter,
- IDN_CONVERTER_DELAYEDOPEN |
- IDN_CONVERTER_RTCHECK);
- if (r != idn_success) {
- ERROR(("libidnkit: cannot create idn converter, %s\n",
- idn_result_tostring(r)));
- return (r);
- }
- }
-
- return (idn_success);
-}
+++ /dev/null
-#ifndef lint
-static char *rcsid = "$Id: result.c,v 1.1 2003/06/04 00:26:12 marka Exp $";
-#endif
-
-/*
- * 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, 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-#include <config.h>
-#include <idn/result.h>
-
-static char *result_string[] = {
- "success",
- "not found",
- "invalid encoding found",
- "syntax error",
- "invalid name",
- "invalid message",
- "invalid action",
- "invalid code point",
- "label length reduced to 0 or exceeded 63 bytes",
- "buffer overflow",
- "no such entry",
- "out of memory",
- "no such file",
- "no mapping to output codeset",
- "context information required",
- "prohibited character found",
- "generic failure",
-};
-
-char *
-idn_result_tostring(idn_result_t result) {
- if (result < 0 || result > idn_failure)
- return ("unknown result code");
-
- return (result_string[result]);
-}
+++ /dev/null
-#ifndef lint
-static char *rcsid = "$Id: strhash.c,v 1.1 2003/06/04 00:26:13 marka Exp $";
-#endif
-
-/*
- * 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, 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-#include <config.h>
-
-#include <stddef.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <idn/assert.h>
-#include <idn/logmacro.h>
-#include <idn/result.h>
-#include <idn/strhash.h>
-
-/*
- * Initially, the number of hash buckets is INITIAL_HASH_SIZE.
- * As the more elements are put in the hash, the number of elements
- * per bucket will exceed THRESHOLD eventually. When it happens,
- * the number of buckets will be multiplied by FACTOR.
- */
-#define INITIAL_HASH_SIZE 67
-#define FACTOR 7
-#define THRESHOLD 5
-
-#define HASH_MULT 31
-
-typedef struct strhash_entry {
- struct strhash_entry *next;
- unsigned long hash_value;
- char *key;
- void *value;
-} strhash_entry_t;
-
-struct idn__strhash {
- int nbins;
- int nelements;
- strhash_entry_t **bins;
-};
-
-static unsigned long hash_value(const char *key);
-static strhash_entry_t *find_entry(strhash_entry_t *entry, const char *key,
- unsigned long hash);
-static strhash_entry_t *new_entry(const char *key, void *value);
-static idn_result_t expand_bins(idn__strhash_t hash, int new_size);
-
-idn_result_t
-idn__strhash_create(idn__strhash_t *hashp) {
- idn__strhash_t hash;
- idn_result_t r;
-
- TRACE(("idn__strhash_create()\n"));
-
- assert(hashp != NULL);
-
- *hashp = NULL;
-
- if ((hash = malloc(sizeof(struct idn__strhash))) == NULL) {
- WARNING(("idn__strhash_create: malloc failed (hash)\n"));
- return (idn_nomemory);
- }
- hash->nbins = 0;
- hash->nelements = 0;
- hash->bins = NULL;
- if ((r = expand_bins(hash, INITIAL_HASH_SIZE)) != idn_success) {
- WARNING(("idn__strhash_create: malloc failed (bins)\n"));
- free(hash);
- return (r);
- }
-
- *hashp = hash;
-
- return (idn_success);
-}
-
-void
-idn__strhash_destroy(idn__strhash_t hash, idn__strhash_freeproc_t proc) {
- int i;
-
- assert(hash != NULL && hash->bins != NULL);
-
- for (i = 0; i < hash->nbins; i++) {
- strhash_entry_t *bin = hash->bins[i];
- strhash_entry_t *next;
-
- while (bin != NULL) {
- next = bin->next;
- if (proc != NULL)
- (*proc)(bin->value);
- free(bin);
- bin = next;
- }
- }
- free(hash->bins);
- free(hash);
-}
-
-idn_result_t
-idn__strhash_put(idn__strhash_t hash, const char *key, void *value) {
- unsigned long h, h_index;
- strhash_entry_t *entry;
-
- assert(hash != NULL && key != NULL);
-
- h = hash_value(key);
- h_index = h % hash->nbins;
-
- if ((entry = find_entry(hash->bins[h_index], key, h)) != NULL) {
- /* Entry exists. Replace the value. */
- entry->value = value;
- } else {
- /* Create new entry. */
- if ((entry = new_entry(key, value)) == NULL) {
- return (idn_nomemory);
- }
- /* Insert it to the list. */
- entry->next = hash->bins[h_index];
- hash->bins[h_index] = entry;
- hash->nelements++;
-
- if (hash->nelements > hash->nbins * THRESHOLD) {
- idn_result_t r;
- r = expand_bins(hash, hash->nbins * FACTOR);
- if (r != idn_success) {
- TRACE(("idn__strhash_put: hash table "
- "expansion failed\n"));
- }
- }
- }
-
- return (idn_success);
-}
-
-idn_result_t
-idn__strhash_get(idn__strhash_t hash, const char *key, void **valuep) {
- unsigned long h;
- strhash_entry_t *entry;
-
- assert(hash != NULL && key != NULL && valuep != NULL);
-
- h = hash_value(key);
- entry = find_entry(hash->bins[h % hash->nbins], key, h);
- if (entry == NULL)
- return (idn_noentry);
-
- *valuep = entry->value;
- return (idn_success);
-}
-
-int
-idn__strhash_exists(idn__strhash_t hash, const char *key) {
- unsigned long h;
-
- assert(hash != NULL && key != NULL);
-
- h = hash_value(key);
- return (find_entry(hash->bins[h % hash->nbins], key, h) != NULL);
-}
-
-static unsigned long
-hash_value(const char *key) {
- unsigned long h = 0;
- unsigned char *p = (unsigned char *)key;
- int c;
-
- while ((c = *p++) != '\0') {
- h = h * HASH_MULT + c;
- }
- return (h);
-}
-
-static strhash_entry_t *
-find_entry(strhash_entry_t *entry, const char *key, unsigned long hash) {
- assert(key != NULL);
-
- while (entry != NULL) {
- if (entry->hash_value == hash && strcmp(key, entry->key) == 0)
- return (entry);
- entry = entry->next;
- }
- return (NULL);
-}
-
-static strhash_entry_t *
-new_entry(const char *key, void *value) {
- strhash_entry_t *entry;
- int len;
-
- assert(key != NULL);
-
- len = strlen(key) + 1;
- if ((entry = malloc(sizeof(strhash_entry_t) + len)) == NULL) {
- return (NULL);
- }
- entry->next = NULL;
- entry->hash_value = hash_value(key);
- entry->key = (char *)(entry + 1);
- (void)strcpy(entry->key, key);
- entry->value = value;
-
- return (entry);
-}
-
-static idn_result_t
-expand_bins(idn__strhash_t hash, int new_size) {
- strhash_entry_t **old_bins, **new_bins;
- int old_size;
- int old_index, new_index;
-
- new_bins = malloc(sizeof(strhash_entry_t *) * new_size);
- if (new_bins == NULL)
- return (idn_nomemory);
-
- memset(new_bins, 0, sizeof(strhash_entry_t *) * new_size);
-
- old_bins = hash->bins;
- old_size = hash->nbins;
- for (old_index = 0; old_index < old_size; old_index++) {
- strhash_entry_t *entries = old_bins[old_index];
-
- while (entries != NULL) {
- strhash_entry_t *e = entries;
-
- /* Remove the top element from the linked list. */
- entries = entries->next;
-
- /* ..and move to the new hash. */
- new_index = e->hash_value % new_size;
- e->next = new_bins[new_index];
- new_bins[new_index] = e;
- }
- }
-
- hash->nbins = new_size;
- hash->bins = new_bins;
-
- if (old_bins != NULL)
- free(old_bins);
-
- return (idn_success);
-}
+++ /dev/null
-# $Id: Makefile.in,v 1.2 2004/07/20 07:13:39 marka Exp $
-# Copyright (c) 2000, 2002 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) 2000-2002 Japan Network Information Center. All rights reserved."
-#
-# 4. The name of JPNIC may not 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.
-
-.SUFFIXES:
-.SUFFIXES: .tsy .c
-
-top_builddir = ../..
-
-srcdir = @srcdir@
-VPATH = @srcdir@
-
-CC = @CC@
-SHELL = @SHELL@
-LIBTOOL = @LIBTOOL@
-
-ICONVINC = @ICONVINC@
-ICONVLIB = @ICONVLIB@
-IDNLIB = ../libidntest.la
-IDNLITELIB = ../libidntestlite.la
-
-INCS = -I. -I$(srcdir) -I$(srcdir)/../../include -I../../include $(ICONVINC)
-DEFS =
-
-CFLAGS = $(INCS) $(DEFS) @CPPFLAGS@ @CFLAGS@
-LDFLAGS = @LDFLAGS@
-TSYFLAGS =
-
-PERL = @PERL@
-
-COMMONSRCS = testsuite.c testutil.c setenv.c
-COMMONOBJS = testsuite.lo testutil.lo setenv.lo
-BUILTSRCS = api.c api-init1.c api-init2.c api-init3.c \
- api-init4-1.c api-init4-2.c api-init4-3.c \
- api-init5-1.c api-init5-2.c api-init5-3.c \
- res.c resconf.c mapselector.c checker.c converter.c mapper.c \
- normalizer.c delimitermap.c ucs4.c nameprep.c \
- testconfig.h
-
-TESTS = api-test \
- api-init1-test \
- api-init2-test \
- api-init3-test \
- api-init4-1-test \
- api-init4-2-test \
- api-init4-3-test \
- api-init5-1-test \
- api-init5-2-test \
- api-init5-3-test \
- res-test \
- resconf-test \
- mapselector-test \
- converter-test \
- checker-test \
- mapper-test \
- normalizer-test \
- delimitermap-test \
- ucs4-test \
- nameprep-test
-
-LITETESTS = apilite-test \
- reslite-test \
- resconflite-test \
- converterlite-test
-
-.tsy.c:
- rm -f $@ $@.tmp
- $(PERL) $(srcdir)/testygen -o $@ $(TSYFLAGS) $<
- $(PERL) $(srcdir)/utffilter $@ > $@.tmp
- mv -f $@.tmp $@
-
-all:
-
-install:
-
-clean:
- rm -f *.o *.lo *.tmp core *.core *~
- rm -f $(TESTS) $(LITETESTS) $(BUILTSRCS)
- rm -f test.conf testalias.conf test.map
- rm -f iconvchk
- rm -fr .libs/
-
-distclean: clean
- rm -f Makefile
-
-@LITEONLY_TRUE@test check: test-lite
-@LITEONLY_FALSE@test check: test-nolite
-
-test-lite: $(LITETESTS)
- @for i in $(LITETESTS); do \
- echo "Run test program: $$i"; \
- ./$$i; \
- echo; \
- done
-
-test-nolite: $(TESTS) $(LITETESTS) iconvchk
- @./iconvchk
- @for i in $(TESTS) $(LITETESTS); do \
- echo "Run test program: $$i"; \
- ./$$i; \
- echo; \
- done
-
-api-test: api.lo $(IDNLIB) $(COMMONOBJS)
- $(LIBTOOL) --mode=link $(CC) $(LDFLAGS) -o $@ \
- api.lo $(COMMONOBJS) $(IDNLIB) $(ICONVLIB)
-api.lo: api.c testconfig.h
- $(LIBTOOL) --mode=compile $(CC) $(CFLAGS) -c api.c
-
-apilite-test: apilite.lo $(IDNLITELIB) $(COMMONOBJS)
- $(LIBTOOL) --mode=link $(CC) $(LDFLAGS) -o $@ \
- apilite.lo $(COMMONOBJS) $(IDNLITELIB)
-apilite.lo: api.c testconfig.h
- $(LIBTOOL) --mode=compile $(CC) $(CFLAGS) -DWITHOUT_ICONV -o $@ \
- -c api.c
-
-api-init1-test: api-init1.lo $(IDNLIB) $(COMMONOBJS)
- $(LIBTOOL) --mode=link $(CC) $(LDFLAGS) -o $@ \
- api-init1.lo $(COMMONOBJS) $(IDNLIB) $(ICONVLIB)
-api-init1.lo: api-init1.c testconfig.h
- $(LIBTOOL) --mode=compile $(CC) $(CFLAGS) -c api-init1.c
-
-api-init2-test: api-init2.lo $(IDNLIB) $(COMMONOBJS)
- $(LIBTOOL) --mode=link $(CC) $(LDFLAGS) -o $@ \
- api-init2.lo $(COMMONOBJS) $(IDNLIB) $(ICONVLIB)
-api-init2.lo: api-init2.c testconfig.h
- $(LIBTOOL) --mode=compile $(CC) $(CFLAGS) -c api-init2.c
-
-api-init3-test: api-init3.lo $(IDNLIB) $(COMMONOBJS)
- $(LIBTOOL) --mode=link $(CC) $(LDFLAGS) -o $@ \
- api-init3.lo $(COMMONOBJS) $(IDNLIB) $(ICONVLIB)
-api-init3.lo: api-init3.c testconfig.h
- $(LIBTOOL) --mode=compile $(CC) $(CFLAGS) -c api-init3.c
-
-api-init4-1-test: api-init4-1.lo $(IDNLIB) $(COMMONOBJS)
- $(LIBTOOL) --mode=link $(CC) $(LDFLAGS) -o $@ \
- api-init4-1.lo $(COMMONOBJS) $(IDNLIB) $(ICONVLIB)
-api-init4-1.lo: api-init4-1.c testconfig.h
- $(LIBTOOL) --mode=compile $(CC) $(CFLAGS) -c api-init4-1.c
-
-api-init4-2-test: api-init4-2.lo $(IDNLIB) $(COMMONOBJS)
- $(LIBTOOL) --mode=link $(CC) $(LDFLAGS) -o $@ \
- api-init4-2.lo $(COMMONOBJS) $(IDNLIB) $(ICONVLIB)
-api-init4-2.lo: api-init4-2.c testconfig.h
- $(LIBTOOL) --mode=compile $(CC) $(CFLAGS) -c api-init4-2.c
-
-api-init4-3-test: api-init4-3.lo $(IDNLIB) $(COMMONOBJS)
- $(LIBTOOL) --mode=link $(CC) $(LDFLAGS) -o $@ \
- api-init4-3.lo $(COMMONOBJS) $(IDNLIB) $(ICONVLIB)
-api-init4-3.lo: api-init4-3.c testconfig.h
- $(LIBTOOL) --mode=compile $(CC) $(CFLAGS) -c api-init4-3.c
-
-api-init5-1-test: api-init5-1.lo $(IDNLIB) $(COMMONOBJS)
- $(LIBTOOL) --mode=link $(CC) $(LDFLAGS) -o $@ \
- api-init5-1.lo $(COMMONOBJS) $(IDNLIB) $(ICONVLIB)
-api-init5-1.lo: api-init5-1.c testconfig.h
- $(LIBTOOL) --mode=compile $(CC) $(CFLAGS) -c api-init5-1.c
-
-api-init5-2-test: api-init5-2.lo $(IDNLIB) $(COMMONOBJS)
- $(LIBTOOL) --mode=link $(CC) $(LDFLAGS) -o $@ \
- api-init5-2.lo $(COMMONOBJS) $(IDNLIB) $(ICONVLIB)
-api-init5-2.lo: api-init5-2.c testconfig.h
- $(LIBTOOL) --mode=compile $(CC) $(CFLAGS) -c api-init5-2.c
-
-api-init5-3-test: api-init5-3.lo $(IDNLIB) $(COMMONOBJS)
- $(LIBTOOL) --mode=link $(CC) $(LDFLAGS) -o $@ \
- api-init5-3.lo $(COMMONOBJS) $(IDNLIB) $(ICONVLIB)
-api-init5-3.lo: api-init5-3.c testconfig.h
- $(LIBTOOL) --mode=compile $(CC) $(CFLAGS) -c api-init5-3.c
-
-res-test: res.lo $(IDNLIB) $(COMMONOBJS)
- $(LIBTOOL) --mode=link $(CC) $(LDFLAGS) -o $@ \
- res.lo $(COMMONOBJS) $(IDNLIB) $(ICONVLIB)
-res.lo: res.c testconfig.h
- $(LIBTOOL) --mode=compile $(CC) $(CFLAGS) -c res.c
-
-reslite-test: reslite.lo $(IDNLITELIB) $(COMMONOBJS)
- $(LIBTOOL) --mode=link $(CC) $(LDFLAGS) -o $@ \
- reslite.lo $(COMMONOBJS) $(IDNLITELIB)
-reslite.lo: res.c testconfig.h
- $(LIBTOOL) --mode=compile $(CC) $(CFLAGS) -DWITHOUT_ICONV -o $@ \
- -c res.c
-
-resconf-test: resconf.lo $(IDNLIB) $(COMMONOBJS)
- $(LIBTOOL) --mode=link $(CC) $(LDFLAGS) -o $@ \
- resconf.lo $(COMMONOBJS) $(IDNLIB) $(ICONVLIB)
-resconf.lo: resconf.c testconfig.h
- $(LIBTOOL) --mode=compile $(CC) $(CFLAGS) -c resconf.c
-
-resconflite-test: resconflite.lo $(IDNLITELIB) $(COMMONOBJS)
- $(LIBTOOL) --mode=link $(CC) $(LDFLAGS) -o $@ \
- resconflite.lo $(COMMONOBJS) $(IDNLITELIB)
-resconflite.lo: resconf.c testconfig.h
- $(LIBTOOL) --mode=compile $(CC) $(CFLAGS) -DWITHOUT_ICONV -o $@ \
- -c resconf.c
-
-mapselector-test: mapselector.lo $(IDNLIB) $(COMMONOBJS)
- $(LIBTOOL) --mode=link $(CC) $(LDFLAGS) -o $@ \
- mapselector.lo $(COMMONOBJS) $(IDNLIB) $(ICONVLIB)
-mapselector.lo: mapselector.c
- $(LIBTOOL) --mode=compile $(CC) $(CFLAGS) -c mapselector.c
-
-converter-test: converter.lo $(IDNLIB) $(COMMONOBJS)
- $(LIBTOOL) --mode=link $(CC) $(LDFLAGS) -o $@ \
- converter.lo $(COMMONOBJS) $(IDNLIB) $(ICONVLIB)
-converter.lo: converter.c
- $(LIBTOOL) --mode=compile $(CC) $(CFLAGS) -c converter.c
-
-converterlite-test: converterlite.lo $(IDNLITELIB) $(COMMONOBJS)
- $(LIBTOOL) --mode=link $(CC) $(LDFLAGS) -o $@ \
- converterlite.lo $(COMMONOBJS) $(IDNLITELIB)
-converterlite.lo: converter.c
- $(LIBTOOL) --mode=compile $(CC) $(CFLAGS) -DWITHOUT_ICONV -o $@ \
- -c converter.c
-
-checker-test: checker.lo $(IDNLIB) $(COMMONOBJS)
- $(LIBTOOL) --mode=link $(CC) $(LDFLAGS) -o $@ \
- checker.lo $(COMMONOBJS) $(IDNLIB) $(ICONVLIB)
-checker.lo: checker.c
- $(LIBTOOL) --mode=compile $(CC) $(CFLAGS) -c checker.c
-
-mapper-test: mapper.lo $(IDNLIB) $(COMMONOBJS)
- $(LIBTOOL) --mode=link $(CC) $(LDFLAGS) -o $@ \
- mapper.lo $(COMMONOBJS) $(IDNLIB) $(ICONVLIB)
-mapper.lo: mapper.c
- $(LIBTOOL) --mode=compile $(CC) $(CFLAGS) -c mapper.c
-
-normalizer-test: normalizer.lo $(IDNLIB) $(COMMONOBJS)
- $(LIBTOOL) --mode=link $(CC) $(LDFLAGS) -o $@ \
- normalizer.lo $(COMMONOBJS) $(IDNLIB) $(ICONVLIB)
-normalizer.lo: normalizer.c
- $(LIBTOOL) --mode=compile $(CC) $(CFLAGS) -c normalizer.c
-
-delimitermap-test: delimitermap.lo $(IDNLIB) $(COMMONOBJS)
- $(LIBTOOL) --mode=link $(CC) $(LDFLAGS) -o $@ \
- delimitermap.lo $(COMMONOBJS) $(IDNLIB) $(ICONVLIB)
-delimitermap.lo: delimitermap.c
- $(LIBTOOL) --mode=compile $(CC) $(CFLAGS) -c delimitermap.c
-
-ucs4-test: ucs4.lo $(IDNLIB) $(COMMONOBJS)
- $(LIBTOOL) --mode=link $(CC) $(LDFLAGS) -o $@ \
- ucs4.lo $(COMMONOBJS) $(IDNLIB) $(ICONVLIB)
-ucs4.lo: ucs4.c
- $(LIBTOOL) --mode=compile $(CC) $(CFLAGS) -c ucs4.c
-
-nameprep-test: nameprep.lo $(IDNLIB) $(COMMONOBJS)
- $(LIBTOOL) --mode=link $(CC) $(LDFLAGS) -o $@ \
- nameprep.lo $(COMMONOBJS) $(IDNLIB) $(ICONVLIB)
-nameprep.lo: nameprep.c
- $(LIBTOOL) --mode=compile $(CC) $(CFLAGS) -c nameprep.c
-
-testsuite.lo: testsuite.c testsuite.h
- $(LIBTOOL) --mode=compile $(CC) $(CFLAGS) -o $@ -c $(srcdir)/testsuite.c
-testutil.lo: testutil.c testutil.h
- $(LIBTOOL) --mode=compile $(CC) $(CFLAGS) -o $@ -c $(srcdir)/testutil.c
-setenv.lo: setenv.c
- $(LIBTOOL) --mode=compile $(CC) $(CFLAGS) -o $@ -c $(srcdir)/setenv.c
-
-testconfig.h: ../../include/config.h
- rm -f testconfig.h
- sed -n -e '/HAVE_SETENV/p' -e '/HAVE_UNSETENV/p' \
- ../../include/config.h > testconfig.h
-
-iconvchk: iconvchk.c codeset.h
- $(LIBTOOL) --mode=link $(CC) $(CFLAGS) $(LDFLAGS) -o $@ \
- $(srcdir)/iconvchk.c $(IDNLIB) $(ICONVLIB)
+++ /dev/null
-#ifndef lint
-static char *rcsid = "$Id: api-init1.tsy,v 1.1 2003/06/04 00:26:46 marka Exp $";
-#endif
-
-/*
- * Copyright (c) 2002 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-#include <stddef.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <idn/api.h>
-#include <idn/log.h>
-
-#include "codeset.h"
-#include "setenv.h"
-#include "testutil.h"
-
-#ifndef EUCJP_ENCODING_NAME
-#define EUCJP_ENCODING_NAME "eucJP"
-#endif
-
-#define CONF_FILENAME "test.conf"
-
-//--------------------------------------------------------------------
-// Setups and Teardowns.
-//--------------------------------------------------------------------
-
-//# SETUP
-// group: init
-{
- char to[256];
- idn_result_t r;
-
- setenv("IDN_LOCAL_CODESET", "UTF-8", 1);
- unsetenv("IDN_DISABLE");
- create_conf_file(CONF_FILENAME, 0,
- "idn-encoding UTF-8",
- NULL);
-}
-
-//# TEARDOWN
-// group: init
-{
- remove(CONF_FILENAME);
-}
-
-//--------------------------------------------------------------------
-// Testcases.
-//--------------------------------------------------------------------
-
-//# TESTCASE
-// title: nameinit(0)
-// group: init
-{
- r = idn__setconffile(CONF_FILENAME);
- ASSERT_RESULT(r, idn_success);
-
- r = idn_nameinit(0);
- ASSERT_RESULT(r, idn_success);
-
- r = idn_encodename(IDN_ENCODE_APP, "<U+3042>", to, sizeof(to));
- ASSERT_RESULT(r, idn_success);
- ASSERT_STRING(to, "xn--l8j");
-
- r = idn_decodename(IDN_DECODE_APP, "xn--l8j", to, sizeof(to));
- ASSERT_RESULT(r, idn_success);
- ASSERT_STRING(to, "<U+3042>");
-
- r = idn_decodename2(IDN_DECODE_APP, "xn--l8j", to, sizeof(to),
- EUCJP_ENCODING_NAME);
- ASSERT_RESULT(r, idn_success);
- ASSERT_STRING(to, "<U+3042>");
-}
+++ /dev/null
-#ifndef lint
-static char *rcsid = "$Id: api-init2.tsy,v 1.1 2003/06/04 00:26:47 marka Exp $";
-#endif
-
-/*
- * Copyright (c) 2002 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-#include <stddef.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <idn/api.h>
-#include <idn/log.h>
-
-#include "codeset.h"
-#include "setenv.h"
-#include "testutil.h"
-
-#ifndef EUCJP_ENCODING_NAME
-#define EUCJP_ENCODING_NAME "eucJP"
-#endif
-
-#define CONF_FILENAME "test.conf"
-
-//--------------------------------------------------------------------
-// Setups and Teardowns.
-//--------------------------------------------------------------------
-
-//# SETUP
-// group: init
-{
- char to[256];
- idn_result_t r;
-
- setenv("IDN_LOCAL_CODESET", "UTF-8", 1);
- unsetenv("IDN_DISABLE");
- create_conf_file(CONF_FILENAME, 0,
- "idn-encoding UTF-8",
- NULL);
-}
-
-//# TEARDOWN
-// group: init
-{
- remove(CONF_FILENAME);
-}
-
-//--------------------------------------------------------------------
-// Testcases.
-//--------------------------------------------------------------------
-
-//# TESTCASE
-// title: nameinit(1)
-// group: init
-{
- r = idn__setconffile(CONF_FILENAME);
- ASSERT_RESULT(r, idn_success);
-
- r = idn_nameinit(1);
- ASSERT_RESULT(r, idn_success);
-
- r = idn_encodename(IDN_ENCODE_APP, "<U+3042>", to, sizeof(to));
- ASSERT_RESULT(r, idn_success);
- ASSERT_STRING(to, "<U+3042>");
-
- r = idn_decodename(IDN_DECODE_APP, "xn--l8j", to, sizeof(to));
- ASSERT_RESULT(r, idn_success);
- ASSERT_STRING(to, "xn--l8j");
-
- r = idn_decodename2(IDN_DECODE_APP, "xn--l8j", to, sizeof(to),
- EUCJP_ENCODING_NAME);
- ASSERT_RESULT(r, idn_success);
- ASSERT_STRING(to, "xn--l8j");
-}
+++ /dev/null
-#ifndef lint
-static char *rcsid = "$Id: api-init3.tsy,v 1.1 2003/06/04 00:26:47 marka Exp $";
-#endif
-
-/*
- * Copyright (c) 2002 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-#include <stddef.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <idn/api.h>
-#include <idn/log.h>
-
-#include "codeset.h"
-#include "setenv.h"
-#include "testutil.h"
-
-#ifndef EUCJP_ENCODING_NAME
-#define EUCJP_ENCODING_NAME "eucJP"
-#endif
-
-#define CONF_FILENAME "test.conf"
-
-//--------------------------------------------------------------------
-// Setups and Teardowns.
-//--------------------------------------------------------------------
-
-//# SETUP
-// group: init
-{
- char to[256];
- idn_result_t r;
-
- setenv("IDN_LOCAL_CODESET", "UTF-8", 1);
- unsetenv("IDN_DISABLE");
- create_conf_file(CONF_FILENAME, 0,
- "idn-encoding UTF-8",
- NULL);
-}
-
-//# TEARDOWN
-// group: init
-{
- remove(CONF_FILENAME);
-}
-
-//--------------------------------------------------------------------
-// Testcases.
-//--------------------------------------------------------------------
-
-//# TESTCASE
-// title: call nameinit() twice
-// group: init
-{
- r = idn__setconffile(CONF_FILENAME);
- ASSERT_RESULT(r, idn_success);
-
- r = idn_nameinit(1);
- ASSERT_RESULT(r, idn_success);
- r = idn_nameinit(0);
- ASSERT_RESULT(r, idn_success);
-
- r = idn_encodename(IDN_ENCODE_APP, "<U+3042>", to, sizeof(to));
- ASSERT_RESULT(r, idn_success);
- ASSERT_STRING(to, "<U+3042>");
-
- r = idn_decodename(IDN_DECODE_APP, "xn--l8j", to, sizeof(to));
- ASSERT_RESULT(r, idn_success);
- ASSERT_STRING(to, "xn--l8j");
-
- r = idn_decodename2(IDN_DECODE_APP, "xn--l8j", to, sizeof(to),
- EUCJP_ENCODING_NAME);
- ASSERT_RESULT(r, idn_success);
- ASSERT_STRING(to, "xn--l8j");
-
- remove(CONF_FILENAME);
-}
+++ /dev/null
-#ifndef lint
-static char *rcsid = "$Id: api-init4-1.tsy,v 1.1 2003/06/04 00:26:47 marka Exp $";
-#endif
-
-/*
- * Copyright (c) 2002 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-#include <stddef.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <idn/api.h>
-#include <idn/log.h>
-
-#include "setenv.h"
-#include "testutil.h"
-
-#define CONF_FILENAME "test.conf"
-
-//--------------------------------------------------------------------
-// Setups and Teardowns.
-//--------------------------------------------------------------------
-
-//# SETUP
-// group: init
-{
- char to[256];
- idn_result_t r;
-
- setenv("IDN_LOCAL_CODESET", "UTF-8", 1);
- unsetenv("IDN_DISABLE");
- create_conf_file(CONF_FILENAME, 0,
- "idn-encoding UTF-8",
- NULL);
-}
-
-//# TEARDOWN
-// group: init
-{
- remove(CONF_FILENAME);
-}
-
-//--------------------------------------------------------------------
-// Testcases.
-//--------------------------------------------------------------------
-
-//# TESTCASE
-// title: call encodename() without initialization
-// group: init
-{
- r = idn__setconffile(CONF_FILENAME);
- ASSERT_RESULT(r, idn_success);
-
- r = idn_encodename(IDN_ENCODE_APP, "<U+3042>", to, sizeof(to));
- ASSERT_RESULT(r, idn_success);
- ASSERT_STRING(to, "xn--l8j");
-}
+++ /dev/null
-#ifndef lint
-static char *rcsid = "$Id: api-init4-2.tsy,v 1.1 2003/06/04 00:26:47 marka Exp $";
-#endif
-
-/*
- * Copyright (c) 2002 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-#include <stddef.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <idn/api.h>
-#include <idn/log.h>
-
-#include "setenv.h"
-#include "testutil.h"
-
-#define CONF_FILENAME "test.conf"
-
-//--------------------------------------------------------------------
-// Setups and Teardowns.
-//--------------------------------------------------------------------
-
-//# SETUP
-// group: init
-{
- char to[256];
- idn_result_t r;
-
- setenv("IDN_LOCAL_CODESET", "UTF-8", 1);
- unsetenv("IDN_DISABLE");
- create_conf_file(CONF_FILENAME, 0,
- "idn-encoding UTF-8",
- NULL);
-}
-
-//# TEARDOWN
-// group: init
-{
- remove(CONF_FILENAME);
-}
-
-//--------------------------------------------------------------------
-// Testcases.
-//--------------------------------------------------------------------
-
-//# TESTCASE
-// title: call decodename() without initialization
-// group: init
-{
- r = idn__setconffile(CONF_FILENAME);
- ASSERT_RESULT(r, idn_success);
-
- r = idn_decodename(IDN_DECODE_APP, "xn--l8j", to, sizeof(to));
- ASSERT_RESULT(r, idn_success);
- ASSERT_STRING(to, "<U+3042>");
-}
+++ /dev/null
-#ifndef lint
-static char *rcsid = "$Id: api-init4-3.tsy,v 1.1 2003/06/04 00:26:47 marka Exp $";
-#endif
-
-/*
- * Copyright (c) 2002 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-#include <stddef.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <idn/api.h>
-#include <idn/log.h>
-
-#include "codeset.h"
-#include "setenv.h"
-#include "testutil.h"
-
-#ifndef EUCJP_ENCODING_NAME
-#define EUCJP_ENCODING_NAME "eucJP"
-#endif
-
-#define CONF_FILENAME "test.conf"
-
-//--------------------------------------------------------------------
-// Setups and Teardowns.
-//--------------------------------------------------------------------
-
-//# SETUP
-// group: init
-{
- char to[256];
- idn_result_t r;
-
- setenv("IDN_LOCAL_CODESET", "UTF-8", 1);
- unsetenv("IDN_DISABLE");
- create_conf_file(CONF_FILENAME, 0,
- "idn-encoding UTF-8",
- NULL);
-}
-
-//# TEARDOWN
-// group: init
-{
- remove(CONF_FILENAME);
-}
-
-//--------------------------------------------------------------------
-// Testcases.
-//--------------------------------------------------------------------
-
-//# TESTCASE
-// title: call decodename2() without initialization
-// group: init
-{
- r = idn__setconffile(CONF_FILENAME);
- ASSERT_RESULT(r, idn_success);
-
- r = idn_decodename2(IDN_DECODE_APP, "xn--l8j", to, sizeof(to),
- EUCJP_ENCODING_NAME);
- ASSERT_RESULT(r, idn_success);
- ASSERT_STRING(to, "<U+3042>");
-}
+++ /dev/null
-#ifndef lint
-static char *rcsid = "$Id: api-init5-1.tsy,v 1.1 2003/06/04 00:26:48 marka Exp $";
-#endif
-
-/*
- * Copyright (c) 2002 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-#include <stddef.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <idn/api.h>
-#include <idn/log.h>
-
-#include "setenv.h"
-#include "testutil.h"
-
-#define CONF_FILENAME "test.conf"
-
-//--------------------------------------------------------------------
-// Setups and Teardowns.
-//--------------------------------------------------------------------
-
-//# SETUP
-// group: init
-{
- char to[256];
- idn_result_t r;
-
- setenv("IDN_LOCAL_CODESET", "UTF-8", 1);
- unsetenv("IDN_DISABLE");
- create_conf_file(CONF_FILENAME, 0,
- "idn-encoding UTF-8",
- NULL);
-}
-
-//# TEARDOWN
-// group: init
-{
- remove(CONF_FILENAME);
-}
-
-//--------------------------------------------------------------------
-// Testcases.
-//--------------------------------------------------------------------
-
-//# TESTCASE
-// title: call encodename() and nameinit()
-// group: init
-{
- r = idn__setconffile(CONF_FILENAME);
- ASSERT_RESULT(r, idn_success);
-
- r = idn_encodename(IDN_ENCODE_APP, "aaa", to, sizeof(to));
- ASSERT_RESULT(r, idn_success);
-
- r = idn_nameinit(1);
- ASSERT_RESULT(r, idn_success);
-
- r = idn_encodename(IDN_ENCODE_APP, "<U+3042>", to, sizeof(to));
- ASSERT_RESULT(r, idn_success);
- ASSERT_STRING(to, "xn--l8j");
-}
+++ /dev/null
-#ifndef lint
-static char *rcsid = "$Id: api-init5-2.tsy,v 1.1 2003/06/04 00:26:48 marka Exp $";
-#endif
-
-/*
- * Copyright (c) 2002 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-#include <stddef.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <idn/api.h>
-#include <idn/log.h>
-
-#include "setenv.h"
-#include "testutil.h"
-
-#define CONF_FILENAME "test.conf"
-
-//--------------------------------------------------------------------
-// Setups and Teardowns.
-//--------------------------------------------------------------------
-
-//# SETUP
-// group: init
-{
- char to[256];
- idn_result_t r;
-
- setenv("IDN_LOCAL_CODESET", "UTF-8", 1);
- unsetenv("IDN_DISABLE");
- create_conf_file(CONF_FILENAME, 0,
- "idn-encoding UTF-8",
- NULL);
-}
-
-//# TEARDOWN
-// group: init
-{
- remove(CONF_FILENAME);
-}
-
-//--------------------------------------------------------------------
-// Testcases.
-//--------------------------------------------------------------------
-
-//# TESTCASE
-// title: call decodename() and nameinit()
-// group: init
-{
- r = idn__setconffile(CONF_FILENAME);
- ASSERT_RESULT(r, idn_success);
-
- r = idn_decodename(IDN_DECODE_APP, "aaa", to, sizeof(to));
- ASSERT_RESULT(r, idn_success);
-
- r = idn_nameinit(1);
- ASSERT_RESULT(r, idn_success);
-
- r = idn_decodename(IDN_DECODE_APP, "xn--l8j", to, sizeof(to));
- ASSERT_RESULT(r, idn_success);
- ASSERT_STRING(to, "<U+3042>");
-}
+++ /dev/null
-#ifndef lint
-static char *rcsid = "$Id: api-init5-3.tsy,v 1.1 2003/06/04 00:26:48 marka Exp $";
-#endif
-
-/*
- * Copyright (c) 2002 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-#include <stddef.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <idn/api.h>
-#include <idn/log.h>
-
-#include "codeset.h"
-#include "setenv.h"
-#include "testutil.h"
-
-#ifndef EUCJP_ENCODING_NAME
-#define EUCJP_ENCODING_NAME "eucJP"
-#endif
-
-#define CONF_FILENAME "test.conf"
-
-//--------------------------------------------------------------------
-// Setups and Teardowns.
-//--------------------------------------------------------------------
-
-//# SETUP
-// group: init
-{
- char to[256];
- idn_result_t r;
-
- setenv("IDN_LOCAL_CODESET", "UTF-8", 1);
- unsetenv("IDN_DISABLE");
- create_conf_file(CONF_FILENAME, 0,
- "idn-encoding UTF-8",
- NULL);
-}
-
-//# TEARDOWN
-// group: init
-{
- remove(CONF_FILENAME);
-}
-
-//--------------------------------------------------------------------
-// Testcases.
-//--------------------------------------------------------------------
-
-//# TESTCASE
-// title: call decodename2() and nameinit()
-// group: init
-{
- r = idn__setconffile(CONF_FILENAME);
- ASSERT_RESULT(r, idn_success);
-
- r = idn_decodename2(IDN_DECODE_APP, "aaa", to, sizeof(to),
- EUCJP_ENCODING_NAME);
- ASSERT_RESULT(r, idn_success);
-
- r = idn_nameinit(1);
- ASSERT_RESULT(r, idn_success);
-
- r = idn_decodename2(IDN_DECODE_APP, "xn--l8j", to, sizeof(to),
- EUCJP_ENCODING_NAME);
- ASSERT_RESULT(r, idn_success);
- ASSERT_STRING(to, "<U+3042>");
-}
+++ /dev/null
-#ifndef lint
-static char *rcsid = "$Id: api.tsy,v 1.1 2003/06/04 00:26:50 marka Exp $";
-#endif
-
-/*
- * Copyright (c) 2002 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-#include <stddef.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <idn/api.h>
-#include <idn/log.h>
-
-#include "codeset.h"
-#include "setenv.h"
-
-#ifndef EUCJP_ENCODING_NAME
-#define EUCJP_ENCODING_NAME "eucJP"
-#endif
-
-/*
- * U+304B: hiragana letter KA
- * U+3099: combining katakana-hiragana voiced sound mark
- *
- * map("U+304B U+3099") -> "U+304C"
- *
- * U+304C: hiragana letter GA
- */
-#define UTF8_NAME "A<U+304B><U+3099>"
-#define UTF8_REVNAME "a<U+304C>"
-
-/*
- * A4AC: hiragana letter GA (in EUC-JP)
- */
-#define EUCJP_NAME "\xa4\xac"
-#define EUCJP_REVNAME "\xa4\xac"
-
-/*
- * Conversion result of "U+304B U+3099 A"
- */
-#define PUNYCODE_NAME "xn--a-i8t"
-
-/*
- * Conversion result of "A U+304B U+3099" (in EUC-JP).
- */
-#define AUX_EUCJP_NAME "xn--a-i\xa3\xb8t"
-
-
-//--------------------------------------------------------------------
-// Setups and Teardowns.
-//--------------------------------------------------------------------
-
-//# SETUP
-// group: generic-conversion
-//--
-// Initialize the `api' module.
-// Set local encoding to `UTF-8'.
-{
- char to[256];
- idn_result_t r;
-
- setenv("IDN_LOCAL_CODESET", "UTF-8", 1);
- unsetenv("IDN_DISABLE");
- idn_nameinit(0);
-}
-
-//# SETUP
-// group: quiet
-//--
-// Set log level to `fatal' to supress log messages.
-{
- int saved_log_level;
-
- saved_log_level = idn_log_getlevel();
- idn_log_setlevel(idn_log_level_fatal);
-}
-
-//# TEARDOWN
-// group: quiet
-//--
-// Restore log level.
-{
- idn_log_setlevel(saved_log_level);
-}
-
-//--------------------------------------------------------------------
-// Testcases.
-//--------------------------------------------------------------------
-
-//# TESTCASE
-// title: basic conversion by encodename()
-// group: generic-conversion
-{
- r = idn_encodename(IDN_ENCODE_APP, UTF8_NAME, to, sizeof(to));
- ASSERT_RESULT(r, idn_success);
- ASSERT_STRING(to, PUNYCODE_NAME);
-}
-
-//# TESTCASE
-// title: basic conversion by decodename()
-// group: generic-conversion
-{
- r = idn_decodename(IDN_DECODE_APP, PUNYCODE_NAME, to, sizeof(to));
- ASSERT_RESULT(r, idn_success);
- ASSERT_STRING(to, UTF8_REVNAME);
-}
-
-//# TESTCASE
-// title: basic conversion by decodename2()
-// group: generic-conversion
-{
- r = idn_decodename2(IDN_DECODE_APP, AUX_EUCJP_NAME, to, sizeof(to),
- EUCJP_ENCODING_NAME);
-#ifdef WITHOUT_ICONV
- ASSERT_RESULT(r, idn_failure);
-#else
- ASSERT_RESULT(r, idn_success);
- ASSERT_STRING(to, UTF8_REVNAME);
-#endif
-}
-
-//# TESTCASE
-// title: call decodename2() with auxencoding=NULL
-// group: generic-conversion
-{
-#ifdef WITHOUT_ICONV
- SKIP_TESTCASE;
-#else
- r = idn_decodename2(IDN_DECODE_APP, PUNYCODE_NAME, to, sizeof(to),
- NULL);
- ASSERT_RESULT(r, idn_success);
- ASSERT_STRING(to, UTF8_REVNAME);
-#endif
-}
-
-//# TESTCASE
-// title: call encodename() with actions=0
-// group: generic-conversion
-{
- r = idn_encodename(0, UTF8_NAME, to, sizeof(to));
- ASSERT_RESULT(r, idn_success);
- ASSERT_STRING(to, UTF8_NAME);
-}
-
-//# TESTCASE
-// title: call decodename() with actions=0
-// group: generic-conversion
-{
- r = idn_decodename(0, PUNYCODE_NAME, to, sizeof(to));
- ASSERT_RESULT(r, idn_success);
- ASSERT_STRING(to, PUNYCODE_NAME);
-}
-
-//# TESTCASE
-// title: call decodename2() with actions=0
-// group: generic-conversion
-{
-#ifdef WITHOUT_ICONV
- SKIP_TESTCASE;
-#else
- r = idn_decodename2(0, AUX_EUCJP_NAME, to, sizeof(to),
- EUCJP_ENCODING_NAME);
- ASSERT_RESULT(r, idn_success);
- ASSERT_STRING(to, AUX_EUCJP_NAME);
-#endif
-}
-
-//# TESTCASE
-// title: call encodename() with actions=rtcheck
-// group: generic-conversion quiet
-{
- r = idn_encodename(IDN_RTCHECK, EUCJP_NAME, to, sizeof(to));
- ASSERT_RESULT(r, idn_invalid_action);
-}
-
-//# TESTCASE
-// title: call encodename() with actions=decode-query
-// group: generic-conversion quiet
-{
- r = idn_encodename(IDN_DECODE_QUERY, EUCJP_NAME, to, sizeof(to));
- ASSERT_RESULT(r, idn_invalid_action);
-}
-
-//# TESTCASE
-// title: call encodename() with actions=decode-app
-// group: generic-conversion quiet
-{
- r = idn_encodename(IDN_DECODE_APP, EUCJP_NAME, to, sizeof(to));
- ASSERT_RESULT(r, idn_invalid_action);
-}
-
-//# TESTCASE
-// title: call encodename() with actions=decode-stored
-// group: generic-conversion quiet
-{
- r = idn_encodename(IDN_DECODE_STORED, EUCJP_NAME, to, sizeof(to));
- ASSERT_RESULT(r, idn_invalid_action);
-}
-
-//# TESTCASE
-// title: call encodename() with actions=(1<<31)
-// group: generic-conversion quiet
-{
- r = idn_encodename(1 << 31, EUCJP_NAME, to, sizeof(to));
- ASSERT_RESULT(r, idn_invalid_action);
-}
-
-//# TESTCASE
-// title: call decodename() with actions=localmap
-// group: generic-conversion quiet
-{
- r = idn_decodename(IDN_LOCALMAP, PUNYCODE_NAME, to, sizeof(to));
- ASSERT_RESULT(r, idn_invalid_action);
-}
-
-//# TESTCASE
-// title: call decodename2() with actions=localmap
-// group: generic-conversion quiet
-{
-#ifdef WITHOUT_ICONV
- SKIP_TESTCASE;
-#else
- r = idn_decodename2(IDN_LOCALMAP, AUX_EUCJP_NAME, to, sizeof(to),
- EUCJP_ENCODING_NAME);
- ASSERT_RESULT(r, idn_invalid_action);
-#endif
-}
-
-//# TESTCASE
-// title: call decodename() with actions=lencheck
-// group: generic-conversion quiet
-{
- r = idn_decodename(IDN_LENCHECK, PUNYCODE_NAME, to, sizeof(to));
- ASSERT_RESULT(r, idn_invalid_action);
-}
-
-//# TESTCASE
-// title: call decodename2() with actions=lencheck
-// group: generic-conversion quiet
-{
-#ifdef WITHOUT_ICONV
- SKIP_TESTCASE;
-#else
- r = idn_decodename2(IDN_LENCHECK, AUX_EUCJP_NAME, to, sizeof(to),
- EUCJP_ENCODING_NAME);
- ASSERT_RESULT(r, idn_invalid_action);
-#endif
-}
-
-//# TESTCASE
-// title: call decodename() with actions=encode-query
-// group: generic-conversion quiet
-{
- r = idn_decodename(IDN_ENCODE_QUERY, PUNYCODE_NAME, to, sizeof(to));
- ASSERT_RESULT(r, idn_invalid_action);
-}
-
-//# TESTCASE
-// title: call decodename2() with actions=encode-query
-// group: generic-conversion quiet
-{
-#ifdef WITHOUT_ICONV
- SKIP_TESTCASE;
-#else
- r = idn_decodename2(IDN_ENCODE_QUERY, AUX_EUCJP_NAME, to, sizeof(to),
- EUCJP_ENCODING_NAME);
- ASSERT_RESULT(r, idn_invalid_action);
-#endif
-}
-
-//# TESTCASE
-// title: call decodename() with actions=encode-app
-// group: generic-conversion quiet
-{
- r = idn_decodename(IDN_ENCODE_APP, PUNYCODE_NAME, to, sizeof(to));
- ASSERT_RESULT(r, idn_invalid_action);
-}
-
-//# TESTCASE
-// title: call decodename2() with actions=encode-app
-// group: generic-conversion quiet
-{
-#ifdef WITHOUT_ICONV
- SKIP_TESTCASE;
-#else
- r = idn_decodename2(IDN_ENCODE_APP, AUX_EUCJP_NAME, to, sizeof(to),
- EUCJP_ENCODING_NAME);
- ASSERT_RESULT(r, idn_invalid_action);
-#endif
-}
-
-//# TESTCASE
-// title: call decodename() with actions=encode-stored
-// group: generic-conversion quiet
-{
- r = idn_decodename(IDN_ENCODE_STORED, PUNYCODE_NAME, to, sizeof(to));
- ASSERT_RESULT(r, idn_invalid_action);
-}
-
-//# TESTCASE
-// title: call decodename2() with actions=encode-stored
-// group: generic-conversion quiet
-{
-#ifdef WITHOUT_ICONV
- SKIP_TESTCASE;
-#else
- r = idn_decodename2(IDN_ENCODE_STORED, AUX_EUCJP_NAME, to, sizeof(to),
- EUCJP_ENCODING_NAME);
- ASSERT_RESULT(r, idn_invalid_action);
-#endif
-}
-
-//# TESTCASE
-// title: call decodename() with actions=(1<<31)
-// group: generic-conversion quiet
-{
- r = idn_decodename(1 << 31, PUNYCODE_NAME, to, sizeof(to));
- ASSERT_RESULT(r, idn_invalid_action);
-}
-
-//# TESTCASE
-// title: call decodename2() with actions=(1<<31)
-// group: generic-conversion quiet
-{
-#ifdef WITHOUT_ICONV
- SKIP_TESTCASE;
-#else
- r = idn_decodename2(1 << 31, AUX_EUCJP_NAME, to, sizeof(to),
- EUCJP_ENCODING_NAME);
- ASSERT_RESULT(r, idn_invalid_action);
-#endif
-}
-
-//# TESTCASE
-// title: call encodename() with actions=localconv
-// group: generic-conversion quiet
-{
-#ifndef WITHOUT_ICONV
- SKIP_TESTCASE;
-#else
- r = idn_encodename(IDN_LOCALCONV, UTF8_NAME, to, sizeof(to));
- ASSERT_RESULT(r, idn_invalid_action);
-#endif
-}
-
-//# TESTCASE
-// title: call decodename() with actions=localconv
-// group: generic-conversion quiet
-{
-#ifndef WITHOUT_ICONV
- SKIP_TESTCASE;
-#else
- r = idn_decodename(IDN_LOCALCONV, PUNYCODE_NAME, to, sizeof(to));
- ASSERT_RESULT(r, idn_invalid_action);
-#endif
-}
-
-//# TESTCASE
-// title: call decodename2() with actions=localconv
-// group: generic-conversion
-{
-#ifndef WITHOUT_ICONV
- SKIP_TESTCASE;
-#else
- r = idn_decodename2(IDN_LOCALCONV, AUX_EUCJP_NAME, to, sizeof(to),
- EUCJP_ENCODING_NAME);
- ASSERT_RESULT(r, idn_failure);
-#endif
-}
-
-//# TESTCASE
-// title: call enable(0) and then encodename()
-// group: generic-conversion
-{
- idn_enable(0);
- r = idn_encodename(IDN_ENCODE_APP, UTF8_NAME, to, sizeof(to));
- ASSERT_RESULT(r, idn_success);
- ASSERT_STRING(to, UTF8_NAME);
-}
-
-//# TESTCASE
-// title: call decodename() when IDN_DISABLE is defined
-// group: generic-conversion
-{
- idn_enable(0);
- r = idn_decodename(IDN_DECODE_APP, PUNYCODE_NAME, to, sizeof(to));
- ASSERT_RESULT(r, idn_success);
- ASSERT_STRING(to, PUNYCODE_NAME);
-}
-
-//# TESTCASE
-// title: call decodename() when IDN_DISABLE is defined
-// group: generic-conversion
-{
-#ifdef WITHOUT_ICONV
- SKIP_TESTCASE;
-#else
- idn_enable(0);
- r = idn_decodename2(IDN_DECODE_APP, AUX_EUCJP_NAME, to, sizeof(to),
- EUCJP_ENCODING_NAME);
- ASSERT_RESULT(r, idn_success);
- ASSERT_STRING(to, AUX_EUCJP_NAME);
-#endif
-}
-
-//# TESTCASE
-// title: call enable(0) and then encodename()
-// group: generic-conversion
-{
- idn_enable(0);
- r = idn_encodename(IDN_ENCODE_APP, UTF8_NAME, to, sizeof(to));
- ASSERT_RESULT(r, idn_success);
- ASSERT_STRING(to, UTF8_NAME);
-}
-
-//# TESTCASE
-// title: call enable(0) and then decodename()
-// group: generic-conversion
-{
- idn_enable(0);
- r = idn_decodename(IDN_DECODE_APP, PUNYCODE_NAME, to, sizeof(to));
- ASSERT_RESULT(r, idn_success);
- ASSERT_STRING(to, PUNYCODE_NAME);
-}
-
-//# TESTCASE
-// title: call enable(0) and then decodename2()
-// group: generic-conversion
-{
-#ifdef WITHOUT_ICONV
- SKIP_TESTCASE;
-#else
- idn_enable(0);
- r = idn_decodename2(IDN_DECODE_APP, AUX_EUCJP_NAME, to, sizeof(to),
- EUCJP_ENCODING_NAME);
- ASSERT_RESULT(r, idn_success);
- ASSERT_STRING(to, AUX_EUCJP_NAME);
-#endif
-}
-
-//# TESTCASE
-// title: set IDN_DISABLE and call encodename()
-// group: generic-conversion
-{
- setenv("IDN_DISABLE", "1", 1);
- r = idn_encodename(IDN_ENCODE_APP, UTF8_NAME, to, sizeof(to));
- ASSERT_RESULT(r, idn_success);
- ASSERT_STRING(to, UTF8_NAME);
-}
-
-//# TESTCASE
-// title: set IDN_DISABLE and call decodename()
-// group: generic-conversion
-{
- setenv("IDN_DISABLE", "1", 1);
- r = idn_decodename(IDN_DECODE_APP, PUNYCODE_NAME, to, sizeof(to));
- ASSERT_RESULT(r, idn_success);
- ASSERT_STRING(to, PUNYCODE_NAME);
-}
-
-//# TESTCASE
-// title: set IDN_DISABLE and call decodename2()
-// group: generic-conversion
-{
-#ifdef WITHOUT_ICONV
- SKIP_TESTCASE;
-#else
- setenv("IDN_DISABLE", "1", 1);
- r = idn_decodename2(IDN_DECODE_APP, AUX_EUCJP_NAME, to, sizeof(to),
- EUCJP_ENCODING_NAME);
- ASSERT_RESULT(r, idn_success);
- ASSERT_STRING(to, AUX_EUCJP_NAME);
-#endif
-}
-
-//# TESTCASE
-// title: set IDN_DISABLE, and then call enable(1) and encodename()
-// group: generic-conversion
-{
- setenv("IDN_DISABLE", "1", 1);
- idn_enable(1);
- r = idn_encodename(IDN_ENCODE_APP, UTF8_NAME, to, sizeof(to));
- ASSERT_RESULT(r, idn_success);
- ASSERT_STRING(to, PUNYCODE_NAME);
-}
-
-//# TESTCASE
-// title: set IDN_DISABLE, and then call enable(1) and decodename()
-// group: generic-conversion
-{
- setenv("IDN_DISABLE", "1", 1);
- idn_enable(1);
- r = idn_decodename(IDN_DECODE_APP, PUNYCODE_NAME, to, sizeof(to));
- ASSERT_RESULT(r, idn_success);
- ASSERT_STRING(to, UTF8_REVNAME);
-}
-
-//# TESTCASE
-// title: set IDN_DISABLE, and then call enable(1) and decodename2()
-// group: generic-conversion
-{
-#ifdef WITHOUT_ICONV
- SKIP_TESTCASE;
-#else
- setenv("IDN_DISABLE", "1", 1);
- idn_enable(1);
- r = idn_decodename2(IDN_DECODE_APP, AUX_EUCJP_NAME, to, sizeof(to),
- EUCJP_ENCODING_NAME);
- ASSERT_RESULT(r, idn_success);
- ASSERT_STRING(to, UTF8_REVNAME);
-#endif
-}
-
-//# TESTCASE
-// title: overrun test for arg `to' of encodename()
-// group: generic-conversion
-{
- /* Normal case */
- r = idn_encodename(IDN_ENCODE_APP, UTF8_NAME, to,
- strlen(PUNYCODE_NAME) + 1);
- ASSERT_RESULT(r, idn_success);
- ASSERT_STRING(to, PUNYCODE_NAME);
-
- r = idn_encodename(IDN_ENCODE_APP, UTF8_NAME, to,
- strlen(PUNYCODE_NAME));
- ASSERT_RESULT(r, idn_buffer_overflow);
-
- /* enable(0) case */
- idn_enable(0);
- r = idn_encodename(IDN_ENCODE_APP, UTF8_NAME, to,
- strlen(UTF8_NAME) + 1);
- ASSERT_RESULT(r, idn_success);
- ASSERT_STRING(to, UTF8_NAME);
-
- r = idn_encodename(IDN_ENCODE_APP, UTF8_NAME, to,
- strlen(UTF8_NAME));
- ASSERT_RESULT(r, idn_buffer_overflow);
-
- /* actions=0 case */
- idn_enable(1);
- r = idn_encodename(0, UTF8_NAME, to, strlen(UTF8_NAME) + 1);
- ASSERT_RESULT(r, idn_success);
- ASSERT_STRING(to, UTF8_NAME);
-
- r = idn_encodename(0, UTF8_NAME, to, strlen(UTF8_NAME));
- ASSERT_RESULT(r, idn_buffer_overflow);
-}
-
-//# TESTCASE
-// title: overrun test for arg `to' of decodename()
-// group: generic-conversion
-{
- /* Normal case */
- r = idn_decodename(IDN_DECODE_APP, PUNYCODE_NAME, to,
- strlen(UTF8_REVNAME) + 1);
- ASSERT_RESULT(r, idn_success);
- ASSERT_STRING(to, UTF8_REVNAME);
-
- r = idn_decodename(IDN_DECODE_APP, PUNYCODE_NAME, to,
- strlen(UTF8_REVNAME));
- ASSERT_RESULT(r, idn_buffer_overflow);
-
- /* idn_enable(0) case */
- idn_enable(0);
- r = idn_decodename(IDN_DECODE_APP, PUNYCODE_NAME, to,
- strlen(PUNYCODE_NAME) + 1);
- ASSERT_RESULT(r, idn_success);
- ASSERT_STRING(to, PUNYCODE_NAME);
-
- r = idn_decodename(IDN_DECODE_APP, PUNYCODE_NAME, to,
- strlen(PUNYCODE_NAME));
- ASSERT_RESULT(r, idn_buffer_overflow);
-
- /* actions=0 case */
- idn_enable(1);
- r = idn_decodename(0, PUNYCODE_NAME, to, strlen(PUNYCODE_NAME) + 1);
- ASSERT_RESULT(r, idn_success);
- ASSERT_STRING(to, PUNYCODE_NAME);
-
- r = idn_decodename(0, PUNYCODE_NAME, to, strlen(PUNYCODE_NAME));
- ASSERT_RESULT(r, idn_buffer_overflow);
-}
-
-//# TESTCASE
-// title: overrun test for arg `to' of decodename2()
-// group: generic-conversion
-{
-#ifdef WITHOUT_ICONV
- SKIP_TESTCASE;
-#else
- /* Normal case */
- r = idn_decodename2(IDN_DECODE_APP, AUX_EUCJP_NAME, to,
- strlen(UTF8_REVNAME) + 1, EUCJP_ENCODING_NAME);
- ASSERT_RESULT(r, idn_success);
- ASSERT_STRING(to, UTF8_REVNAME);
-
- r = idn_decodename2(IDN_DECODE_APP, AUX_EUCJP_NAME, to,
- strlen(UTF8_REVNAME), EUCJP_ENCODING_NAME);
- ASSERT_RESULT(r, idn_buffer_overflow);
-
- /* idn_enable(0) case */
- idn_enable(0);
- r = idn_decodename2(IDN_DECODE_APP, AUX_EUCJP_NAME, to,
- strlen(AUX_EUCJP_NAME) + 1, EUCJP_ENCODING_NAME);
- ASSERT_RESULT(r, idn_success);
- ASSERT_STRING(to, AUX_EUCJP_NAME);
-
- r = idn_decodename2(IDN_DECODE_APP, AUX_EUCJP_NAME, to,
- strlen(AUX_EUCJP_NAME), EUCJP_ENCODING_NAME);
- ASSERT_RESULT(r, idn_buffer_overflow);
-
- /* actions=0 case */
- idn_enable(1);
- r = idn_decodename2(0, AUX_EUCJP_NAME, to, strlen(AUX_EUCJP_NAME) + 1,
- EUCJP_ENCODING_NAME);
- ASSERT_RESULT(r, idn_success);
- ASSERT_STRING(to, AUX_EUCJP_NAME);
-
- r = idn_decodename2(0, AUX_EUCJP_NAME, to, strlen(AUX_EUCJP_NAME),
- EUCJP_ENCODING_NAME);
- ASSERT_RESULT(r, idn_buffer_overflow);
-
-#endif
-}
-
-//# TESTCASE
-// title: call encodename() with tolen=0
-// group: generic-conversion
-{
- r = idn_encodename(IDN_ENCODE_APP, UTF8_NAME, to, 0);
- ASSERT_RESULT(r, idn_buffer_overflow);
-}
-
-//# TESTCASE
-// title: call decodename() with tolen=0
-// group: generic-conversion
-{
- r = idn_decodename(IDN_DECODE_APP, PUNYCODE_NAME, to, 0);
- ASSERT_RESULT(r, idn_buffer_overflow);
-}
-
-//# TESTCASE
-// title: call decodename2() with tolen=0
-// group: generic-conversion
-{
-#ifdef WITHOUT_ICONV
- SKIP_TESTCASE;
-#else
- r = idn_decodename2(IDN_DECODE_APP, AUX_EUCJP_NAME, to, 0,
- EUCJP_ENCODING_NAME);
- ASSERT_RESULT(r, idn_buffer_overflow);
-#endif
-}
-
-//# TESTCASE
-// title: convert an empty string using encodename()
-// group: generic-conversion
-{
- r = idn_encodename(IDN_ENCODE_APP, "", to, sizeof(to));
- ASSERT_RESULT(r, idn_success);
- ASSERT_STRING(to, "");
-}
-
-//# TESTCASE
-// title: convert an empty string using decodename()
-// group: generic-conversion
-{
- r = idn_decodename(IDN_DECODE_APP, "", to, sizeof(to));
- ASSERT_RESULT(r, idn_success);
- ASSERT_STRING(to, "");
-}
-
-//# TESTCASE
-// title: convert an empty string using decodename2()
-// group: generic-conversion
-{
-#ifdef WITHOUT_ICONV
- SKIP_TESTCASE;
-#else
- r = idn_decodename2(IDN_DECODE_APP, "", to, sizeof(to),
- EUCJP_ENCODING_NAME);
- ASSERT_RESULT(r, idn_success);
- ASSERT_STRING(to, "");
-#endif
-}
-
-//# TESTCASE
-// title: prohcheck by encodename()
-// group: generic-conversion
-{
- /* U+1680: prohibited character */
- r = idn_encodename(IDN_PROHCHECK, "<U+1680>", to, sizeof(to));
- ASSERT_RESULT(r, idn_prohibited);
-}
-
-//# TESTCASE
-// title: unascheck by encodename()
-// group: generic-conversion
-{
- /* U+0221: unassigned codepoint */
- r = idn_encodename(IDN_UNASCHECK, "<U+0221>", to, sizeof(to));
- ASSERT_RESULT(r, idn_prohibited);
-}
-
-//# TESTCASE
-// title: bidicheck by encodename()
-// group: generic-conversion
-{
- /* U+05D0: bidirectional property is "R" */
- /* `a': bidirectional property is "L" */
- /* `0', `-': bidirectional property is "N" */
- r = idn_encodename(IDN_BIDICHECK, "<U+05D0>", to, sizeof(to));
- ASSERT_RESULT(r, idn_success);
-
- r = idn_encodename(IDN_BIDICHECK, "<U+05D0><U+05D0>",
- to, sizeof(to));
- ASSERT_RESULT(r, idn_success);
-
- r = idn_encodename(IDN_BIDICHECK, "<U+05D0><U+05D0>-a",
- to, sizeof(to));
- ASSERT_RESULT(r, idn_prohibited);
-
- r = idn_encodename(IDN_BIDICHECK, "<U+05D0>-a-<U+05D0>",
- to, sizeof(to));
- ASSERT_RESULT(r, idn_prohibited);
-
- r = idn_encodename(IDN_BIDICHECK, "a-<U+05D0><U+05D0>",
- to, sizeof(to));
- ASSERT_RESULT(r, idn_prohibited);
-
- r = idn_encodename(IDN_BIDICHECK, "<U+05D0><U+05D0>-0",
- to, sizeof(to));
- ASSERT_RESULT(r, idn_prohibited);
-
- r = idn_encodename(IDN_BIDICHECK, "<U+05D0>-0-<U+05D0>",
- to, sizeof(to));
- ASSERT_RESULT(r, idn_success);
-
- r = idn_encodename(IDN_BIDICHECK, "0-<U+05D0><U+05D0>",
- to, sizeof(to));
- ASSERT_RESULT(r, idn_prohibited);
-}
-
-//# TESTCASE
-// title: asccheck by encodename()
-// group: generic-conversion
-{
- r = idn_encodename(IDN_ASCCHECK, "-name", to, sizeof(to));
- ASSERT_RESULT(r, idn_prohibited);
-
- r = idn_encodename(IDN_ASCCHECK, "name-", to, sizeof(to));
- ASSERT_RESULT(r, idn_prohibited);
-
- r = idn_encodename(IDN_ASCCHECK, "n ame", to, sizeof(to));
- ASSERT_RESULT(r, idn_prohibited);
-}
-
-//# TESTCASE
-// title: lencheck by encodename()
-// group: generic-conversion
-{
- r = idn_encodename(IDN_LENCHECK,
- "123456789-123456789-123456789-123456789-"
- "123456789-123456789-123", to, sizeof(to));
- ASSERT_RESULT(r, idn_success);
-
- r = idn_encodename(IDN_LENCHECK,
- "123456789-123456789-123456789-123456789-"
- "123456789-123456789-1234", to, sizeof(to));
- ASSERT_RESULT(r, idn_invalid_length);
-
- r = idn_encodename(IDN_LENCHECK, "a..b", to, sizeof(to));
- ASSERT_RESULT(r, idn_invalid_length);
-}
-
-//# TESTCASE
-// title: rtcheck non-prohchecked label by decodename()
-// group: generic-conversion
-{
- /* "xn--6ue" -> "U+1680" (prohibited character) */
- r = idn_decodename(IDN_RTCHECK, "xn--6ue", to, sizeof(to));
- ASSERT_RESULT(r, idn_success);
- ASSERT_STRING(to, "xn--6ue");
-}
-
-//# TESTCASE
-// title: rtcheck non-unaschecked label by decodename()
-// group: generic-conversion
-{
- /* "xn--6la" -> "U+0221" (unassigned codepoint) */
- r = idn_decodename(IDN_IDNCONV | IDN_RTCHECK | IDN_UNASCHECK,
- "xn--6la", to, sizeof(to));
- ASSERT_RESULT(r, idn_success);
- ASSERT_STRING(to, "xn--6la");
-}
-
-//# TESTCASE
-// title: rtcheck non-ascchecked label by decodename()
-// group: generic-conversion
-{
- /* "xn----x7t" -> "- U+3042" */
- r = idn_decodename(IDN_IDNCONV | IDN_RTCHECK | IDN_ASCCHECK,
- "xn----x7t", to, sizeof(to));
- ASSERT_RESULT(r, idn_success);
- ASSERT_STRING(to, "xn----x7t");
-
- /* "xn----w7t" -> "U+3042 -" */
- r = idn_decodename(IDN_IDNCONV | IDN_RTCHECK | IDN_ASCCHECK,
- "xn----w7t", to, sizeof(to));
- ASSERT_RESULT(r, idn_success);
- ASSERT_STRING(to, "xn----w7t");
-}
-
-//# TESTCASE
-// title: rtcheck non-lenchecked label by decodename()
-// group: generic-conversion
-{
- /* `s1' has 63 characters */
- const char *s1 =
- "xn--l8jaa5522a8sj38bzugvvblo3y90fjzgvxlmxscifws3d43odzaq6aj340b";
-
- const char *s1rev =
- "<U+9752><U+68EE><U+5CA9><U+624B><U+5BAE><U+57CE><U+79CB><U+7530>"
- "<U+5C71><U+5F62><U+798F><U+5CF6><U+6771><U+4EAC><U+795E><U+5948>"
- "<U+5DDD><U+3042><U+3042><U+3042>";
-
- /* `s2' has 64 characters */
- const char *s2 =
- "xn--a-w7ta6522a8sj38bzugvvblo3y90fjzgvxlmxscifws3d43odzaq6aj340b";
-
- /* `s3' has an empty label */
- const char *s3 = "a..b";
-
- r = idn_decodename(IDN_IDNCONV | IDN_RTCHECK, s1, to, sizeof(to));
- ASSERT_RESULT(r, idn_success);
- ASSERT_STRING(to, s1rev);
-
- r = idn_decodename(IDN_IDNCONV | IDN_RTCHECK, s2, to, sizeof(to));
- ASSERT_RESULT(r, idn_success);
- ASSERT_STRING(to, s2);
-
- r = idn_decodename(IDN_IDNCONV | IDN_RTCHECK, s3, to, sizeof(to));
- ASSERT_RESULT(r, idn_success);
- ASSERT_STRING(to, s3);
-}
-
-//# TESTCASE
-// title: rtcheck non-prohchecked label by decodename2()
-// group: generic-conversion
-{
-#ifdef WITHOUT_ICONV
- SKIP_TESTCASE;
-#else
- /* "xn--6ue" -> "U+1680" (prohibited character) */
- r = idn_decodename2(IDN_RTCHECK, "xn--6ue", to, sizeof(to),
- EUCJP_ENCODING_NAME);
- ASSERT_RESULT(r, idn_success);
- ASSERT_STRING(to, "xn--6ue");
-#endif
-}
-
-//# TESTCASE
-// title: rtcheck non-unaschecked label by decodename2()
-// group: generic-conversion
-{
-#ifdef WITHOUT_ICONV
- SKIP_TESTCASE;
-#else
- /* "xn--6la" -> "U+0221" (unassigned codepoint) */
- r = idn_decodename2(IDN_IDNCONV | IDN_RTCHECK | IDN_UNASCHECK,
- "xn--6la", to, sizeof(to), EUCJP_ENCODING_NAME);
- ASSERT_RESULT(r, idn_success);
- ASSERT_STRING(to, "xn--6la");
-#endif
-}
-
-//# TESTCASE
-// title: rtcheck non-ascchecked label by decodename2()
-// group: generic-conversion
-{
-#ifdef WITHOUT_ICONV
- SKIP_TESTCASE;
-#else
- /* "xn----x7t" -> "- U+3042" */
- r = idn_decodename2(IDN_IDNCONV | IDN_RTCHECK | IDN_ASCCHECK,
- "xn----x7t", to, sizeof(to), EUCJP_ENCODING_NAME);
-
- ASSERT_RESULT(r, idn_success);
- ASSERT_STRING(to, "xn----x7t");
-
- /* "xn----w7t" -> "U+3042 -" */
- r = idn_decodename2(IDN_IDNCONV | IDN_RTCHECK | IDN_ASCCHECK,
- "xn----w7t", to, sizeof(to), EUCJP_ENCODING_NAME);
- ASSERT_RESULT(r, idn_success);
- ASSERT_STRING(to, "xn----w7t");
-#endif
-}
-
-//# TESTCASE
-// title: rtcheck non-lenchecked label by decodename2()
-// group: generic-conversion
-{
-#ifdef WITHOUT_ICONV
- SKIP_TESTCASE;
-#else
- /* `s1' has 63 characters */
- const char *s1 =
- "xn--l8jaa5522a8sj38bzugvvblo3y90fjzgvxlmxscifws3d43odzaq6aj340b";
-
- const char *s1rev =
- "<U+9752><U+68EE><U+5CA9><U+624B><U+5BAE><U+57CE><U+79CB><U+7530>"
- "<U+5C71><U+5F62><U+798F><U+5CF6><U+6771><U+4EAC><U+795E><U+5948>"
- "<U+5DDD><U+3042><U+3042><U+3042>";
-
- /* `s2' has 64 characters */
- const char *s2 =
- "xn--a-w7ta6522a8sj38bzugvvblo3y90fjzgvxlmxscifws3d43odzaq6aj340b";
-
- /* `s3' has an empty label */
- const char *s3 = "a..b";
-
- r = idn_decodename2(IDN_IDNCONV | IDN_RTCHECK, s1, to, sizeof(to),
- EUCJP_ENCODING_NAME);
- ASSERT_RESULT(r, idn_success);
- ASSERT_STRING(to, s1rev);
-
- r = idn_decodename2(IDN_IDNCONV | IDN_RTCHECK, s2, to, sizeof(to),
- EUCJP_ENCODING_NAME);
- ASSERT_RESULT(r, idn_success);
- ASSERT_STRING(to, s2);
-
- r = idn_decodename(IDN_IDNCONV | IDN_RTCHECK, s3, to, sizeof(to));
- ASSERT_RESULT(r, idn_success);
- ASSERT_STRING(to, s3);
-#endif
-}
-
-//# TESTCASE
-// title: pass broken string as `from' to encodename()
-// group: generic-conversion quiet
-{
- /* "\xe3\x21" is not valid UTF-8 string */
- r = idn_encodename(IDN_ENCODE_APP, "\xe3\x21", to, sizeof(to));
- ASSERT_RESULT(r, idn_invalid_encoding);
-}
-
-//# TESTCASE
-// title: pass broken string as `from' to decodename()
-// group: generic-conversion quiet
-{
- /* "\xe3\x21" is not valid UTF-8 string */
- r = idn_decodename(IDN_DECODE_APP, "\xe3\x21", to, sizeof(to));
- ASSERT_RESULT(r, idn_invalid_encoding);
-}
-
-//# TESTCASE
-// title: pass broken string as `from' to decodename2()
-// group: generic-conversion quiet
-{
-#ifdef WITHOUT_ICONV
- SKIP_TESTCASE;
-#else
- /* "\xa4\x21" is not valid EUC-JP string */
- r = idn_decodename2(IDN_DECODE_APP, "\xa4\x21", to, sizeof(to),
- EUCJP_ENCODING_NAME);
- ASSERT_RESULT(r, idn_invalid_encoding);
-#endif
-}
+++ /dev/null
-#ifndef lint
-static char *rcsid = "$Id: checker.tsy,v 1.1 2003/06/04 00:26:51 marka Exp $";
-#endif
-
-/*
- * Copyright (c) 2002 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-#include <stddef.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <idn/checker.h>
-#include <idn/log.h>
-#include <idn/ucs4.h>
-#include "testutil.h"
-
-#define SIZEOFUCS4(x) (sizeof(x) / sizeof(unsigned long))
-
-#define UCS4_NAME_STR "U+304C" /* hiragana letter ga */
-#define UCS4_NAME 0x304C
-
-#define BUF_SIZE 128
-#define ARRAY_SIZE 9
-
-#define CONF_FILENAME "test.map"
-
-#define LINEBUF_SIZE 2001
-
-/*
- * Sample strings for `from' argument of normalize(),
- * and its expected outputs.
- */
-const unsigned long from[4] = {
- UCS4_NAME,
- 0x00A0, /* no-break space: prohibited character */
- 0x0221, /* unassigned character */
- 0x0000
-};
-
-
-#define FROM_UCS4NAME_OFFSET 0
-#define FROM_PROH_OFFSET 1
-#define FROM_UNAS_OFFSET 2
-
-const unsigned long from2[4] = {
- UCS4_NAME,
- 0x0221, /* unassigned character */
- 0x00A0, /* no-break space: prohibited character */
- 0x0000
-};
-
-#define FROM2_UCS4NAME_OFFSET 0
-#define FROM2_PROH_OFFSET 2
-#define FROM2_UNAS_OFFSET 1
-
-static const unsigned long bidi_from[4] = {
- 0x05BE, /* hebrew punctuation maqaf */
- 0x0041, /* latin capital letter a */
- 0xFEFC, /* arabic ligature lam with alef final form */
- 0x0000
-};
-#define BIDIFROM_OFFSET 1
-
-idn_result_t
-test_createproc(const char *parameter, void **ctxp)
-{
- return (idn_success);
-}
-
-void
-test_destroyproc(void *ctx)
-{
-}
-
-#define FOUNDPTR_OFFSET 2
-idn_result_t
-test_lookupproc(void *ctx, const unsigned long *ucs4,
- const unsigned long **found)
-{
- *found = ucs4 + FOUNDPTR_OFFSET;
- return (idn_success);
-}
-
-//--------------------------------------------------------------------
-// Setups and Teardowns.
-//--------------------------------------------------------------------
-
-//# SETUP
-// group: generic
-//--
-// Initialize the module and create context.
-{
- idn_result_t r;
- idn_checker_t ctx = NULL;
- char name[BUF_SIZE];
-
- r = idn_checker_initialize();
- ASSERT_RESULT(r, idn_success);
- r = idn_checker_create(&ctx);
- ASSERT_RESULT(r, idn_success);
-}
-
-//# TEARDOWN
-// group: generic
-//--
-// Destroy context.
-{
- if (ctx != NULL)
- idn_checker_destroy(ctx);
-}
-
-//# SETUP
-// group: lookup
-//--
-// Initialize the module and create context.
-{
- idn_result_t r;
- idn_checker_t ctx = NULL;
- char name[BUF_SIZE];
- const unsigned long *ptr;
-
- r = idn_checker_initialize();
- ASSERT_RESULT(r, idn_success);
- r = idn_checker_create(&ctx);
- ASSERT_RESULT(r, idn_success);
-}
-
-//# TEARDOWN
-// group: lookup
-//--
-// Destroy context.
-{
- if (ctx != NULL)
- idn_checker_destroy(ctx);
-}
-
-//# SETUP
-// group: addall
-//--
-// Initialize the module and create context.
-{
- idn_result_t r;
- idn_checker_t ctx = NULL;
- char *names[ARRAY_SIZE];
- int i;
- const unsigned long *ptr;
-
- for (i = 0; i < ARRAY_SIZE; i++) {
- names[i] = malloc(BUF_SIZE);
- if (names[i] == NULL) {
- ASSERT("malloc failed\n");
- }
- }
-
- r = idn_checker_initialize();
- ASSERT_RESULT(r, idn_success);
- r = idn_checker_create(&ctx);
- ASSERT_RESULT(r, idn_success);
-}
-
-//# TEARDOWN
-// group: addall
-//--
-// Destroy context and free some blocks.
-{
- if (ctx != NULL)
- idn_checker_destroy(ctx);
- for (i = 0; i < ARRAY_SIZE; i++) {
- free(names[i]);
- }
-}
-
-//# SETUP
-// group: quiet
-//--
-// Set log level to `fatal' to supress log messages.
-{
- int saved_log_level;
-
- saved_log_level = idn_log_getlevel();
- idn_log_setlevel(idn_log_level_fatal);
-}
-
-//# TEARDOWN
-// group: quiet
-//--
-// Restore log level.
-{
- idn_log_setlevel(saved_log_level);
-}
-
-//--------------------------------------------------------------------
-// Testcases.
-//--------------------------------------------------------------------
-
-//# TESTCASE
-// title: idn_checker_add() - boundary condition
-// group: generic quiet
-{
- r = idn_checker_add(ctx, "");
- ASSERT_RESULT(r, idn_invalid_name);
-}
-
-//# TESTCASE
-// title: idn_checker_add() - builtin schemes, prohibit
-// group: generic quiet
-{
- sprintf(name, "%s%s", IDN_CHECKER_PROHIBIT_PREFIX, "RFC3491");
- r = idn_checker_add(ctx, name);
- ASSERT_RESULT(r, idn_success);
-
- sprintf(name, "%s%s", IDN_CHECKER_PROHIBIT_PREFIX, "nameprep-01");
- r = idn_checker_add(ctx, name);
- ASSERT_RESULT(r, idn_invalid_name);
-}
-
-//# TESTCASE
-// title: idn_checker_add() - builtin schemes, unassigned
-// group: generic quiet
-{
- sprintf(name, "%s%s", IDN_CHECKER_UNASSIGNED_PREFIX, "RFC3491");
- r = idn_checker_add(ctx, name);
- ASSERT_RESULT(r, idn_success);
-
- sprintf(name, "%s%s", IDN_CHECKER_UNASSIGNED_PREFIX, "nameprep-01");
- r = idn_checker_add(ctx, name);
- ASSERT_RESULT(r, idn_invalid_name);
-}
-
-//# TESTCASE
-// title: idn_checker_add() - builtin schemes, bidi
-// group: generic quiet
-{
- sprintf(name, "%s%s", IDN_CHECKER_BIDI_PREFIX, "RFC3491");
- r = idn_checker_add(ctx, name);
- ASSERT_RESULT(r, idn_success);
-
- sprintf(name, "%s%s", IDN_CHECKER_BIDI_PREFIX, "nameprep-01");
- r = idn_checker_add(ctx, name);
- ASSERT_RESULT(r, idn_invalid_name);
-}
-
-//# TESTCASE
-// title: idn_checker_add() - file - boundary condition
-// group: generic quiet
-{
- sprintf(name, "%sfileset:%s", IDN_CHECKER_UNASSIGNED_PREFIX, "");
- r = idn_checker_add(ctx, name);
- ASSERT_RESULT(r, idn_nofile);
- sprintf(name, "%sfileset:%s", IDN_CHECKER_PROHIBIT_PREFIX, "");
- r = idn_checker_add(ctx, name);
- ASSERT_RESULT(r, idn_nofile);
- sprintf(name, "%sfileset:%s", IDN_CHECKER_BIDI_PREFIX, "");
- r = idn_checker_add(ctx, name);
- ASSERT_RESULT(r, idn_invalid_name);
-}
-
-//# TESTCASE
-// title: idn_checker_add() - file - long line
-// group: generic quiet
-{
- char line[LINEBUF_SIZE];
- const char *first_entry = "304C;";
- const char *other_entry = " 304D";
- int i;
- int len;
-
- memcpy(line, first_entry, strlen(first_entry));
- len = strlen(other_entry);
- for (i = len; i < LINEBUF_SIZE - len; i += len) {
- memcpy(line + i, other_entry, len);
- }
- *(line + i) = '\0';
-
- create_conf_file(CONF_FILENAME, 0, line, NULL);
- sprintf(name, "%sfileset:%s", IDN_CHECKER_UNASSIGNED_PREFIX,
- CONF_FILENAME);
- r = idn_checker_add(ctx, name);
- ASSERT_RESULT(r, idn_invalid_syntax);
- sprintf(name, "%sfileset:%s", IDN_CHECKER_PROHIBIT_PREFIX,
- CONF_FILENAME);
- r = idn_checker_add(ctx, name);
- ASSERT_RESULT(r, idn_invalid_syntax);
-}
-
-//# TESTCASE
-// title: idn_checker_add() - file, prohibit
-// group: lookup
-{
- create_conf_file(CONF_FILENAME, 0,
- UCS4_NAME_STR,
- NULL);
- sprintf(name, "%sfileset:%s", IDN_CHECKER_PROHIBIT_PREFIX,
- CONF_FILENAME);
- r = idn_checker_add(ctx, name);
- ASSERT_RESULT(r, idn_success);
- r = idn_checker_lookup(ctx, from, &ptr);
- ASSERT_RESULT(r, idn_success);
- ASSERT_PTR(ptr, from + FROM_UCS4NAME_OFFSET);
- r = idn_checker_lookup(ctx, from2, &ptr);
- ASSERT_RESULT(r, idn_success);
- ASSERT_PTR(ptr, from2 + FROM2_UCS4NAME_OFFSET);
-}
-
-//# TESTCASE
-// title: idn_checker_add() - file, unassigned
-// group: lookup
-{
- create_conf_file(CONF_FILENAME, 0,
- UCS4_NAME_STR,
- NULL);
- sprintf(name, "%sfileset:%s", IDN_CHECKER_UNASSIGNED_PREFIX,
- CONF_FILENAME);
- r = idn_checker_add(ctx, name);
- ASSERT_RESULT(r, idn_success);
- r = idn_checker_lookup(ctx, from, &ptr);
- ASSERT_RESULT(r, idn_success);
- ASSERT_PTR(ptr, from + FROM_UCS4NAME_OFFSET);
- r = idn_checker_lookup(ctx, from2, &ptr);
- ASSERT_RESULT(r, idn_success);
- ASSERT_PTR(ptr, from2 + FROM2_UCS4NAME_OFFSET);
-}
-
-//# TESTCASE
-// title: idn_checker_add() - file, bidi
-// group: lookup quiet
-{
- create_conf_file(CONF_FILENAME, 0,
- UCS4_NAME_STR,
- NULL);
- sprintf(name, "%sfileset:%s", IDN_CHECKER_BIDI_PREFIX,
- CONF_FILENAME);
- r = idn_checker_add(ctx, name);
- ASSERT_RESULT(r, idn_invalid_name);
-}
-
-//# TESTCASE
-// title: idn_checker_addall() - boundary condition - scheme name
-// group: addall quiet
-{
- sprintf(names[0], "%s%s", IDN_CHECKER_PROHIBIT_PREFIX, "RFC3491");
- sprintf(names[1], "%s%s", IDN_CHECKER_UNASSIGNED_PREFIX, "RFC3491");
- sprintf(names[2], "%s%s", IDN_CHECKER_BIDI_PREFIX, "RFC3491");
- sprintf(names[3], "%s%s", IDN_CHECKER_BIDI_PREFIX, "");
- r = idn_checker_addall(ctx, (const char **)names, 4);
- ASSERT_RESULT(r, idn_invalid_name);
-}
-
-//# TESTCASE
-// title: idn_checker_addall() - boundary condition - nschemes = 0
-// group: addall quiet
-{
- sprintf(names[0], "%s%s", IDN_CHECKER_PROHIBIT_PREFIX, "nameprep-01");
- sprintf(names[1], "%s%s", IDN_CHECKER_UNASSIGNED_PREFIX, "nameprep-01");
- sprintf(names[2], "%s%s", IDN_CHECKER_BIDI_PREFIX, "");
- sprintf(names[3], "%s%s", IDN_CHECKER_BIDI_PREFIX, "nameprep-01");
- r = idn_checker_addall(ctx, (const char **)names, 0);
- ASSERT_RESULT(r, idn_success);
- r = idn_checker_lookup(ctx, from, &ptr);
- ASSERT_RESULT(r, idn_success);
- ASSERT_PTR(ptr, NULL);
-}
-
-//# TESTCASE
-// title: idn_checker_addall() - add a lot of schemes #1
-// group: addall
-{
- sprintf(names[0], "%s%s", IDN_CHECKER_PROHIBIT_PREFIX, "RFC3491");
- sprintf(names[1], "%s%s", IDN_CHECKER_UNASSIGNED_PREFIX, "RFC3491");
- sprintf(names[2], "%s%s", IDN_CHECKER_BIDI_PREFIX, "RFC3491");
- sprintf(names[3], "%s%s", IDN_CHECKER_PROHIBIT_PREFIX, "RFC3491");
- sprintf(names[4], "%s%s", IDN_CHECKER_UNASSIGNED_PREFIX, "RFC3491");
- sprintf(names[5], "%s%s", IDN_CHECKER_BIDI_PREFIX, "RFC3491");
- sprintf(names[6], "%s%s", IDN_CHECKER_PROHIBIT_PREFIX, "RFC3491");
- sprintf(names[7], "%s%s", IDN_CHECKER_UNASSIGNED_PREFIX, "RFC3491");
- sprintf(names[8], "%s%s", IDN_CHECKER_BIDI_PREFIX, "RFC3491");
-
- r = idn_checker_addall(ctx, (const char **)names, 9);
- ASSERT_RESULT(r, idn_success);
-
- r = idn_checker_lookup(ctx, from, &ptr);
- ASSERT_RESULT(r, idn_success);
- ASSERT_PTR(ptr, from + FROM_PROH_OFFSET);
-
- r = idn_checker_lookup(ctx, from2, &ptr);
- ASSERT_RESULT(r, idn_success);
- ASSERT_PTR(ptr, from2 + FROM2_PROH_OFFSET);
-
- r = idn_checker_lookup(ctx, bidi_from, &ptr);
- ASSERT_RESULT(r, idn_success);
- ASSERT_PTR(ptr, bidi_from + BIDIFROM_OFFSET);
-}
-
-//# TESTCASE
-// title: idn_checker_addall() - add a lot of schemes #2
-// group: addall
-{
- sprintf(names[0], "%s%s", IDN_CHECKER_BIDI_PREFIX, "RFC3491");
- sprintf(names[1], "%s%s", IDN_CHECKER_UNASSIGNED_PREFIX, "RFC3491");
- sprintf(names[2], "%s%s", IDN_CHECKER_PROHIBIT_PREFIX, "RFC3491");
- sprintf(names[3], "%s%s", IDN_CHECKER_BIDI_PREFIX, "RFC3491");
- sprintf(names[4], "%s%s", IDN_CHECKER_UNASSIGNED_PREFIX, "RFC3491");
- sprintf(names[5], "%s%s", IDN_CHECKER_PROHIBIT_PREFIX, "RFC3491");
- sprintf(names[6], "%s%s", IDN_CHECKER_BIDI_PREFIX, "RFC3491");
- sprintf(names[7], "%s%s", IDN_CHECKER_UNASSIGNED_PREFIX, "RFC3491");
- sprintf(names[8], "%s%s", IDN_CHECKER_PROHIBIT_PREFIX, "RFC3491");
-
- r = idn_checker_addall(ctx, (const char **)names, 9);
- ASSERT_RESULT(r, idn_success);
-
- r = idn_checker_lookup(ctx, from, &ptr);
- ASSERT_RESULT(r, idn_success);
- ASSERT_PTR(ptr, from + FROM_UNAS_OFFSET);
-
- r = idn_checker_lookup(ctx, from2, &ptr);
- ASSERT_RESULT(r, idn_success);
- ASSERT_PTR(ptr, from2 + FROM2_UNAS_OFFSET);
-
- r = idn_checker_lookup(ctx, bidi_from, &ptr);
- ASSERT_RESULT(r, idn_success);
- ASSERT_PTR(ptr, bidi_from + BIDIFROM_OFFSET);
-}
-
-//# TESTCASE
-// title: idn_checker_addall() - add same scheme repetedly
-// group: addall
-{
- int i;
-
- sprintf(names[0], "%s%s", IDN_CHECKER_PROHIBIT_PREFIX, "RFC3491");
- for (i = 1; i < ARRAY_SIZE; i++) {
- strcpy(names[i], names[0]);
- }
- r = idn_checker_addall(ctx, (const char **)names, ARRAY_SIZE);
- ASSERT_RESULT(r, idn_success);
-
- r = idn_checker_lookup(ctx, from, &ptr);
- ASSERT_RESULT(r, idn_success);
- ASSERT_PTR(ptr, from + FROM_PROH_OFFSET);
-
- r = idn_checker_lookup(ctx, from2, &ptr);
- ASSERT_RESULT(r, idn_success);
- ASSERT_PTR(ptr, from2 + FROM2_PROH_OFFSET);
-}
-
-//# TESTCASE
-// title: idn_checker_lookup() - builtin schemes - RFC3491 prohibit
-// group: lookup
-{
- sprintf(name, "%s%s", IDN_CHECKER_PROHIBIT_PREFIX, "RFC3491");
-
- r = idn_checker_add(ctx, name);
- ASSERT_RESULT(r, idn_success);
-
- r = idn_checker_lookup(ctx, from, &ptr);
- ASSERT_RESULT(r, idn_success);
- ASSERT_PTR(ptr, from + FROM_PROH_OFFSET);
-
- r = idn_checker_lookup(ctx, from2, &ptr);
- ASSERT_RESULT(r, idn_success);
- ASSERT_PTR(ptr, from2 + FROM2_PROH_OFFSET);
-}
-
-//# TESTCASE
-// title: idn_checker_lookup() - builtin schemes - RFC3491 unassigned
-// group: lookup
-{
- sprintf(name, "%s%s", IDN_CHECKER_UNASSIGNED_PREFIX, "RFC3491");
-
- r = idn_checker_add(ctx, name);
- ASSERT_RESULT(r, idn_success);
-
- r = idn_checker_lookup(ctx, from, &ptr);
- ASSERT_RESULT(r, idn_success);
- ASSERT_PTR(ptr, from + FROM_UNAS_OFFSET);
-
- r = idn_checker_lookup(ctx, from2, &ptr);
- ASSERT_RESULT(r, idn_success);
- ASSERT_PTR(ptr, from2 + FROM2_UNAS_OFFSET);
-}
-
-//# TESTCASE
-// title: idn_checker_lookup() - builtin schemes - RFC3491 bidi
-// group: lookup
-{
- sprintf(name, "%s%s", IDN_CHECKER_BIDI_PREFIX, "RFC3491");
-
- r = idn_checker_add(ctx, name);
- ASSERT_RESULT(r, idn_success);
-
- r = idn_checker_lookup(ctx, bidi_from, &ptr);
- ASSERT_RESULT(r, idn_success);
- ASSERT_PTR(ptr, bidi_from + BIDIFROM_OFFSET);
-
- r = idn_checker_lookup(ctx, from, &ptr);
- ASSERT_RESULT(r, idn_success);
- ASSERT_PTR(ptr, NULL);
-
- r = idn_checker_lookup(ctx, from2, &ptr);
- ASSERT_RESULT(r, idn_success);
- ASSERT_PTR(ptr, NULL);
-}
-
-//# TESTCASE
-// title: idn_checker_lookup() - context without procedure
-// group: lookup
-{
- r = idn_checker_lookup(ctx, from, &ptr);
- ASSERT_RESULT(r, idn_success);
- ASSERT_PTR(ptr, NULL);
-}
-
-//# TESTCASE
-// title: idn_checker_lookup() - string in ascii
-// group: lookup
-{
- char *ascii_str = "test";
- unsigned long ucs4_str[5];
-
- r = idn_ucs4_utf8toucs4(ascii_str, ucs4_str, SIZEOFUCS4(ucs4_str));
-
- sprintf(name, "%s%s", IDN_CHECKER_PROHIBIT_PREFIX, "RFC3491");
- r = idn_checker_add(ctx, name);
- ASSERT_RESULT(r, idn_success);
- sprintf(name, "%s%s", IDN_CHECKER_UNASSIGNED_PREFIX, "RFC3491");
- r = idn_checker_add(ctx, name);
- ASSERT_RESULT(r, idn_success);
- sprintf(name, "%s%s", IDN_CHECKER_BIDI_PREFIX, "RFC3491");
- r = idn_checker_add(ctx, name);
- ASSERT_RESULT(r, idn_success);
- r = idn_checker_lookup(ctx, ucs4_str, &ptr);
- ASSERT_RESULT(r, idn_success);
- ASSERT_PTR(ptr, NULL);
-}
-
-//# TESTCASE
-// title: idn_checker_destroy(), idn_checker_incrref()
-// group:
-{
- idn_result_t r;
- idn_checker_t ctx = NULL;
-
- r = idn_checker_initialize();
- ASSERT_RESULT(r, idn_success);
- r = idn_checker_create(&ctx);
- ASSERT_RESULT(r, idn_success);
- idn_checker_incrref(ctx);
- idn_checker_destroy(ctx);
- idn_checker_destroy(ctx);
-}
-
-//# TESTCASE
-// title: idn_checker_register()
-// group: generic
-{
- const unsigned long *ptr = NULL;
-
- r = idn_checker_register("test",
- test_createproc,
- test_destroyproc,
- test_lookupproc);
- ASSERT_RESULT(r, idn_success);
-
- r = idn_checker_add(ctx, "test");
- ASSERT_RESULT(r, idn_success);
-
- r = idn_checker_lookup(ctx, from, &ptr);
- ASSERT_RESULT(r, idn_success);
- ASSERT_PTR(ptr, from + FOUNDPTR_OFFSET);
-}
+++ /dev/null
-/* $Id: codeset.h,v 1.1 2003/06/04 00:26:51 marka Exp $ */
-/*
- * Copyright (c) 2002 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-#ifndef CODESET_H
-#define CODESET_H
-
-/*
- * Character encoding name that iconv() recognizes as Japanese EUC.
- *
- * Please edit the cpp macro definition if iconv() on the system doesn't
- * recognize "EUC-JP".
- *
- * NOTE:
- * Konstantin Chuguev's iconv-2.0 doesn't accept "eucJP", but "euc-jp".
- */
-#define EUCJP_ENCODING_NAME "eucJP"
-
-
-/*
- * Character encoding name that iconv() recognizes as Japanese Shift JIS.
- *
- * Please edit the cpp macro definition if iconv() on the system doesn't
- * recognize "SJIS".
- *
- * NOTE:
- * Konstantin Chuguev's iconv-2.0 doesn't accept "SJIS", but "Shift_JIS".
- */
-#define SJIS_ENCODING_NAME "SJIS"
-
-#endif /* CODESET_H */
+++ /dev/null
-#ifndef lint
-static char *rcsid = "$Id: converter.tsy,v 1.1 2003/06/04 00:26:53 marka Exp $";
-#endif
-
-/*
- * Copyright (c) 2002 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-#include <stddef.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <idn/converter.h>
-#include <idn/log.h>
-
-#include "codeset.h"
-#include "testutil.h"
-
-
-#ifndef IDN_PUNYCODE_ENCODING_NAME
-#define IDN_PUNYCODE_ENCODING_NAME "Punycode"
-#endif
-
-#ifndef IDN_UTF8_ENCODING_NAME
-#define IDN_UTF8_ENCODING_NAME "UTF-8" /* by IANA */
-#endif
-
-#ifndef EUCJP_ENCODING_NAME
-#define EUCJP_ENCODING_NAME "eucJP"
-#endif
-
-#ifndef SJIS_ENCODING_NAME
-#define SJIS_ENCODING_NAME "SJIS"
-#endif
-
-#define CONF_FILENAME "testalias.conf"
-#define LINEBUF_SIZE 2001
-
-#define SIZEOFUCS4(x) (sizeof(x) / sizeof(unsigned long))
-
-/*
- * U+1820: mongorian letter a
- */
-#define UCS4_INVALID_NAME_FOR_EUCJP 0x1820
-
-/*
- * A4AC: hiragana letter GA (in EUC-JP)
- */
-#define EUCJP_NAME "\xa4\xac"
-#define EUCJP_NAME_SIZE 3
-
-/*
- * U+304C: hiragana letter GA
- */
-#define UCS4_NAME 0x304C
-
-/*
- * Conversion result of "U+304C"
- */
-#define PUNYCODE_NAME "xn--v8j"
-#define PUNYCODE_NAME_SIZE 8
-
-#define BUF_SIZE 128
-
-idn_result_t
-idn_test_encode(idn_converter_t ctx, void *privdata,
- const unsigned long *from, char *to, size_t tolen)
-{
- idn_result_t r;
-
- if (tolen >= EUCJP_NAME_SIZE) {
- strcpy(to, EUCJP_NAME);
- r = idn_success;
- } else {
- r = idn_buffer_overflow;
- }
- return (r);
-
-}
-
-idn_result_t
-idn_test_decode(idn_converter_t ctx, void *privdata,
- const char *from, unsigned long *to, size_t tolen)
-{
- idn_result_t r;
-
- if (tolen >= 2) {
- to[0] = UCS4_NAME;
- to[1] = 0x0000;
- r = idn_success;
- } else {
- r = idn_buffer_overflow;
- }
- return (r);
-}
-
-
-//--------------------------------------------------------------------
-// Setups and Teardowns.
-//--------------------------------------------------------------------
-
-//# SETUP
-// group: noinit
-//--
-// Do nothing
-{
- idn_result_t r;
-}
-
-//# SETUP
-// group: generic
-//--
-// Initialize the module.
-{
- idn_result_t r;
- idn_converter_t ctx = NULL;
- const char *name;
-
- r = idn_converter_initialize();
- ASSERT_RESULT(r, idn_success);
- r = idn_converter_resetalias();
- ASSERT_RESULT(r, idn_success);
-}
-
-//# SETUP
-// group: localencoding
-//--
-// Initialize the module and load alias file.
-{
- idn_result_t r;
- idn_converter_t ctx = NULL;
- const char *name;
-
- r = idn_converter_initialize();
- ASSERT_RESULT(r, idn_success);
- r = idn_converter_resetalias();
- ASSERT_RESULT(r, idn_success);
- create_conf_file(CONF_FILENAME, 0,
- "*.KOI8-R KOI8-R",
- "*.ISO_8859-1 ISO-8859-1",
- "*.ISO_8859-2 ISO-8859-1",
- "*.UTF-8 UTF-8",
- "ja_JP.EUC eucJP",
- "japanese eucJP",
- NULL);
- r = idn_converter_aliasfile(CONF_FILENAME);
- ASSERT_RESULT(r, idn_success);
-}
-
-//# TEARDOWN
-// group: localencoding
-//--
-// reset alias information.
-{
- idn_converter_resetalias();
-}
-
-//# SETUP
-// group: conversion
-//--
-// Initialize the module and create contexts.
-{
- idn_result_t r;
- idn_converter_t punycode_ctx = NULL;
- idn_converter_t utf8_ctx = NULL;
-#ifndef WITHOUT_ICONV
- idn_converter_t eucjp_ctx = NULL;
-#endif
-
- r = idn_converter_initialize();
- ASSERT_RESULT(r, idn_success);
- r = idn_converter_create(IDN_PUNYCODE_ENCODING_NAME, &punycode_ctx,
- 0);
- ASSERT_RESULT(r, idn_success);
- r = idn_converter_create(IDN_UTF8_ENCODING_NAME, &utf8_ctx,
- IDN_CONVERTER_DELAYEDOPEN);
- ASSERT_RESULT(r, idn_success);
-#ifndef WITHOUT_ICONV
- r = idn_converter_create(EUCJP_ENCODING_NAME, &eucjp_ctx,
- IDN_CONVERTER_DELAYEDOPEN);
- ASSERT_RESULT(r, idn_success);
-#endif
-}
-
-//# TEARDOWN
-// group: conversion
-//--
-// Destroy contexts.
-{
- if (punycode_ctx != NULL) {
- idn_converter_destroy(punycode_ctx);
- }
- if (utf8_ctx != NULL) {
- idn_converter_destroy(utf8_ctx);
- }
-#ifndef WITHOUT_ICONV
- if (eucjp_ctx != NULL) {
- idn_converter_destroy(eucjp_ctx);
- }
-#endif
-}
-
-//# SETUP
-// group: quiet
-//--
-// Set log level to `fatal' to supress log messages.
-{
- int saved_log_level;
-
- saved_log_level = idn_log_getlevel();
- idn_log_setlevel(idn_log_level_fatal);
-}
-
-//# TEARDOWN
-// group: quiet
-//--
-// Restore log level.
-{
- idn_log_setlevel(saved_log_level);
-}
-
-//--------------------------------------------------------------------
-// Testcases.
-//--------------------------------------------------------------------
-
-//# TESTCASE
-// title: idn_converter_addalias() test - without initialization
-// group: noinit quiet
-{
- r = idn_converter_addalias("a", "b", 0);
- ASSERT_RESULT(r, idn_failure);
-}
-
-//# TESTCASE
-// title: idn_converter_aliasfile() - without initialization
-// group: noinit quiet
-{
- r = idn_converter_aliasfile("a");
- ASSERT_RESULT(r, idn_failure);
-}
-
-//# TESTCASE
-// title: idn_converter_resetalias() - without initialization
-// group: noinit quiet
-{
- r = idn_converter_resetalias();
- ASSERT_RESULT(r, idn_failure);
-}
-
-//# TESTCASE
-// title: idn_converter_getrealname() - without initialization
-// group: noinit quiet
-{
- const char *name;
-
- name = idn_converter_getrealname("test");
- ASSERT_STRING(name, "test");
-}
-
-//# TESTCASE
-// title: idn_converter_create()
-// group: generic quiet
-{
-#ifdef WITHOUT_ICONV
- r = idn_converter_addalias("*pc", "Punycode", 0);
- ASSERT_RESULT(r, idn_success);
- r = idn_converter_addalias("*ej", EUCJP_ENCODING_NAME, 0);
- ASSERT_RESULT(r, idn_success);
- r = idn_converter_addalias("*sj", SJIS_ENCODING_NAME, 0);
- ASSERT_RESULT(r, idn_success);
-
- r = idn_converter_create("abcsj", &ctx, 0);
- ASSERT_RESULT(r, idn_invalid_name);
-
- r = idn_converter_create("notresolved", &ctx, 0);
- ASSERT_RESULT(r, idn_invalid_name);
- r = idn_converter_create("notresolved", &ctx,
- IDN_CONVERTER_DELAYEDOPEN);
- ASSERT_RESULT(r, idn_invalid_name);
-#else
- r = idn_converter_addalias("*pc", IDN_PUNYCODE_ENCODING_NAME, 0);
- ASSERT_RESULT(r, idn_success);
- r = idn_converter_addalias("*ej", EUCJP_ENCODING_NAME, 0);
- ASSERT_RESULT(r, idn_success);
- r = idn_converter_addalias("*sj", SJIS_ENCODING_NAME, 0);
- ASSERT_RESULT(r, idn_success);
-
- r = idn_converter_create("abcsj", &ctx, 0);
- ASSERT_RESULT(r, idn_success);
- idn_converter_destroy(ctx);
-
- r = idn_converter_create("notresolved", &ctx, 0);
- ASSERT_RESULT(r, idn_invalid_name);
- r = idn_converter_create("notresolved", &ctx,
- IDN_CONVERTER_DELAYEDOPEN);
- ASSERT_RESULT(r, idn_success);
- {
- unsigned long ucs4_to[BUF_SIZE];
-
- r = idn_converter_convtoucs4(ctx, "a", ucs4_to, BUF_SIZE);
- ASSERT_RESULT(r, idn_invalid_name);
- idn_converter_destroy(ctx);
- }
-#endif /* WITHOUT_ICONV */
-}
-
-//# TESTCASE
-// title: idn_converter_addalias() - #1
-// group: generic
-{
- r = idn_converter_addalias("test", "result-a", 0);
- ASSERT_RESULT(r, idn_success);
- name = idn_converter_getrealname("test");
- ASSERT_STRING(name, "result-a");
-}
-
-//# TESTCASE
-// title: idn_converter_addalias() - #2
-// group: generic
-{
- r = idn_converter_addalias("test", "result-b", 1);
- ASSERT_RESULT(r, idn_success);
- name = idn_converter_getrealname("test");
- ASSERT_STRING(name, "result-b");
-}
-
-//# TESTCASE
-// title: idn_converter_addalias() - #3
-// group: generic
-{
- r = idn_converter_addalias("test", "result-a", 0);
- ASSERT_RESULT(r, idn_success);
- r = idn_converter_addalias("test", "result-b", 0);
- ASSERT_RESULT(r, idn_success);
- name = idn_converter_getrealname("test");
- ASSERT_STRING(name, "result-a");
-}
-
-//# TESTCASE
-// title: idn_converter_addalias() - #4
-// group: generic
-{
- r = idn_converter_addalias("test", "result-a", 0);
- ASSERT_RESULT(r, idn_success);
- r = idn_converter_addalias("test", "result-b", 1);
- ASSERT_RESULT(r, idn_success);
- name = idn_converter_getrealname("test");
- ASSERT_STRING(name, "result-b");
-}
-
-//# TESTCASE
-// title: idn_converter_addalias() - #5
-// group: generic
-{
- r = idn_converter_addalias("test", "result-a", 0);
- ASSERT_RESULT(r, idn_success);
- r = idn_converter_addalias("test", "result-b", 0);
- ASSERT_RESULT(r, idn_success);
- r = idn_converter_addalias("test", "result-c", 0);
- ASSERT_RESULT(r, idn_success);
- r = idn_converter_addalias("test", "result-d", 0);
- ASSERT_RESULT(r, idn_success);
- r = idn_converter_addalias("test", "result-e", 0);
- ASSERT_RESULT(r, idn_success);
- r = idn_converter_addalias("test", "result-f", 0);
- ASSERT_RESULT(r, idn_success);
- r = idn_converter_addalias("test", "result-g", 0);
- ASSERT_RESULT(r, idn_success);
- r = idn_converter_addalias("test", "result-h", 0);
- ASSERT_RESULT(r, idn_success);
- r = idn_converter_addalias("test", "result-i", 0);
- ASSERT_RESULT(r, idn_success);
- name = idn_converter_getrealname("test");
- ASSERT_STRING(name, "result-a");
-}
-
-//# TESTCASE
-// title: idn_converter_addalias() - #6
-// group: generic
-{
- r = idn_converter_addalias("test", "result-a", 0);
- ASSERT_RESULT(r, idn_success);
- r = idn_converter_addalias("test", "result-b", 0);
- ASSERT_RESULT(r, idn_success);
- r = idn_converter_addalias("test", "result-c", 0);
- ASSERT_RESULT(r, idn_success);
- r = idn_converter_addalias("test", "result-d", 0);
- ASSERT_RESULT(r, idn_success);
- r = idn_converter_addalias("test", "result-e", 0);
- ASSERT_RESULT(r, idn_success);
- r = idn_converter_addalias("test", "result-f", 0);
- ASSERT_RESULT(r, idn_success);
- r = idn_converter_addalias("test", "result-g", 0);
- ASSERT_RESULT(r, idn_success);
- r = idn_converter_addalias("test", "result-h", 0);
- ASSERT_RESULT(r, idn_success);
- r = idn_converter_addalias("test", "result-i", 1);
- ASSERT_RESULT(r, idn_success);
- name = idn_converter_getrealname("test");
- ASSERT_STRING(name, "result-i");
-}
-
-//# TESTCASE
-// title: idn_converter_addalias() - null character
-// group: generic
-{
- r = idn_converter_addalias("", "result", 0);
- ASSERT_RESULT(r, idn_invalid_syntax);
- r = idn_converter_addalias("test", "", 0);
- ASSERT_RESULT(r, idn_invalid_syntax);
- r = idn_converter_addalias("", "", 0);
- ASSERT_RESULT(r, idn_invalid_syntax);
-}
-
-//# TESTCASE
-// title: idn_converter_resetalias() - no alias added
-// group: generic
-{
- r = idn_converter_resetalias();
- ASSERT_RESULT(r, idn_success);
- name = idn_converter_getrealname("test");
- ASSERT_STRING(name, "test");
-
-}
-
-//# TESTCASE
-// title: idn_converter_resetalias() - one alias added
-// group: generic
-{
- r = idn_converter_addalias("test", "result-a", 0);
- ASSERT_RESULT(r, idn_success);
- r = idn_converter_resetalias();
- ASSERT_RESULT(r, idn_success);
- name = idn_converter_getrealname("test");
- ASSERT_STRING(name, "test");
-
-}
-
-//# TESTCASE
-// title: idn_converter_resetalias() - many aliases added
-// group: generic
-{
- r = idn_converter_addalias("test", "result-a", 1);
- ASSERT_RESULT(r, idn_success);
- r = idn_converter_addalias("test", "result-b", 1);
- ASSERT_RESULT(r, idn_success);
- r = idn_converter_addalias("test", "result-c", 0);
- ASSERT_RESULT(r, idn_success);
- r = idn_converter_addalias("test", "result-d", 1);
- ASSERT_RESULT(r, idn_success);
- r = idn_converter_addalias("test", "result-e", 1);
- ASSERT_RESULT(r, idn_success);
- r = idn_converter_addalias("test", "result-f", 1);
- ASSERT_RESULT(r, idn_success);
- r = idn_converter_addalias("test", "result-g", 0);
- ASSERT_RESULT(r, idn_success);
- r = idn_converter_addalias("test", "result-h", 0);
- ASSERT_RESULT(r, idn_success);
- r = idn_converter_addalias("test", "result-i", 1);
- ASSERT_RESULT(r, idn_success);
- r = idn_converter_resetalias();
- ASSERT_RESULT(r, idn_success);
- name = idn_converter_getrealname("test");
- ASSERT_STRING(name, "test");
-}
-
-//# TESTCASE
-// title: idn_converter_aliasfile() - boundary condition
-// group: generic quiet
-{
- r = idn_converter_aliasfile("");
- ASSERT_RESULT(r, idn_nofile);
-
- r = idn_converter_aliasfile("idnalias-not-found.conf");
- ASSERT_RESULT(r, idn_nofile);
-}
-
-//# TESTCASE
-// title: idn_converter_aliasfile() - long line
-// group: generic quiet
-{
- char line[LINEBUF_SIZE];
- const char *entry = "aaaaaaaaaa";
- int i;
- int len;
-
- len = strlen(entry);
- for (i = 0; i < LINEBUF_SIZE - len; i += len) {
- memcpy(line + i, entry, len);
- }
- *(line + (LINEBUF_SIZE / 2)) = ' ';
- *(line + i) = '\0';
- create_conf_file(CONF_FILENAME, 0, line, NULL);
- r = idn_converter_aliasfile(CONF_FILENAME);
- ASSERT_RESULT(r, idn_invalid_syntax);
-}
-
-//# TESTCASE
-// title: idn_converter_aliasfile() - no new line at end of file
-// group: generic quiet
-{
- create_conf_file(CONF_FILENAME, CONF_NO_EOF_NEWLINE,
- "*.ISO_8859-1 ISO-8859-1",
- "*.ISO_8859-2 ISO-8859-1",
- "*.SJIS Shift_JIS",
- "*.Shift_JIS Shift_JIS",
- "ja_JP.EUC eucJP",
- "japanese eucJP",
- NULL);
- r = idn_converter_aliasfile(CONF_FILENAME);
- ASSERT_RESULT(r, idn_success);
- name = idn_converter_getrealname("japanese");
- ASSERT_STRING(name, "eucJP");
-
-}
-
-//# TESTCASE
-// title: idn_converter_aliasfile() - invalid entries
-// group: generic quiet
-{
- create_conf_file(CONF_FILENAME, 0,
- "*.ISO_8859-1 ISO-8859-1",
- "*.ISO_8859-2 ISO-8859-1",
- "*.SJIS",
- "*.Shift_JIS",
- "ja_JP.EUC eucJP",
- "japanese eucJP",
- NULL);
- r = idn_converter_aliasfile(CONF_FILENAME);
- ASSERT_RESULT(r, idn_invalid_syntax);
-}
-
-//# TESTCASE
-// title: idn_converter_aliasfile() - more then two items in one line
-// group: generic quiet
-{
- create_conf_file(CONF_FILENAME, 0,
- "*.ISO_8859-1 ISO-8859-1",
- "*.ISO_8859-2 ISO-8859-1",
- "*.SJIS Shift_JIS ko_KR.EUC",
- "*.Shift_JIS Shift_JIS",
- "*.big5 Big5 *.big5 *.big5",
- "ja_JP.EUC eucJP",
- "japanese eucJP",
- NULL);
- r = idn_converter_aliasfile(CONF_FILENAME);
- ASSERT_RESULT(r, idn_success);
- name = idn_converter_getrealname("japanese");
- ASSERT_STRING(name, "eucJP");
-}
-
-//# TESTCASE
-// title: idn_converter_localencoding() - #1
-// group: localencoding
-{
- r = idn_converter_create("test.UTF-8", &ctx,
- IDN_CONVERTER_DELAYEDOPEN);
- ASSERT_RESULT(r, idn_success);
- name = idn_converter_localencoding(ctx);
- ASSERT_STRING(name, "UTF-8");
- idn_converter_destroy(ctx);
-}
-
-//# TESTCASE
-// title: idn_converter_localencoding() - #2
-// group: localencoding
-{
- r = idn_converter_create("test.KOI8-R", &ctx,
- IDN_CONVERTER_DELAYEDOPEN);
-#ifdef WITHOUT_ICONV
- ASSERT_RESULT(r, idn_invalid_name);
-#else
- ASSERT_RESULT(r, idn_success);
- name = idn_converter_localencoding(ctx);
- ASSERT_STRING(name, "KOI8-R");
- idn_converter_destroy(ctx);
-#endif
-}
-
-//# TESTCASE
-// title: idn_converter_localencoding() - #3
-// group: localencoding
-{
- r = idn_converter_create("unresolvedname", &ctx,
- IDN_CONVERTER_DELAYEDOPEN);
-#ifdef WITHOUT_ICONV
- ASSERT_RESULT(r, idn_invalid_name);
-#else
- ASSERT_RESULT(r, idn_success);
- name = idn_converter_localencoding(ctx);
- ASSERT_STRING(name, "unresolvedname");
- idn_converter_destroy(ctx);
-#endif
-}
-
-//# TESTCASE
-// title: idn_converter_encodingtype()
-// group: conversion
-{
- ASSERT_INT(idn_converter_encodingtype(punycode_ctx),
- IDN_ACE_STRICTCASE);
- ASSERT_INT(idn_converter_encodingtype(utf8_ctx),
- IDN_NONACE);
-#ifndef WITHOUT_ICONV
- ASSERT_INT(idn_converter_encodingtype(eucjp_ctx),
- IDN_NONACE);
-#endif
-}
-
-//# TESTCASE
-// title: idn_converter_isasciicompatible()
-// group: conversion
-{
- ASSERT_INT(idn_converter_isasciicompatible(punycode_ctx), 1);
- ASSERT_INT(idn_converter_isasciicompatible(utf8_ctx), 0);
-#ifndef WITHOUT_ICONV
- ASSERT_INT(idn_converter_isasciicompatible(eucjp_ctx), 0);
-#endif
-}
-
-//# TESTCASE
-// title: idn_converter_convfromucs4()
-// group: conversion quiet
-{
- unsigned long from_nullchar = 0x0000;
- unsigned long from[2] = { UCS4_NAME, 0x0000 };
- char to[1];
- char to_punycode[PUNYCODE_NAME_SIZE];
-#ifndef WITHOUT_ICONV
- char to_eucjp[EUCJP_NAME_SIZE];
-#endif
-
- r = idn_converter_convfromucs4(punycode_ctx, &from_nullchar, to, 0);
- ASSERT_RESULT(r, idn_buffer_overflow);
-
- r = idn_converter_convfromucs4(punycode_ctx, &from_nullchar, to, 1);
- ASSERT_RESULT(r, idn_success);
- ASSERT_STRING(to, "");
-
- r = idn_converter_convfromucs4(punycode_ctx, from, to_punycode, 0);
- ASSERT_RESULT(r, idn_buffer_overflow);
-
- r = idn_converter_convfromucs4(punycode_ctx, from, to_punycode,
- PUNYCODE_NAME_SIZE - 1);
- ASSERT_RESULT(r, idn_buffer_overflow);
- r = idn_converter_convfromucs4(punycode_ctx, from, to_punycode,
- PUNYCODE_NAME_SIZE);
- ASSERT_RESULT(r, idn_success);
- ASSERT_STRING(to_punycode, PUNYCODE_NAME);
-
-#ifndef WITHOUT_ICONV
- r = idn_converter_convfromucs4(eucjp_ctx, &from_nullchar, to, 0);
- ASSERT_RESULT(r, idn_buffer_overflow);
-
- r = idn_converter_convfromucs4(eucjp_ctx, &from_nullchar, to, 1);
- ASSERT_RESULT(r, idn_success);
- ASSERT_STRING(to, "");
-
- r = idn_converter_convfromucs4(eucjp_ctx, from, to_eucjp, 0);
- ASSERT_RESULT(r, idn_buffer_overflow);
-
- r = idn_converter_convfromucs4(eucjp_ctx, from, to_eucjp,
- EUCJP_NAME_SIZE - 1);
- ASSERT_RESULT(r, idn_buffer_overflow);
-
- r = idn_converter_convfromucs4(eucjp_ctx, from, to_eucjp,
- EUCJP_NAME_SIZE);
- ASSERT_RESULT(r, idn_success);
- ASSERT_STRING(to_eucjp, EUCJP_NAME);
-
- from[0] = 0x80000000;
- r = idn_converter_convfromucs4(eucjp_ctx, from, to_eucjp,
- EUCJP_NAME_SIZE);
- ASSERT_RESULT(r, idn_invalid_encoding);
-
- from[0] = UCS4_INVALID_NAME_FOR_EUCJP;
- r = idn_converter_convfromucs4(eucjp_ctx, from, to_eucjp,
- EUCJP_NAME_SIZE);
- ASSERT_RESULT(r, idn_nomapping);
-#endif
-}
-
-//# TESTCASE
-// title: idn_converter_convtoucs4()
-// group: conversion
-{
- unsigned long to_nullchar = 0x0000;
- unsigned long to[1];
- unsigned long punycode_to[2];
-#ifndef WITHOUT_ICONV
- unsigned long eucjp_to[2];
-#endif
- unsigned long ucs4_name[2] = { UCS4_NAME, 0x0000 };
-
- r = idn_converter_convtoucs4(punycode_ctx, "", to, 0);
- ASSERT_RESULT(r, idn_buffer_overflow);
-
- r = idn_converter_convtoucs4(punycode_ctx, "", to, 1);
- ASSERT_RESULT(r, idn_success);
- ASSERT_UCS4STRING(to, &to_nullchar);
-
- r = idn_converter_convtoucs4(punycode_ctx, PUNYCODE_NAME,
- punycode_to, 0);
- ASSERT_RESULT(r, idn_buffer_overflow);
-
- r = idn_converter_convtoucs4(punycode_ctx, PUNYCODE_NAME,
- punycode_to, 1);
- ASSERT_RESULT(r, idn_buffer_overflow);
- r = idn_converter_convtoucs4(punycode_ctx, PUNYCODE_NAME, punycode_to,
- 2);
- ASSERT_RESULT(r, idn_success);
- ASSERT_UCS4STRING_THRU(punycode_to, ucs4_name);
-
-#ifndef WITHOUT_ICONV
- r = idn_converter_convtoucs4(eucjp_ctx, "", to, 0);
- ASSERT_RESULT(r, idn_buffer_overflow);
-
- r = idn_converter_convtoucs4(eucjp_ctx, "", to, 1);
- ASSERT_RESULT(r, idn_success);
- ASSERT_UCS4STRING(to, &to_nullchar);
-
- r = idn_converter_convtoucs4(eucjp_ctx, EUCJP_NAME, eucjp_to, 0);
- ASSERT_RESULT(r, idn_buffer_overflow);
-
- r = idn_converter_convtoucs4(eucjp_ctx, EUCJP_NAME, eucjp_to, 1);
- ASSERT_RESULT(r, idn_buffer_overflow);
-
- r = idn_converter_convtoucs4(eucjp_ctx, EUCJP_NAME, eucjp_to, 2);
- ASSERT_RESULT(r, idn_success);
- ASSERT_UCS4STRING(to, &to_nullchar);
-
- r = idn_converter_convtoucs4(eucjp_ctx, "\xFF\xFF", eucjp_to, 2);
- ASSERT_RESULT(r, idn_invalid_encoding);
-#endif
-}
-
-//# TESTCASE
-// title: idn_converter_destroy(), idn_converter_incrref()
-// group: generic
-{
- idn_converter_t ctx2;
-
- r = idn_converter_create(IDN_UTF8_ENCODING_NAME, &ctx, 0);
- ASSERT_RESULT(r, idn_success);
- idn_converter_destroy(ctx);
-
- r = idn_converter_create(IDN_UTF8_ENCODING_NAME, &ctx2, 0);
- ASSERT_RESULT(r, idn_success);
- idn_converter_incrref(ctx2);
- ASSERT_RESULT(r, idn_success);
- idn_converter_destroy(ctx2);
- idn_converter_destroy(ctx2);
-}
-
-//# TESTCASE
-// title: idn_converter_register()
-// group: generic
-{
- char eucjp_to[3];
- unsigned long ucs4_to[2];
- unsigned long ucs4_name[2] = { UCS4_NAME, 0x0000 };
-
- r = idn_converter_register("test",
- NULL,
- NULL,
- idn_test_encode,
- idn_test_decode,
- NULL,
- IDN_ACE_STRICTCASE);
- ASSERT_RESULT(r, idn_success);
- r = idn_converter_create("test", &ctx, 0);
- ASSERT_RESULT(r, idn_success);
-
- r = idn_converter_convfromucs4(ctx, ucs4_name, eucjp_to, sizeof(eucjp_to));
- ASSERT_RESULT(r, idn_success);
- ASSERT_STRING(eucjp_to, EUCJP_NAME);
-
- r = idn_converter_convtoucs4(ctx, "", ucs4_to, SIZEOFUCS4(ucs4_to));
- ASSERT_RESULT(r, idn_success);
- ASSERT_UCS4STRING(ucs4_to, ucs4_name);
-
- idn_converter_destroy(ctx);
-}
+++ /dev/null
-#ifndef lint
-static char *rcsid = "$Id: delimitermap.tsy,v 1.1 2003/06/04 00:26:53 marka Exp $";
-#endif
-
-/*
- * Copyright (c) 2002 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-#include <stddef.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <stdarg.h>
-#include <idn/delimitermap.h>
-#include <idn/ucs4.h>
-#include <idn/log.h>
-#include "testutil.h"
-
-/*
- * Codepoions to test the add() function.
- */
-#define ADDITIONAL_DELIMITER0 0xe0
-#define ADDITIONAL_DELIMITER1 0xe1
-
-/*
- * Sample string for `from' argument of map(),
- * and its expected outputs.
- */
-static const unsigned long from[] = {
- 0x002e, /* full stop */
- 0x3002, /* ideographic full stop */
- 0xff0e, /* fullwidth full stop */
- 0xff61, /* halfwidth ideographic full stop */
- ADDITIONAL_DELIMITER0,
- ADDITIONAL_DELIMITER1,
- 0x0000
-};
-
-static const unsigned long expected_default[] = {
- 0x002e, /* full stop */
- 0x002e, /* full stop */
- 0x002e, /* full stop */
- 0x002e, /* full stop */
- ADDITIONAL_DELIMITER0,
- ADDITIONAL_DELIMITER1,
- 0x0000
-};
-
-static const unsigned long expected_add[] = {
- 0x002e, /* full stop */
- 0x002e, /* full stop */
- 0x002e, /* full stop */
- 0x002e, /* full stop */
- 0x002e, /* full stop */
- ADDITIONAL_DELIMITER1,
- 0x0000
-};
-
-static const unsigned long expected_addall[] = {
- 0x002e, /* full stop */
- 0x002e, /* full stop */
- 0x002e, /* full stop */
- 0x002e, /* full stop */
- 0x002e, /* full stop */
- 0x002e, /* full stop */
- 0x0000
-};
-
-//--------------------------------------------------------------------
-// Setups and Teardowns.
-//--------------------------------------------------------------------
-
-//# SETUP
-// group: generic-init
-{
- idn_result_t r;
- idn_delimitermap_t ctx;
- unsigned long to[256];
-
- r = idn_delimitermap_create(&ctx);
- ASSERT_RESULT(r, idn_success);
-}
-
-//# TEARDOWN
-// group: generic-init
-{
- if (ctx != NULL)
- idn_delimitermap_destroy(ctx);
-}
-
-//# SETUP
-// group: quiet
-{
- int saved_log_level;
-
- saved_log_level = idn_log_getlevel();
- idn_log_setlevel(idn_log_level_fatal);
-}
-
-//# TEARDOWN
-// group: quiet
-{
- idn_log_setlevel(saved_log_level);
-}
-
-//--------------------------------------------------------------------
-// Testcases.
-//--------------------------------------------------------------------
-
-//# TESTCASE
-// title: call create()
-// group: generic-init
-{
-}
-
-//# TESTCASE
-// title: call map() without additional delimiters
-// group: generic-init
-{
- r = idn_delimitermap_map(ctx, from, to, sizeof(to) / sizeof(*to));
- ASSERT_RESULT(r, idn_success);
- ASSERT_UCS4STRING(to, expected_default);
-}
-
-//# TESTCASE
-// title: call add() and map()
-// group: generic-init
-{
- r = idn_delimitermap_add(ctx, ADDITIONAL_DELIMITER0);
- ASSERT_RESULT(r, idn_success);
-
- r = idn_delimitermap_map(ctx, from, to, sizeof(to) / sizeof(*to));
- ASSERT_RESULT(r, idn_success);
- ASSERT_UCS4STRING(to, expected_add);
-}
-
-//# TESTCASE
-// title: call addall()
-// group: generic-init
-{
- unsigned long delimiters[2];
-
- delimiters[0] = ADDITIONAL_DELIMITER0;
- delimiters[1] = ADDITIONAL_DELIMITER1;
- r = idn_delimitermap_addall(ctx, delimiters, 2);
- ASSERT_RESULT(r, idn_success);
-
- r = idn_delimitermap_map(ctx, from, to, sizeof(to) / sizeof(*to));
- ASSERT_RESULT(r, idn_success);
- ASSERT_UCS4STRING(to, expected_addall);
-}
-
-//# TESTCASE
-// title: call addall() with nnames=0
-// group: generic-init
-{
- unsigned long delimiters[2];
-
- r = idn_delimitermap_addall(ctx, delimiters, 0);
- ASSERT_RESULT(r, idn_success);
-
- r = idn_delimitermap_map(ctx, from, to, sizeof(to) / sizeof(*to));
- ASSERT_RESULT(r, idn_success);
- ASSERT_UCS4STRING(to, expected_default);
-}
-
-//# TESTCASE
-// title: call add() with invalid codepoint
-// group: generic-init quiet
-{
- r = idn_delimitermap_add(ctx, 0x0000); /* NUL */
- ASSERT_RESULT(r, idn_invalid_codepoint);
-
- r = idn_delimitermap_add(ctx, 0xd800); /* surrogate */
- ASSERT_RESULT(r, idn_invalid_codepoint);
-
- r = idn_delimitermap_add(ctx, 0x110000); /* out of range */
- ASSERT_RESULT(r, idn_invalid_codepoint);
-}
-
-//# TESTCASE
-// title: call addall() with invalid codepoint
-// group: generic-init quiet
-{
- unsigned long delimiters[1];
-
- delimiters[0] = 0x0000; /* NUL */
- r = idn_delimitermap_addall(ctx, delimiters, 1);
- ASSERT_RESULT(r, idn_invalid_codepoint);
-
- delimiters[0] = 0xd800; /* surrogate */
- r = idn_delimitermap_addall(ctx, delimiters, 1);
- ASSERT_RESULT(r, idn_invalid_codepoint);
-
- delimiters[0] = 0x110000; /* out of range */
- r = idn_delimitermap_addall(ctx, delimiters, 1);
- ASSERT_RESULT(r, idn_invalid_codepoint);
-}
-
-//# TESTCASE
-// title: overrun test for arg `to' of map()
-// group: generic-init
-{
- r = idn_delimitermap_map(ctx, from, to,
- idn_ucs4_strlen(expected_default) + 1);
- ASSERT_RESULT(r, idn_success);
- ASSERT_UCS4STRING(to, expected_default);
- r = idn_delimitermap_map(ctx, from, to,
- idn_ucs4_strlen(expected_default));
- ASSERT_RESULT(r, idn_buffer_overflow);
-}
-
-//# TESTCASE
-// title: call map() with tolen=0
-// group: generic-init
-{
- r = idn_delimitermap_map(ctx, from, to, 0);
- ASSERT_RESULT(r, idn_buffer_overflow);
-}
+++ /dev/null
-#ifndef lint
-static char *rcsid = "$Id: iconvchk.c,v 1.1 2003/06/04 00:26:54 marka Exp $";
-#endif
-
-/*
- * Copyright (c) 2002 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-
-#include <idn/api.h>
-#include <idn/converter.h>
-#include <idn/result.h>
-
-#include "codeset.h"
-
-#define IDN_UTF8_ENCODING_NAME "UTF-8"
-
-void
-eucjp_check(void)
-{
- idn_result_t r;
- idn_converter_t eucjp_ctx = NULL;
-
- r = idn_nameinit(0);
- if (r != idn_success) {
- fprintf(stderr, "idn_nameinit(): failed\n");
- exit (1);
- }
-
- r = idn_converter_create(EUCJP_ENCODING_NAME, &eucjp_ctx, 0);
-
- if (eucjp_ctx != NULL) {
- idn_converter_destroy(eucjp_ctx);
- }
-
- if (r != idn_success) {
- if (r == idn_invalid_name) {
- fprintf(stderr, \
- "\"%s\" is invalid codeset name, edit codeset.h\n", \
- EUCJP_ENCODING_NAME);
- exit (1);
- } else {
- fprintf(stderr, \
- "idn_converter_create() failed with error \"%s\"\n", \
- idn_result_tostring(r));
- exit (1);
- }
- }
-}
-
-void
-sjis_check(void)
-{
- idn_result_t r;
- idn_converter_t sjis_ctx = NULL;
-
- r = idn_nameinit(0);
- if (r != idn_success) {
- fprintf(stderr, "idn_nameinit(): failed\n");
- exit (1);
- }
-
- r = idn_converter_create(SJIS_ENCODING_NAME, &sjis_ctx, 0);
-
- if (sjis_ctx != NULL) {
- idn_converter_destroy(sjis_ctx);
- }
-
- if (r != idn_success) {
- if (r == idn_invalid_name) {
- fprintf(stderr, \
- "\"%s\" is invalid codeset name, edit codeset.h\n", \
- SJIS_ENCODING_NAME);
- exit (1);
- } else {
- fprintf(stderr, \
- "idn_converter_create() failed with error \"%s\"\n", \
- idn_result_tostring(r));
- exit (1);
- }
- }
-}
-
-int
-main (int ac, char **av)
-{
- eucjp_check();
- sjis_check();
-
- exit (0);
-}
+++ /dev/null
-#ifndef lint
-static char *rcsid = "$Id: mapper.tsy,v 1.1 2003/06/04 00:26:54 marka Exp $";
-#endif
-
-/*
- * Copyright (c) 2002 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-#include <stddef.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <idn/mapper.h>
-#include <idn/log.h>
-#include <idn/ucs4.h>
-#include "testutil.h"
-
-#define SIZEOFUCS4(x) (sizeof(x) / sizeof(unsigned long))
-
-#define UCS4_NAME_STR "U+304C" /* hiragana letter ga */
-#define UCS4_NAME 0x304C
-
-#define BUF_SIZE 128
-#define ARRAY_SIZE 9
-#define CONF_FILENAME "test.map"
-
-#define LINEBUF_SIZE 2001
-
-/*
- * Sample string for `from' argument of map(),
- * and its expected outputs.
- */
-static const unsigned long from[] = {
- 0x0041, /* latin capital letter a */
- 0x0042, /* latin capital letter b */
- UCS4_NAME,
- 0x0000
-};
-
-static const unsigned long expected_default[] = {
- 0x0061, /* latin small letter a */
- 0x0062, /* latin small letter b */
- UCS4_NAME,
- 0x0000
-};
-
-idn_result_t
-test_create(const char *parameter, void **ctxp)
-{
- return (idn_success);
-}
-
-void
-test_destroy(void *ctxp)
-{
-}
-
-idn_result_t
-test_map(void *ctx, const unsigned long *from, unsigned long *to,
- size_t tolen)
-{
- if (tolen > idn_ucs4_strlen(from)) {
- idn_ucs4_strcpy(to, from);
- } else {
- return (idn_buffer_overflow);
- }
-
- return (idn_success);
-}
-
-//--------------------------------------------------------------------
-// Setups and Teardowns.
-//--------------------------------------------------------------------
-
-//# SETUP
-// group: noinit
-//--
-// Do nothing
-{
- idn_result_t r;
- const char *name;
-}
-
-//# SETUP
-// group: generic
-//--
-// Initialize the module and create context.
-{
- idn_result_t r;
- idn_mapper_t ctx = NULL;
-
- r = idn_mapper_initialize();
- ASSERT_RESULT(r, idn_success);
- r = idn_mapper_create(&ctx);
- ASSERT_RESULT(r, idn_success);
-}
-
-//# TEARDOWN
-// group: generic
-//--
-// Destroy context.
-{
- idn_mapper_destroy(ctx);
-}
-
-//# SETUP
-// group: addall
-//--
-// Initialize the module and create context.
-{
- idn_result_t r;
- idn_mapper_t ctx = NULL;
- char *names[ARRAY_SIZE];
- int i;
- unsigned long to[4];
-
- for (i = 0; i < ARRAY_SIZE; i++) {
- names[i] = malloc(BUF_SIZE);
- if (names[i] == NULL) {
- ASSERT("malloc failed\n");
- }
- }
-
- r = idn_mapper_initialize();
- ASSERT_RESULT(r, idn_success);
- r = idn_mapper_create(&ctx);
- ASSERT_RESULT(r, idn_success);
-}
-
-//# TEARDOWN
-// group: addall
-//--
-// Destroy context and free some blocks.
-{
- idn_mapper_destroy(ctx);
- for (i = 0; i < ARRAY_SIZE; i++) {
- free(names[i]);
- }
-}
-
-//# SETUP
-// group: quiet
-//--
-// Set log level to `fatal' to supress log messages.
-{
- int saved_log_level;
-
- saved_log_level = idn_log_getlevel();
- idn_log_setlevel(idn_log_level_fatal);
-}
-
-//# TEARDOWN
-// group: quiet
-//--
-// Restore log level.
-{
- idn_log_setlevel(saved_log_level);
-}
-
-//--------------------------------------------------------------------
-// Testcases.
-//--------------------------------------------------------------------
-
-//# TESTCASE
-// title: idn_mapper_add() - boundary condition
-// group: generic quiet
-{
- r = idn_mapper_add(ctx, "");
- ASSERT_RESULT(r, idn_invalid_name);
-}
-
-//# TESTCASE
-// title: idn_mapper_add() - builtin schemes
-// group: generic quiet
-{
- r = idn_mapper_add(ctx, "RFC3491");
- ASSERT_RESULT(r, idn_success);
-
- r = idn_mapper_add(ctx, "nameprep-01");
- ASSERT_RESULT(r, idn_invalid_name);
-}
-
-//# TESTCASE
-// title: idn_mapper_add() - boundary condition
-// group: generic quiet
-{
- r = idn_mapper_add(ctx, "");
- ASSERT_RESULT(r, idn_invalid_name);
- r = idn_mapper_add(ctx, "filemap:");
- ASSERT_RESULT(r, idn_nofile);
- r = idn_mapper_add(ctx, "filemap:notfound.map");
- ASSERT_RESULT(r, idn_nofile);
-}
-
-//# TESTCASE
-// title: idn_mapper_add() - file
-// group: generic quiet
-{
- char name[BUF_SIZE];
- unsigned long to[4];
-
- create_conf_file(CONF_FILENAME, 0,
- "0041; 0061;",
- "0042; 0062;",
- NULL);
- sprintf(name, "filemap:%s", CONF_FILENAME);
-
- r = idn_mapper_add(ctx, name);
- ASSERT_RESULT(r, idn_success);
- r = idn_mapper_map(ctx, from, to, SIZEOFUCS4(to));
- ASSERT_RESULT(r, idn_success);
- ASSERT_UCS4STRING(to, expected_default);
-}
-
-//# TESTCASE
-// title: idn_mapper_add() - file - long line
-// group: generic quiet
-{
- char line[LINEBUF_SIZE];
- char name[BUF_SIZE];
- const char *first_entry = "0041;";
- const char *other_entry = " 0061";
- int i;
- int len;
-
- memcpy(line, first_entry, strlen(first_entry));
- len = strlen(other_entry);
- for (i = len; i < LINEBUF_SIZE - len; i += len) {
- memcpy(line + i, other_entry, len);
- }
- *(line + i) = '\0';
-
- create_conf_file(CONF_FILENAME, 0, line, NULL);
- sprintf(name, "filemap:%s", CONF_FILENAME);
- r = idn_mapper_add(ctx, name);
- ASSERT_RESULT(r, idn_invalid_syntax);
-}
-
-//# TESTCASE
-// title: idn_mapper_add() - file - no new line at end of file
-// group: generic quiet
-{
- char name[BUF_SIZE];
- unsigned long to[4];
-
- create_conf_file(CONF_FILENAME, CONF_NO_EOF_NEWLINE,
- "0041; 0061;",
- "0042; 0062;",
- NULL);
- sprintf(name, "filemap:%s", CONF_FILENAME);
- r = idn_mapper_add(ctx, name);
- ASSERT_RESULT(r, idn_success);
- r = idn_mapper_map(ctx, from, to, SIZEOFUCS4(to));
- ASSERT_RESULT(r, idn_success);
- ASSERT_UCS4STRING(to, expected_default);
-}
-
-//# TESTCASE
-// title: idn_mapper_add() - file - one item in one line #1
-// group: generic quiet
-{
- char name[BUF_SIZE];
- unsigned long to[3];
- unsigned long expected[] = {
- 0x0061,
- UCS4_NAME,
- 0x0000
- };
-
- create_conf_file(CONF_FILENAME, 0,
- "0041; 0061;",
- "0042;",
- NULL);
- sprintf(name, "filemap:%s", CONF_FILENAME);
- r = idn_mapper_add(ctx, name);
- ASSERT_RESULT(r, idn_success);
- r = idn_mapper_map(ctx, from, to, SIZEOFUCS4(to));
- ASSERT_RESULT(r, idn_success);
- ASSERT_UCS4STRING(to, expected);
-}
-
-//# TESTCASE
-// title: idn_mapper_add() - file - one item in one line #2
-// group: generic quiet
-{
- char name[BUF_SIZE];
- unsigned long to[3];
- unsigned long expected[] = {
- 0x0061,
- UCS4_NAME,
- 0x0000
- };
-
- create_conf_file(CONF_FILENAME, 0,
- "0041; 0061;",
- "0042; ;",
- NULL);
- sprintf(name, "filemap:%s", CONF_FILENAME);
- r = idn_mapper_add(ctx, name);
- ASSERT_RESULT(r, idn_success);
- r = idn_mapper_map(ctx, from, to, SIZEOFUCS4(to));
- ASSERT_RESULT(r, idn_success);
- ASSERT_UCS4STRING(to, expected);
-}
-
-//# TESTCASE
-// title: idn_mapper_add() - file - more then two items in one line #1
-// group: generic quiet
-{
- char name[BUF_SIZE];
- unsigned long to[4];
-
- create_conf_file(CONF_FILENAME, 0,
- "0041; 0061; 0062;",
- "0042; 0062; 0063;",
- NULL);
- sprintf(name, "filemap:%s", CONF_FILENAME);
- r = idn_mapper_add(ctx, name);
- ASSERT_RESULT(r, idn_success);
-
- r = idn_mapper_map(ctx, from, to, SIZEOFUCS4(to));
- ASSERT_RESULT(r, idn_success);
- ASSERT_UCS4STRING(to, expected_default);
-}
-
-//# TESTCASE
-// title: idn_mapper_add() - file - more then two items in one line #2
-// group: generic quiet
-{
- char name[BUF_SIZE];
- unsigned long to[6];
- unsigned long expected_to[] = {
- 0x0061,
- 0x0062,
- 0x0062,
- 0x0063,
- UCS4_NAME,
- 0x0000
- };
-
- create_conf_file(CONF_FILENAME, 0,
- "0041; 0061 0062;",
- "0042; 0062 0063;",
- NULL);
- sprintf(name, "filemap:%s", CONF_FILENAME);
- r = idn_mapper_add(ctx, name);
- ASSERT_RESULT(r, idn_success);
-
- r = idn_mapper_map(ctx, from, to, SIZEOFUCS4(to));
- ASSERT_RESULT(r, idn_success);
- ASSERT_UCS4STRING(to, expected_to);
-}
-
-//# TESTCASE
-// title: idn_mapper_add() - file - more then two items in one line #3
-// group: generic quiet
-{
- char name[BUF_SIZE];
- unsigned long to[3];
-
- create_conf_file(CONF_FILENAME, 0,
- "0041 0042; 0063;",
- NULL);
- sprintf(name, "filemap:%s", CONF_FILENAME);
- r = idn_mapper_add(ctx, name);
- ASSERT_RESULT(r, idn_invalid_syntax);
-}
-
-//# TESTCASE
-// title: idn_mapper_addall() - add all builtin schemes
-// group: addall quiet
-{
- strcpy(names[0], "RFC3491");
- strcpy(names[1], "RFC3491");
- strcpy(names[2], "RFC3491");
- strcpy(names[3], "RFC3491");
- strcpy(names[4], "RFC3491");
- strcpy(names[5], "RFC3491");
- strcpy(names[6], "RFC3491");
- strcpy(names[7], "RFC3491");
- strcpy(names[8], "RFC3491");
-
- r = idn_mapper_addall(ctx, (const char **)names, 9);
- ASSERT_RESULT(r, idn_success);
- r = idn_mapper_map(ctx, from, to, SIZEOFUCS4(to));
- ASSERT_RESULT(r, idn_success);
- ASSERT_UCS4STRING(to, expected_default);
-}
-
-//# TESTCASE
-// title: idn_mapper_addall() - add same scheme repetedly
-// group: addall quiet
-{
- for (i = 0; i < ARRAY_SIZE; i++) {
- strcpy(names[i], "RFC3491");
- }
- r = idn_mapper_addall(ctx, (const char **)names, 3);
- ASSERT_RESULT(r, idn_success);
- r = idn_mapper_map(ctx, from, to, SIZEOFUCS4(to));
- ASSERT_RESULT(r, idn_success);
- ASSERT_UCS4STRING(to, expected_default);
-}
-
-//# TESTCASE
-// title: idn_mapper_map() - builtin schemes check - RFC3491
-// group: generic quiet
-{
- unsigned long to[4];
-
- r = idn_mapper_add(ctx, "RFC3491");
- ASSERT_RESULT(r, idn_success);
- r = idn_mapper_map(ctx, from, to, SIZEOFUCS4(to));
- ASSERT_RESULT(r, idn_success);
- ASSERT_UCS4STRING(to, expected_default);
-}
-
-//# TESTCASE
-// title: idn_mapper_map() - context without procedure
-// group: generic
-{
- unsigned long to[4];
-
- r = idn_mapper_map(ctx, from, to, SIZEOFUCS4(to));
- ASSERT_RESULT(r, idn_success);
- ASSERT_UCS4STRING(to, from);
-}
-
-//# TESTCASE
-// title: idn_mapper_destroy(), idn_mapper_incrref()
-// group:
-{
- idn_result_t r;
- idn_mapper_t ctx = NULL;
-
- r = idn_mapper_initialize();
- ASSERT_RESULT(r, idn_success);
- r = idn_mapper_create(&ctx);
- ASSERT_RESULT(r, idn_success);
- idn_mapper_incrref(ctx);
- idn_mapper_destroy(ctx);
- idn_mapper_destroy(ctx);
-}
-
-//# TESTCASE
-// title: idn_mapper_register()
-// group: generic quiet
-{
- unsigned long to[10];
-
- r = idn_mapper_register("test", test_create, test_destroy, test_map);
- ASSERT_RESULT(r, idn_success);
- r = idn_mapper_add(ctx, "test");
- ASSERT_RESULT(r, idn_success);
-
- r = idn_mapper_map(ctx, from, to, SIZEOFUCS4(to));
- ASSERT_RESULT(r, idn_success);
- ASSERT_UCS4STRING(to, from);
-}
+++ /dev/null
-#ifndef lint
-static char *rcsid = "$Id: mapselector.tsy,v 1.1 2003/06/04 00:26:55 marka Exp $";
-#endif
-
-/*
- * Copyright (c) 2002 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-#include <stddef.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <stdarg.h>
-#include <idn/mapselector.h>
-#include <idn/ucs4.h>
-#include <idn/log.h>
-
-#include "testutil.h"
-
-#define CONF_FILENAME "test.conf"
-#define MAP_FILENAME "test.map"
-
-/*
- * Sample TLDs.
- */
-static const char *utf8_tlds_jp[] = {"jp", ".jp", "JP", ".JP"};
-static const char *utf8_tlds_tw[] = {"tw", ".tw", "TW", ".TW"};
-
-static const unsigned long ucs4_tlds_jp[][4] = {{'j', 'p', '\0', '\0'},
- {'.', 'j', 'p', '\0'},
- {'J', 'P', '\0', '\0'},
- {'.', 'J', 'P', '\0'}};
-
-static const unsigned long ucs4_tlds_tw[][4] = {{'t', 'w', '\0', '\0'},
- {'.', 't', 'w', '\0'},
- {'T', 'W', '\0', '\0'},
- {'.', 'T', 'W', '\0'}};
-
-/* How many elements in `utf8_tlds_{jp|tw}[]' and `ucs4_tlds_{jp|tw}[]'. */
-#define TLD_NVARIANTS 4
-
-/*
- * Sample input string for mapping. (UCS4)
- */
-static const unsigned long in_string[] = {0x00C0, 0x2212, 0};
-
-/*
- * Sample mapping results of IN_STRING.
- *
- * OUT_STRING_FILEMAP is the result of file-mapping (U+2212 -> U+002D).
- * OUT_STRING_NAMEPREP is the result of the latest nameprep
- * OUT_STRING_BOTH is the result of both file-mapping and nameprep.
- */
-static const unsigned long out_string_filemap[] = {0x00C0, 0x002D, 0};
-static const unsigned long out_string_nameprep[] = {0x00E0, 0x2212, 0};
-static const unsigned long out_string_both[] = {0x00E0, 0x002D, 0};
-
-#define MAP_FILENAME "test.map"
-
-//--------------------------------------------------------------------
-// Setups and Teardowns.
-//--------------------------------------------------------------------
-
-//# SETUP
-// group: generic-init
-{
- idn_result_t r;
- idn_mapselector_t ctxs[TLD_NVARIANTS];
- unsigned long to[256];
-
- {
- int i;
- for (i = 0; i < TLD_NVARIANTS; i++)
- ctxs[i] = NULL;
- }
-
- r = idn_mapselector_initialize();
- ASSERT_RESULT(r, idn_success);
-
- {
- int i;
- for (i = 0; i < TLD_NVARIANTS; i++) {
- r = idn_mapselector_create(&ctxs[i]);
- ASSERT_RESULT(r, idn_success);
- }
- }
-}
-
-//# TEARDOWN
-// group: generic-init
-{
- {
- int i;
-
- for (i = 0; i < TLD_NVARIANTS; i++) {
- if (ctxs[i] != NULL)
- idn_mapselector_destroy(ctxs[i]);
- remove(CONF_FILENAME);
- }
- }
-}
-
-//# SETUP
-// group: quiet
-{
- int saved_log_level;
-
- saved_log_level = idn_log_getlevel();
- idn_log_setlevel(idn_log_level_fatal);
-}
-
-//# TEARDOWN
-// group: quiet
-{
- idn_log_setlevel(saved_log_level);
-}
-
-//# SETUP
-// group: generic-filemap
-{
- create_conf_file(MAP_FILENAME, 0,
- "U+2212; U+002D",
- NULL);
-}
-
-//# TEARDOWN
-// group: generic-filemap
-{
- remove(MAP_FILENAME);
-}
-
-//--------------------------------------------------------------------
-// Testcases.
-//--------------------------------------------------------------------
-
-//# TESTCASE
-// title: call initialize() twice.
-//
-{
- idn_result_t r;
-
- r = idn_mapselector_initialize();
- ASSERT_RESULT(r, idn_success);
-
- r = idn_mapselector_initialize();
- ASSERT_RESULT(r, idn_success);
-}
-
-//# TESTCASE
-// title: call create()
-{
- idn_result_t r;
- idn_mapselector_t ctx;
-
- r = idn_mapselector_initialize();
- ASSERT_RESULT(r, idn_success);
-
- r = idn_mapselector_create(&ctx);
- ASSERT_RESULT(r, idn_success);
-
- idn_mapselector_destroy(ctx);
-}
-
-//# TESTCASE
-// title: call add(filemap) and map()
-// group: generic-init generic-filemap
-{
- int i, j;
-
- for (i = 0; i < TLD_NVARIANTS; i++) {
- r = idn_mapselector_add(ctxs[i], utf8_tlds_jp[i],
- "filemap:" MAP_FILENAME);
- ASSERT_RESULT(r, idn_success);
- }
-
- for (i = 0; i < TLD_NVARIANTS; i++) {
- for (j = 0; j < TLD_NVARIANTS; j++) {
- r = idn_mapselector_map(ctxs[i], in_string,
- utf8_tlds_jp[j], to,
- sizeof(to) / sizeof(*to));
- ASSERT_RESULT(r, idn_success);
- ASSERT_UCS4STRING(to, out_string_filemap);
-
- r = idn_mapselector_map(ctxs[i], in_string,
- utf8_tlds_tw[j], to,
- sizeof(to) / sizeof(*to));
- ASSERT_RESULT(r, idn_success);
- ASSERT_UCS4STRING(to, in_string);
- }
- }
-}
-
-//# TESTCASE
-// title: call add(nameprep) and map()
-// group: generic-init generic-filemap
-{
- int i, j;
-
- for (i = 0; i < TLD_NVARIANTS; i++) {
- r = idn_mapselector_add(ctxs[i], utf8_tlds_jp[i],
- IDN_NAMEPREP_CURRENT);
- ASSERT_RESULT(r, idn_success);
- }
-
- for (i = 0; i < TLD_NVARIANTS; i++) {
- for (j = 0; j < TLD_NVARIANTS; j++) {
- r = idn_mapselector_map(ctxs[i], in_string,
- utf8_tlds_jp[j], to,
- sizeof(to) / sizeof(*to));
- ASSERT_RESULT(r, idn_success);
- ASSERT_UCS4STRING(to, out_string_nameprep);
-
- r = idn_mapselector_map(ctxs[i], in_string,
- utf8_tlds_tw[j], to,
- sizeof(to) / sizeof(*to));
- ASSERT_RESULT(r, idn_success);
- ASSERT_UCS4STRING(to, in_string);
- }
- }
-}
-
-//# TESTCASE
-// title: call add(filemap) and map2()
-// group: generic-init generic-filemap
-{
- int i, j;
-
- for (i = 0; i < TLD_NVARIANTS; i++) {
- r = idn_mapselector_add(ctxs[i], utf8_tlds_jp[i],
- "filemap:" MAP_FILENAME);
- ASSERT_RESULT(r, idn_success);
- }
-
- for (i = 0; i < TLD_NVARIANTS; i++) {
- for (j = 0; j < TLD_NVARIANTS; j++) {
- r = idn_mapselector_map2(ctxs[i], in_string,
- ucs4_tlds_jp[j], to,
- sizeof(to) / sizeof(*to));
- ASSERT_RESULT(r, idn_success);
- ASSERT_UCS4STRING(to, out_string_filemap);
-
- r = idn_mapselector_map2(ctxs[i], in_string,
- ucs4_tlds_tw[j], to,
- sizeof(to) / sizeof(*to));
- ASSERT_RESULT(r, idn_success);
- ASSERT_UCS4STRING(to, in_string);
- }
- }
-}
-
-//# TESTCASE
-// title: call add(nameprep) and map2()
-// group: generic-init generic-filemap
-{
- int i, j;
-
- for (i = 0; i < TLD_NVARIANTS; i++) {
- r = idn_mapselector_add(ctxs[i], utf8_tlds_jp[i],
- IDN_NAMEPREP_CURRENT);
- ASSERT_RESULT(r, idn_success);
- }
-
- for (i = 0; i < TLD_NVARIANTS; i++) {
- for (j = 0; j < TLD_NVARIANTS; j++) {
- r = idn_mapselector_map2(ctxs[i], in_string,
- ucs4_tlds_jp[j], to,
- sizeof(to) / sizeof(*to));
- ASSERT_RESULT(r, idn_success);
- ASSERT_UCS4STRING(to, out_string_nameprep);
-
- r = idn_mapselector_map2(ctxs[i], in_string,
- ucs4_tlds_tw[j], to,
- sizeof(to) / sizeof(*to));
- ASSERT_RESULT(r, idn_success);
- ASSERT_UCS4STRING(to, in_string);
- }
- }
-}
-
-//# TESTCASE
-// title: call add(filemap) and map()
-// group: generic-init generic-filemap
-{
- int i, j;
-
- for (i = 0; i < TLD_NVARIANTS; i++) {
- r = idn_mapselector_add(ctxs[i], utf8_tlds_jp[i],
- "filemap:" MAP_FILENAME);
- ASSERT_RESULT(r, idn_success);
- }
-
- for (i = 0; i < TLD_NVARIANTS; i++) {
- for (j = 0; j < TLD_NVARIANTS; j++) {
- r = idn_mapselector_map(ctxs[i], in_string,
- utf8_tlds_jp[j], to,
- sizeof(to) / sizeof(*to));
- ASSERT_RESULT(r, idn_success);
- ASSERT_UCS4STRING(to, out_string_filemap);
-
- r = idn_mapselector_map(ctxs[i], in_string,
- utf8_tlds_tw[j], to,
- sizeof(to) / sizeof(*to));
- ASSERT_RESULT(r, idn_success);
- ASSERT_UCS4STRING(to, in_string);
- }
- }
-}
-
-//# TESTCASE
-// title: call add(nameprep) and map()
-// group: generic-init generic-filemap
-{
- int i, j;
-
- for (i = 0; i < TLD_NVARIANTS; i++) {
- r = idn_mapselector_add(ctxs[i], utf8_tlds_jp[i],
- IDN_NAMEPREP_CURRENT);
- ASSERT_RESULT(r, idn_success);
- }
-
- for (i = 0; i < TLD_NVARIANTS; i++) {
- for (j = 0; j < TLD_NVARIANTS; j++) {
- r = idn_mapselector_map(ctxs[i], in_string,
- utf8_tlds_jp[j], to,
- sizeof(to) / sizeof(*to));
- ASSERT_RESULT(r, idn_success);
- ASSERT_UCS4STRING(to, out_string_nameprep);
-
- r = idn_mapselector_map(ctxs[i], in_string,
- utf8_tlds_tw[j], to,
- sizeof(to) / sizeof(*to));
- ASSERT_RESULT(r, idn_success);
- ASSERT_UCS4STRING(to, in_string);
- }
- }
-}
-
-//# TESTCASE
-// title: call addall()
-// group: generic-init generic-filemap
-{
- static const char *names[] = {
- "filemap:" MAP_FILENAME,
- IDN_NAMEPREP_CURRENT
- };
- int i, j;
-
- for (i = 0; i < TLD_NVARIANTS; i++) {
- r = idn_mapselector_addall(ctxs[i], utf8_tlds_jp[i], names,
- sizeof(names) / sizeof(*names));
- ASSERT_RESULT(r, idn_success);
- }
-
- for (i = 0; i < TLD_NVARIANTS; i++) {
- for (j = 0; j < TLD_NVARIANTS; j++) {
- r = idn_mapselector_map2(ctxs[i], in_string,
- ucs4_tlds_jp[j], to,
- sizeof(to) / sizeof(*to));
- ASSERT_RESULT(r, idn_success);
- ASSERT_UCS4STRING(to, out_string_both);
-
- r = idn_mapselector_map2(ctxs[i], in_string,
- ucs4_tlds_tw[j], to,
- sizeof(to) / sizeof(*to));
- ASSERT_RESULT(r, idn_success);
- ASSERT_UCS4STRING(to, in_string);
- }
- }
-}
-
-//# TESTCASE
-// title: call addall() with nnames=0
-// group: generic-init
-{
- static const char *names[] = {IDN_NAMEPREP_CURRENT};
-
- r = idn_mapselector_addall(ctxs[0], ".", names, 0);
- ASSERT_RESULT(r, idn_success);
-}
-
-//# TESTCASE
-// title: call add() with empty tld
-// group: generic-init
-{
- r = idn_mapselector_add(ctxs[0], "", IDN_NAMEPREP_CURRENT);
- ASSERT_RESULT(r, idn_success);
-}
-
-//# TESTCASE
-// title: call addall() with empty tld
-// group: generic-init
-{
- static const char *names[] = {IDN_NAMEPREP_CURRENT};
-
- r = idn_mapselector_addall(ctxs[0], "", names, 1);
- ASSERT_RESULT(r, idn_success);
-}
-
-//# TESTCASE
-// title: call add() with too long tld
-// group: generic-init quiet
-{
- r = idn_mapselector_add(ctxs[0],
- "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
- "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
- "ABCDEFGHIJK",
- IDN_NAMEPREP_CURRENT);
- ASSERT_RESULT(r, idn_success);
-
- r = idn_mapselector_add(ctxs[0],
- "."
- "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
- "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
- "ABCDEFGHIJK",
- IDN_NAMEPREP_CURRENT);
- ASSERT_RESULT(r, idn_success);
-
- r = idn_mapselector_add(ctxs[0],
- "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
- "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
- "ABCDEFGHIJKL",
- IDN_NAMEPREP_CURRENT);
- ASSERT_RESULT(r, idn_invalid_name);
-
- r = idn_mapselector_add(ctxs[0],
- "."
- "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
- "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
- "ABCDEFGHIJKL",
- IDN_NAMEPREP_CURRENT);
- ASSERT_RESULT(r, idn_invalid_name);
-}
-
-//# TESTCASE
-// title: call addall() with too long tld
-// group: generic-init quiet
-{
- static const char *names[] = {IDN_NAMEPREP_CURRENT};
-
- r = idn_mapselector_addall(ctxs[0],
- "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
- "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
- "ABCDEFGHIJK",
- names, 1);
- ASSERT_RESULT(r, idn_success);
-
- r = idn_mapselector_addall(ctxs[0],
- "."
- "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
- "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
- "ABCDEFGHIJK",
- names, 1);
- ASSERT_RESULT(r, idn_success);
-
- r = idn_mapselector_addall(ctxs[0],
- "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
- "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
- "ABCDEFGHIJKL",
- names, 1);
- ASSERT_RESULT(r, idn_invalid_name);
-
- r = idn_mapselector_addall(ctxs[0],
- "."
- "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
- "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
- "ABCDEFGHIJKL",
- names, 1);
- ASSERT_RESULT(r, idn_invalid_name);
-}
-
-//# TESTCASE
-// title: overrun test for arg `to' of map()
-// group: generic-init
-{
- r = idn_mapselector_add(ctxs[0], utf8_tlds_jp[0],
- IDN_NAMEPREP_CURRENT);
- ASSERT_RESULT(r, idn_success);
-
- r = idn_mapselector_map(ctxs[0], in_string, utf8_tlds_jp[0], to,
- idn_ucs4_strlen(out_string_nameprep) + 1);
- ASSERT_RESULT(r, idn_success);
- ASSERT_UCS4STRING(to, out_string_nameprep);
-
- r = idn_mapselector_map(ctxs[0], in_string, utf8_tlds_tw[0], to,
- idn_ucs4_strlen(in_string) + 1);
- ASSERT_RESULT(r, idn_success);
- ASSERT_UCS4STRING(to, in_string);
-
- r = idn_mapselector_map(ctxs[0], in_string, utf8_tlds_jp[0], to,
- idn_ucs4_strlen(out_string_nameprep));
- ASSERT_RESULT(r, idn_buffer_overflow);
-
- r = idn_mapselector_map(ctxs[0], in_string, utf8_tlds_tw[0], to,
- idn_ucs4_strlen(in_string));
- ASSERT_RESULT(r, idn_buffer_overflow);
-}
-
-//# TESTCASE
-// title: overrun test for arg `to' of map2()
-// group: generic-init
-{
- r = idn_mapselector_add(ctxs[0], utf8_tlds_jp[0],
- IDN_NAMEPREP_CURRENT);
- ASSERT_RESULT(r, idn_success);
-
- r = idn_mapselector_map2(ctxs[0], in_string, ucs4_tlds_jp[0], to,
- idn_ucs4_strlen(out_string_nameprep) + 1);
- ASSERT_RESULT(r, idn_success);
- ASSERT_UCS4STRING(to, out_string_nameprep);
-
- r = idn_mapselector_map2(ctxs[0], in_string, ucs4_tlds_tw[0], to,
- idn_ucs4_strlen(in_string) + 1);
- ASSERT_RESULT(r, idn_success);
- ASSERT_UCS4STRING(to, in_string);
-
- r = idn_mapselector_map2(ctxs[0], in_string, ucs4_tlds_jp[0], to,
- idn_ucs4_strlen(out_string_nameprep));
- ASSERT_RESULT(r, idn_buffer_overflow);
-
- r = idn_mapselector_map2(ctxs[0], in_string, ucs4_tlds_tw[0], to,
- idn_ucs4_strlen(in_string));
- ASSERT_RESULT(r, idn_buffer_overflow);
-}
-
-//# TESTCASE
-// title: call map() with tolen=0
-// group: generic-init
-{
- r = idn_mapselector_add(ctxs[0], utf8_tlds_jp[0],
- IDN_NAMEPREP_CURRENT);
- ASSERT_RESULT(r, idn_success);
-
- r = idn_mapselector_map(ctxs[0], in_string, utf8_tlds_jp[0], to, 0);
- ASSERT_RESULT(r, idn_buffer_overflow);
-
- r = idn_mapselector_map(ctxs[0], in_string, utf8_tlds_tw[0], to, 0);
- ASSERT_RESULT(r, idn_buffer_overflow);
-}
-
-//# TESTCASE
-// title: call map2() with tolen=0
-// group: generic-init
-{
- r = idn_mapselector_add(ctxs[0], utf8_tlds_jp[0],
- IDN_NAMEPREP_CURRENT);
- ASSERT_RESULT(r, idn_success);
-
- r = idn_mapselector_map2(ctxs[0], in_string, ucs4_tlds_jp[0], to, 0);
- ASSERT_RESULT(r, idn_buffer_overflow);
-
- r = idn_mapselector_map2(ctxs[0], in_string, ucs4_tlds_tw[0], to, 0);
- ASSERT_RESULT(r, idn_buffer_overflow);
-}
-
+++ /dev/null
-#ifndef lint
-static char *rcsid = "$Id: nameprep.tsy,v 1.1 2003/06/04 00:26:56 marka Exp $";
-#endif
-
-/*
- * Copyright (c) 2002 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-#include <stddef.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <idn/nameprep.h>
-#include <idn/log.h>
-#include "testutil.h"
-
-#define UCS4_NAME 0x304C /* hiragana letter ga */
-#define BUF_SIZE 4
-/*
- * Sample string for `from' argument for map(),
- * and its expected outputs.
- */
-static const unsigned long map_from[] = {
- 0x0041, /* latin capital letter a */
- 0x0042, /* latin capital letter b */
- UCS4_NAME,
- 0x0000
-};
-
-static const unsigned long map_expected[] = {
- 0x0061, /* latin small letter a */
- 0x0062, /* latin small letter b */
- UCS4_NAME,
- 0x0000
-};
-
-/*
- * Sample string for `from' argument for isprohibited().
- */
-static const unsigned long check_from[4] = {
- UCS4_NAME,
- 0x00A0, /* no-break space: prohibited character */
- 0x0221, /* unassigned character */
- 0x0000
-};
-
-#define FROM_UCS4NAME_OFFSET 0
-#define FROM_PROH_OFFSET 1
-#define FROM_UNAS_OFFSET 2
-
-/*
- * Sample string for `from' argument for isunassigned().
- */
-static const unsigned long check_from2[4] = {
- UCS4_NAME,
- 0x0221, /* unassigned character */
- 0x00A0, /* no-break space: prohibited character */
- 0x0000
-};
-
-#define FROM2_UCS4NAME_OFFSET 0
-#define FROM2_PROH_OFFSET 2
-#define FROM2_UNAS_OFFSET 1
-
-/*
- * Sample string for `from' argument for isvalidbidi().
- * (It is not a valid bidi label.)
- */
-static const unsigned long bidi_from[4] = {
- 0x05BE, /* hebrew punctuation maqaf */
- 0x0041, /* latin capital letter a */
- 0xFEFC, /* arabic ligature lam with alef final form */
- 0x0000
-};
-#define BIDIFROM_OFFSET 1
-
-/*
- * Empty string.
- */
-static const unsigned long ucs4_nullstr[] = {
- 0x0000
-};
-
-//--------------------------------------------------------------------
-// Setups and Teardowns.
-//--------------------------------------------------------------------
-
-//# SETUP
-// group: generic
-//--
-// Nothing happens.
-{
- idn_result_t r;
- idn_nameprep_t handle = NULL;
-
-}
-
-//# SETUP
-// group: check
-//--
-// Initialize the module and create contexts.
-{
- idn_result_t r;
- idn_nameprep_t handle11 = NULL;
-
- r = idn_nameprep_create("RFC3491", &handle11);
- ASSERT_RESULT(r, idn_success);
-}
-
-//# TEARDOWN
-// group: check
-//--
-// Destroy contexts.
-{
- if (handle11 != NULL) {
- idn_nameprep_destroy(handle11);
- }
-}
-
-//# SETUP
-// group: quiet
-//--
-// Set log level to `fatal' to supress log messages.
-{
- int saved_log_level;
-
- saved_log_level = idn_log_getlevel();
- idn_log_setlevel(idn_log_level_fatal);
-}
-
-//# TEARDOWN
-// group: quiet
-//--
-// Restore log level.
-{
- idn_log_setlevel(saved_log_level);
-}
-
-//--------------------------------------------------------------------
-// Testcases.
-//--------------------------------------------------------------------
-
-//# TESTCASE
-// title: idn_nameprep_create() - boundary condition
-// group: generic quiet
-{
- r = idn_nameprep_create("", &handle);
- ASSERT_RESULT(r, idn_notfound);
-}
-
-//# TESTCASE
-// title: idn_nameprep_create() - version is NULL (current nameprep)
-// group: generic quiet
-{
- unsigned long to[BUF_SIZE];
- const unsigned long *found;
-
- r = idn_nameprep_create(NULL, &handle);
- ASSERT_RESULT(r, idn_success);
-
- r = idn_nameprep_map(handle, map_from, to, BUF_SIZE);
- ASSERT_RESULT(r, idn_success);
- ASSERT_UCS4STRING(to, map_expected);
-
- r = idn_nameprep_isunassigned(handle, check_from, &found);
- ASSERT_RESULT(r, idn_success);
- ASSERT_PTR(found, check_from + FROM_UNAS_OFFSET);
-
- r = idn_nameprep_isprohibited(handle, check_from, &found);
- ASSERT_RESULT(r, idn_success);
- ASSERT_PTR(found, check_from + FROM_PROH_OFFSET);
-
- r = idn_nameprep_isvalidbidi(handle, bidi_from, &found);
- ASSERT_RESULT(r, idn_success);
- ASSERT_PTR(found, bidi_from + BIDIFROM_OFFSET);
-
- idn_nameprep_destroy(handle);
-}
-
-//# TESTCASE
-// title: idn_nameprep_create() - nameprep-01
-// group: generic quiet
-{
- r = idn_nameprep_create("nameprep-01", &handle);
- ASSERT_RESULT(r, idn_notfound);
-}
-
-//# TESTCASE
-// title: idn_nameprep_create() - RFC3491
-// group: generic
-{
- r = idn_nameprep_create("RFC3491", &handle);
- ASSERT_RESULT(r, idn_success);
- idn_nameprep_destroy(handle);
-}
-
-//# TESTCASE
-// title: idn_nameprep_map() - boundary condition
-// group: check
-{
- unsigned long to[BUF_SIZE];
-
- r = idn_nameprep_map(handle11, ucs4_nullstr, to, 0);
- ASSERT_RESULT(r, idn_buffer_overflow);
- r = idn_nameprep_map(handle11, ucs4_nullstr, to, 1);
- ASSERT_RESULT(r, idn_success);
- ASSERT_UCS4STRING(to, ucs4_nullstr);
-}
-
-//# TESTCASE
-// title: idn_nameprep_map() - RFC3491
-// group: check
-{
- unsigned long to[BUF_SIZE];
-
- r = idn_nameprep_map(handle11, map_from, to, 0);
- ASSERT_RESULT(r, idn_buffer_overflow);
- r = idn_nameprep_map(handle11, map_from, to, BUF_SIZE - 1);
- ASSERT_RESULT(r, idn_buffer_overflow);
- r = idn_nameprep_map(handle11, map_from, to, BUF_SIZE);
- ASSERT_RESULT(r, idn_success);
- ASSERT_UCS4STRING(to, map_expected);
-}
-
-//# TESTCASE
-// title: idn_nameprep_isunassigned() - boundary condition
-// group: check
-{
- const unsigned long *found;
-
- r = idn_nameprep_isunassigned(handle11, ucs4_nullstr, &found);
- ASSERT_RESULT(r, idn_success);
- ASSERT_PTR(found, NULL);
-}
-
-//# TESTCASE
-// title: idn_nameprep_isunassigned() - RFC3491
-// group: check
-{
- const unsigned long *found;
-
- r = idn_nameprep_isunassigned(handle11, check_from, &found);
- ASSERT_RESULT(r, idn_success);
- ASSERT_PTR(found, check_from + FROM_UNAS_OFFSET);
-
- r = idn_nameprep_isunassigned(handle11, check_from2, &found);
- ASSERT_RESULT(r, idn_success);
- ASSERT_PTR(found, check_from2 + FROM2_UNAS_OFFSET);
-}
-
-//# TESTCASE
-// title: idn_nameprep_isprohibited() - boundary condition
-// group: check
-{
- const unsigned long *found;
-
- r = idn_nameprep_isprohibited(handle11, ucs4_nullstr, &found);
- ASSERT_RESULT(r, idn_success);
- ASSERT_PTR(found, NULL);
-}
-
-//# TESTCASE
-// title: idn_nameprep_isprohibited() - RFC3491
-// group: check
-{
- const unsigned long *found;
-
- r = idn_nameprep_isprohibited(handle11, check_from, &found);
- ASSERT_RESULT(r, idn_success);
- ASSERT_PTR(found, check_from + FROM_PROH_OFFSET);
-
- r = idn_nameprep_isprohibited(handle11, check_from2, &found);
- ASSERT_RESULT(r, idn_success);
- ASSERT_PTR(found, check_from2 + FROM2_PROH_OFFSET);
-}
-
-//# TESTCASE
-// title: idn_nameprep_isvalidbidi() - boundary condition
-// group: check
-{
- const unsigned long *found;
-
- r = idn_nameprep_isvalidbidi(handle11, ucs4_nullstr, &found);
- ASSERT_RESULT(r, idn_success);
- ASSERT_PTR(found, NULL);
-}
-
-//# TESTCASE
-// title: idn_nameprep_isvalidbidi() - RFC3491
-// group: check
-{
- const unsigned long *found;
-
- r = idn_nameprep_isvalidbidi(handle11, bidi_from, &found);
- ASSERT_RESULT(r, idn_success);
- ASSERT_PTR(found, bidi_from + BIDIFROM_OFFSET);
-
- r = idn_nameprep_isvalidbidi(handle11, check_from2, &found);
- ASSERT_RESULT(r, idn_success);
- ASSERT_PTR(found, NULL);
-}
+++ /dev/null
-#ifndef lint
-static char *rcsid = "$Id: normalizer.tsy,v 1.1 2003/06/04 00:26:57 marka Exp $";
-#endif
-
-/*
- * Copyright (c) 2002 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-#include <stddef.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <idn/normalizer.h>
-#include <idn/log.h>
-#include <idn/ucs4.h>
-
-#define BUF_SIZE 64
-#define TOBUF_SIZE 4
-#define ARRAY_SIZE 20
-#define CONF_FILENAME "test.map"
-
-/*
- * Sample string for `from' argument of normalize(),
- * and its expected outputs.
- */
-static const unsigned long from[4] = {
- 0x304B, /* hiragana letter ka */
- 0x3099, /* combining katakana-hiragana voiced sound mark */
- 0x32D0, /* circled katakana a */
- 0x0000
-};
-
-static const unsigned long normalized_kc_str[3] = {
- 0x304C, /* hiragana letter ga */
- 0x30A2, /* katakana letter a */
- 0x0000
-};
-
-static const unsigned long normalized_c_str[3] = {
- 0x304C, /* hiragana letter ga */
- 0x32D0, /* circled katakana a */
- 0x0000
-};
-
-idn_result_t
-test_proc(const unsigned long *from, unsigned long *to, size_t tolen)
-{
- if (tolen > idn_ucs4_strlen(from)) {
- idn_ucs4_strcpy(to, from);
- } else {
- return (idn_buffer_overflow);
- }
-
- return (idn_success);
-}
-
-//--------------------------------------------------------------------
-// Setups and Teardowns.
-//--------------------------------------------------------------------
-
-//# SETUP
-// group: noinit
-//--
-// Do nothing
-{
- idn_result_t r;
- const char *name;
-}
-
-//# SETUP
-// group: generic
-//--
-// Initialize the module and create context.
-{
- idn_result_t r;
- idn_normalizer_t ctx = NULL;
-
- r = idn_normalizer_initialize();
- ASSERT_RESULT(r, idn_success);
- r = idn_normalizer_create(&ctx);
- ASSERT_RESULT(r, idn_success);
-}
-
-//# TEARDOWN
-// group: generic
-//--
-// Destroy context.
-{
- idn_normalizer_destroy(ctx);
-}
-
-//# SETUP
-// group: addall
-//--
-// Initialize the module and create context.
-{
- idn_result_t r;
- idn_normalizer_t ctx = NULL;
- char *names[ARRAY_SIZE];
- int i;
-
- for (i = 0; i < ARRAY_SIZE; i++) {
- names[i] = malloc(BUF_SIZE);
- if (names[i] == NULL) {
- ASSERT("malloc failed\n");
- }
- }
-
- strcpy(names[0], "RFC3491");
- strcpy(names[1], "unicode-form-kc");
- strcpy(names[2], "unicode-form-kc/3.2.0");
- strcpy(names[3], "RFC3491");
- strcpy(names[4], "unicode-form-kc");
- strcpy(names[5], "unicode-form-kc/3.2.0");
- strcpy(names[6], "RFC3491");
- strcpy(names[7], "unicode-form-kc");
- strcpy(names[8], "unicode-form-kc/3.2.0");
- strcpy(names[9], "RFC3491");
- strcpy(names[10], "unicode-form-kc");
- strcpy(names[11], "unicode-form-kc/3.2.0");
- strcpy(names[12], "RFC3491");
- strcpy(names[13], "unicode-form-kc");
- strcpy(names[14], "unicode-form-kc/3.2.0");
- strcpy(names[15], "RFC3491");
- strcpy(names[16], "unicode-form-kc");
- strcpy(names[17], "unicode-form-kc/3.2.0");
- strcpy(names[18], "RFC3491");
- strcpy(names[19], "unicode-form-kc");
-
- r = idn_normalizer_initialize();
- ASSERT_RESULT(r, idn_success);
- r = idn_normalizer_create(&ctx);
- ASSERT_RESULT(r, idn_success);
-}
-
-//# TEARDOWN
-// group: addall
-//--
-// Destroy context.
-{
- idn_normalizer_destroy(ctx);
- for (i = 0; i < ARRAY_SIZE; i++) {
- free(names[i]);
- }
-}
-
-//# SETUP
-// group: quiet
-//--
-// Set log level to `fatal' to supress log messages.
-{
- int saved_log_level;
-
- saved_log_level = idn_log_getlevel();
- idn_log_setlevel(idn_log_level_fatal);
-}
-
-//# TEARDOWN
-// group: quiet
-//--
-// Restore log level.
-{
- idn_log_setlevel(saved_log_level);
-}
-
-//--------------------------------------------------------------------
-// Testcases.
-//--------------------------------------------------------------------
-
-//# TESTCASE
-// title: idn_normalizer_add() - boundary condition
-// group: generic quiet
-{
- r = idn_normalizer_add(ctx, "");
- ASSERT_RESULT(r, idn_invalid_name);
-}
-
-//# TESTCASE
-// title: idn_normalizer_add() - builtin schemes
-// group: generic quiet
-{
- r = idn_normalizer_add(ctx, "RFC3491");
- ASSERT_RESULT(r, idn_success);
- r = idn_normalizer_add(ctx, "unicode-form-kc");
- ASSERT_RESULT(r, idn_success);
- r = idn_normalizer_add(ctx, "unicode-form-kc/3.2.0");
- ASSERT_RESULT(r, idn_success);
-
- r = idn_normalizer_add(ctx, "nameprep-01");
- ASSERT_RESULT(r, idn_invalid_name);
-}
-
-//# TESTCASE
-// title: idn_normalizer_addall() - boundary condition
-// group: addall quiet
-{
- strcpy(names[3], "");
- r = idn_normalizer_addall(ctx, (const char **)names, ARRAY_SIZE);
- ASSERT_RESULT(r, idn_invalid_name);
-}
-
-//# TESTCASE
-// title: idn_normalizer_addall() - nschemes is 0
-// group: addall quiet
-{
- r = idn_normalizer_addall(ctx, (const char **)names, 0);
- ASSERT_RESULT(r, idn_success);
-}
-
-//# TESTCASE
-// title: idn_normalizer_addall() - add a lot of schemes
-// group: addall quiet
-{
- unsigned long to[TOBUF_SIZE];
-
- r = idn_normalizer_addall(ctx, (const char **)names, ARRAY_SIZE);
- ASSERT_RESULT(r, idn_success);
- r = idn_normalizer_normalize(ctx, from, to, TOBUF_SIZE);
- ASSERT_RESULT(r, idn_success);
- ASSERT_UCS4STRING(to, normalized_kc_str);
-}
-
-//# TESTCASE
-// title: idn_normalizer_addall() - add same scheme repetedly
-// group: addall quiet
-{
- int i;
- unsigned long to[TOBUF_SIZE];
-
- for (i = 0; i < ARRAY_SIZE; i++) {
- strcpy(names[i], "RFC3491");
- }
- r = idn_normalizer_addall(ctx, (const char **)names, ARRAY_SIZE);
- ASSERT_RESULT(r, idn_success);
- r = idn_normalizer_normalize(ctx, from, to, TOBUF_SIZE);
- ASSERT_RESULT(r, idn_success);
- ASSERT_UCS4STRING(to, normalized_kc_str);
-}
-
-//# TESTCASE
-// title: idn_normalizer_normalize() - schemes check - RFC3491
-// group: generic quiet
-{
- unsigned long to[TOBUF_SIZE];
-
- r = idn_normalizer_add(ctx, "RFC3491");
- ASSERT_RESULT(r, idn_success);
- r = idn_normalizer_normalize(ctx, from, to, TOBUF_SIZE);
- ASSERT_RESULT(r, idn_success);
- ASSERT_UCS4STRING(to, normalized_kc_str);
-}
-
-//# TESTCASE
-// title: idn_normalizer_normalize() - schemes check - unicode-form-kc/3.2.0
-// group: generic quiet
-{
- unsigned long to[TOBUF_SIZE];
-
- r = idn_normalizer_add(ctx, "unicode-form-kc/3.2.0");
- ASSERT_RESULT(r, idn_success);
- r = idn_normalizer_normalize(ctx, from, to, TOBUF_SIZE);
- ASSERT_RESULT(r, idn_success);
- ASSERT_UCS4STRING(to, normalized_kc_str);
-}
-
-//# TESTCASE
-// title: idn_normalizer_normalize() - context without procedure
-// group: generic quiet
-{
- unsigned long to[TOBUF_SIZE];
-
- r = idn_normalizer_normalize(ctx, from, to, TOBUF_SIZE);
- ASSERT_RESULT(r, idn_success);
- ASSERT_UCS4STRING(to, from);
-}
-
-//# TESTCASE
-// title: idn_normalizer_destroy(), idn_normalizer_incrref()
-// group:
-{
- idn_result_t r;
- idn_normalizer_t ctx = NULL;
-
- r = idn_normalizer_initialize();
- ASSERT_RESULT(r, idn_success);
- r = idn_normalizer_create(&ctx);
- ASSERT_RESULT(r, idn_success);
- idn_normalizer_incrref(ctx);
- idn_normalizer_destroy(ctx);
- idn_normalizer_destroy(ctx);
-}
-
-//# TESTCASE
-// title: idn_normalizer_register()
-// group: generic quiet
-{
- unsigned long to[TOBUF_SIZE];
-
- r = idn_normalizer_register("test", test_proc);
- ASSERT_RESULT(r, idn_success);
- r = idn_normalizer_add(ctx, "test");
- ASSERT_RESULT(r, idn_success);
-
- r = idn_normalizer_normalize(ctx, from, to, TOBUF_SIZE);
- ASSERT_RESULT(r, idn_success);
- ASSERT_UCS4STRING(to, from);
-}
+++ /dev/null
-#ifndef lint
-static char *rcsid = "$Id: res.tsy,v 1.1 2003/06/04 00:26:59 marka Exp $";
-#endif
-
-/*
- * Copyright (c) 2002 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-#include <stddef.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <idn/res.h>
-#include <idn/log.h>
-
-#include "codeset.h"
-#include "setenv.h"
-
-#ifndef EUCJP_ENCODING_NAME
-#define EUCJP_ENCODING_NAME "eucJP"
-#endif
-
-/*
- * U+304B: hiragana letter KA
- * U+3099: combining katakana-hiragana voiced sound mark
- *
- * map("U+304B U+3099") -> "U+304C"
- *
- * U+304C: hiragana letter GA
- */
-#define UTF8_NAME "A<U+304B><U+3099>"
-#define UTF8_REVNAME "a<U+304C>"
-
-/*
- * A4AC: hiragana letter GA (in EUC-JP)
- */
-#define EUCJP_NAME "\xa4\xac"
-#define EUCJP_REVNAME "\xa4\xac"
-
-/*
- * Conversion result of "U+304B U+3099 A"
- */
-#define PUNYCODE_NAME "xn--a-i8t"
-
-/*
- * Conversion result of "A U+304B U+3099" (in EUC-JP).
- */
-#define AUX_EUCJP_NAME "xn--a-i\xa3\xb8t"
-
-//--------------------------------------------------------------------
-// Setups and Teardowns.
-//--------------------------------------------------------------------
-
-//# SETUP
-// group: generic-conversion
-//--
-// Initialize the `resconf' context.
-// Set local encoding to `UTF-8'.
-{
- char to[256];
- idn_result_t r;
- idn_resconf_t ctx;
-
- setenv("IDN_LOCAL_CODESET", "UTF-8", 1);
- unsetenv("IDN_DISABLE");
-
- r = idn_resconf_initialize();
- ASSERT_RESULT(r, idn_success);
-
- r = idn_resconf_create(&ctx);
- ASSERT_RESULT(r, idn_success);
-
- r = idn_resconf_setdefaults(ctx);
- ASSERT_RESULT(r, idn_success);
-}
-
-//# TEARDOWN
-// group: generic-conversion
-{
- idn_resconf_destroy(ctx);
-}
-
-//# SETUP
-// group: quiet
-//--
-// Set log level to `fatal' to supress log messages.
-{
- int saved_log_level;
-
- saved_log_level = idn_log_getlevel();
- idn_log_setlevel(idn_log_level_fatal);
-}
-
-//# TEARDOWN
-// group: quiet
-//--
-// Restore log level.
-{
- idn_log_setlevel(saved_log_level);
-}
-
-//--------------------------------------------------------------------
-// Testcases.
-//--------------------------------------------------------------------
-
-//# TESTCASE
-// title: basic conversion by encodename()
-// group: generic-conversion
-{
- r = idn_res_encodename(ctx, IDN_ENCODE_APP, UTF8_NAME, to, sizeof(to));
- ASSERT_RESULT(r, idn_success);
- ASSERT_STRING(to, PUNYCODE_NAME);
-}
-
-//# TESTCASE
-// title: basic conversion by decodename()
-// group: generic-conversion
-{
- r = idn_res_decodename(ctx, IDN_DECODE_APP, PUNYCODE_NAME, to, sizeof(to));
- ASSERT_RESULT(r, idn_success);
- ASSERT_STRING(to, UTF8_REVNAME);
-}
-
-//# TESTCASE
-// title: basic conversion by decodename2()
-// group: generic-conversion
-{
- r = idn_res_decodename2(ctx, IDN_DECODE_APP, AUX_EUCJP_NAME, to, sizeof(to),
- EUCJP_ENCODING_NAME);
-#ifdef WITHOUT_ICONV
- ASSERT_RESULT(r, idn_failure);
-#else
- ASSERT_RESULT(r, idn_success);
- ASSERT_STRING(to, UTF8_REVNAME);
-#endif
-}
-
-//# TESTCASE
-// title: call decodename2() with auxencoding=NULL
-// group: generic-conversion
-{
-#ifdef WITHOUT_ICONV
- SKIP_TESTCASE;
-#else
- r = idn_res_decodename2(ctx, IDN_DECODE_APP, PUNYCODE_NAME, to, sizeof(to),
- NULL);
- ASSERT_RESULT(r, idn_success);
- ASSERT_STRING(to, UTF8_REVNAME);
-#endif
-}
-
-//# TESTCASE
-// title: call encodename() with actions=0
-// group: generic-conversion
-{
- r = idn_res_encodename(ctx, 0, UTF8_NAME, to, sizeof(to));
- ASSERT_RESULT(r, idn_success);
- ASSERT_STRING(to, UTF8_NAME);
-}
-
-//# TESTCASE
-// title: call decodename() with actions=0
-// group: generic-conversion
-{
- r = idn_res_decodename(ctx, 0, PUNYCODE_NAME, to, sizeof(to));
- ASSERT_RESULT(r, idn_success);
- ASSERT_STRING(to, PUNYCODE_NAME);
-}
-
-//# TESTCASE
-// title: call decodename2() with actions=0
-// group: generic-conversion
-{
-#ifdef WITHOUT_ICONV
- SKIP_TESTCASE;
-#else
- r = idn_res_decodename2(ctx, 0, AUX_EUCJP_NAME, to, sizeof(to),
- EUCJP_ENCODING_NAME);
- ASSERT_RESULT(r, idn_success);
- ASSERT_STRING(to, AUX_EUCJP_NAME);
-#endif
-}
-
-//# TESTCASE
-// title: call encodename() with actions=rtcheck
-// group: generic-conversion quiet
-{
- r = idn_res_encodename(ctx, IDN_RTCHECK, EUCJP_NAME, to, sizeof(to));
- ASSERT_RESULT(r, idn_invalid_action);
-}
-
-//# TESTCASE
-// title: call encodename() with actions=decode-query
-// group: generic-conversion quiet
-{
- r = idn_res_encodename(ctx, IDN_DECODE_QUERY, EUCJP_NAME, to, sizeof(to));
- ASSERT_RESULT(r, idn_invalid_action);
-}
-
-//# TESTCASE
-// title: call encodename() with actions=decode-app
-// group: generic-conversion quiet
-{
- r = idn_res_encodename(ctx, IDN_DECODE_APP, EUCJP_NAME, to, sizeof(to));
- ASSERT_RESULT(r, idn_invalid_action);
-}
-
-//# TESTCASE
-// title: call encodename() with actions=decode-stored
-// group: generic-conversion quiet
-{
- r = idn_res_encodename(ctx, IDN_DECODE_STORED, EUCJP_NAME, to, sizeof(to));
- ASSERT_RESULT(r, idn_invalid_action);
-}
-
-//# TESTCASE
-// title: call encodename() with actions=(1<<31)
-// group: generic-conversion quiet
-{
- r = idn_res_encodename(ctx, 1 << 31, EUCJP_NAME, to, sizeof(to));
- ASSERT_RESULT(r, idn_invalid_action);
-}
-
-//# TESTCASE
-// title: call decodename() with actions=localmap
-// group: generic-conversion quiet
-{
- r = idn_res_decodename(ctx, IDN_LOCALMAP, PUNYCODE_NAME, to, sizeof(to));
- ASSERT_RESULT(r, idn_invalid_action);
-}
-
-//# TESTCASE
-// title: call decodename2() with actions=localmap
-// group: generic-conversion quiet
-{
-#ifdef WITHOUT_ICONV
- SKIP_TESTCASE;
-#else
- r = idn_res_decodename2(ctx, IDN_LOCALMAP, AUX_EUCJP_NAME, to, sizeof(to),
- EUCJP_ENCODING_NAME);
- ASSERT_RESULT(r, idn_invalid_action);
-#endif
-}
-
-//# TESTCASE
-// title: call decodename() with actions=lencheck
-// group: generic-conversion quiet
-{
- r = idn_res_decodename(ctx, IDN_LENCHECK, PUNYCODE_NAME, to, sizeof(to));
- ASSERT_RESULT(r, idn_invalid_action);
-}
-
-//# TESTCASE
-// title: call decodename2() with actions=lencheck
-// group: generic-conversion quiet
-{
-#ifdef WITHOUT_ICONV
- SKIP_TESTCASE;
-#else
- r = idn_res_decodename2(ctx, IDN_LENCHECK, AUX_EUCJP_NAME, to, sizeof(to),
- EUCJP_ENCODING_NAME);
- ASSERT_RESULT(r, idn_invalid_action);
-#endif
-}
-
-//# TESTCASE
-// title: call decodename() with actions=encode-query
-// group: generic-conversion quiet
-{
- r = idn_res_decodename(ctx, IDN_ENCODE_QUERY, PUNYCODE_NAME, to, sizeof(to));
- ASSERT_RESULT(r, idn_invalid_action);
-}
-
-//# TESTCASE
-// title: call decodename2() with actions=encode-query
-// group: generic-conversion quiet
-{
-#ifdef WITHOUT_ICONV
- SKIP_TESTCASE;
-#else
- r = idn_res_decodename2(ctx, IDN_ENCODE_QUERY, AUX_EUCJP_NAME, to, sizeof(to),
- EUCJP_ENCODING_NAME);
- ASSERT_RESULT(r, idn_invalid_action);
-#endif
-}
-
-//# TESTCASE
-// title: call decodename() with actions=encode-app
-// group: generic-conversion quiet
-{
- r = idn_res_decodename(ctx, IDN_ENCODE_APP, PUNYCODE_NAME, to, sizeof(to));
- ASSERT_RESULT(r, idn_invalid_action);
-}
-
-//# TESTCASE
-// title: call decodename2() with actions=encode-app
-// group: generic-conversion quiet
-{
-#ifdef WITHOUT_ICONV
- SKIP_TESTCASE;
-#else
- r = idn_res_decodename2(ctx, IDN_ENCODE_APP, AUX_EUCJP_NAME, to, sizeof(to),
- EUCJP_ENCODING_NAME);
- ASSERT_RESULT(r, idn_invalid_action);
-#endif
-}
-
-//# TESTCASE
-// title: call decodename() with actions=encode-stored
-// group: generic-conversion quiet
-{
- r = idn_res_decodename(ctx, IDN_ENCODE_STORED, PUNYCODE_NAME, to, sizeof(to));
- ASSERT_RESULT(r, idn_invalid_action);
-}
-
-//# TESTCASE
-// title: call decodename2() with actions=encode-stored
-// group: generic-conversion quiet
-{
-#ifdef WITHOUT_ICONV
- SKIP_TESTCASE;
-#else
- r = idn_res_decodename2(ctx, IDN_ENCODE_STORED, AUX_EUCJP_NAME, to, sizeof(to),
- EUCJP_ENCODING_NAME);
- ASSERT_RESULT(r, idn_invalid_action);
-#endif
-}
-
-//# TESTCASE
-// title: call decodename() with actions=(1<<31)
-// group: generic-conversion quiet
-{
- r = idn_res_decodename(ctx, 1 << 31, PUNYCODE_NAME, to, sizeof(to));
- ASSERT_RESULT(r, idn_invalid_action);
-}
-
-//# TESTCASE
-// title: call decodename2() with actions=(1<<31)
-// group: generic-conversion quiet
-{
-#ifdef WITHOUT_ICONV
- SKIP_TESTCASE;
-#else
- r = idn_res_decodename2(ctx, 1 << 31, AUX_EUCJP_NAME, to, sizeof(to),
- EUCJP_ENCODING_NAME);
- ASSERT_RESULT(r, idn_invalid_action);
-#endif
-}
-
-//# TESTCASE
-// title: call encodename() with actions=localconv
-// group: generic-conversion quiet
-{
-#ifndef WITHOUT_ICONV
- SKIP_TESTCASE;
-#else
- r = idn_res_encodename(ctx, IDN_LOCALCONV, UTF8_NAME, to, sizeof(to));
- ASSERT_RESULT(r, idn_invalid_action);
-#endif
-}
-
-//# TESTCASE
-// title: call decodename() with actions=localconv
-// group: generic-conversion quiet
-{
-#ifndef WITHOUT_ICONV
- SKIP_TESTCASE;
-#else
- r = idn_res_decodename(ctx, IDN_LOCALCONV, PUNYCODE_NAME, to, sizeof(to));
- ASSERT_RESULT(r, idn_invalid_action);
-#endif
-}
-
-//# TESTCASE
-// title: call decodename2() with actions=localconv
-// group: generic-conversion
-{
-#ifndef WITHOUT_ICONV
- SKIP_TESTCASE;
-#else
- r = idn_res_decodename2(ctx, IDN_LOCALCONV, AUX_EUCJP_NAME, to, sizeof(to),
- EUCJP_ENCODING_NAME);
- ASSERT_RESULT(r, idn_failure);
-#endif
-}
-
-//# TESTCASE
-// title: call enable(0) and then encodename()
-// group: generic-conversion
-{
- idn_res_enable(0);
- r = idn_res_encodename(ctx, IDN_ENCODE_APP, UTF8_NAME, to, sizeof(to));
- ASSERT_RESULT(r, idn_success);
- ASSERT_STRING(to, UTF8_NAME);
-}
-
-//# TESTCASE
-// title: call decodename() when IDN_DISABLE is defined
-// group: generic-conversion
-{
- idn_res_enable(0);
- r = idn_res_decodename(ctx, IDN_DECODE_APP, PUNYCODE_NAME, to, sizeof(to));
- ASSERT_RESULT(r, idn_success);
- ASSERT_STRING(to, PUNYCODE_NAME);
-}
-
-//# TESTCASE
-// title: call decodename() when IDN_DISABLE is defined
-// group: generic-conversion
-{
-#ifdef WITHOUT_ICONV
- SKIP_TESTCASE;
-#else
- idn_res_enable(0);
- r = idn_res_decodename2(ctx, IDN_DECODE_APP, AUX_EUCJP_NAME, to, sizeof(to),
- EUCJP_ENCODING_NAME);
- ASSERT_RESULT(r, idn_success);
- ASSERT_STRING(to, AUX_EUCJP_NAME);
-#endif
-}
-
-//# TESTCASE
-// title: call enable(0) and then encodename()
-// group: generic-conversion
-{
- idn_res_enable(0);
- r = idn_res_encodename(ctx, IDN_ENCODE_APP, UTF8_NAME, to, sizeof(to));
- ASSERT_RESULT(r, idn_success);
- ASSERT_STRING(to, UTF8_NAME);
-}
-
-//# TESTCASE
-// title: call enable(0) and then decodename()
-// group: generic-conversion
-{
- idn_res_enable(0);
- r = idn_res_decodename(ctx, IDN_DECODE_APP, PUNYCODE_NAME, to, sizeof(to));
- ASSERT_RESULT(r, idn_success);
- ASSERT_STRING(to, PUNYCODE_NAME);
-}
-
-//# TESTCASE
-// title: call enable(0) and then decodename2()
-// group: generic-conversion
-{
-#ifdef WITHOUT_ICONV
- SKIP_TESTCASE;
-#else
- idn_res_enable(0);
- r = idn_res_decodename2(ctx, IDN_DECODE_APP, AUX_EUCJP_NAME, to, sizeof(to),
- EUCJP_ENCODING_NAME);
- ASSERT_RESULT(r, idn_success);
- ASSERT_STRING(to, AUX_EUCJP_NAME);
-#endif
-}
-
-//# TESTCASE
-// title: set IDN_DISABLE and call encodename()
-// group: generic-conversion
-{
- setenv("IDN_DISABLE", "1", 1);
- r = idn_res_encodename(ctx, IDN_ENCODE_APP, UTF8_NAME, to, sizeof(to));
- ASSERT_RESULT(r, idn_success);
- ASSERT_STRING(to, UTF8_NAME);
-}
-
-//# TESTCASE
-// title: set IDN_DISABLE and call decodename()
-// group: generic-conversion
-{
- setenv("IDN_DISABLE", "1", 1);
- r = idn_res_decodename(ctx, IDN_DECODE_APP, PUNYCODE_NAME, to, sizeof(to));
- ASSERT_RESULT(r, idn_success);
- ASSERT_STRING(to, PUNYCODE_NAME);
-}
-
-//# TESTCASE
-// title: set IDN_DISABLE and call decodename2()
-// group: generic-conversion
-{
-#ifdef WITHOUT_ICONV
- SKIP_TESTCASE;
-#else
- setenv("IDN_DISABLE", "1", 1);
- r = idn_res_decodename2(ctx, IDN_DECODE_APP, AUX_EUCJP_NAME, to, sizeof(to),
- EUCJP_ENCODING_NAME);
- ASSERT_RESULT(r, idn_success);
- ASSERT_STRING(to, AUX_EUCJP_NAME);
-#endif
-}
-
-//# TESTCASE
-// title: set IDN_DISABLE, and then call enable(1) and encodename()
-// group: generic-conversion
-{
- setenv("IDN_DISABLE", "1", 1);
- idn_res_enable(1);
- r = idn_res_encodename(ctx, IDN_ENCODE_APP, UTF8_NAME, to, sizeof(to));
- ASSERT_RESULT(r, idn_success);
- ASSERT_STRING(to, PUNYCODE_NAME);
-}
-
-//# TESTCASE
-// title: set IDN_DISABLE, and then call enable(1) and decodename()
-// group: generic-conversion
-{
- setenv("IDN_DISABLE", "1", 1);
- idn_res_enable(1);
- r = idn_res_decodename(ctx, IDN_DECODE_APP, PUNYCODE_NAME, to, sizeof(to));
- ASSERT_RESULT(r, idn_success);
- ASSERT_STRING(to, UTF8_REVNAME);
-}
-
-//# TESTCASE
-// title: set IDN_DISABLE, and then call enable(1) and decodename2()
-// group: generic-conversion
-{
-#ifdef WITHOUT_ICONV
- SKIP_TESTCASE;
-#else
- setenv("IDN_DISABLE", "1", 1);
- idn_res_enable(1);
- r = idn_res_decodename2(ctx, IDN_DECODE_APP, AUX_EUCJP_NAME, to, sizeof(to),
- EUCJP_ENCODING_NAME);
- ASSERT_RESULT(r, idn_success);
- ASSERT_STRING(to, UTF8_REVNAME);
-#endif
-}
-
-//# TESTCASE
-// title: overrun test for arg `to' of encodename()
-// group: generic-conversion
-{
- /* Normal case */
- r = idn_res_encodename(ctx, IDN_ENCODE_APP, UTF8_NAME, to,
- strlen(PUNYCODE_NAME) + 1);
- ASSERT_RESULT(r, idn_success);
- ASSERT_STRING(to, PUNYCODE_NAME);
-
- r = idn_res_encodename(ctx, IDN_ENCODE_APP, UTF8_NAME, to,
- strlen(PUNYCODE_NAME));
- ASSERT_RESULT(r, idn_buffer_overflow);
-
- /* enable(0) case */
- idn_res_enable(0);
- r = idn_res_encodename(ctx, IDN_ENCODE_APP, UTF8_NAME, to,
- strlen(UTF8_NAME) + 1);
- ASSERT_RESULT(r, idn_success);
- ASSERT_STRING(to, UTF8_NAME);
-
- r = idn_res_encodename(ctx, IDN_ENCODE_APP, UTF8_NAME, to,
- strlen(UTF8_NAME));
- ASSERT_RESULT(r, idn_buffer_overflow);
-
- /* actions=0 case */
- idn_res_enable(1);
- r = idn_res_encodename(ctx, 0, UTF8_NAME, to, strlen(UTF8_NAME) + 1);
- ASSERT_RESULT(r, idn_success);
- ASSERT_STRING(to, UTF8_NAME);
-
- r = idn_res_encodename(ctx, 0, UTF8_NAME, to, strlen(UTF8_NAME));
- ASSERT_RESULT(r, idn_buffer_overflow);
-}
-
-//# TESTCASE
-// title: overrun test for arg `to' of decodename()
-// group: generic-conversion
-{
- /* Normal case */
- r = idn_res_decodename(ctx, IDN_DECODE_APP, PUNYCODE_NAME, to,
- strlen(UTF8_REVNAME) + 1);
- ASSERT_RESULT(r, idn_success);
- ASSERT_STRING(to, UTF8_REVNAME);
-
- r = idn_res_decodename(ctx, IDN_DECODE_APP, PUNYCODE_NAME, to,
- strlen(UTF8_REVNAME));
- ASSERT_RESULT(r, idn_buffer_overflow);
-
- /* idn_res_enable(0) case */
- idn_res_enable(0);
- r = idn_res_decodename(ctx, IDN_DECODE_APP, PUNYCODE_NAME, to,
- strlen(PUNYCODE_NAME) + 1);
- ASSERT_RESULT(r, idn_success);
- ASSERT_STRING(to, PUNYCODE_NAME);
-
- r = idn_res_decodename(ctx, IDN_DECODE_APP, PUNYCODE_NAME, to,
- strlen(PUNYCODE_NAME));
- ASSERT_RESULT(r, idn_buffer_overflow);
-
- /* actions=0 case */
- idn_res_enable(1);
- r = idn_res_decodename(ctx, 0, PUNYCODE_NAME, to,
- strlen(PUNYCODE_NAME) + 1);
- ASSERT_RESULT(r, idn_success);
- ASSERT_STRING(to, PUNYCODE_NAME);
-
- r = idn_res_decodename(ctx, 0, PUNYCODE_NAME, to,
- strlen(PUNYCODE_NAME));
- ASSERT_RESULT(r, idn_buffer_overflow);
-}
-
-//# TESTCASE
-// title: overrun test for arg `to' of decodename2()
-// group: generic-conversion
-{
-#ifdef WITHOUT_ICONV
- SKIP_TESTCASE;
-#else
- /* Normal case */
- r = idn_res_decodename2(ctx, IDN_DECODE_APP, AUX_EUCJP_NAME, to,
- strlen(UTF8_REVNAME) + 1, EUCJP_ENCODING_NAME);
- ASSERT_RESULT(r, idn_success);
- ASSERT_STRING(to, UTF8_REVNAME);
-
- r = idn_res_decodename2(ctx, IDN_DECODE_APP, AUX_EUCJP_NAME, to,
- strlen(UTF8_REVNAME), EUCJP_ENCODING_NAME);
- ASSERT_RESULT(r, idn_buffer_overflow);
-
- /* idn_res_enable(0) case */
- idn_res_enable(0);
- r = idn_res_decodename2(ctx, IDN_DECODE_APP, AUX_EUCJP_NAME, to,
- strlen(AUX_EUCJP_NAME) + 1, EUCJP_ENCODING_NAME);
- ASSERT_RESULT(r, idn_success);
- ASSERT_STRING(to, AUX_EUCJP_NAME);
-
- r = idn_res_decodename2(ctx, IDN_DECODE_APP, AUX_EUCJP_NAME, to,
- strlen(AUX_EUCJP_NAME), EUCJP_ENCODING_NAME);
- ASSERT_RESULT(r, idn_buffer_overflow);
-
- /* actions=0 case */
- idn_res_enable(1);
- r = idn_res_decodename2(ctx, 0, AUX_EUCJP_NAME, to,
- strlen(AUX_EUCJP_NAME) + 1, EUCJP_ENCODING_NAME);
- ASSERT_RESULT(r, idn_success);
- ASSERT_STRING(to, AUX_EUCJP_NAME);
-
- r = idn_res_decodename2(ctx, 0, AUX_EUCJP_NAME, to,
- strlen(AUX_EUCJP_NAME), EUCJP_ENCODING_NAME);
- ASSERT_RESULT(r, idn_buffer_overflow);
-
-#endif
-}
-
-//# TESTCASE
-// title: call encodename() with tolen=0
-// group: generic-conversion
-{
- r = idn_res_encodename(ctx, IDN_ENCODE_APP, UTF8_NAME, to, 0);
- ASSERT_RESULT(r, idn_buffer_overflow);
-}
-
-//# TESTCASE
-// title: call decodename() with tolen=0
-// group: generic-conversion
-{
- r = idn_res_decodename(ctx, IDN_DECODE_APP, PUNYCODE_NAME, to, 0);
- ASSERT_RESULT(r, idn_buffer_overflow);
-}
-
-//# TESTCASE
-// title: call decodename2() with tolen=0
-// group: generic-conversion
-{
-#ifdef WITHOUT_ICONV
- SKIP_TESTCASE;
-#else
- r = idn_res_decodename2(ctx, IDN_DECODE_APP, AUX_EUCJP_NAME, to, 0,
- EUCJP_ENCODING_NAME);
- ASSERT_RESULT(r, idn_buffer_overflow);
-#endif
-}
-
-//# TESTCASE
-// title: convert an empty string using encodename()
-// group: generic-conversion
-{
- r = idn_res_encodename(ctx, IDN_ENCODE_APP, "", to, sizeof(to));
- ASSERT_RESULT(r, idn_success);
- ASSERT_STRING(to, "");
-}
-
-//# TESTCASE
-// title: convert an empty string using decodename()
-// group: generic-conversion
-{
- r = idn_res_decodename(ctx, IDN_DECODE_APP, "", to, sizeof(to));
- ASSERT_RESULT(r, idn_success);
- ASSERT_STRING(to, "");
-}
-
-//# TESTCASE
-// title: convert an empty string using decodename2()
-// group: generic-conversion
-{
-#ifdef WITHOUT_ICONV
- SKIP_TESTCASE;
-#else
- r = idn_res_decodename2(ctx, IDN_DECODE_APP, "", to, sizeof(to),
- EUCJP_ENCODING_NAME);
- ASSERT_RESULT(r, idn_success);
- ASSERT_STRING(to, "");
-#endif
-}
-
-//# TESTCASE
-// title: prohcheck by encodename()
-// group: generic-conversion
-{
- /* U+1680: prohibited character */
- r = idn_res_encodename(ctx, IDN_PROHCHECK, "<U+1680>", to, sizeof(to));
- ASSERT_RESULT(r, idn_prohibited);
-}
-
-//# TESTCASE
-// title: unascheck by encodename()
-// group: generic-conversion
-{
- /* U+0221: unassigned codepoint */
- r = idn_res_encodename(ctx, IDN_UNASCHECK, "<U+0221>", to, sizeof(to));
- ASSERT_RESULT(r, idn_prohibited);
-}
-
-//# TESTCASE
-// title: bidicheck by encodename()
-// group: generic-conversion
-{
- /* U+05D0: bidirectional property is "R" */
- /* `a': bidirectional property is "L" */
- /* `0', `-': bidirectional property is "N" */
- r = idn_res_encodename(ctx, IDN_BIDICHECK, "<U+05D0>", to, sizeof(to));
- ASSERT_RESULT(r, idn_success);
-
- r = idn_res_encodename(ctx, IDN_BIDICHECK, "<U+05D0><U+05D0>",
- to, sizeof(to));
- ASSERT_RESULT(r, idn_success);
-
- r = idn_res_encodename(ctx, IDN_BIDICHECK, "<U+05D0><U+05D0>-a",
- to, sizeof(to));
- ASSERT_RESULT(r, idn_prohibited);
-
- r = idn_res_encodename(ctx, IDN_BIDICHECK, "<U+05D0>-a-<U+05D0>",
- to, sizeof(to));
- ASSERT_RESULT(r, idn_prohibited);
-
- r = idn_res_encodename(ctx, IDN_BIDICHECK, "a-<U+05D0><U+05D0>",
- to, sizeof(to));
- ASSERT_RESULT(r, idn_prohibited);
-
- r = idn_res_encodename(ctx, IDN_BIDICHECK, "<U+05D0><U+05D0>-0",
- to, sizeof(to));
- ASSERT_RESULT(r, idn_prohibited);
-
- r = idn_res_encodename(ctx, IDN_BIDICHECK, "<U+05D0>-0-<U+05D0>",
- to, sizeof(to));
- ASSERT_RESULT(r, idn_success);
-
- r = idn_res_encodename(ctx, IDN_BIDICHECK, "0-<U+05D0><U+05D0>",
- to, sizeof(to));
- ASSERT_RESULT(r, idn_prohibited);
-}
-
-//# TESTCASE
-// title: asccheck by encodename()
-// group: generic-conversion
-{
- r = idn_res_encodename(ctx, IDN_ASCCHECK, "-name", to, sizeof(to));
- ASSERT_RESULT(r, idn_prohibited);
-
- r = idn_res_encodename(ctx, IDN_ASCCHECK, "name-", to, sizeof(to));
- ASSERT_RESULT(r, idn_prohibited);
-
- r = idn_res_encodename(ctx, IDN_ASCCHECK, "n ame", to, sizeof(to));
- ASSERT_RESULT(r, idn_prohibited);
-}
-
-//# TESTCASE
-// title: lencheck by encodename()
-// group: generic-conversion
-{
- r = idn_res_encodename(ctx, IDN_LENCHECK,
- "123456789-123456789-123456789-123456789-"
- "123456789-123456789-123", to, sizeof(to));
- ASSERT_RESULT(r, idn_success);
-
- r = idn_res_encodename(ctx, IDN_LENCHECK,
- "123456789-123456789-123456789-123456789-"
- "123456789-123456789-1234", to, sizeof(to));
- ASSERT_RESULT(r, idn_invalid_length);
-
- r = idn_res_encodename(ctx, IDN_LENCHECK, "a..b", to, sizeof(to));
- ASSERT_RESULT(r, idn_invalid_length);
-}
-
-//# TESTCASE
-// title: rtcheck non-prohchecked label by decodename()
-// group: generic-conversion
-{
- /* "xn--6ue" -> "U+1680" (prohibited character) */
- r = idn_res_decodename(ctx, IDN_RTCHECK, "xn--6ue", to, sizeof(to));
- ASSERT_RESULT(r, idn_success);
- ASSERT_STRING(to, "xn--6ue");
-}
-
-//# TESTCASE
-// title: rtcheck non-unaschecked label by decodename()
-// group: generic-conversion
-{
- /* "xn--6la" -> "U+0221" (unassigned codepoint) */
- r = idn_res_decodename(ctx, IDN_IDNCONV | IDN_RTCHECK | IDN_UNASCHECK,
- "xn--6la", to, sizeof(to));
- ASSERT_RESULT(r, idn_success);
- ASSERT_STRING(to, "xn--6la");
-}
-
-//# TESTCASE
-// title: rtcheck non-ascchecked label by decodename()
-// group: generic-conversion
-{
- /* "xn----x7t" -> "- U+3042" */
- r = idn_res_decodename(ctx, IDN_IDNCONV | IDN_RTCHECK | IDN_ASCCHECK,
- "xn----x7t", to, sizeof(to));
- ASSERT_RESULT(r, idn_success);
- ASSERT_STRING(to, "xn----x7t");
-
- /* "xn----w7t" -> "U+3042 -" */
- r = idn_res_decodename(ctx, IDN_IDNCONV | IDN_RTCHECK | IDN_ASCCHECK,
- "xn----w7t", to, sizeof(to));
- ASSERT_RESULT(r, idn_success);
- ASSERT_STRING(to, "xn----w7t");
-}
-
-//# TESTCASE
-// title: rtcheck non-lenchecked label by decodename()
-// group: generic-conversion
-{
- /* `s1' has 63 characters */
- const char *s1 =
- "xn--l8jaa5522a8sj38bzugvvblo3y90fjzgvxlmxscifws3d43odzaq6aj340b";
-
- const char *s1rev =
- "<U+9752><U+68EE><U+5CA9><U+624B><U+5BAE><U+57CE><U+79CB><U+7530>"
- "<U+5C71><U+5F62><U+798F><U+5CF6><U+6771><U+4EAC><U+795E><U+5948>"
- "<U+5DDD><U+3042><U+3042><U+3042>";
-
- /* `s2' has 64 characters */
- const char *s2 =
- "xn--a-w7ta6522a8sj38bzugvvblo3y90fjzgvxlmxscifws3d43odzaq6aj340b";
-
- /* `s3' has an empty label */
- const char *s3 = "a..b";
-
- r = idn_res_decodename(ctx, IDN_IDNCONV | IDN_RTCHECK, s1, to, sizeof(to));
- ASSERT_RESULT(r, idn_success);
- ASSERT_STRING(to, s1rev);
-
- r = idn_res_decodename(ctx, IDN_IDNCONV | IDN_RTCHECK, s2, to, sizeof(to));
- ASSERT_RESULT(r, idn_success);
- ASSERT_STRING(to, s2);
-
- r = idn_res_decodename(ctx, IDN_IDNCONV | IDN_RTCHECK, s3, to, sizeof(to));
- ASSERT_RESULT(r, idn_success);
- ASSERT_STRING(to, s3);
-}
-
-//# TESTCASE
-// title: rtcheck non-prohchecked label by decodename2()
-// group: generic-conversion
-{
-#ifdef WITHOUT_ICONV
- SKIP_TESTCASE;
-#else
- /* "xn--6ue" -> "U+1680" (prohibited character) */
- r = idn_res_decodename2(ctx, IDN_RTCHECK, "xn--6ue", to, sizeof(to),
- EUCJP_ENCODING_NAME);
- ASSERT_RESULT(r, idn_success);
- ASSERT_STRING(to, "xn--6ue");
-#endif
-}
-
-//# TESTCASE
-// title: rtcheck non-unaschecked label by decodename2()
-// group: generic-conversion
-{
-#ifdef WITHOUT_ICONV
- SKIP_TESTCASE;
-#else
- /* "xn--6la" -> "U+0221" (unassigned codepoint) */
- r = idn_res_decodename2(ctx, IDN_IDNCONV | IDN_RTCHECK | IDN_UNASCHECK,
- "xn--6la", to, sizeof(to), EUCJP_ENCODING_NAME);
- ASSERT_RESULT(r, idn_success);
- ASSERT_STRING(to, "xn--6la");
-#endif
-}
-
-//# TESTCASE
-// title: rtcheck non-ascchecked label by decodename2()
-// group: generic-conversion
-{
-#ifdef WITHOUT_ICONV
- SKIP_TESTCASE;
-#else
- /* "xn----x7t" -> "- U+3042" */
- r = idn_res_decodename2(ctx, IDN_IDNCONV | IDN_RTCHECK | IDN_ASCCHECK,
- "xn----x7t", to, sizeof(to), EUCJP_ENCODING_NAME);
-
- ASSERT_RESULT(r, idn_success);
- ASSERT_STRING(to, "xn----x7t");
-
- /* "xn----w7t" -> "U+3042 -" */
- r = idn_res_decodename2(ctx, IDN_IDNCONV | IDN_RTCHECK | IDN_ASCCHECK,
- "xn----w7t", to, sizeof(to), EUCJP_ENCODING_NAME);
- ASSERT_RESULT(r, idn_success);
- ASSERT_STRING(to, "xn----w7t");
-#endif
-}
-
-//# TESTCASE
-// title: rtcheck non-lenchecked label by decodename2()
-// group: generic-conversion
-{
-#ifdef WITHOUT_ICONV
- SKIP_TESTCASE;
-#else
- /* `s1' has 63 characters */
- const char *s1 =
- "xn--l8jaa5522a8sj38bzugvvblo3y90fjzgvxlmxscifws3d43odzaq6aj340b";
-
- const char *s1rev =
- "<U+9752><U+68EE><U+5CA9><U+624B><U+5BAE><U+57CE><U+79CB><U+7530>"
- "<U+5C71><U+5F62><U+798F><U+5CF6><U+6771><U+4EAC><U+795E><U+5948>"
- "<U+5DDD><U+3042><U+3042><U+3042>";
-
- /* `s2' has 64 characters */
- const char *s2 =
- "xn--a-w7ta6522a8sj38bzugvvblo3y90fjzgvxlmxscifws3d43odzaq6aj340b";
-
- /* `s3' has an empty label */
- const char *s3 = "a..b";
-
- r = idn_res_decodename2(ctx, IDN_IDNCONV | IDN_RTCHECK, s1, to, sizeof(to),
- EUCJP_ENCODING_NAME);
- ASSERT_RESULT(r, idn_success);
- ASSERT_STRING(to, s1rev);
-
- r = idn_res_decodename2(ctx, IDN_IDNCONV | IDN_RTCHECK, s2, to, sizeof(to),
- EUCJP_ENCODING_NAME);
- ASSERT_RESULT(r, idn_success);
- ASSERT_STRING(to, s2);
-
- r = idn_res_decodename(ctx, IDN_IDNCONV | IDN_RTCHECK, s3, to, sizeof(to));
- ASSERT_RESULT(r, idn_success);
- ASSERT_STRING(to, s3);
-#endif
-}
-
-//# TESTCASE
-// title: pass broken string as `from' to encodename()
-// group: generic-conversion quiet
-{
- /* "\xe3\x21" is not valid UTF-8 string */
- r = idn_res_encodename(ctx, IDN_ENCODE_APP, "\xe3\x21", to, sizeof(to));
- ASSERT_RESULT(r, idn_invalid_encoding);
-}
-
-//# TESTCASE
-// title: pass broken string as `from' to decodename()
-// group: generic-conversion quiet
-{
- /* "\xe3\x21" is not valid UTF-8 string */
- r = idn_res_decodename(ctx, IDN_DECODE_APP, "\xe3\x21", to, sizeof(to));
- ASSERT_RESULT(r, idn_invalid_encoding);
-}
-
-//# TESTCASE
-// title: pass broken string as `from' to decodename2()
-// group: generic-conversion quiet
-{
-#ifdef WITHOUT_ICONV
- SKIP_TESTCASE;
-#else
- /* "\xa4\x21" is not valid EUC-JP string */
- r = idn_res_decodename2(ctx, IDN_DECODE_APP, "\xa4\x21", to, sizeof(to),
- EUCJP_ENCODING_NAME);
- ASSERT_RESULT(r, idn_invalid_encoding);
-#endif
-}
-
+++ /dev/null
-#ifndef lint
-static char *rcsid = "$Id: resconf.tsy,v 1.1 2003/06/04 00:27:00 marka Exp $";
-#endif
-
-/*
- * Copyright (c) 2002 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-#include <stddef.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <stdarg.h>
-#include <idn/resconf.h>
-#include <idn/converter.h>
-#include <idn/log.h>
-
-#include "setenv.h"
-#include "testutil.h"
-
-#define CONF_FILENAME "test.conf"
-#define MAP_FILENAME "test.map"
-
-//--------------------------------------------------------------------
-// Setups and Teardowns.
-//--------------------------------------------------------------------
-
-//# SETUP
-// group: generic-init
-{
- idn_result_t r;
- idn_resconf_t ctx = NULL;
-
- setenv("IDN_LOCAL_CODESET", "UTF-8", 1);
-
- r = idn_resconf_initialize();
- ASSERT_RESULT(r, idn_success);
-
- r = idn_resconf_create(&ctx);
- ASSERT_RESULT(r, idn_success);
-}
-
-//# TEARDOWN
-// group: generic-init
-{
- if (ctx != NULL)
- idn_resconf_destroy(ctx);
- remove(CONF_FILENAME);
- remove(MAP_FILENAME);
-}
-
-//# SETUP
-// group: set-defaults
-{
- r = idn_resconf_setdefaults(ctx);
- ASSERT_RESULT(r, idn_success);
-}
-
-//# TEARDOWN
-// group: set-defaults
-{
-}
-
-//# SETUP
-// group: quiet
-{
- int saved_log_level;
-
- saved_log_level = idn_log_getlevel();
- idn_log_setlevel(idn_log_level_fatal);
-}
-
-//# TEARDOWN
-// group: quiet
-{
- idn_log_setlevel(saved_log_level);
-}
-
-//# SETUP
-// group: delimitermap_ctx
-{
- idn_delimitermap_t delimitermap_ctx1 = NULL;
- idn_delimitermap_t delimitermap_ctx2 = NULL;
-}
-
-//# TEARDOWN
-// group: delimitermap_ctx
-{
- if (delimitermap_ctx1 != NULL)
- idn_delimitermap_destroy(delimitermap_ctx1);
- if (delimitermap_ctx2 != NULL)
- idn_delimitermap_destroy(delimitermap_ctx2);
-}
-
-//# SETUP
-// group: idnconverter_ctx
-{
- idn_converter_t idnconverter_ctx1 = NULL;
- idn_converter_t idnconverter_ctx2 = NULL;
-}
-
-//# TEARDOWN
-// group: idnconverter_ctx
-{
- if (idnconverter_ctx1 != NULL)
- idn_converter_destroy(idnconverter_ctx1);
- if (idnconverter_ctx2 != NULL)
- idn_converter_destroy(idnconverter_ctx2);
-}
-
-//# SETUP
-// group: localconverter_ctx
-{
- idn_converter_t localconverter_ctx1 = NULL;
- idn_converter_t localconverter_ctx2 = NULL;
-}
-
-//# TEARDOWN
-// group: localconverter_ctx
-{
- if (localconverter_ctx1 != NULL)
- idn_converter_destroy(localconverter_ctx1);
- if (localconverter_ctx2 != NULL)
- idn_converter_destroy(localconverter_ctx2);
-}
-
-//# SETUP
-// group: auxidnconverter_ctx
-{
- idn_converter_t auxidnconverter_ctx1 = NULL;
- idn_converter_t auxidnconverter_ctx2 = NULL;
-}
-
-//# TEARDOWN
-// group: auxidnconverter_ctx
-{
- if (auxidnconverter_ctx1 != NULL)
- idn_converter_destroy(auxidnconverter_ctx1);
- if (auxidnconverter_ctx2 != NULL)
- idn_converter_destroy(auxidnconverter_ctx2);
-}
-
-//# SETUP
-// group: mapselector_ctx
-{
- idn_mapselector_t mapselector_ctx1 = NULL;
- idn_mapselector_t mapselector_ctx2 = NULL;
-}
-
-//# TEARDOWN
-// group: mapselector_ctx
-{
- if (mapselector_ctx1 != NULL)
- idn_mapselector_destroy(mapselector_ctx1);
- if (mapselector_ctx2 != NULL)
- idn_mapselector_destroy(mapselector_ctx2);
-}
-
-//# SETUP
-// group: mapper_ctx
-{
- idn_mapper_t mapper_ctx1 = NULL;
- idn_mapper_t mapper_ctx2 = NULL;
-}
-
-//# TEARDOWN
-// group: mapper_ctx
-{
- if (mapper_ctx1 != NULL)
- idn_mapper_destroy(mapper_ctx1);
- if (mapper_ctx2 != NULL)
- idn_mapper_destroy(mapper_ctx2);
-}
-
-//# SETUP
-// group: normalizer_ctx
-{
- idn_normalizer_t normalizer_ctx1 = NULL;
- idn_normalizer_t normalizer_ctx2 = NULL;
-}
-
-//# TEARDOWN
-// group: normalizer_ctx
-{
- if (normalizer_ctx1 != NULL)
- idn_normalizer_destroy(normalizer_ctx1);
- if (normalizer_ctx2 != NULL)
- idn_normalizer_destroy(normalizer_ctx2);
-}
-
-//# SETUP
-// group: prohibitchecker_ctx
-{
- idn_checker_t prohibitchecker_ctx1 = NULL;
- idn_checker_t prohibitchecker_ctx2 = NULL;
-}
-
-//# TEARDOWN
-// group: prohibitchecker_ctx
-{
- if (prohibitchecker_ctx1 != NULL)
- idn_checker_destroy(prohibitchecker_ctx1);
- if (prohibitchecker_ctx2 != NULL)
- idn_checker_destroy(prohibitchecker_ctx2);
-}
-
-//# SETUP
-// group: unassignedchecker_ctx
-{
- idn_checker_t unassignedchecker_ctx1 = NULL;
- idn_checker_t unassignedchecker_ctx2 = NULL;
-}
-
-//# TEARDOWN
-// group: unassignedchecker_ctx
-{
- if (unassignedchecker_ctx1 != NULL)
- idn_checker_destroy(unassignedchecker_ctx1);
- if (unassignedchecker_ctx2 != NULL)
- idn_checker_destroy(unassignedchecker_ctx2);
-}
-
-//# SETUP
-// group: bidichecker_ctx
-{
- idn_checker_t bidichecker_ctx1 = NULL;
- idn_checker_t bidichecker_ctx2 = NULL;
-}
-
-//# TEARDOWN
-// group: bidichecker_ctx
-{
- if (bidichecker_ctx1 != NULL)
- idn_checker_destroy(bidichecker_ctx1);
- if (bidichecker_ctx2 != NULL)
- idn_checker_destroy(bidichecker_ctx2);
-}
-
-//--------------------------------------------------------------------
-// Testcases.
-//--------------------------------------------------------------------
-
-//# TESTCASE
-// title: call create() without initialization.
-//--
-// This must be the first test case.
-{
- idn_result_t r;
- idn_resconf_t ctx = NULL;
-
- r = idn_resconf_create(&ctx);
- ASSERT_RESULT(r, idn_failure);
-
- if (ctx != NULL)
- idn_resconf_destroy(ctx);
-}
-
-//# TESTCASE
-// title: call initialize() twice.
-//
-{
- idn_result_t r;
-
- r = idn_resconf_initialize();
- ASSERT_RESULT(r, idn_success);
-
- r = idn_resconf_initialize();
- ASSERT_RESULT(r, idn_success);
-}
-
-//# TESTCASE
-// title: call create()
-{
- idn_result_t r;
- idn_resconf_t ctx;
-
- r = idn_resconf_initialize();
- ASSERT_RESULT(r, idn_success);
-
- r = idn_resconf_create(&ctx);
- ASSERT_RESULT(r, idn_success);
-
- if (ctx != NULL)
- idn_resconf_destroy(ctx);
-}
-
-//# TESTCASE
-// title: load file (idn-encoding)
-// group: generic-init
-{
- const char *idn_encoding;
-
- create_conf_file(CONF_FILENAME, 0,
- "idn-encoding Punycode",
- NULL);
- r = idn_resconf_loadfile(ctx, CONF_FILENAME);
- ASSERT_RESULT(r, idn_success);
-}
-
-//# TESTCASE
-// title: load file (nameprep)
-// group: generic-init
-{
- const char *idn_encoding;
-
- create_conf_file(CONF_FILENAME, 0,
- "nameprep " IDN_NAMEPREP_CURRENT,
- NULL);
- r = idn_resconf_loadfile(ctx, CONF_FILENAME);
- ASSERT_RESULT(r, idn_success);
-}
-
-//# TESTCASE
-// title: load file (idn-encoding & nameprep)
-// group: generic-init
-{
- const char *idn_encoding;
-
- create_conf_file(CONF_FILENAME, 0,
- "idn-encoding Punycode",
- "nameprep " IDN_NAMEPREP_CURRENT,
- NULL);
- r = idn_resconf_loadfile(ctx, CONF_FILENAME);
- ASSERT_RESULT(r, idn_success);
-}
-
-//# TESTCASE
-// title: load file (empty)
-// group: generic-init
-{
- const char *idn_encoding;
-
- create_conf_file(CONF_FILENAME, 0,
- NULL);
- r = idn_resconf_loadfile(ctx, CONF_FILENAME);
- ASSERT_RESULT(r, idn_success);
-}
-
-//# TESTCASE
-// title: load file (local-map filemap)
-// group: generic-init
-{
- const char *idn_encoding;
-
- create_conf_file(CONF_FILENAME, 0,
- "local-map .jp filemap:" MAP_FILENAME,
- NULL);
- create_conf_file(MAP_FILENAME, 0,
- "2212; FF0D",
- NULL);
-
- r = idn_resconf_loadfile(ctx, CONF_FILENAME);
- ASSERT_RESULT(r, idn_success);
-}
-
-//# TESTCASE
-// title: load file (local-map nameprep)
-// group: generic-init
-{
- const char *idn_encoding;
-
- create_conf_file(CONF_FILENAME, 0,
- "local-map .jp " IDN_NAMEPREP_CURRENT,
- NULL);
- r = idn_resconf_loadfile(ctx, CONF_FILENAME);
- ASSERT_RESULT(r, idn_success);
-}
-
-//# TESTCASE
-// title: set defaults
-// group: generic-init set-defaults
-{
-}
-
-//# TESTCASE
-// title: load file (no file)
-// group: generic-init
-{
- r = idn_resconf_loadfile(ctx, "no-such-file");
- ASSERT_RESULT(r, idn_nofile);
-}
-
-//# TESTCASE
-// title: load file (empty file name)
-// group: generic-init
-{
- r = idn_resconf_loadfile(ctx, "");
- ASSERT_RESULT(r, idn_nofile);
-}
-
-//# TESTCASE
-// title: load file (unknown command)
-// group: generic-init quiet
-{
- create_conf_file(CONF_FILENAME, 0,
- "unknown-command " IDN_NAMEPREP_CURRENT,
- NULL);
- r = idn_resconf_loadfile(ctx, CONF_FILENAME);
- ASSERT_RESULT(r, idn_invalid_syntax);
-}
-
-//# TESTCASE
-// title: load file (no newline at the end of file)
-// group: generic-init quiet
-{
- create_conf_file(CONF_FILENAME, CONF_NO_EOF_NEWLINE,
- "nameprep " IDN_NAMEPREP_CURRENT,
- NULL);
- r = idn_resconf_loadfile(ctx, CONF_FILENAME);
- ASSERT_RESULT(r, idn_success);
-}
-
-//# TESTCASE
-// title: load file (too long line)
-// group: generic-init quiet
-{
- char arg[1024];
- char *line;
-
- /* arg = "local-map . ////..." */
- memset(arg, '/', sizeof(arg));
- arg[sizeof(arg) - 1] = '\0';
- line = "local-map . ";
- memcpy(arg, line, strlen(line));
-
- create_conf_file(CONF_FILENAME, 0, arg, NULL);
-
- r = idn_resconf_loadfile(ctx, CONF_FILENAME);
- ASSERT_RESULT(r, idn_invalid_syntax);
-}
-
-//# TESTCASE
-// title: load file (empty file)
-// group: generic-init
-{
- create_conf_file(CONF_FILENAME, 0, "", NULL);
- r = idn_resconf_loadfile(ctx, CONF_FILENAME);
- ASSERT_RESULT(r, idn_success);
-}
-
-//# TESTCASE
-// title: load file (invalid parameter for idn-encoding)
-// group: generic-init quiet
-{
-#ifndef WITHOUT_ICONV
- SKIP_TESTCASE;
-#else
- create_conf_file(CONF_FILENAME, 0,
- "idn-encoding invalid-encoding-name",
- NULL);
- r = idn_resconf_loadfile(ctx, CONF_FILENAME);
- ASSERT_RESULT(r, idn_invalid_name);
-#endif
-}
-
-//# TESTCASE
-// title: load file (define idn-encoding twice)
-// group: generic-init quiet
-{
-#ifndef WITHOUT_ICONV
- SKIP_TESTCASE;
-#else
- create_conf_file(CONF_FILENAME, CONF_NO_EOF_NEWLINE,
- "idn-encoding Punycode",
- "idn-encoding Punycode",
- NULL);
- r = idn_resconf_loadfile(ctx, CONF_FILENAME);
- ASSERT_RESULT(r, idn_invalid_syntax);
-#endif
-}
-
-//# TESTCASE
-// title: load file (invalid parameter for nameprep)
-// group: generic-init quiet
-{
- create_conf_file(CONF_FILENAME, 0,
- "nameprep invalid-version",
- NULL);
- r = idn_resconf_loadfile(ctx, CONF_FILENAME);
- ASSERT_RESULT(r, idn_invalid_name);
-}
-
-//# TESTCASE
-// title: load file (define nameprep twice)
-// group: generic-init quiet
-{
-#ifndef WITHOUT_ICONV
- SKIP_TESTCASE;
-#else
- create_conf_file(CONF_FILENAME, CONF_NO_EOF_NEWLINE,
- "nameprep " IDN_NAMEPREP_CURRENT,
- "nameprep " IDN_NAMEPREP_CURRENT,
- NULL);
- r = idn_resconf_loadfile(ctx, CONF_FILENAME);
- ASSERT_RESULT(r, idn_invalid_syntax);
-#endif
-}
-
-//# TESTCASE
-// title: load file (invalid parameter for local-map)
-// group: generic-init quiet
-{
- create_conf_file(CONF_FILENAME, 0,
- "local-map .jp :",
- NULL);
- r = idn_resconf_loadfile(ctx, CONF_FILENAME);
- ASSERT_RESULT(r, idn_invalid_name);
-
- create_conf_file(CONF_FILENAME, 0,
- "local-map .jp invalid:/dev/null",
- NULL);
- r = idn_resconf_loadfile(ctx, CONF_FILENAME);
- ASSERT_RESULT(r, idn_invalid_name);
-
- create_conf_file(CONF_FILENAME, 0,
- "local-map .jp filemap",
- NULL);
- r = idn_resconf_loadfile(ctx, CONF_FILENAME);
- ASSERT_RESULT(r, idn_nofile);
-
- create_conf_file(CONF_FILENAME, 0,
- "local-map .jp filemap:",
- NULL);
- r = idn_resconf_loadfile(ctx, CONF_FILENAME);
- ASSERT_RESULT(r, idn_nofile);
-
- create_conf_file(CONF_FILENAME, 0,
- "local-map .jp filemap:no-such-file",
- NULL);
- r = idn_resconf_loadfile(ctx, CONF_FILENAME);
- ASSERT_RESULT(r, idn_nofile);
-
- create_conf_file(CONF_FILENAME, 0,
- "local-map "
- "abcdefghijklmnopqrstuvwxyz0123"
- "abcdefghijklmnopqrstuvwxyz0123"
- "4567 "
- IDN_NAMEPREP_CURRENT,
- NULL);
- r = idn_resconf_loadfile(ctx, CONF_FILENAME);
- ASSERT_RESULT(r, idn_invalid_name);
-}
-
-//# TESTCASE
-// title: load file (pass wrong number of parameters to idn-encoding)
-// group: generic-init quiet
-{
- create_conf_file(CONF_FILENAME, 0,
- "idn-encoding ",
- NULL);
- r = idn_resconf_loadfile(ctx, CONF_FILENAME);
- ASSERT_RESULT(r, idn_invalid_syntax);
-
- create_conf_file(CONF_FILENAME, 0,
- "idn-encoding Punycode ?",
- NULL);
- r = idn_resconf_loadfile(ctx, CONF_FILENAME);
- ASSERT_RESULT(r, idn_invalid_syntax);
-}
-
-//# TESTCASE
-// title: load file (pass wrong number of parameters to nameprep)
-// group: generic-init quiet
-{
- create_conf_file(CONF_FILENAME, 0,
- "nameprep ",
- NULL);
- r = idn_resconf_loadfile(ctx, CONF_FILENAME);
- ASSERT_RESULT(r, idn_invalid_syntax);
-
- create_conf_file(CONF_FILENAME, 0,
- "nameprep " IDN_NAMEPREP_CURRENT " ?",
- NULL);
- r = idn_resconf_loadfile(ctx, CONF_FILENAME);
- ASSERT_RESULT(r, idn_invalid_syntax);
-}
-
-//# TESTCASE
-// title: load file (pass wrong number of parameters to local-map)
-// group: generic-init quiet
-{
- create_conf_file(CONF_FILENAME, 0,
- "local-map ",
- NULL);
- r = idn_resconf_loadfile(ctx, CONF_FILENAME);
- ASSERT_RESULT(r, idn_invalid_syntax);
-
- create_conf_file(CONF_FILENAME, 0,
- "local-map .jp ",
- NULL);
- r = idn_resconf_loadfile(ctx, CONF_FILENAME);
- ASSERT_RESULT(r, idn_invalid_syntax);
-}
-
-//# TESTCASE
-// title: getdelimitermap
-// group: generic-init set-defaults delimitermap_ctx
-{
- delimitermap_ctx1 = idn_resconf_getdelimitermap(ctx);
- ASSERT_PTR_NE(delimitermap_ctx1, NULL);
-}
-
-//# TESTCASE
-// title: setdelimitermap
-// group: generic-init set-defaults delimitermap_ctx
-{
- r = idn_delimitermap_create(&delimitermap_ctx1);
- ASSERT_RESULT(r, idn_success);
-
- /* set delimitermap context. */
- idn_resconf_setdelimitermap(ctx, delimitermap_ctx1);
- delimitermap_ctx2 = idn_resconf_getdelimitermap(ctx);
- ASSERT_PTR(delimitermap_ctx2, delimitermap_ctx1);
- idn_delimitermap_destroy(delimitermap_ctx2);
-
- /* set NULL as delimitermap context */
- idn_resconf_setdelimitermap(ctx, NULL);
- delimitermap_ctx2 = idn_resconf_getdelimitermap(ctx);
- ASSERT_PTR(delimitermap_ctx2, NULL);
-}
-
-//# TESTCASE
-// title: addalldelimitermapucs
-// group: generic-init set-defaults
-{
- static unsigned long v[] = {0x002C, 0x3001, 0xFF0C};
- int nv = sizeof(v) / sizeof(*v);
-
- r = idn_resconf_addalldelimitermapucs(ctx, v, nv);
- ASSERT_RESULT(r, idn_success);
-}
-
-//# TESTCASE
-// title: getidnconverter
-// group: generic-init set-defaults idnconverter_ctx
-{
- idnconverter_ctx1 = idn_resconf_getidnconverter(ctx);
- ASSERT_PTR_NE(idnconverter_ctx1, NULL);
-}
-
-//# TESTCASE
-// title: setidnconverter
-// group: generic-init set-defaults idnconverter_ctx
-{
- r = idn_converter_create("Punycode", &idnconverter_ctx1, 0);
- ASSERT_RESULT(r, idn_success);
-
- /* set idnconverter context. */
- idn_resconf_setidnconverter(ctx, idnconverter_ctx1);
- idnconverter_ctx2 = idn_resconf_getidnconverter(ctx);
- ASSERT_PTR(idnconverter_ctx2, idnconverter_ctx1);
- idn_converter_destroy(idnconverter_ctx2);
-
- /* set NULL as idnconverter context */
- idn_resconf_setidnconverter(ctx, NULL);
- idnconverter_ctx2 = idn_resconf_getidnconverter(ctx);
- ASSERT_PTR(idnconverter_ctx2, NULL);
-}
-
-//# TESTCASE
-// title: getlocalconverter
-// group: generic-init set-defaults localconverter_ctx
-{
- localconverter_ctx1 = idn_resconf_getlocalconverter(ctx);
-#ifdef WITHOUT_ICONV
- ASSERT_PTR(localconverter_ctx1, NULL);
-#else
- ASSERT_PTR_NE(localconverter_ctx1, NULL);
-#endif
-}
-
-//# TESTCASE
-// title: setlocalconverter
-// group: generic-init set-defaults localconverter_ctx
-{
- r = idn_converter_create("UTF-8", &localconverter_ctx1, 0);
- ASSERT_RESULT(r, idn_success);
-
- /* set localconverter context. */
- idn_resconf_setlocalconverter(ctx, localconverter_ctx1);
- localconverter_ctx2 = idn_resconf_getlocalconverter(ctx);
-#ifdef WITHOUT_ICONV
- ASSERT_PTR(localconverter_ctx2, NULL);
-#else
- ASSERT_PTR(localconverter_ctx2, localconverter_ctx1);
- idn_converter_destroy(localconverter_ctx2);
-#endif
-
- /* set NULL as localconverter context */
- idn_resconf_setlocalconverter(ctx, NULL);
- localconverter_ctx2 = idn_resconf_getlocalconverter(ctx);
-#ifdef WITHOUT_ICONV
- ASSERT_PTR(localconverter_ctx2, NULL);
-#else
- ASSERT_PTR_NE(localconverter_ctx2, NULL);
-#endif
-}
-
-//# TESTCASE
-// title: getauxidnconverter
-// group: generic-init set-defaults auxidnconverter_ctx
-{
- auxidnconverter_ctx1 = idn_resconf_getauxidnconverter(ctx);
- ASSERT_PTR(auxidnconverter_ctx1, NULL);
-}
-
-//# TESTCASE
-// title: setauxidnconverter
-// group: generic-init set-defaults auxidnconverter_ctx
-{
- r = idn_converter_create("Punycode", &auxidnconverter_ctx1, 0);
- ASSERT_RESULT(r, idn_success);
-
- /* set auxidnconverter context. */
- idn_resconf_setauxidnconverter(ctx, auxidnconverter_ctx1);
- auxidnconverter_ctx2 = idn_resconf_getauxidnconverter(ctx);
- ASSERT_PTR(auxidnconverter_ctx2, auxidnconverter_ctx1);
- idn_converter_destroy(auxidnconverter_ctx2);
-
- /* set NULL as auxidnconverter context */
- idn_resconf_setauxidnconverter(ctx, NULL);
- auxidnconverter_ctx2 = idn_resconf_getauxidnconverter(ctx);
- ASSERT_PTR(auxidnconverter_ctx2, NULL);
-}
-
-//# TESTCASE
-// title: getlocalmapselector
-// group: generic-init set-defaults mapselector_ctx
-{
- mapselector_ctx1 = idn_resconf_getlocalmapselector(ctx);
- ASSERT_PTR(mapselector_ctx1, NULL);
-}
-
-//# TESTCASE
-// title: setlocalmapselector
-// group: generic-init set-defaults mapselector_ctx
-{
- r = idn_mapselector_create(&mapselector_ctx1);
- ASSERT_RESULT(r, idn_success);
-
- /* set localmapselector context. */
- idn_resconf_setlocalmapselector(ctx, mapselector_ctx1);
- mapselector_ctx2 = idn_resconf_getlocalmapselector(ctx);
- ASSERT_PTR(mapselector_ctx2, mapselector_ctx1);
- idn_mapselector_destroy(mapselector_ctx2);
-
- /* set NULL as localmapselector context */
- idn_resconf_setlocalmapselector(ctx, NULL);
- mapselector_ctx2 = idn_resconf_getlocalmapselector(ctx);
- ASSERT_PTR(mapselector_ctx2, NULL);
-}
-
-//# TESTCASE
-// title: addalllocalmapselectornames
-// group: generic-init set-defaults
-{
- static const char *names[] = {
- "filemap:" MAP_FILENAME,
- "filemap:" MAP_FILENAME,
- "filemap:" MAP_FILENAME
- };
- int nnames = sizeof(names) / sizeof(*names);
-
- create_conf_file(MAP_FILENAME, 0,
- "2212; FF0D",
- NULL);
- r = idn_resconf_addalllocalmapselectornames(ctx, ".jp", names, nnames);
- ASSERT_RESULT(r, idn_success);
-}
-
-//# TESTCASE
-// title: getmapper
-// group: generic-init set-defaults mapper_ctx
-{
- mapper_ctx1 = idn_resconf_getmapper(ctx);
- ASSERT_PTR_NE(mapper_ctx1, NULL);
-}
-
-//# TESTCASE
-// title: setmapper
-// group: generic-init set-defaults mapper_ctx
-{
- r = idn_mapper_create(&mapper_ctx1);
- ASSERT_RESULT(r, idn_success);
-
- /* set mapper context. */
- idn_resconf_setmapper(ctx, mapper_ctx1);
- mapper_ctx2 = idn_resconf_getmapper(ctx);
- ASSERT_PTR(mapper_ctx2, mapper_ctx1);
- idn_mapper_destroy(mapper_ctx2);
-
- /* set NULL as mapper context */
- idn_resconf_setmapper(ctx, NULL);
- mapper_ctx2 = idn_resconf_getmapper(ctx);
- ASSERT_PTR(mapper_ctx2, NULL);
-}
-
-//# TESTCASE
-// title: addallmappernames
-// group: generic-init set-defaults
-{
- static const char *names[] = {
- IDN_NAMEPREP_CURRENT,
- IDN_NAMEPREP_CURRENT,
- IDN_NAMEPREP_CURRENT
- };
- int nnames = sizeof(names) / sizeof(*names);
-
- r = idn_resconf_addallmappernames(ctx, names, nnames);
- ASSERT_RESULT(r, idn_success);
-}
-
-//# TESTCASE
-// title: getnormalizer
-// group: generic-init set-defaults normalizer_ctx
-{
- normalizer_ctx1 = idn_resconf_getnormalizer(ctx);
- ASSERT_PTR_NE(normalizer_ctx1, NULL);
-}
-
-//# TESTCASE
-// title: setnormalizer
-// group: generic-init set-defaults normalizer_ctx
-{
- r = idn_normalizer_create(&normalizer_ctx1);
- ASSERT_RESULT(r, idn_success);
-
- /* set normalizer context. */
- idn_resconf_setnormalizer(ctx, normalizer_ctx1);
- normalizer_ctx2 = idn_resconf_getnormalizer(ctx);
- ASSERT_PTR(normalizer_ctx2, normalizer_ctx1);
- idn_normalizer_destroy(normalizer_ctx2);
-
- /* set NULL as normalizer context */
- idn_resconf_setnormalizer(ctx, NULL);
- normalizer_ctx2 = idn_resconf_getnormalizer(ctx);
- ASSERT_PTR(normalizer_ctx2, NULL);
-}
-
-//# TESTCASE
-// title: addallnormalizernames
-// group: generic-init set-defaults
-{
- static const char *names[] = {
- IDN_NAMEPREP_CURRENT,
- IDN_NAMEPREP_CURRENT,
- IDN_NAMEPREP_CURRENT
- };
- int nnames = sizeof(names) / sizeof(*names);
-
- r = idn_resconf_addallnormalizernames(ctx, names, nnames);
- ASSERT_RESULT(r, idn_success);
-}
-
-//# TESTCASE
-// title: getprohibitchecker
-// group: generic-init set-defaults prohibitchecker_ctx
-{
- prohibitchecker_ctx1 = idn_resconf_getprohibitchecker(ctx);
- ASSERT_PTR_NE(prohibitchecker_ctx1, NULL);
-}
-
-//# TESTCASE
-// title: setprohibitchecker
-// group: generic-init set-defaults prohibitchecker_ctx
-{
- r = idn_checker_create(&prohibitchecker_ctx1);
- ASSERT_RESULT(r, idn_success);
-
- /* set checker context. */
- idn_resconf_setprohibitchecker(ctx, prohibitchecker_ctx1);
- prohibitchecker_ctx2 = idn_resconf_getprohibitchecker(ctx);
- ASSERT_PTR(prohibitchecker_ctx2, prohibitchecker_ctx1);
- idn_checker_destroy(prohibitchecker_ctx2);
-
- /* set NULL as checker context */
- idn_resconf_setprohibitchecker(ctx, NULL);
- prohibitchecker_ctx2 = idn_resconf_getprohibitchecker(ctx);
- ASSERT_PTR(prohibitchecker_ctx2, NULL);
-}
-
-//# TESTCASE
-// title: addallprohibitcheckernames
-// group: generic-init set-defaults
-{
- static const char *names[] = {
- IDN_NAMEPREP_CURRENT,
- IDN_NAMEPREP_CURRENT,
- IDN_NAMEPREP_CURRENT
- };
- int nnames = sizeof(names) / sizeof(*names);
-
- r = idn_resconf_addallprohibitcheckernames(ctx, names, nnames);
- ASSERT_RESULT(r, idn_success);
-}
-
-//# TESTCASE
-// title: getunassignedchecker
-// group: generic-init set-defaults unassignedchecker_ctx
-{
- unassignedchecker_ctx1 = idn_resconf_getunassignedchecker(ctx);
- ASSERT_PTR_NE(unassignedchecker_ctx1, NULL);
-}
-
-//# TESTCASE
-// title: setunassignedchecker
-// group: generic-init set-defaults unassignedchecker_ctx
-{
- r = idn_checker_create(&unassignedchecker_ctx1);
- ASSERT_RESULT(r, idn_success);
-
- /* set checker context. */
- idn_resconf_setunassignedchecker(ctx, unassignedchecker_ctx1);
- unassignedchecker_ctx2 = idn_resconf_getunassignedchecker(ctx);
- ASSERT_PTR(unassignedchecker_ctx2, unassignedchecker_ctx1);
- idn_checker_destroy(unassignedchecker_ctx2);
-
- /* set NULL as checker context */
- idn_resconf_setunassignedchecker(ctx, NULL);
- unassignedchecker_ctx2 = idn_resconf_getunassignedchecker(ctx);
- ASSERT_PTR(unassignedchecker_ctx2, NULL);
-}
-
-//# TESTCASE
-// title: addallunassignedcheckernames
-// group: generic-init set-defaults
-{
- static const char *names[] = {
- IDN_NAMEPREP_CURRENT,
- IDN_NAMEPREP_CURRENT,
- IDN_NAMEPREP_CURRENT
- };
- int nnames = sizeof(names) / sizeof(*names);
-
- r = idn_resconf_addallunassignedcheckernames(ctx, names, nnames);
- ASSERT_RESULT(r, idn_success);
-}
-
-//# TESTCASE
-// title: getbidichecker
-// group: generic-init set-defaults bidichecker_ctx
-{
- bidichecker_ctx1 = idn_resconf_getbidichecker(ctx);
- ASSERT_PTR_NE(bidichecker_ctx1, NULL);
-}
-
-//# TESTCASE
-// title: setbidichecker
-// group: generic-init set-defaults bidichecker_ctx
-{
- r = idn_checker_create(&bidichecker_ctx1);
- ASSERT_RESULT(r, idn_success);
-
- /* set checker context. */
- idn_resconf_setbidichecker(ctx, bidichecker_ctx1);
- bidichecker_ctx2 = idn_resconf_getbidichecker(ctx);
- ASSERT_PTR(bidichecker_ctx2, bidichecker_ctx1);
- idn_checker_destroy(bidichecker_ctx2);
-
- /* set NULL as checker context */
- idn_resconf_setbidichecker(ctx, NULL);
- bidichecker_ctx2 = idn_resconf_getbidichecker(ctx);
- ASSERT_PTR(bidichecker_ctx2, NULL);
-}
-
-//# TESTCASE
-// title: addallbidicheckernames
-// group: generic-init set-defaults
-{
- static const char *names[] = {
- IDN_NAMEPREP_CURRENT,
- IDN_NAMEPREP_CURRENT,
- IDN_NAMEPREP_CURRENT
- };
- int nnames = sizeof(names) / sizeof(*names);
-
- r = idn_resconf_addallbidicheckernames(ctx, names, nnames);
- ASSERT_RESULT(r, idn_success);
-}
-
-//# TESTCASE
-// title: setnameprepversion
-// group: generic-init set-defaults
-{
- idn_resconf_setnameprepversion(ctx, IDN_NAMEPREP_CURRENT);
- ASSERT_RESULT(r, idn_success);
-}
+++ /dev/null
-#ifndef lint
-static char *rcsid = "$Id: setenv.c,v 1.1 2003/06/04 00:27:01 marka Exp $";
-#endif
-
-/*
- * Copyright (c) 2002 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-#include <stddef.h>
-#include <string.h>
-
-/*
- * We don't include <stdlib.h> here.
- * Also <stdlib.h> may declare `environ' and its type might be different
- * from ours.
- */
-extern char **environ;
-
-typedef struct myenv myenv_t;
-
-struct myenv {
- char *pointer;
- myenv_t *next;
- myenv_t *prev;
-};
-
-static myenv_t *myenvs = NULL;
-
-void
-myunsetenv(const char *name) {
- char **e;
- myenv_t *mye;
- size_t namelen;
- extern void free(void *);
-
- namelen = strlen(name);
- for (e = environ; *e != NULL; e++) {
- if (strncmp(*e, name, namelen) == 0 && (*e)[namelen] == '=')
- break;
- }
- if (*e == NULL)
- return;
-
- for (mye = myenvs; mye != NULL; mye = mye->next) {
- if (mye->pointer == *e) {
- if (mye->next != NULL)
- mye->next->prev = mye->prev;
- if (mye->prev != NULL)
- mye->prev->next = mye->next;
- if (mye->next == NULL && mye->prev == NULL)
- myenvs = NULL;
- free(mye);
- free(*e);
- break;
- }
- }
-
- for ( ; *e != NULL; e++)
- *e = *(e + 1);
-}
-
-#include <stdlib.h>
-
-int
-mysetenv(const char *name, const char *value, int overwrite) {
- myenv_t *mye;
- char *buffer;
- int result;
-
- if (getenv(name) != NULL && !overwrite)
- return 0;
-
- buffer = (char *) malloc(strlen(name) + strlen(value) + 2);
- if (buffer == NULL)
- return -1;
- strcpy(buffer, name);
- strcat(buffer, "=");
- strcat(buffer, value);
-
- myunsetenv(name);
-
- mye = (myenv_t *) malloc(sizeof(myenv_t));
- if (mye == NULL)
- return -1;
- mye->pointer = buffer;
- mye->next = myenvs;
- mye->prev = NULL;
- if (myenvs != NULL)
- myenvs->prev = mye;
- myenvs = mye;
-
- result = putenv(buffer);
-
- return result;
-}
+++ /dev/null
-/* $Id: setenv.h,v 1.1 2003/06/04 00:27:01 marka Exp $ */
-/*
- * Copyright (c) 2002 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-#ifndef IDN_SETENV_H
-#define IDN_SETENV_H
-
-#include "testconfig.h"
-
-#ifndef HAVE_SETENV
-#define unsetenv(a1) myunsetenv(a1)
-#endif
-
-#ifndef HAVE_SETENV
-#define setenv(a1, a2, a3) mysetenv(a1, a2, a3)
-#endif
-
-void myunsetenv(const char *name);
-int mysetenv(const char *name, const char *value, int overwrite);
-
-#endif /* IDN_SETENV_H */
+++ /dev/null
-#ifndef lint
-static char *rcsid = "$Id";
-#endif
-
-/*
- * Copyright (c) 2002 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-#include <stddef.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <assert.h>
-
-#include <idn/result.h>
-#include <idn/ucs4.h>
-#include <testsuite.h>
-
-typedef struct idn_testcase *idn_testcase_t;
-
-struct idn_testcase {
- char *title;
- idn_testsuite_testproc_t proc;
-};
-
-struct idn_testsuite {
- idn_testcase_t testcases;
- int ntestcases;
- int testcase_size;
-
- int npassed;
- int nfailed;
- int nskipped;
- idn_testcase_t current_testcase;
- idn_teststatus_t current_status;
-
- idn_testsuite_msgproc_t msgproc;
- int verbose;
-};
-
-#define INITIAL_TESTCASE_SIZE 16
-#define INITIAL_SETUP_SIZE 4
-#define INITIAL_TEARDOWN_SIZE 4
-
-static void run_internal(idn_testsuite_t ctx, char *titles[]);
-static char *make_hex_string(const char *string);
-static char *make_hex_ucs4string(const unsigned long *string);
-static void put_failure_message(idn_testsuite_t ctx, const char *msg,
- const char *file, int lineno);
-static void idn_testsuite_msgtostderr(const char *msg);
-
-int
-idn_testsuite_create(idn_testsuite_t *ctxp) {
- idn_testsuite_t ctx = NULL;
-
- assert(ctxp != NULL);
-
- ctx = (idn_testsuite_t) malloc(sizeof(struct idn_testsuite));
- if (ctx == NULL)
- goto error;
-
- ctx->testcases = NULL;
- ctx->ntestcases = 0;
- ctx->testcase_size = 0;
- ctx->npassed = 0;
- ctx->nfailed = 0;
- ctx->nskipped = 0;
- ctx->current_testcase = NULL;
- ctx->current_status = idn_teststatus_pass;
- ctx->msgproc = NULL;
- ctx->verbose = 0;
-
- ctx->testcases = (idn_testcase_t) malloc(sizeof(struct idn_testcase)
- * INITIAL_TESTCASE_SIZE);
- if (ctx->testcases == NULL)
- goto error;
- ctx->testcase_size = INITIAL_TESTCASE_SIZE;
-
- *ctxp = ctx;
- return (1);
-
-error:
- if (ctx != NULL)
- free(ctx->testcases);
- free(ctx);
- return (0);
-}
-
-void
-idn_testsuite_destroy(idn_testsuite_t ctx) {
- int i;
-
- assert(ctx != NULL);
-
- for (i = 0; i < ctx->ntestcases; i++)
- free(ctx->testcases[i].title);
-
- free(ctx->testcases);
- free(ctx);
-}
-
-int
-idn_testsuite_addtestcase(idn_testsuite_t ctx, const char *title,
- idn_testsuite_testproc_t proc) {
- char *dup_title = NULL;
- idn_testcase_t new_buffer = NULL;
- idn_testcase_t new_testcase;
- int new_size;
-
- assert(ctx != NULL && title != NULL && proc != NULL);
-
- dup_title = (char *)malloc(strlen(title) + 1);
- if (dup_title == NULL)
- goto error;
- strcpy(dup_title, title);
-
- if (ctx->ntestcases == ctx->testcase_size) {
- new_size = ctx->testcase_size + INITIAL_TESTCASE_SIZE;
- new_buffer = (idn_testcase_t)
- realloc(ctx->testcases,
- sizeof(struct idn_testcase) * new_size);
- if (new_buffer == NULL)
- goto error;
- ctx->testcases = new_buffer;
- ctx->testcase_size = new_size;
- }
-
- new_testcase = ctx->testcases + ctx->ntestcases;
- new_testcase->title = dup_title;
- new_testcase->proc = proc;
- ctx->ntestcases++;
- return (1);
-
-error:
- free(dup_title);
- free(new_buffer);
- return (0);
-}
-
-int
-idn_testsuite_ntestcases(idn_testsuite_t ctx) {
- assert(ctx != NULL);
- return (ctx->ntestcases);
-}
-
-void
-idn_testsuite_setverbose(idn_testsuite_t ctx) {
- assert(ctx != NULL);
- ctx->verbose = 1;
-}
-
-void
-idn_testsuite_unsetverbose(idn_testsuite_t ctx) {
- assert(ctx != NULL);
- ctx->verbose = 0;
-}
-
-static void
-run_internal(idn_testsuite_t ctx, char *titles[]) {
- int i, j;
- int run_testcase;
- const char *status;
-
- assert(ctx != NULL);
-
- ctx->npassed = 0;
- ctx->nfailed = 0;
- ctx->nskipped = 0;
-
- for (i = 0; i < ctx->ntestcases; i++) {
- ctx->current_testcase = ctx->testcases + i;
- ctx->current_status = idn_teststatus_pass;
-
- if (titles == NULL)
- run_testcase = 1;
- else {
- run_testcase = 0;
- for (j = 0; titles[j] != NULL; j++) {
- if (strcmp(ctx->current_testcase->title,
- titles[j]) == 0) {
- run_testcase = 1;
- break;
- }
- }
- }
-
- if (!run_testcase) {
- ctx->nskipped++;
- continue;
- }
- if (ctx->verbose) {
- fprintf(stderr, "start testcase %d: %s\n", i + 1,
- ctx->testcases[i].title);
- }
- (ctx->testcases[i].proc)(ctx);
- status = idn_teststatus_tostring(ctx->current_status);
- if (ctx->verbose) {
- fprintf(stderr, "end testcase %d: %s\n", i + 1,
- status);
- }
-
- switch (ctx->current_status) {
- case idn_teststatus_pass:
- ctx->npassed++;
- break;
- case idn_teststatus_fail:
- ctx->nfailed++;
- break;
- case idn_teststatus_skip:
- ctx->nskipped++;
- break;
- }
- }
-}
-
-void
-idn_testsuite_runall(idn_testsuite_t ctx) {
- assert(ctx != NULL);
- run_internal(ctx, NULL);
-}
-
-void
-idn_testsuite_run(idn_testsuite_t ctx, char *titles[]) {
- assert(ctx != NULL && titles != NULL);
- run_internal(ctx, titles);
-}
-
-int
-idn_testsuite_npassed(idn_testsuite_t ctx) {
- assert(ctx != NULL);
- return (ctx->npassed);
-}
-
-int
-idn_testsuite_nfailed(idn_testsuite_t ctx) {
- assert(ctx != NULL);
- return (ctx->nfailed);
-}
-
-int
-idn_testsuite_nskipped(idn_testsuite_t ctx) {
- assert(ctx != NULL);
- return (ctx->nskipped);
-}
-
-idn_teststatus_t
-idn_testsuite_getstatus(idn_testsuite_t ctx) {
- assert(ctx != NULL);
- return (ctx->current_status);
-}
-
-void
-idn_testsuite_setstatus(idn_testsuite_t ctx, idn_teststatus_t status) {
- assert(ctx != NULL);
- assert(status == idn_teststatus_pass ||
- status == idn_teststatus_fail ||
- status == idn_teststatus_skip);
-
- ctx->current_status = status;
-}
-
-const char *
-idn_teststatus_tostring(idn_teststatus_t status) {
- assert(status == idn_teststatus_pass ||
- status == idn_teststatus_fail ||
- status == idn_teststatus_skip);
-
- switch (status) {
- case idn_teststatus_pass:
- return "pass";
- break;
- case idn_teststatus_fail:
- return "failed";
- break;
- case idn_teststatus_skip:
- return "skipped";
- break;
- }
-
- return "unknown";
-}
-
-void
-idn_testsuite_assert(idn_testsuite_t ctx, const char *msg,
- const char *file, int lineno) {
- assert(ctx != NULL && msg != NULL && file != NULL);
-
- if (idn_testsuite_getstatus(ctx) != idn_teststatus_pass)
- return;
- idn_testsuite_setstatus(ctx, idn_teststatus_fail);
- put_failure_message(ctx, msg, file, lineno);
-}
-
-void
-idn_testsuite_assertint(idn_testsuite_t ctx, int gotten, int expected,
- const char *file, int lineno) {
- char msg[256]; /* large enough */
-
- assert(ctx != NULL && file != NULL);
-
- if (idn_testsuite_getstatus(ctx) != idn_teststatus_pass)
- return;
- if (expected == gotten)
- return;
- idn_testsuite_setstatus(ctx, idn_teststatus_fail);
-
- sprintf(msg, "`%d' expected, but got `%d'", expected, gotten);
- put_failure_message(ctx, msg, file, lineno);
-}
-
-void
-idn_testsuite_assertstring(idn_testsuite_t ctx,
- const char *gotten, const char *expected,
- const char *file, int lineno) {
- char *expected_hex = NULL;
- char *gotten_hex = NULL;
- char *msg;
-
- assert(ctx != NULL && gotten != NULL && expected != NULL &&
- file != NULL);
-
- if (idn_testsuite_getstatus(ctx) != idn_teststatus_pass)
- return;
- if (strcmp(expected, gotten) == 0)
- return;
- idn_testsuite_setstatus(ctx, idn_teststatus_fail);
-
- msg = (char *)malloc(strlen(expected) * 4 + strlen(gotten) * 4 + 32);
- expected_hex = make_hex_string(expected);
- gotten_hex = make_hex_string(gotten);
- if (msg == NULL || expected_hex == NULL || gotten_hex == NULL) {
- msg = "";
- } else {
- sprintf(msg, "`%s' expected, but got `%s'",
- expected_hex, gotten_hex);
- }
-
- put_failure_message(ctx, msg, file, lineno);
-
- free(msg);
- free(expected_hex);
- free(gotten_hex);
-}
-
-void
-idn_testsuite_assertptr(idn_testsuite_t ctx, const void *gotten,
- const void *expected, const char *file, int lineno) {
- char *msg;
-
- assert(ctx != NULL && file != NULL);
-
- if (idn_testsuite_getstatus(ctx) != idn_teststatus_pass)
- return;
- if (expected == gotten)
- return;
- idn_testsuite_setstatus(ctx, idn_teststatus_fail);
-
- if (expected == NULL)
- msg = "NULL expected, but got non-NULL";
- else if (gotten == NULL)
- msg = "non-NULL expected, but got NULL";
- else
- msg = "expected pointer != gotten pointer";
- put_failure_message(ctx, msg, file, lineno);
-}
-
-void
-idn_testsuite_assertptrne(idn_testsuite_t ctx,
- const void *gotten, const void *unexpected,
- const char *file, int lineno) {
- char *msg;
-
- assert(ctx != NULL && file != NULL);
-
- if (idn_testsuite_getstatus(ctx) != idn_teststatus_pass)
- return;
- if (unexpected != gotten)
- return;
- idn_testsuite_setstatus(ctx, idn_teststatus_fail);
-
- if (unexpected == NULL)
- msg = "non-NULL unexpected, but got NULL";
- else if (gotten == NULL)
- msg = "non-NULL expected, but got NULL";
- else
- msg = "expected pointer == gotten pointer";
- put_failure_message(ctx, msg, file, lineno);
-}
-
-void
-idn_testsuite_assertresult(idn_testsuite_t ctx,
- idn_result_t gotten, idn_result_t expected,
- const char *file, int lineno) {
- char msg[256]; /* large enough */
-
- assert(ctx != NULL && file != NULL);
-
- if (idn_testsuite_getstatus(ctx) != idn_teststatus_pass)
- return;
- if (expected == gotten)
- return;
- idn_testsuite_setstatus(ctx, idn_teststatus_fail);
-
- sprintf(msg, "`%s' expected, but got `%s'",
- idn_result_tostring(expected), idn_result_tostring(gotten));
- put_failure_message(ctx, msg, file, lineno);
-}
-
-void
-idn_testsuite_assertucs4string(idn_testsuite_t ctx,
- const unsigned long *gotten,
- const unsigned long *expected,
- const char *file, int lineno) {
- char *expected_hex = NULL;
- char *gotten_hex = NULL;
- char *msg;
-
- assert(ctx != NULL && gotten != NULL && expected != NULL &&
- file != NULL);
-
- if (idn_testsuite_getstatus(ctx) != idn_teststatus_pass)
- return;
- if (idn_ucs4_strcmp(expected, gotten) == 0)
- return;
- idn_testsuite_setstatus(ctx, idn_teststatus_fail);
-
- msg = (char *)malloc(idn_ucs4_strlen(expected) * 8 +
- idn_ucs4_strlen(gotten) * 8 + 32);
- expected_hex = make_hex_ucs4string(expected);
- gotten_hex = make_hex_ucs4string(gotten);
- if (msg == NULL || expected_hex == NULL || gotten_hex == NULL) {
- msg = "";
- } else {
- sprintf(msg, "`%s' expected, but got `%s'",
- expected_hex, gotten_hex);
- }
-
- put_failure_message(ctx, msg, file, lineno);
-
- free(msg);
- free(expected_hex);
- free(gotten_hex);
-}
-
-static char *
-make_hex_string(const char *string) {
- static const char hex[] = {"0123456789abcdef"};
- char *hex_string;
- const char *src;
- char *dst;
-
- hex_string = (char *)malloc((strlen(string)) * 4 + 1);
- if (hex_string == NULL)
- return NULL;
-
- for (src = string, dst = hex_string; *src != '\0'; src++) {
- if (0x20 <= *src && *src <= 0x7e && *src != '\\') {
- *dst++ = *src;
- } else {
- *dst++ = '\\';
- *dst++ = 'x';
- *dst++ = hex[*(const unsigned char *)src >> 4];
- *dst++ = hex[*src & 0x0f];
- }
- }
- *dst = '\0';
-
- return hex_string;
-}
-
-#define UCS4_MAX 0x10fffffUL
-
-static char *
-make_hex_ucs4string(const unsigned long *string) {
- static const char hex[] = {"0123456789abcdef"};
- char *hex_string;
- const unsigned long *src;
- char *dst;
-
- hex_string = (char *)malloc((idn_ucs4_strlen(string)) * 8 + 1);
- if (hex_string == NULL)
- return NULL;
-
- for (src = string, dst = hex_string; *src != '\0'; src++) {
- if (0x20 <= *src && *src <= 0x7e && *src != '\\') {
- *dst++ = *src;
- } else if (*src <= UCS4_MAX) {
- *dst++ = '\\';
- *dst++ = 'u';
- if (*src >= 0x100000) {
- *dst++ = hex[(*src >> 20) & 0x0f];
- }
- if (*src >= 0x10000) {
- *dst++ = hex[(*src >> 16) & 0x0f];
- }
- *dst++ = hex[(*src >> 12) & 0x0f];
- *dst++ = hex[(*src >> 8) & 0x0f];
- *dst++ = hex[(*src >> 4) & 0x0f];
- *dst++ = hex[*src & 0x0f];
- } else {
- *dst++ = '\\';
- *dst++ = 'u';
- *dst++ = '?';
- *dst++ = '?';
- *dst++ = '?';
- *dst++ = '?';
- }
- }
- *dst = '\0';
-
- return hex_string;
-}
-
-static void
-put_failure_message(idn_testsuite_t ctx, const char *msg, const char *file,
- int lineno) {
- idn_testsuite_msgproc_t proc;
- char buffer[256];
- const char *title;
-
- proc = (ctx->msgproc == NULL) ?
- idn_testsuite_msgtostderr : ctx->msgproc;
- title = (ctx->current_testcase != NULL &&
- ctx->current_testcase->title != NULL) ?
- ctx->current_testcase->title : "anonymous";
-
- sprintf(buffer, "%.100s: In test `%.100s':", file, title);
- (*proc)(buffer);
-
- sprintf(buffer, "%.100s:%d: failed (%.100s)", file, lineno, msg);
- (*proc)(buffer);
-}
-
-
-static void
-idn_testsuite_msgtostderr(const char *msg) {
- fputs(msg, stderr);
- fputc('\n', stderr);
-}
+++ /dev/null
-/* $Id: testsuite.h,v 1.1 2003/06/04 00:27:03 marka Exp $ */
-/*
- * Copyright (c) 2002 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-#ifndef IDN_TESTSUITE_H
-#define IDN_TESTSUITE_H 1
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*
- * Result codes for test case.
- */
-typedef enum {
- idn_teststatus_pass,
- idn_teststatus_fail,
- idn_teststatus_skip
-} idn_teststatus_t;
-
-/*
- * Testsuite manager type (opaque).
- */
-typedef struct idn_testsuite *idn_testsuite_t;
-
-/*
- * Testcase function type.
- */
-typedef void (*idn_testsuite_testproc_t)(idn_testsuite_t ctx);
-
-/*
- * Message handler type.
- */
-typedef void (*idn_testsuite_msgproc_t)(const char *msg);
-
-/*
- * Create a testsuite manager context.
- *
- * Create an empty context and store it in '*ctxp'.
- * Return 1 on success. Return 0 if memory is exhausted.
- */
-extern int
-idn_testsuite_create(idn_testsuite_t *ctxp);
-
-/*
- * Destory the testsuite manager context.
- *
- * Destroy the context created by idn_testsuite_create(), and release
- * memory allocated to the context.
- */
-extern void
-idn_testsuite_destroy(idn_testsuite_t ctx);
-
-/*
- * Add a test case to the `group' test group.
- * Return 1 on success. Return 0 if memory is exhausted.
- */
-extern int
-idn_testsuite_addtestcase(idn_testsuite_t ctx, const char *title,
- idn_testsuite_testproc_t proc);
-
-/*
- * Return the number of test cases registered in the context.
- */
-extern int
-idn_testsuite_ntestcases(idn_testsuite_t ctx);
-
-/*
- * Run test cases registered in the context.
- */
-extern void
-idn_testsuite_runall(idn_testsuite_t ctx);
-extern void
-idn_testsuite_run(idn_testsuite_t ctx, char *titles[]);
-
-/*
- * Return the string description of `status'.
- */
-extern const char *
-idn_teststatus_tostring(idn_teststatus_t status);
-
-/*
- * Return the number of passed/failed/skipped test cases.
- */
-extern int
-idn_testsuite_npassed(idn_testsuite_t ctx);
-extern int
-idn_testsuite_nfailed(idn_testsuite_t ctx);
-extern int
-idn_testsuite_nskipped(idn_testsuite_t ctx);
-
-/*
- * Set/Get status of the test case running currently.
- *
- * These functions must be called by test case function.
- */
-extern idn_teststatus_t
-idn_testsuite_getstatus(idn_testsuite_t ctx);
-extern void
-idn_testsuite_setstatus(idn_testsuite_t ctx, idn_teststatus_t status);
-
-/*
- * Enable/Disable verbose mode.
- */
-extern void
-idn_testsuite_setverbose(idn_testsuite_t ctx);
-extern void
-idn_testsuite_unsetverbose(idn_testsuite_t ctx);
-
-/*
- * Generic assertion with message
- */
-extern void
-idn_testsuite_assert(idn_testsuite_t ctx, const char *msg,
- const char *file, int lineno);
-
-#define ASSERT_THRU(msg) \
- idn_testsuite_assert(ctx__, msg, __FILE__, __LINE__)
-#define ASSERT(msg) \
- do { \
- ASSERT_THRU(msg); \
- if (idn_testsuite_getstatus(ctx__) != idn_teststatus_pass) \
- goto EXIT__; \
- } while (0)
-
-/*
- * Assertion function and macro to compare two `int' values.
- * The assertion passes if `gotten' is equal to `expected'.
- */
-extern void
-idn_testsuite_assertint(idn_testsuite_t ctx, int gotten, int expected,
- const char *file, int lineno);
-
-#define ASSERT_INT(gotten, expected) \
- do { \
- idn_testsuite_assertint(ctx__, gotten, expected, __FILE__, __LINE__); \
- if (idn_testsuite_getstatus(ctx__) != idn_teststatus_pass) \
- goto EXIT__; \
- } while (0)
-
-/*
- * Assertion function and macro to compare two strings.
- * The assertion passes if `gotten' is lexically equal to `expected'.
- */
-extern void
-idn_testsuite_assertstring(idn_testsuite_t ctx, const char *gotten,
- const char *expected, const char *file, int lineno);
-
-#define ASSERT_STRING(gotten, expected) \
- do { \
- idn_testsuite_assertstring(ctx__, gotten, expected, __FILE__, __LINE__); \
- if (idn_testsuite_getstatus(ctx__) != idn_teststatus_pass) \
- goto EXIT__; \
- } while (0)
-
-/*
- * Assertion function and macro to compare two pointers.
- * The assertion passes if `gotten' is equal to `expected'.
- */
-extern void
-idn_testsuite_assertptr(idn_testsuite_t ctx, const void *gotten,
- const void *expected, const char *file, int lineno);
-
-#define ASSERT_PTR(gotten, expected) \
- do { \
- idn_testsuite_assertptr(ctx__, gotten, expected, __FILE__, __LINE__); \
- if (idn_testsuite_getstatus(ctx__) != idn_teststatus_pass) \
- goto EXIT__; \
- } while (0)
-
-/*
- * Assertion function and macro to compare two pointers.
- * The assertion passes if `gotten' is NOT equal to `expected'.
- */
-extern void
-idn_testsuite_assertptrne(idn_testsuite_t ctx,
- const void *gotten, const void *unexpected,
- const char *file, int lineno);
-
-#define ASSERT_PTR_NE(gotten, unexpected) \
- do { \
- idn_testsuite_assertptrne(ctx__, gotten, unexpected, __FILE__, __LINE__); \
- if (idn_testsuite_getstatus(ctx__) != idn_teststatus_pass) \
- goto EXIT__; \
- } while (0)
-
-/*
- * Assertion function and macro to compare two `idn_result_t' values.
- * The assertion passes if `gotten' is equal to `expected'.
- */
-extern void
-idn_testsuite_assertresult(idn_testsuite_t ctx,
- idn_result_t gotten, idn_result_t expected,
- const char *file, int lineno);
-
-#define ASSERT_RESULT(gotten, expected) \
- do { \
- idn_testsuite_assertresult(ctx__, gotten, expected, __FILE__, __LINE__); \
- if (idn_testsuite_getstatus(ctx__) != idn_teststatus_pass) \
- goto EXIT__; \
- } while (0)
-
-/*
- * Assertion function and macro to compare two UCS4 strings.
- * The assertion passes if `gotten' is lexically equal to `expected'.
- */
-extern void
-idn_testsuite_assertucs4string(idn_testsuite_t ctx,
- const unsigned long *gotten,
- const unsigned long *expected,
- const char *file,
- int lineno);
-
-#define ASSERT_UCS4STRING_THRU(gotten, expected) \
- idn_testsuite_assertucs4string(ctx__, gotten, expected, __FILE__, __LINE__)
-#define ASSERT_UCS4STRING(gotten, expected) \
- do { \
- ASSERT_UCS4STRING_THRU(gotten, expected); \
- if (idn_testsuite_getstatus(ctx__) != idn_teststatus_pass) \
- goto EXIT__; \
- } while (0)
-
-/*
- * Shorthands.
- */
-#define SKIP_TESTCASE \
- do { \
- idn_testsuite_setstatus(ctx__, idn_teststatus_skip); \
- goto EXIT__; \
- } while (0)
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* IDN_TESTSUITE_H */
+++ /dev/null
-#ifndef lint
-static char *rcsid = "$Id: testutil.c,v 1.1 2003/06/04 00:27:03 marka Exp $";
-#endif
-
-/*
- * Copyright (c) 2002 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-#include <stddef.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <stdarg.h>
-#include "testutil.h"
-
-int
-create_conf_file(const char *filename, unsigned int flags, ...) {
- FILE *file;
- va_list ap;
- const char *arg;
- int arg_index;
-
- file = fopen(filename, "w");
- if (file == NULL) {
- fprintf(stderr, "failed to create config file `%s'\n",
- filename);
- return 0;
- }
-
- arg_index = 0;
- va_start(ap, flags);
- for (;;) {
- arg = va_arg(ap, const char *);
- if (arg == NULL)
- break;
- if (arg_index++ > 0)
- fputc('\n', file);
- fputs(arg, file);
- }
- if (!(flags & CONF_NO_EOF_NEWLINE) && arg_index > 0)
- fputc('\n', file);
-
- fclose(file);
- return 1;
-}
+++ /dev/null
-/* $Id: testutil.h,v 1.1 2003/06/04 00:27:03 marka Exp $ */
-/*
- * Copyright (c) 2002 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-#ifndef IDN_TESTUTIL_H
-#define IDN_TESTUTIL_H 1
-
-/*
- * Option flags for create_conf_file().
- *
- * CONF_NO_EOF_NEWLINE -- Don't put newline character
- * at the end of file.
- */
-#define CONF_NO_EOF_NEWLINE 0x0001
-
-/*
- * Create a configuration file.
- *
- * Write strings specified as variable length arguments (`...') to
- * `filename'. Note that the arguments must be terminated with `NULL'.
- *
- * In the created config file, each string in the variable length
- * arguments becomes a line. In other words, newline characters are
- * added automatically.
- *
- * This function returns 1 upon success, 0 otherwise.
- */
-int
-create_conf_file(const char *filename, unsigned int flags, ...);
-
-#endif /* IDN_TESTUTIL_H */
+++ /dev/null
-#! /usr/bin/perl -w
-#
-# Copyright (c) 2002 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) 2000-2002 Japan Network Information Center. All rights reserved."
-#
-# 4. The name of JPNIC may not 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.
-#
-use FileHandle;
-use Getopt::Std;
-
-#
-# Parsing status.
-#
-my $STATUS_HEADER = 0;
-my $STATUS_HEADER_COMMENT = 1;
-my $STATUS_SEPARATOR = 2;
-my $STATUS_BODY = 3;
-my $STATUS_GLOBAL = 4;
-my $STATUS_GLOBAL_COMMENT = 5;
-my $STATUS_PREAMBLE = 6;
-
-my $LINENO_MARK = "<LINENO>";
-
-#
-# Create a new testsuite context.
-#
-sub new_testsuite {
- return {'ntests' => 0,
- 'setups' => {},
- 'teardowns' => {},
- 'tests' => [],
- 'titles' => [],
- 'preambles' => ''};
-}
-
-#
-# Read `$file' and put the result into `$testsutie'.
-#
-sub parse_file {
- my ($testsuite, $file, $lineinfo) = @_;
- my $parser = {'type' => '',
- 'group' => '',
- 'title' => '',
- 'status' => $STATUS_PREAMBLE,
- 'error' => '',
- 'file' => $file,
- 'lineno' => 0,
- 'lineinfo' => $lineinfo};
-
- my $handle = FileHandle->new($file, 'r');
- if (!defined($handle)) {
- die "failed to open the file, $!: $file\n";
- }
-
- my ($result, $line);
- for (;;) {
- $line = $handle->getline();
- last if (!defined($line));
-
- chomp($line);
- $line .= "\n";
- $parser->{lineno}++;
- $result = parse_line($testsuite, $parser, $line);
- if (!$result) {
- die sprintf("%s, at line %d\n",
- $parser->{error}, $parser->{lineno});
- }
- }
-
- if ($parser->{status} != $STATUS_GLOBAL) {
- die "unexpected EOF, at line $.\n";
- }
-
- $handle->close();
-}
-
-sub parse_line {
- my ($testsuite, $parser, $line) = @_;
- my $result = 1;
-
- if ($parser->{status} == $STATUS_HEADER) {
- if ($line =~ /^\/\/--/) {
- $parser->{status} = $STATUS_HEADER_COMMENT;
- } elsif ($line =~ /^\/\//) {
- $result = parse_header($testsuite, $parser, $line);
- } elsif ($line =~ /^\s*$/) {
- $parser->{status} = $STATUS_SEPARATOR;
- $result = parse_endheader($testsuite, $parser, $line);
- } elsif ($line =~ /^\{\s*$/) {
- $parser->{status} = $STATUS_BODY;
- $result = parse_endheader($testsuite, $parser, $line)
- && parse_startbody($testsuite, $parser, $line);
- } else {
- $parser->{error} = 'syntax error';
- $result = 0;
- }
-
- } elsif ($parser->{status} == $STATUS_HEADER_COMMENT) {
- if ($line =~ /^\/\//) {
- # nothing to be done.
- } elsif ($line =~ /^\s*$/) {
- $parser->{status} = $STATUS_SEPARATOR;
- $result = parse_endheader($testsuite, $parser, $line);
- } elsif ($line =~ /^\{\s*$/) {
- $parser->{status} = $STATUS_BODY;
- $result = parse_endheader($testsuite, $parser, $line)
- && parse_startbody($testsuite, $parser, $line);
- } else {
- $parser->{error} = 'syntax error';
- $result = 0;
- }
-
- } elsif ($parser->{status} == $STATUS_SEPARATOR) {
- if ($line =~ /^\s*$/) {
- # nothing to be done.
- } elsif ($line =~ /^\{\s*$/) {
- $parser->{status} = $STATUS_BODY;
- $result = parse_startbody($testsuite, $parser, $line);
- } else {
- $parser->{error} = 'syntax error';
- $result = 0;
- }
-
- } elsif ($parser->{status} == $STATUS_BODY) {
- if ($line =~ /^\}\s*$/) {
- $parser->{status} = $STATUS_GLOBAL;
- $result = parse_endbody($testsuite, $parser, $line);
- } else {
- $result = parse_body($testsuite, $parser, $line);
- }
-
- } elsif ($parser->{status} == $STATUS_GLOBAL) {
- if ($line =~ /^\/\/\#/) {
- $parser->{status} = $STATUS_HEADER;
- $result = parse_startheader($testsuite, $parser, $line);
- } elsif ($line =~ /^\/\/--/) {
- $parser->{status} = $STATUS_GLOBAL_COMMENT;
- } elsif ($line =~ /^\s*$/) {
- # nothing to be done.
- } else {
- $parser->{error} = 'syntax error';
- $result = 0;
- }
-
- } elsif ($parser->{status} == $STATUS_GLOBAL_COMMENT) {
- if ($line =~ /^\/\//) {
- # nothing to be done.
- } elsif ($line =~ /^\s*$/) {
- $parser->{status} = $STATUS_GLOBAL;
- } else {
- $parser->{error} = 'syntax error';
- $result = 0;
- }
-
- } elsif ($parser->{status} == $STATUS_PREAMBLE) {
- if ($line =~ /^\/\/\#/) {
- $parser->{status} = $STATUS_HEADER;
- $result = parse_startheader($testsuite, $parser, $line);
- } elsif ($line =~ /^\/\/--/) {
- $parser->{status} = $STATUS_GLOBAL_COMMENT;
- } else {
- $result = parse_preamble($testsuite, $parser, $line);
- }
-
- } else {
- $parser->{error} = 'syntax error';
- $result = 0;
- }
-
- return $result;
-}
-
-sub parse_startheader {
- my ($testsuite, $parser, $line) = @_;
-
- if ($line =~ /^\/\/\#\s*(SETUP|TEARDOWN|TESTCASE)\s*$/) {
- $parser->{type} = $1;
- $parser->{group} = '';
- $parser->{title} = '';
- } else {
- $parser->{error} = 'invalid test-header format';
- return 0;
- }
-
-
- return 1;
-}
-
-sub parse_header {
- my ($testsuite, $parser, $line) = @_;
-
- my $field = $line;
- $field =~ s/^\/\/\s*//;
- $field =~ s/^(\S+):\s*/$1:/;
- $field =~ s/\s+$//;
-
- return 1 if ($field eq '');
-
- if ($field =~ /^group:(.*)$/) {
- my $group = $1;
-
- if ($parser->{group} ne '') {
- $parser->{error} = "group defined twice in a header";
- return 0;
- }
- if ($parser->{type} eq 'SETUP') {
- if ($group !~ /^[0-9A-Za-z_\-]+$/) {
- $parser->{error} = "invalid group name";
- return 0;
- }
- if (defined($testsuite->{setups}->{$group})) {
- $parser->{error} = sprintf("SETUP \`%s' redefined", $group);
- return 0;
- }
- } elsif ($parser->{type} eq 'TEARDOWN') {
- if ($group !~ /^[0-9A-Za-z_\-]+$/) {
- $parser->{error} = "invalid group name";
- return 0;
- }
- if (defined($testsuite->{teardowns}->{$group})) {
- $parser->{error} = sprintf("TEARDOWN \`%s' redefined", $group);
- return 0;
- }
- } else {
- foreach my $i (split(/[ \t]+/, $group)) {
- if ($i !~ /^[0-9A-Za-z_\-]+$/) {
- $parser->{error} = "invalid group name \`$i'";
- return 0;
- }
- if (!defined($testsuite->{setups}->{$i})
- && !defined($testsuite->{teardowns}->{$i})) {
- $parser->{error} = sprintf("group \'%s' not defined", $i);
- return 0;
- }
- }
- }
- $parser->{group} = $group;
-
- } elsif ($field =~ /^title:(.*)$/) {
- my $title = $1;
-
- if ($parser->{title} ne '') {
- $parser->{error} = "title defined twice in a header";
- return 0;
- }
- if ($title =~ /[\x00-\x1f\x7f-\xff\"\\]/ || $title eq '') {
- $parser->{error} = "invalid title";
- return 0;
- }
- if ($parser->{type} ne 'TESTCASE') {
- $parser->{error} = sprintf("title for %s is not permitted",
- $parser->{type});
- return 0;
- }
- $parser->{title} = $title;
-
- } else {
- $parser->{error} = "invalid test-header field";
- return 0;
- }
-
- return 1;
-}
-
-sub parse_endheader {
- my ($testsuite, $parser, $line) = @_;
-
- if ($parser->{type} ne 'TESTCASE' && $parser->{group} eq '') {
- $parser->{error} = "missing \`group' in the header";
- return 0;
- }
-
- if ($parser->{type} eq 'TESTCASE' && $parser->{title} eq '') {
- $parser->{error} = "missing \`title' in the header";
- return 0;
- }
-
- return 1;
-}
-
-sub parse_startbody {
- my ($testsuite, $parser, $line) = @_;
- my $group = $parser->{group};
-
- if ($parser->{type} eq 'SETUP') {
- if ($parser->{lineinfo}) {
- $testsuite->{setups}->{$group} =
- generate_line_info($parser->{lineno} + 1, $parser->{file});
- }
- } elsif ($parser->{type} eq 'TEARDOWN') {
- if ($parser->{lineinfo}) {
- $testsuite->{teardowns}->{$group} =
- generate_line_info($parser->{lineno} + 1, $parser->{file});
- }
- } else {
- $testsuite->{ntests}++;
- push(@{$testsuite->{tests}}, '');
- push(@{$testsuite->{titles}}, $parser->{title});
-
- $testsuite->{tests}->[-1] .= "\n";
- $testsuite->{tests}->[-1] .= "$LINENO_MARK\n";
- $testsuite->{tests}->[-1] .=
- sprintf("static void\ntestcase\%d(idn_testsuite_t ctx__) {\n",
- $testsuite->{ntests});
-
- my (@group_names) = split(/[ \t]+/, $group);
- for (my $i = 0; $i < @group_names; $i++) {
- if (defined($testsuite->{setups}->{$group_names[$i]})) {
- $testsuite->{tests}->[-1] .= "\t\{\n";
- $testsuite->{tests}->[-1] .= "#undef EXIT__\n";
- $testsuite->{tests}->[-1] .= "#define EXIT__ exit${i}__\n";
- $testsuite->{tests}->[-1] .=
- $testsuite->{setups}->{$group_names[$i]};
- }
- }
- $testsuite->{tests}->[-1] .= "$LINENO_MARK\n";
- $testsuite->{tests}->[-1] .= "\t\{\n";
- $testsuite->{tests}->[-1] .= "#undef EXIT__\n";
- $testsuite->{tests}->[-1] .= "#define EXIT__ exit__\n";
- if ($parser->{lineinfo}) {
- $testsuite->{tests}->[-1] .=
- generate_line_info($parser->{lineno} + 1, $parser->{file});
- }
- }
-
- return 1;
-}
-
-sub parse_body {
- my ($testsuite, $parser, $line) = @_;
- my ($group) = $parser->{group};
-
- if ($parser->{type} eq 'SETUP') {
- $testsuite->{setups}->{$group} .= $line;
- } elsif ($parser->{type} eq 'TEARDOWN') {
- $testsuite->{teardowns}->{$group} .= $line;
- } else {
- $testsuite->{tests}->[-1] .= $line;
- }
-
- return 1;
-}
-
-sub parse_endbody {
- my ($testsuite, $parser, $line) = @_;
- my ($group) = $parser->{group};
-
- if ($parser->{type} eq 'TESTCASE') {
- $testsuite->{tests}->[-1] .= "$LINENO_MARK\n";
- $testsuite->{tests}->[-1] .= "\t\}\n";
- $testsuite->{tests}->[-1] .= " exit__:\n";
- $testsuite->{tests}->[-1] .= "\t;\n";
-
- my (@group_names) = split(/[ \t]+/, $group);
- for (my $i = @group_names - 1; $i >= 0; $i--) {
- $testsuite->{tests}->[-1] .= " exit${i}__:\n";
- $testsuite->{tests}->[-1] .= "\t;\n";
- if (defined($testsuite->{teardowns}->{$group_names[$i]})) {
- $testsuite->{tests}->[-1] .=
- $testsuite->{teardowns}->{$group_names[$i]};
- }
- $testsuite->{tests}->[-1] .= "$LINENO_MARK\n";
- $testsuite->{tests}->[-1] .= "\t\}\n";
- }
-
- $testsuite->{tests}->[-1] .= "}\n";
- }
-
- return 1;
-}
-
-sub parse_preamble {
- my ($testsuite, $parser, $line) = @_;
-
- if ($parser->{lineinfo} && $parser->{lineno} == 1) {
- $testsuite->{preambles} .= generate_line_info(1, $parser->{file});
- }
- $testsuite->{preambles} .= $line;
- return 1;
-}
-
-sub generate_line_info {
- my ($lineno, $file) = @_;
- return "#line $lineno \"$file\"\n";
-}
-
-#
-# Output `$testsuite' as source codes of C.
-#
-sub output_tests {
- my ($testsuite, $file, $lineinfo) = @_;
-
- my $generator = {
- 'file' => $file,
- 'lineno' => 0
- };
-
- my $handle = FileHandle->new($file, 'w');
- if (!defined($handle)) {
- die "failed to open the file, $!: $file\n";
- }
-
- my $preamble_header =
- "/* This file is automatically generated by testygen. */\n\n"
- . "#define TESTYGEN 1\n"
- . "\n";
- output_lines($preamble_header, $generator, $handle, $lineinfo);
-
- output_lines($testsuite->{preambles}, $generator, $handle, $lineinfo);
-
- my $preamble_footer =
- "\n"
- . "$LINENO_MARK\n"
- . "#include \"testsuite.h\"\n"
- . "\n";
- output_lines($preamble_footer, $generator, $handle, $lineinfo);
-
-
- for (my $i = 0; $i < $testsuite->{ntests}; $i++) {
- output_lines($testsuite->{tests}->[$i], $generator, $handle,
- $lineinfo);
- }
-
- my $main_header =
- "\n"
- . "$LINENO_MARK\n"
- . "int\n"
- . "main(int argc, char *argv[]) {\n"
- . "\tidn_testsuite_t ctx;\n"
- . "\tconst char *title;\n"
- . "\n"
- . "\tidn_testsuite_create(&ctx);\n";
- output_lines($main_header, $generator, $handle, $lineinfo);
-
- for (my $i = 0; $i < $testsuite->{ntests}; $i++) {
- my $title = $testsuite->{titles}->[$i];
- my $proc = sprintf("testcase%d", $i + 1);
- output_lines("\tidn_testsuite_addtestcase(ctx, \"$title\", $proc);\n",
- $generator, $handle, $lineinfo);
- }
-
- my $main_footer =
- "\n"
- . "\tif (argc > 1 && strcmp(argv[1], \"-v\") == 0) {\n"
- . "\t idn_testsuite_setverbose(ctx);\n"
- . "\t argc--;\n"
- . "\t argv++;\n"
- . "\t}\n"
- . "\tif (argc == 1)\n"
- . "\t idn_testsuite_runall(ctx);\n"
- . "\telse\n"
- . "\t idn_testsuite_run(ctx, argv + 1);\n"
- . "\n"
- . "\tprintf(\"passed=%d, failed=%d, total=%d\\n\",\n"
- . "\t idn_testsuite_npassed(ctx),\n"
- . "\t idn_testsuite_nfailed(ctx),\n"
- . "\t idn_testsuite_ntestcases(ctx) - idn_testsuite_nskipped(ctx));\n"
- . "\n"
- . "\tidn_testsuite_destroy(ctx);\n"
- . "\treturn (0);\n"
- . "\}\n";
- output_lines($main_footer, $generator, $handle, $lineinfo);
-
- $handle->close();
-}
-
-sub output_lines {
- my ($lines, $generator, $handle, $lineinfo) = @_;
- my ($line);
-
- chomp($lines);
- $lines .= "\n";
-
- while ($lines ne '') {
- $lines =~ s/^([^\n]*)\n//;
- $line = $1;
- $generator->{lineno}++;
- if ($line eq $LINENO_MARK) {
- if ($lineinfo) {
- $handle->printf("#line %d \"%s\"\n", $generator->{lineno} + 1,
- $generator->{file});
- }
- } else {
- $handle->print("$line\n");
- }
- }
-}
-
-sub output_usage {
- warn "$0: [-o output-file] input-file\n";
-}
-
-#
-# main.
-#
-my (%options);
-
-if (!getopts('Lo:', \%options)) {
- output_usage;
- exit(1);
-}
-if (@ARGV != 1) {
- output_usage;
- exit(1);
-}
-
-my ($in_file) = $ARGV[0];
-my ($out_file);
-if (!defined($options{o})) {
- $out_file = $in_file;
- $out_file .= '\.tsy' if ($out_file !~ /\.tsy$/);
- $out_file =~ s/\.tsy$/\.c/;
-} else {
- $out_file = $options{o};
-}
-
-my $testsuite = new_testsuite();
-parse_file($testsuite, $in_file, !$options{L});
-output_tests($testsuite, $out_file, !$options{L});
-
-exit(0);
+++ /dev/null
-#ifndef lint
-static char *rcsid = "$Id: ucs4.tsy,v 1.1 2003/06/04 00:27:04 marka Exp $";
-#endif
-
-/*
- * Copyright (c) 2002 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-#include <stddef.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <stdarg.h>
-#include <idn/ucs4.h>
-#include <idn/log.h>
-#include "testutil.h"
-
-/*
- * Sample UTF8 and UCS4 strings.
- */
-static const char *utf8_string =
- "\x7f" /* 0x0000007f */
- "\xdf\xbf" /* 0x000007ff */
- "\xef\xbf\xbf" /* 0x0000ffff */
- "\xf7\xbf\xbf\xbf" /* 0x001fffff */
- "\xfb\xbf\xbf\xbf\xbf" /* 0x03ffffff */
- "\xfd\xbf\xbf\xbf\xbf\xbf"; /* 0x7fffffff */
-
-static const unsigned long ucs4_string[] = {
- 0x0000007f,
- 0x000007ff,
- 0x0000ffff,
- 0x001fffff,
- 0x03ffffff,
- 0x7fffffff,
- 0x00000000
-};
-
-//--------------------------------------------------------------------
-// Setups and Teardowns.
-//--------------------------------------------------------------------
-
-//# SETUP
-// group: utf8-init
-{
- unsigned long to[256];
- size_t tolen = 256;
- idn_result_t r;
-}
-
-//# SETUP
-// group: ucs4-init
-{
- char to[256];
- size_t tolen = 256;
- idn_result_t r;
-}
-
-//# SETUP
-// group: quiet
-{
- int saved_log_level;
-
- saved_log_level = idn_log_getlevel();
- idn_log_setlevel(idn_log_level_fatal);
-}
-
-//# TEARDOWN
-// group: quiet
-{
- idn_log_setlevel(saved_log_level);
-}
-
-//--------------------------------------------------------------------
-// Testcases.
-//--------------------------------------------------------------------
-
-//# TESTCASE
-// title: call utf8toucs4()
-// group: utf8-init
-{
- r = idn_ucs4_utf8toucs4(utf8_string, to, tolen);
- ASSERT_RESULT(r, idn_success);
- ASSERT_UCS4STRING(to, ucs4_string);
-}
-
-//# TESTCASE
-// title: call ucs4toutf8()
-// group: ucs4-init
-{
- r = idn_ucs4_ucs4toutf8(ucs4_string, to, tolen);
- ASSERT_RESULT(r, idn_success);
- ASSERT_STRING(to, utf8_string);
-}
-
-//# TESTCASE
-// title: call utf8toucs4() with empty from
-// group: utf8-init
-{
- static unsigned long empty_ucs4_string[] = {0};
-
- r = idn_ucs4_utf8toucs4("", to, tolen);
- ASSERT_RESULT(r, idn_success);
- ASSERT_UCS4STRING(to, empty_ucs4_string);
-}
-
-//# TESTCASE
-// title: call ucs4toutf8() with empty from
-// group: ucs4-init
-{
- static unsigned long empty_ucs4_string[] = {0};
-
- r = idn_ucs4_ucs4toutf8(empty_ucs4_string, to, tolen);
- ASSERT_RESULT(r, idn_success);
- ASSERT_STRING(to, "");
-}
-
-//# TESTCASE
-// title: call utf8toucs4() with broken string
-// group: utf8-init quiet
-{
- /* "\xfe" as the 1st byte is out of range. */
- r = idn_ucs4_utf8toucs4("\xfe\xbf\xbf\xbf\xbf\xbf\xbf", to, tolen);
- ASSERT_RESULT(r, idn_invalid_encoding);
-
- /* "\x7f" as the 2nd byte is out of range. */
- r = idn_ucs4_utf8toucs4("\xdf\x7f", to, tolen);
- ASSERT_RESULT(r, idn_invalid_encoding);
-
- /* "\xc0" as the 2nd byte is out of range. */
- r = idn_ucs4_utf8toucs4("\xdf\xc0", to, tolen);
- ASSERT_RESULT(r, idn_invalid_encoding);
-
- /* "\x7f" as the 3rd byte is out of range. */
- r = idn_ucs4_utf8toucs4("\xef\xbf\x7f", to, tolen);
- ASSERT_RESULT(r, idn_invalid_encoding);
-
- /* "\xc0" as the 3rd byte is out of range. */
- r = idn_ucs4_utf8toucs4("\xef\xbf\xc0", to, tolen);
- ASSERT_RESULT(r, idn_invalid_encoding);
-
- /* "\x7f" as the 4th byte is out of range. */
- r = idn_ucs4_utf8toucs4("\xf7\xbf\xbf\x7f", to, tolen);
- ASSERT_RESULT(r, idn_invalid_encoding);
-
- /* "\xc0" as the 4th byte is out of range. */
- r = idn_ucs4_utf8toucs4("\xf7\xbf\xbf\xc0", to, tolen);
- ASSERT_RESULT(r, idn_invalid_encoding);
-
- /* "\x7f" as the 5th byte is out of range. */
- r = idn_ucs4_utf8toucs4("\xfb\xbf\xbf\xbf\x7f", to, tolen);
- ASSERT_RESULT(r, idn_invalid_encoding);
-
- /* "\xc0" as the 5th byte is out of range. */
- r = idn_ucs4_utf8toucs4("\xfb\xbf\xbf\xbf\xc0", to, tolen);
- ASSERT_RESULT(r, idn_invalid_encoding);
-
- /* "\x7f" as the 6th byte is out of range. */
- r = idn_ucs4_utf8toucs4("\xfd\xbf\xbf\xbf\xbf\x7f", to, tolen);
- ASSERT_RESULT(r, idn_invalid_encoding);
-
- /* "\xc0" as the 6th byte is out of range. */
- r = idn_ucs4_utf8toucs4("\xfd\xbf\xbf\xbf\xbf\xc0", to, tolen);
- ASSERT_RESULT(r, idn_invalid_encoding);
-
- /* `from' contains surrogate pair */
- r = idn_ucs4_utf8toucs4("\xed\xa0\x80\xed\xbf\xbf", to, tolen);
- ASSERT_RESULT(r, idn_invalid_encoding);
-}
-
-//# TESTCASE
-// title: call ucs4toutf8() with broken string
-// group: ucs4-init quiet
-{
- static unsigned long invalid_ucs4_string0[] = {0x80000000, 0};
- static unsigned long invalid_ucs4_string1[] = {0xd800, 0xdfff, 0};
-
- /* 0x80000000 is out of range */
- r = idn_ucs4_ucs4toutf8(invalid_ucs4_string0, to, tolen);
- ASSERT_RESULT(r, idn_invalid_encoding);
-
- /* `from' contains surrogate pair */
- r = idn_ucs4_ucs4toutf8(invalid_ucs4_string1, to, tolen);
- ASSERT_RESULT(r, idn_invalid_encoding);
-}
-
-//# TESTCASE
-// title: buffer overrun test for utf8toucs4()
-// group: utf8-init
-{
- r = idn_ucs4_utf8toucs4(utf8_string, to,
- idn_ucs4_strlen(ucs4_string) + 1);
- ASSERT_RESULT(r, idn_success);
- ASSERT_UCS4STRING(to, ucs4_string);
-
- r = idn_ucs4_utf8toucs4(utf8_string, to,
- idn_ucs4_strlen(ucs4_string));
- ASSERT_RESULT(r, idn_buffer_overflow);
-
- r = idn_ucs4_utf8toucs4(utf8_string, to, 0);
- ASSERT_RESULT(r, idn_buffer_overflow);
-}
-
-//# TESTCASE
-// title: buffer overrun test for ucs4toutf8()
-// group: ucs4-init
-{
- r = idn_ucs4_ucs4toutf8(ucs4_string, to, strlen(utf8_string) + 1);
- ASSERT_RESULT(r, idn_success);
- ASSERT_STRING(to, utf8_string);
-
- r = idn_ucs4_ucs4toutf8(ucs4_string, to, strlen(utf8_string));
- ASSERT_RESULT(r, idn_buffer_overflow);
-
- r = idn_ucs4_ucs4toutf8(ucs4_string, to, 0);
- ASSERT_RESULT(r, idn_buffer_overflow);
-}
-
+++ /dev/null
-#! /usr/bin/perl -wp
-#
-# Copyright (c) 2002 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) 2000-2002 Japan Network Information Center. All rights reserved."
-#
-# 4. The name of JPNIC may not 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.
-#
-
-sub to_utf8 ($) {
- my ($utf32) = hex($_[0]);
- my ($mask, $length);
-
- if ($utf32 < 0x80) {
- $mask = 0;
- $length = 1;
- } elsif ($utf32 < 0x800) {
- $mask = 0xc0;
- $length = 2;
- } elsif ($utf32 < 0x10000) {
- $mask = 0xe0;
- $length = 3;
- } elsif ($utf32 < 0x200000) {
- $mask = 0xf0;
- $length = 4;
- } elsif ($utf32 < 0x4000000) {
- $mask = 0xf8;
- $length = 5;
- } elsif ($utf32 < 0x80000000) {
- $mask = 0xfc;
- $length = 6;
- } else {
- return '';
- }
-
- my ($result, $offset);
- $offset = 6 * ($length - 1);
- $result .= sprintf('\\x%02x', ($utf32 >> $offset) | $mask);
- while ($offset > 0) {
- $offset -= 6;
- $result .= sprintf('\\x%02x', (($utf32 >> $offset) & 0x3f) | 0x80);
- }
-
- return $result;
-}
-
-s/<U\+([0-9A-Fa-f]+)>/&to_utf8($1)/eg;
+++ /dev/null
-#ifndef lint
-static char *rcsid = "$Id: ucs4.c,v 1.1 2003/06/04 00:26: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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-#include <config.h>
-
-#include <stddef.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <idn/assert.h>
-#include <idn/result.h>
-#include <idn/logmacro.h>
-#include <idn/util.h>
-#include <idn/ucs4.h>
-#include <idn/debug.h>
-
-/*
- * Unicode surrogate pair.
- */
-#define IS_SURROGATE_HIGH(v) (0xd800 <= (v) && (v) <= 0xdbff)
-#define IS_SURROGATE_LOW(v) (0xdc00 <= (v) && (v) <= 0xdfff)
-#define SURROGATE_HIGH(v) (SURROGATE_H_OFF + (((v) - 0x10000) >> 10))
-#define SURROGATE_LOW(v) (SURROGATE_L_OFF + ((v) & 0x3ff))
-#define SURROGATE_BASE 0x10000
-#define SURROGATE_H_OFF 0xd800
-#define SURROGATE_L_OFF 0xdc00
-#define COMBINE_SURROGATE(h, l) \
- (SURROGATE_BASE + (((h)-SURROGATE_H_OFF)<<10) + ((l)-SURROGATE_L_OFF))
-
-/*
- * ASCII ctype macros.
- * Note that these macros evaluate the argument multiple times. Be careful.
- */
-#define ASCII_TOUPPER(c) \
- (('a' <= (c) && (c) <= 'z') ? ((c) - 'a' + 'A') : (c))
-#define ASCII_TOLOWER(c) \
- (('A' <= (c) && (c) <= 'Z') ? ((c) - 'A' + 'a') : (c))
-
-idn_result_t
-idn_ucs4_ucs4toutf16(const unsigned long *ucs4, unsigned short *utf16,
- size_t tolen) {
- unsigned short *utf16p = utf16;
- unsigned long v;
- idn_result_t r;
-
- TRACE(("idn_ucs4_ucs4toutf16(ucs4=\"%s\", tolen=%d)\n",
- idn__debug_ucs4xstring(ucs4, 50), (int)tolen));
-
- while (*ucs4 != '\0') {
- v = *ucs4++;
-
- if (IS_SURROGATE_LOW(v) || IS_SURROGATE_HIGH(v)) {
- WARNING(("idn_ucs4_ucs4toutf16: UCS4 string contains "
- "surrogate pair\n"));
- r = idn_invalid_encoding;
- goto ret;
- } else if (v > 0xffff) {
- /* Convert to surrogate pair */
- if (v >= 0x110000) {
- r = idn_invalid_encoding;
- goto ret;
- }
- if (tolen < 2) {
- r = idn_buffer_overflow;
- goto ret;
- }
- *utf16p++ = SURROGATE_HIGH(v);
- *utf16p++ = SURROGATE_LOW(v);
- tolen -= 2;
- } else {
- if (tolen < 1) {
- r = idn_buffer_overflow;
- goto ret;
- }
- *utf16p++ = v;
- tolen--;
- }
- }
-
- if (tolen < 1) {
- r = idn_buffer_overflow;
- goto ret;
- }
- *utf16p = '\0';
-
- r = idn_success;
-ret:
- if (r == idn_success) {
- TRACE(("idn_ucs4_ucs4toutf16(): success (utf16=\"%s\")\n",
- idn__debug_utf16xstring(utf16, 50)));
- } else {
- TRACE(("idn_ucs4_ucs4toutf16(): %s\n",
- idn_result_tostring(r)));
- }
- return (r);
-}
-
-idn_result_t
-idn_ucs4_utf16toucs4(const unsigned short *utf16, unsigned long *ucs4,
- size_t tolen) {
- unsigned long *ucs4p = ucs4;
- unsigned short v0, v1;
- idn_result_t r;
-
- TRACE(("idn_ucs4_utf16toucs4(utf16=\"%s\", tolen=%d)\n",
- idn__debug_utf16xstring(utf16, 50), (int)tolen));
-
- while (*utf16 != '\0') {
- v0 = *utf16;
-
- if (tolen < 1) {
- r = idn_buffer_overflow;
- goto ret;
- }
-
- if (IS_SURROGATE_HIGH(v0)) {
- v1 = *(utf16 + 1);
- if (!IS_SURROGATE_LOW(v1)) {
- WARNING(("idn_ucs4_utf16toucs4: "
- "corrupted surrogate pair\n"));
- r = idn_invalid_encoding;
- goto ret;
- }
- *ucs4p++ = COMBINE_SURROGATE(v0, v1);
- tolen--;
- utf16 += 2;
-
- } else {
- *ucs4p++ = v0;
- tolen--;
- utf16++;
-
- }
- }
-
- if (tolen < 1) {
- r = idn_buffer_overflow;
- goto ret;
- }
- *ucs4p = '\0';
-
- r = idn_success;
-ret:
- if (r == idn_success) {
- TRACE(("idn_ucs4_utf16toucs4(): success (ucs4=\"%s\")\n",
- idn__debug_ucs4xstring(ucs4, 50)));
- } else {
- TRACE(("idn_ucs4_utf16toucs4(): %s\n",
- idn_result_tostring(r)));
- }
- return (r);
-}
-
-idn_result_t
-idn_ucs4_utf8toucs4(const char *utf8, unsigned long *ucs4, size_t tolen) {
- const unsigned char *utf8p = (const unsigned char *)utf8;
- unsigned long *ucs4p = ucs4;
- unsigned long v, min;
- unsigned char c;
- int width;
- int i;
- idn_result_t r;
-
- TRACE(("idn_ucs4_utf8toucs4(utf8=\"%s\", tolen=%d)\n",
- idn__debug_xstring(utf8, 50), (int)tolen));
-
- while(*utf8p != '\0') {
- c = *utf8p++;
- if (c < 0x80) {
- v = c;
- min = 0;
- width = 1;
- } else if (c < 0xc0) {
- WARNING(("idn_ucs4_utf8toucs4: invalid character\n"));
- r = idn_invalid_encoding;
- goto ret;
- } else if (c < 0xe0) {
- v = c & 0x1f;
- min = 0x80;
- width = 2;
- } else if (c < 0xf0) {
- v = c & 0x0f;
- min = 0x800;
- width = 3;
- } else if (c < 0xf8) {
- v = c & 0x07;
- min = 0x10000;
- width = 4;
- } else if (c < 0xfc) {
- v = c & 0x03;
- min = 0x200000;
- width = 5;
- } else if (c < 0xfe) {
- v = c & 0x01;
- min = 0x4000000;
- width = 6;
- } else {
- WARNING(("idn_ucs4_utf8toucs4: invalid character\n"));
- r = idn_invalid_encoding;
- goto ret;
- }
-
- for (i = width - 1; i > 0; i--) {
- c = *utf8p++;
- if (c < 0x80 || 0xc0 <= c) {
- WARNING(("idn_ucs4_utf8toucs4: "
- "invalid character\n"));
- r = idn_invalid_encoding;
- goto ret;
- }
- v = (v << 6) | (c & 0x3f);
- }
-
- if (v < min) {
- WARNING(("idn_ucs4_utf8toucs4: invalid character\n"));
- r = idn_invalid_encoding;
- goto ret;
- }
- if (IS_SURROGATE_LOW(v) || IS_SURROGATE_HIGH(v)) {
- WARNING(("idn_ucs4_utf8toucs4: UTF-8 string contains "
- "surrogate pair\n"));
- r = idn_invalid_encoding;
- goto ret;
- }
- if (tolen < 1) {
- r = idn_buffer_overflow;
- goto ret;
- }
- tolen--;
- *ucs4p++ = v;
- }
-
- if (tolen < 1) {
- r = idn_buffer_overflow;
- goto ret;
- }
- *ucs4p = '\0';
-
- r = idn_success;
-ret:
- if (r == idn_success) {
- TRACE(("idn_ucs4_utf8toucs4(): success (ucs4=\"%s\")\n",
- idn__debug_ucs4xstring(ucs4, 50)));
- } else {
- TRACE(("idn_ucs4_utf8toucs4(): %s\n",
- idn_result_tostring(r)));
- }
- return (r);
-}
-
-idn_result_t
-idn_ucs4_ucs4toutf8(const unsigned long *ucs4, char *utf8, size_t tolen) {
- unsigned char *utf8p = (unsigned char *)utf8;
- unsigned long v;
- int width;
- int mask;
- int offset;
- idn_result_t r;
-
- TRACE(("idn_ucs4_ucs4toutf8(ucs4=\"%s\", tolen=%d)\n",
- idn__debug_ucs4xstring(ucs4, 50), (int)tolen));
-
- while (*ucs4 != '\0') {
- v = *ucs4++;
- if (IS_SURROGATE_LOW(v) || IS_SURROGATE_HIGH(v)) {
- WARNING(("idn_ucs4_ucs4toutf8: UCS4 string contains "
- "surrogate pair\n"));
- r = idn_invalid_encoding;
- goto ret;
- }
- if (v < 0x80) {
- mask = 0;
- width = 1;
- } else if (v < 0x800) {
- mask = 0xc0;
- width = 2;
- } else if (v < 0x10000) {
- mask = 0xe0;
- width = 3;
- } else if (v < 0x200000) {
- mask = 0xf0;
- width = 4;
- } else if (v < 0x4000000) {
- mask = 0xf8;
- width = 5;
- } else if (v < 0x80000000) {
- mask = 0xfc;
- width = 6;
- } else {
- WARNING(("idn_ucs4_ucs4toutf8: invalid character\n"));
- r = idn_invalid_encoding;
- goto ret;
- }
-
- if (tolen < width) {
- r = idn_buffer_overflow;
- goto ret;
- }
- offset = 6 * (width - 1);
- *utf8p++ = (v >> offset) | mask;
- mask = 0x80;
- while (offset > 0) {
- offset -= 6;
- *utf8p++ = ((v >> offset) & 0x3f) | mask;
- }
- tolen -= width;
- }
-
- if (tolen < 1) {
- r = idn_buffer_overflow;
- goto ret;
- }
- *utf8p = '\0';
-
- r = idn_success;
-ret:
- if (r == idn_success) {
- TRACE(("idn_ucs4_ucs4toutf8(): success (utf8=\"%s\")\n",
- idn__debug_xstring(utf8, 50)));
- } else {
- TRACE(("idn_ucs4_ucs4toutf8(): %s\n",
- idn_result_tostring(r)));
- }
- return (r);
-}
-
-size_t
-idn_ucs4_strlen(const unsigned long *ucs4) {
- size_t len;
-
- for (len = 0; *ucs4 != '\0'; ucs4++, len++)
- /* nothing to do */ ;
-
- return (len);
-}
-
-unsigned long *
-idn_ucs4_strcpy(unsigned long *to, const unsigned long *from) {
- unsigned long *result = to;
-
- while (*from != '\0')
- *to++ = *from++;
- *to = '\0';
-
- return (result);
-}
-
-unsigned long *
-idn_ucs4_strcat(unsigned long *to, const unsigned long *from) {
- unsigned long *result = to;
-
- while (*to != '\0')
- to++;
-
- while (*from != '\0')
- *to++ = *from++;
- *to = '\0';
-
- return (result);
-}
-
-int
-idn_ucs4_strcmp(const unsigned long *str1, const unsigned long *str2) {
- while (*str1 != '\0') {
- if (*str1 > *str2)
- return (1);
- else if (*str1 < *str2)
- return (-1);
- str1++;
- str2++;
- }
-
- if (*str1 > *str2)
- return (1);
- else if (*str1 < *str2)
- return (-1);
-
- return (0);
-}
-
-int
-idn_ucs4_strcasecmp(const unsigned long *str1, const unsigned long *str2) {
- unsigned long c1, c2;
-
- while (*str1 != '\0') {
- c1 = ASCII_TOLOWER(*str1);
- c2 = ASCII_TOLOWER(*str2);
- if (c1 > c2)
- return (1);
- else if (c1 < c2)
- return (-1);
- str1++;
- str2++;
- }
-
- c1 = ASCII_TOLOWER(*str1);
- c2 = ASCII_TOLOWER(*str2);
- if (c1 > c2)
- return (1);
- else if (c1 < c2)
- return (-1);
-
- return (0);
-}
-
-
-unsigned long *
-idn_ucs4_strdup(const unsigned long *str) {
- size_t length = idn_ucs4_strlen(str);
- unsigned long *dupstr;
-
- dupstr = (unsigned long *)malloc(sizeof(*str) * (length + 1));
- if (dupstr == NULL)
- return NULL;
- memcpy(dupstr, str, sizeof(*str) * (length + 1));
-
- return dupstr;
-}
+++ /dev/null
-#ifndef lint
-static char *rcsid = "$Id: ucsmap.c,v 1.1 2003/06/04 00:26: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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-#include <config.h>
-
-#include <stdlib.h>
-#include <string.h>
-
-#include <idn/result.h>
-#include <idn/assert.h>
-#include <idn/log.h>
-#include <idn/logmacro.h>
-#include <idn/ucsmap.h>
-
-#define INIT_SIZE 50
-#define DEFAULT_BUF_SIZE 500
-#define UCSMAP_HASH_SIZE 103
-#define MAX_MAPLEN 0xffff
-
-/*
- * This module implements UCS 1-to-N mapping.
- * To speed up mapping table lookup, a combination of hash and
- * binary search is used.
- */
-
-/*
- * Mapping entry.
- * Entries are sorted by its hash index and code point.
- */
-typedef struct {
- short hidx; /* hash index */
- unsigned short len; /* length of mapped sequence */
- unsigned long ucs; /* code point to be mapped */
- unsigned long *map; /* mapped sequence of code points */
-} ucsmap_entry_t;
-
-/*
- * Hash table entry.
- * Since the entries pointed by ucsmap_hash_t.entry are sorted,
- * binary search can be used.
- */
-typedef struct {
- ucsmap_entry_t *entry; /* sorted by code point */
- int n; /* length of 'entry' */
-} ucsmap_hash_t;
-
-/*
- * UCS character buffer for storing target character sequence.
- */
-typedef struct ucsmap_buf {
- struct ucsmap_buf *next;
- unsigned long buf[1]; /* actually a variable length array */
-} ucsmap_buf_t;
-
-/*
- * Mapping object.
- */
-typedef struct idn_ucsmap {
- ucsmap_hash_t hash[UCSMAP_HASH_SIZE];
- ucsmap_entry_t *entries; /* array of entries */
- size_t entry_size; /* allocated size */
- size_t nentries; /* # of entries in use */
- ucsmap_buf_t *mapdata; /* list of character buffers */
- size_t mapdata_size; /* allocated size of current buffer */
- size_t mapdata_used; /* # of chars in use */
- int fixed; /* already fixed? */
- int refcnt; /* reference count */
-} ucsmap_t;
-
-static int ucsmap_hash(unsigned long v);
-static unsigned long *save_mapped_sequence(idn_ucsmap_t ctx,
- unsigned long *map,
- size_t maplen);
-static void free_mapbuf(ucsmap_buf_t *buf);
-static int comp_entry(const void *v1, const void *v2);
-
-idn_result_t
-idn_ucsmap_create(idn_ucsmap_t *ctxp) {
- idn_ucsmap_t ctx;
-
- assert(ctxp != NULL);
-
- TRACE(("idn_ucsmap_create()\n"));
-
- if ((ctx = malloc(sizeof(*ctx))) == NULL) {
- WARNING(("idn_ucsmap_create: malloc failed\n"));
- return (idn_nomemory);
- }
-
- ctx->entry_size = 0;
- ctx->nentries = 0;
- ctx->entries = NULL;
- ctx->mapdata = NULL;
- ctx->mapdata_size = 0;
- ctx->mapdata_used = 0;
- ctx->fixed = 0;
- ctx->refcnt = 1;
- *ctxp = ctx;
- return (idn_success);
-}
-
-void
-idn_ucsmap_destroy(idn_ucsmap_t ctx) {
- assert(ctx != NULL && ctx->refcnt > 0);
-
- TRACE(("idn_ucsmap_destroy()\n"));
-
- if (--ctx->refcnt == 0) {
- if (ctx->entries != NULL)
- free(ctx->entries);
- if (ctx->mapdata != NULL)
- free_mapbuf(ctx->mapdata);
- free(ctx);
- }
-}
-
-void
-idn_ucsmap_incrref(idn_ucsmap_t ctx) {
- assert(ctx != NULL && ctx->refcnt > 0);
-
- ctx->refcnt++;
-}
-
-idn_result_t
-idn_ucsmap_add(idn_ucsmap_t ctx, unsigned long ucs,
- unsigned long *map, size_t maplen)
-{
- ucsmap_entry_t *e;
- ucsmap_entry_t *newbuf;
-
- assert(ctx != NULL && ctx->refcnt > 0);
-
- TRACE(("idn_ucsmap_add(ucs=U+%lX, maplen=%u)\n", ucs, maplen));
-
- /* Make sure it is not fixed yet. */
- if (ctx->fixed) {
- WARNING(("idn_ucsmap_add: attempt to add to fixed map\n"));
- return (idn_failure);
- }
-
- if (maplen > MAX_MAPLEN) {
- WARNING(("idn_ucsmap_add: maplen too large (> %d)\n",
- MAX_MAPLEN));
- return (idn_failure);
- }
-
- /* Append an entry. */
- if (ctx->nentries >= ctx->entry_size) {
- if (ctx->entry_size == 0)
- ctx->entry_size = INIT_SIZE;
- else
- ctx->entry_size *= 2;
- newbuf = realloc(ctx->entries, sizeof(*e) * ctx->entry_size);
- if (newbuf == NULL)
- return (idn_nomemory);
- ctx->entries = newbuf;
- }
- e = &ctx->entries[ctx->nentries];
- e->hidx = ucsmap_hash(ucs);
- e->len = maplen;
- e->ucs = ucs;
- if (maplen > 0) {
- /* Save mapped sequence in the buffer. */
- e->map = save_mapped_sequence(ctx, map, maplen);
- if (e->map == NULL)
- return (idn_nomemory);
- } else {
- /*
- * Zero 'maplen' is perfectly valid meaning one-to-zero
- * mapping.
- */
- e->map = NULL;
- }
- ctx->nentries++;
-
- return (idn_success);
-}
-
-void
-idn_ucsmap_fix(idn_ucsmap_t ctx) {
- ucsmap_entry_t *e;
- int last_hidx;
- int i;
-
- assert(ctx != NULL && ctx->refcnt > 0);
-
- TRACE(("idn_ucsmap_fix()\n"));
-
- if (ctx->fixed)
- return;
-
- ctx->fixed = 1;
-
- /* Initialize hash. */
- for (i = 0; i < UCSMAP_HASH_SIZE; i++) {
- ctx->hash[i].entry = NULL;
- ctx->hash[i].n = 0;
- }
-
- if (ctx->nentries == 0)
- return;
-
- /* Sort entries by the hash value and code point. */
- qsort(ctx->entries, ctx->nentries, sizeof(ucsmap_entry_t), comp_entry);
-
- /*
- * Now the entries are sorted by their hash value, and
- * sorted by its code point among the ones with the same hash value.
- */
-
- /* Build hash table. */
- last_hidx = -1;
- for (i = 0, e = ctx->entries; i < ctx->nentries; i++, e++) {
- if (e->hidx != last_hidx) {
- ctx->hash[e->hidx].entry = e;
- last_hidx = e->hidx;
- }
- ctx->hash[last_hidx].n++;
- }
-}
-
-idn_result_t
-idn_ucsmap_map(idn_ucsmap_t ctx, unsigned long v, unsigned long *to,
- size_t tolen, size_t *maplenp) {
- int hash;
- ucsmap_entry_t *e;
- int n;
- int hi, lo, mid;
-
- assert(ctx != NULL && ctx->refcnt > 0 && to != NULL &&
- maplenp != NULL);
-
- TRACE(("idn_ucsmap_map(v=U+%lX)\n", v));
-
- if (!ctx->fixed) {
- WARNING(("idn_ucsmap_map: not fixed yet\n"));
- return (idn_failure);
- }
-
- /* First, look up hash table. */
- hash = ucsmap_hash(v);
- if ((n = ctx->hash[hash].n) == 0)
- goto nomap;
-
- /* Then do binary search. */
- e = ctx->hash[hash].entry;
- lo = 0;
- hi = n - 1;
- while (lo <= hi) {
- mid = (lo + hi) / 2;
- if (v < e[mid].ucs)
- hi = mid - 1;
- else if (v > e[mid].ucs)
- lo = mid + 1;
- else {
- /* Found. */
- if (tolen < e[mid].len)
- return (idn_buffer_overflow);
- memcpy(to, e[mid].map, sizeof(*to) * e[mid].len);
- *maplenp = e[mid].len;
- return (idn_success);
- }
- }
-
- /*
- * Not found. Put the original character to 'to'
- * just for convenience.
- */
- nomap:
- if (tolen < 1)
- return (idn_buffer_overflow);
- *to = v;
- *maplenp = 1;
- return (idn_nomapping);
-}
-
-static int
-ucsmap_hash(unsigned long v) {
- return (v % UCSMAP_HASH_SIZE);
-}
-
-static unsigned long *
-save_mapped_sequence(idn_ucsmap_t ctx, unsigned long *map, size_t maplen) {
- ucsmap_buf_t *buf;
- unsigned long *p;
- size_t allocsize;
-
- /*
- * If the current buffer (the first one in the ctx->mapdata list)
- * has enough space, use it. Otherwise, allocate a new buffer and
- * insert it at the beginning of the list.
- */
- if (ctx->mapdata_used + maplen > ctx->mapdata_size) {
- if (maplen > DEFAULT_BUF_SIZE)
- allocsize = maplen * 2;
- else
- allocsize = DEFAULT_BUF_SIZE;
- buf = malloc(sizeof(ucsmap_hash_t) +
- sizeof(unsigned long) * allocsize);
- if (buf == NULL)
- return (NULL);
- buf->next = ctx->mapdata;
- ctx->mapdata = buf;
- ctx->mapdata_size = allocsize;
- ctx->mapdata_used = 0;
- }
- p = ctx->mapdata->buf + ctx->mapdata_used;
- memcpy(p, map, sizeof(unsigned long) * maplen);
- ctx->mapdata_used += maplen;
- return (p);
-}
-
-static void
-free_mapbuf(ucsmap_buf_t *buf) {
- while (buf != NULL) {
- ucsmap_buf_t *next = buf->next;
- free(buf);
- buf = next;
- }
-}
-
-static int
-comp_entry(const void *v1, const void *v2) {
- const ucsmap_entry_t *e1 = v1;
- const ucsmap_entry_t *e2 = v2;
-
- if (e1->hidx < e2->hidx)
- return (-1);
- else if (e1->hidx > e2->hidx)
- return (1);
- else if (e1->ucs < e2->ucs)
- return (-1);
- else if (e1->ucs > e2->ucs)
- return (1);
- else
- return (0);
-}
+++ /dev/null
-#ifndef lint
-static char *rcsid = "$Id: ucsset.c,v 1.1 2003/06/04 00:26:15 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-#include <config.h>
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-
-#include <idn/result.h>
-#include <idn/assert.h>
-#include <idn/logmacro.h>
-#include <idn/ucsset.h>
-
-#define UCS_MAX 0x80000000UL
-
-#define INIT_SIZE 50
-
-/*
- * Code point range.
- *
- * The set of code points is represented by an array of code point ranges.
- * In the building phase, specified ranges by 'idn_ucsset_add' or
- * 'idn_ucsset_addrange' are simply appended to the array.
- * And 'idn_ucsset_fix' sorts the array by the code point value, and also
- * merges any intersecting ranges. Since the array is sorted, a binary
- * search can be used for looking up.
- */
-typedef struct {
- unsigned long from;
- unsigned long to;
-} range_t;
-
-/*
- * Code point segment.
- *
- * To speed up searching further, the entire region of UCS-4 code points
- * (U+0000 - U+7FFFFFFF) are divided into segments. For each segment,
- * the first and last element of the range array corresponding to the
- * segment are computed by 'idn_ucsset_fix'. This narrows down the
- * (initial) search range.
- */
-typedef struct {
- int range_start; /* index of ucsset.ranges */
- int range_end; /* ditto */
-} segment_t;
-
-/*
- * Code point to segment index conversion.
- *
- * Below is the function that maps a code point to the corresponding segment.
- * The mapping is non-uniform, so that BMP, the following 16 planes that
- * comprise Unicode code points together with BMP, and other planes
- * have different granularity.
- */
-#define SEG_THLD1 0x10000 /* BMP */
-#define SEG_THLD2 0x110000 /* Unicode (BMP+16planes) */
-#define SEG_SFT1 10 /* BMP: 1K code points/segment */
-#define SEG_SFT2 14 /* following 16 planes: 16K cp/seg */
-#define SEG_SFT3 24 /* rest: 16M cp/seg */
-#define SEG_OFF1 (SEG_THLD1 >> SEG_SFT1)
-#define SEG_OFF2 (((SEG_THLD2 - SEG_THLD1) >> SEG_SFT2) + SEG_OFF1)
-#define SEG_INDEX(v) \
- (((v) < SEG_THLD1) ? ((v) >> SEG_SFT1) : \
- ((v) < SEG_THLD2) ? ((((v) - SEG_THLD1) >> SEG_SFT2) + SEG_OFF1) : \
- ((((v) - SEG_THLD2) >> SEG_SFT3) + SEG_OFF2))
-#define SEG_LEN (SEG_INDEX(UCS_MAX - 1) + 1)
-
-/*
- * Representation of set of UCS code points.
- */
-typedef struct idn_ucsset {
- segment_t segments[SEG_LEN];
- int fixed;
- int size; /* allocated size of 'ranges' */
- int nranges; /* num of ranges */
- range_t *ranges;
- int refcnt; /* reference count */
-} ucsset;
-
-static idn_result_t addrange(idn_ucsset_t ctx, unsigned long from,
- unsigned long to, char *func_name);
-static int comp_range(const void *v1, const void *v2);
-
-idn_result_t
-idn_ucsset_create(idn_ucsset_t *ctx) {
- idn_ucsset_t bm;
-
- assert(ctx != NULL);
-
- TRACE(("idn_ucsset_create()\n"));
-
- if ((bm = malloc(sizeof(ucsset))) == NULL) {
- WARNING(("idn_ucsset_create: malloc failed\n"));
- return idn_nomemory;
- }
- bm->size = bm->nranges = 0;
- bm->ranges = NULL;
- bm->fixed = 0;
- bm->refcnt = 1;
- *ctx = bm;
- return (idn_success);
-}
-
-void
-idn_ucsset_destroy(idn_ucsset_t ctx) {
- assert(ctx != NULL && ctx->refcnt > 0);
-
- TRACE(("idn_ucsset_destroy()\n"));
-
- if (--ctx->refcnt == 0) {
- if (ctx->ranges != NULL)
- free(ctx->ranges);
- free(ctx);
- }
-}
-
-void
-idn_ucsset_incrref(idn_ucsset_t ctx) {
- assert(ctx != NULL && ctx->refcnt > 0);
-
- TRACE(("idn_ucsset_incrref()\n"));
-
- ctx->refcnt++;
-}
-
-idn_result_t
-idn_ucsset_add(idn_ucsset_t ctx, unsigned long v) {
- assert(ctx != NULL && ctx->refcnt > 0);
-
- TRACE(("idn_ucsset_add(v=U+%lX)\n", v));
-
- return (addrange(ctx, v, v, "idn_ucsset_add"));
-}
-
-idn_result_t
-idn_ucsset_addrange(idn_ucsset_t ctx, unsigned long from,
- unsigned long to)
-{
- assert(ctx != NULL && ctx->refcnt > 0);
-
- TRACE(("idn_ucsset_addrange(from=U+%lX, to=U+%lX)\n",
- from, to));
-
- return (addrange(ctx, from, to, "idn_ucsset_addrange"));
-}
-
-void
-idn_ucsset_fix(idn_ucsset_t ctx) {
- int nranges;
- range_t *ranges;
- segment_t *segments;
- int i, j;
-
- assert(ctx != NULL && ctx->refcnt > 0);
-
- TRACE(("idn_ucsset_fix()\n"));
-
- nranges = ctx->nranges;
- ranges = ctx->ranges;
- segments = ctx->segments;
-
- if (ctx->fixed)
- return;
-
- ctx->fixed = 1;
-
- /* Initialize segment array */
- for (i = 0; i < SEG_LEN; i++) {
- segments[i].range_start = -1;
- segments[i].range_end = -1;
- }
-
- /* If the set is empty, there's nothing to be done. */
- if (nranges == 0)
- return;
-
- /* Sort ranges. */
- qsort(ranges, nranges, sizeof(range_t), comp_range);
-
- /* Merge overlapped/continuous ranges. */
- for (i = 0, j = 1; j < nranges; j++) {
- if (ranges[i].to + 1 >= ranges[j].from) {
- /* can be merged */
- if (ranges[i].to < ranges[j].to) {
- ranges[i].to = ranges[j].to;
- }
- } else {
- i++;
- if (i < j)
- ranges[i] = ranges[j];
- }
- }
- /* 'i' points the last range in the array. */
- ctx->nranges = nranges = ++i;
-
- /* Create segment array. */
- for (i = 0; i < nranges; i++) {
- int fidx = SEG_INDEX(ranges[i].from);
- int tidx = SEG_INDEX(ranges[i].to);
-
- for (j = fidx; j <= tidx; j++) {
- if (segments[j].range_start < 0)
- segments[j].range_start = i;
- segments[j].range_end = i;
- }
- }
-
-#if 0
- /*
- * Does the standard guarantee realloc() always succeeds
- * when shrinking?
- */
- /* Shrink malloc'ed space if possible. */
- ctx->ranges = realloc(ctx->ranges, ctx->nranges * sizeof(range_t));
-#endif
-}
-
-idn_result_t
-idn_ucsset_lookup(idn_ucsset_t ctx, unsigned long v, int *found) {
- int idx;
- segment_t *segments;
-
- assert(ctx != NULL && ctx->refcnt > 0 && found != NULL);
-
- TRACE(("idn_ucsset_lookup(v=U+%lX)\n", v));
-
- /* Make sure it is fixed. */
- if (!ctx->fixed) {
- WARNING(("idn_ucsset_lookup: not fixed yet\n"));
- return (idn_failure);
- }
-
- /* Check the given code point. */
- if (v >= UCS_MAX)
- return (idn_invalid_codepoint);
-
- /* Get the segment 'v' belongs to. */
- segments = ctx->segments;
- idx = SEG_INDEX(v);
-
- /* Do binary search. */
- *found = 0;
- if (segments[idx].range_start >= 0) {
- int lo = segments[idx].range_start;
- int hi = segments[idx].range_end;
- range_t *ranges = ctx->ranges;
-
- while (lo <= hi) {
- int mid = (lo + hi) / 2;
- if (v < ranges[mid].from) {
- hi = mid - 1;
- } else if (v > ranges[mid].to) {
- lo = mid + 1;
- } else {
- *found = 1;
- break;
- }
- }
- }
- return (idn_success);
-}
-
-static idn_result_t
-addrange(idn_ucsset_t ctx, unsigned long from, unsigned long to,
- char *func_name)
-{
- range_t *newbuf;
-
- /* Check the given code points. */
- if (from > UCS_MAX) {
- WARNING(("%s: code point out of range (U+%lX)\n",
- func_name, from));
- return (idn_invalid_codepoint);
- } else if (to > UCS_MAX) {
- WARNING(("%s: code point out of range (U+%lX)\n",
- func_name, to));
- return (idn_invalid_codepoint);
- } else if (from > to) {
- WARNING(("%s: invalid range spec (U+%lX-U+%lX)\n",
- func_name, from, to));
- return (idn_invalid_codepoint);
- }
-
- /* Make sure it is not fixed yet. */
- if (ctx->fixed) {
- WARNING(("%s: attempt to add to already fixed object\n",
- func_name));
- return (idn_failure);
- }
-
- /* Append the specified range to the 'ranges' array. */
- if (ctx->nranges >= ctx->size) {
- /* Make it bigger. */
- if (ctx->size == 0)
- ctx->size = INIT_SIZE;
- else
- ctx->size *= 2;
- newbuf = realloc(ctx->ranges, ctx->size * sizeof(range_t));
- if (newbuf == NULL)
- return (idn_nomemory);
- ctx->ranges = newbuf;
- }
- ctx->ranges[ctx->nranges].from = from;
- ctx->ranges[ctx->nranges].to = to;
- ctx->nranges++;
-
- return (idn_success);
-}
-
-static int
-comp_range(const void *v1, const void *v2) {
- /*
- * Range comparation function suitable for qsort().
- */
- const range_t *r1 = v1;
- const range_t *r2 = v2;
-
- if (r1->from < r2->from)
- return (-1);
- else if (r1->from > r2->from)
- return (1);
- else
- return (0);
-}
+++ /dev/null
-#ifndef lint
-static char *rcsid = "$Id: unicode.c,v 1.1 2003/06/04 00:26:16 marka Exp $";
-#endif
-
-/*
- * Copyright (c) 2000,2001,2002 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-#include <config.h>
-
-#include <stddef.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <idn/result.h>
-#include <idn/logmacro.h>
-#include <idn/assert.h>
-#include <idn/unicode.h>
-
-#define UNICODE_CURRENT "3.2.0"
-
-#define UCS_MAX 0x10ffff
-#define END_BIT 0x80000000
-
-/*
- * Some constants for Hangul decomposition/composition.
- */
-#define SBase 0xac00
-#define LBase 0x1100
-#define VBase 0x1161
-#define TBase 0x11a7
-#define LCount 19
-#define VCount 21
-#define TCount 28
-#define SLast (SBase + LCount * VCount * TCount)
-
-/*
- * Symbol composition macro.
- */
-#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_320.c"
-#define VERSION v320
-#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);
-
-static struct idn__unicode_ops {
- char *version;
- unicode_canonclassproc canonclass_proc;
- unicode_decomposeproc decompose_proc;
- unicode_composeproc compose_proc;
-} unicode_versions[] = {
-#define MAKE_UNICODE_HANDLE(version, suffix) \
- { version, \
- compose_sym(canonclass_, suffix), \
- compose_sym(decompose_, suffix), \
- compose_sym(compose_, suffix) }
- MAKE_UNICODE_HANDLE("3.2.0", v320),
- { NULL },
-#undef MAKE_UNICODE_HANDLE
-};
-
-idn_result_t
-idn__unicode_create(const char *version,
- idn__unicode_version_t *versionp) {
- idn__unicode_version_t v;
-
- assert(versionp != NULL);
- TRACE(("idn__unicode_create(version=%-.50s)\n",
- version == NULL ? "<NULL>" : version));
-
- if (version == NULL)
- version = UNICODE_CURRENT;
-
- for (v = unicode_versions; v->version != NULL; v++) {
- if (strcmp(v->version, version) == 0) {
- *versionp = v;
- return (idn_success);
- }
- }
- return (idn_notfound);
-}
-
-void
-idn__unicode_destroy(idn__unicode_version_t version) {
- assert(version != NULL);
- TRACE(("idn__unicode_destroy()\n"));
- /* Nothing to do */
-}
-
-int
-idn__unicode_canonicalclass(idn__unicode_version_t version, unsigned long c) {
- if (c > UCS_MAX)
- return (0);
-
- return (*version->canonclass_proc)(c);
-}
-
-idn_result_t
-idn__unicode_decompose(idn__unicode_version_t version,
- int compat, unsigned long *v, size_t vlen,
- unsigned long c, int *decomp_lenp) {
- unsigned long *vorg = v;
- int seqidx;
- const unsigned long *seq;
-
- assert(v != NULL && vlen >= 0 && decomp_lenp != NULL);
-
- if (c > UCS_MAX)
- return (idn_notfound);
-
- /*
- * First, check for Hangul.
- */
- if (SBase <= c && c < SLast) {
- int idx, t_offset, v_offset, l_offset;
-
- idx = c - SBase;
- t_offset = idx % TCount;
- idx /= TCount;
- v_offset = idx % VCount;
- l_offset = idx / VCount;
- if ((t_offset == 0 && vlen < 2) || (t_offset > 0 && vlen < 3))
- return (idn_buffer_overflow);
- *v++ = LBase + l_offset;
- *v++ = VBase + v_offset;
- if (t_offset > 0)
- *v++ = TBase + t_offset;
- *decomp_lenp = v - vorg;
- return (idn_success);
- }
-
- /*
- * Look up decomposition table. If no decomposition is defined
- * or if it is a compatibility decomosition when canonical
- * decomposition requested, return 'idn_notfound'.
- */
- seqidx = (*version->decompose_proc)(c, &seq);
- if (seqidx == 0 || (compat == 0 && (seqidx & DECOMP_COMPAT) != 0))
- return (idn_notfound);
-
- /*
- * Copy the decomposed sequence. The end of the sequence are
- * marked with END_BIT.
- */
- do {
- unsigned long c;
- int dlen;
- idn_result_t r;
-
- c = *seq & ~END_BIT;
-
- /* Decompose recursively. */
- r = idn__unicode_decompose(version, compat, v, vlen, c, &dlen);
- if (r == idn_success) {
- v += dlen;
- vlen -= dlen;
- } else if (r == idn_notfound) {
- if (vlen < 1)
- return (idn_buffer_overflow);
- *v++ = c;
- vlen--;
- } else {
- return (r);
- }
-
- } while ((*seq++ & END_BIT) == 0);
-
- *decomp_lenp = v - vorg;
-
- return (idn_success);
-}
-
-int
-idn__unicode_iscompositecandidate(idn__unicode_version_t version,
- unsigned long c) {
- const struct composition *dummy;
-
- if (c > UCS_MAX)
- return (0);
-
- /* Check for Hangul */
- if ((LBase <= c && c < LBase + LCount) || (SBase <= c && c < SLast))
- return (1);
-
- /*
- * Look up composition table. If there are no composition
- * that begins with the given character, it is not a
- * composition candidate.
- */
- if ((*version->compose_proc)(c, &dummy) == 0)
- return (0);
- else
- return (1);
-}
-
-idn_result_t
-idn__unicode_compose(idn__unicode_version_t version, unsigned long c1,
- unsigned long c2, unsigned long *compp) {
- int n;
- int lo, hi;
- const struct composition *cseq;
-
- assert(compp != NULL);
-
- if (c1 > UCS_MAX || c2 > UCS_MAX)
- return (idn_notfound);
-
- /*
- * Check for Hangul.
- */
- if (LBase <= c1 && c1 < LBase + LCount &&
- VBase <= c2 && c2 < VBase + VCount) {
- /*
- * Hangul L and V.
- */
- *compp = SBase +
- ((c1 - LBase) * VCount + (c2 - VBase)) * TCount;
- return (idn_success);
- } else if (SBase <= c1 && c1 < SLast &&
- TBase <= c2 && c2 < TBase + TCount &&
- (c1 - SBase) % TCount == 0) {
- /*
- * Hangul LV and T.
- */
- *compp = c1 + (c2 - TBase);
- return (idn_success);
- }
-
- /*
- * Look up composition table. If the result is 0, no composition
- * is defined. Otherwise, upper 16bits of the result contains
- * the number of composition that begins with 'c1', and the lower
- * 16bits is the offset in 'compose_seq'.
- */
- if ((n = (*version->compose_proc)(c1, &cseq)) == 0)
- return (idn_notfound);
-
- /*
- * The composite sequences are sorted by the 2nd character 'c2'.
- * So we can use binary search.
- */
- lo = 0;
- hi = n - 1;
- while (lo <= hi) {
- int mid = (lo + hi) / 2;
-
- if (cseq[mid].c2 < c2) {
- lo = mid + 1;
- } else if (cseq[mid].c2 > c2) {
- hi = mid - 1;
- } else {
- *compp = cseq[mid].comp;
- return (idn_success);
- }
- }
- return (idn_notfound);
-}
+++ /dev/null
-/* $Id: unicode_template.c,v 1.1 2003/06/04 00:26:16 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-#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);
-}
+++ /dev/null
-/* $Id: unicodedata_320.c,v 1.1 2003/06/04 00:26:43 marka Exp $ */
-/* $-Id: generate_normalize_data.pl,v 1.8 2001/10/31 08:51:30 m-kasahr 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 v320_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,
- 31, 31, 0, 0, 0, 0, 32, 0,
- 0, 0, 0, 0, 0, 33, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 34, 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, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 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, 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, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 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, 39, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 40, 41, 42, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 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];
-} v320_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, 230, 230, 230, 230, 230, 230, 230, 230,
- 230, 230, 230, 230, 230, 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, 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, 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, 1, 1, 230, 220, 230, 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, 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 v320_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];
-} v320_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 v320_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 v320_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,
- 95, 0, 0, 96, 0, 0, 97, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 98, 0, 0, 99,
- 100, 101, 102, 103, 104, 105, 106, 0,
- 107, 108, 109, 110, 111, 112, 113, 114,
- 0, 115, 116, 117, 118, 0, 0, 0,
- 119, 120, 121, 122, 123, 124, 125, 126,
- 127, 128, 129, 130, 131, 132, 133, 134,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 135, 136, 137, 138, 139, 140, 141, 142,
- 143, 144, 145, 146, 0, 0, 0, 0,
- 147, 148, 149, 150, 151, 152, 153, 154,
- 155, 156, 157, 158, 159, 160, 161, 162,
- 163, 164, 165, 166, 167, 168, 169, 170,
- 0, 171, 172, 173, 174, 175, 176, 177,
- 178, 179, 180, 181, 182, 183, 184, 185,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 186, 187, 0, 188, 189, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 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, 217, 218, 219, 220, 221,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 222, 223, 224, 225, 226, 227, 228, 229,
- 230, 231, 232, 233, 234, 235, 236, 237,
- 238, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 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];
-} v320_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, 34666,
- 34668, 34670, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 34672,
- 0, 0, 0, 0, 0, 0, 0, 34676,
- }},
- {{
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 34677, 34678, 0, 0, 34679, 34680, 34681, 34682,
- 34683, 34684, 34685, 34686, 34687, 34688, 34689, 34690,
- }},
- {{
- 34691, 34692, 34693, 34694, 34695, 34696, 34697, 34698,
- 34699, 34700, 34701, 34702, 34703, 34704, 34705, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- }},
- {{
- 0, 0, 0, 0, 0, 0, 0, 0,
- 34706, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- }},
- {{
- 34708, 34711, 34714, 34715, 0, 34717, 34720, 34723,
- 0, 34724, 34726, 34727, 34728, 34729, 34730, 34731,
- 34732, 34733, 34734, 34735, 0, 34736, 34737, 0,
- 0, 34739, 34740, 34741, 34742, 34743, 0, 0,
- }},
- {{
- 34744, 34746, 34749, 0, 34751, 0, 1984, 0,
- 34753, 0, 1986, 1987, 34756, 34757, 0, 34758,
- 34759, 34760, 0, 34761, 34762, 34763, 34764, 34765,
- 34766, 34767, 0, 0, 0, 34768, 34769, 34770,
- }},
- {{
- 34771, 0, 0, 0, 0, 34772, 34773, 34774,
- 34775, 34776, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 34777, 34780, 34783, 34786, 34789,
- 34792, 34795, 34798, 34801, 34804, 34807, 34810, 34813,
- }},
- {{
- 34815, 34816, 34818, 34821, 34823, 34824, 34826, 34829,
- 34833, 34835, 34836, 34838, 34841, 34842, 34843, 34844,
- 34845, 34846, 34848, 34851, 34853, 34854, 34856, 34859,
- 34863, 34865, 34866, 34868, 34871, 34872, 34873, 34874,
- }},
- {{
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 2107, 2109, 0, 0, 0, 0,
- }},
- {{
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 2111, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- }},
- {{
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 2113, 2115, 2117,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- }},
- {{
- 0, 0, 0, 0, 2119, 0, 0, 0,
- 0, 2121, 0, 0, 2123, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- }},
- {{
- 0, 0, 0, 0, 2125, 0, 2127, 0,
- 0, 0, 0, 0, 34897, 34899, 0, 34902,
- 34904, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- }},
- {{
- 0, 2139, 0, 0, 2141, 0, 0, 2143,
- 0, 2145, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- }},
- {{
- 2147, 0, 2149, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 2151, 2153, 2155,
- 2157, 2159, 0, 0, 2161, 2163, 0, 0,
- 2165, 2167, 0, 0, 0, 0, 0, 0,
- }},
- {{
- 2169, 2171, 0, 0, 2173, 2175, 0, 0,
- 2177, 2179, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- }},
- {{
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 2181, 2183, 2185, 2187,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- }},
- {{
- 2189, 2191, 2193, 2195, 0, 0, 0, 0,
- 0, 0, 2197, 2199, 2201, 2203, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- }},
- {{
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 2205, 2206, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- }},
- {{
- 34975, 34976, 34977, 34978, 34979, 34980, 34981, 34982,
- 34983, 34984, 34986, 34988, 34990, 34992, 34994, 34996,
- 34998, 35000, 35002, 35004, 35006, 35009, 35012, 35015,
- 35018, 35021, 35024, 35027, 35030, 35033, 35037, 35041,
- }},
- {{
- 35045, 35049, 35053, 35057, 35061, 35065, 35069, 35073,
- 35077, 35079, 35081, 35083, 35085, 35087, 35089, 35091,
- 35093, 35095, 35098, 35101, 35104, 35107, 35110, 35113,
- 35116, 35119, 35122, 35125, 35128, 35131, 35134, 35137,
- }},
- {{
- 35140, 35143, 35146, 35149, 35152, 35155, 35158, 35161,
- 35164, 35167, 35170, 35173, 35176, 35179, 35182, 35185,
- 35188, 35191, 35194, 35197, 35200, 35203, 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, 35242, 35243, 35244, 35245, 35246, 35247,
- }},
- {{
- 35248, 35249, 35250, 35251, 35252, 35253, 35254, 35255,
- 35256, 35257, 35258, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- }},
- {{
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 35259, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- }},
- {{
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 35263, 35266, 35268, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- }},
- {{
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 2503, 0, 0, 0,
- }},
- {{
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 35273,
- }},
- {{
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 35274, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- }},
- {{
- 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, 35458,
- 35459, 35460, 35461, 35462, 35463, 35464, 35465, 35466,
- }},
- {{
- 35467, 35468, 35469, 35470, 35471, 35472, 35473, 35474,
- 35475, 35476, 35477, 35478, 35479, 35480, 35481, 35482,
- 35483, 35484, 35485, 35486, 35487, 35488, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- }},
- {{
- 35489, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- }},
- {{
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 35490, 0,
- 35491, 35492, 35493, 0, 0, 0, 0, 0,
- }},
- {{
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 2726, 0, 2728, 0,
- 2730, 0, 2732, 0, 2734, 0, 2736, 0,
- 2738, 0, 2740, 0, 2742, 0, 2744, 0,
- }},
- {{
- 2746, 0, 2748, 0, 0, 2750, 0, 2752,
- 0, 2754, 0, 0, 0, 0, 0, 0,
- 2756, 2758, 0, 2760, 2762, 0, 2764, 2766,
- 0, 2768, 2770, 0, 2772, 2774, 0, 0,
- }},
- {{
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 2776, 0, 0, 0,
- 0, 0, 0, 35546, 35548, 0, 2782, 35552,
- }},
- {{
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 2786, 0, 2788, 0,
- 2790, 0, 2792, 0, 2794, 0, 2796, 0,
- 2798, 0, 2800, 0, 2802, 0, 2804, 0,
- }},
- {{
- 2806, 0, 2808, 0, 0, 2810, 0, 2812,
- 0, 2814, 0, 0, 0, 0, 0, 0,
- 2816, 2818, 0, 2820, 2822, 0, 2824, 2826,
- 0, 2828, 2830, 0, 2832, 2834, 0, 0,
- }},
- {{
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 2836, 0, 0, 2838,
- 2840, 2842, 2844, 0, 0, 0, 2846, 35616,
- }},
- {{
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 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, 35677, 35678, 35679, 35680,
- 35681, 35682, 35683, 35684, 35685, 35686, 35687, 35688,
- 35689, 35690, 35691, 35692, 35693, 35694, 35695, 35696,
- }},
- {{
- 35697, 35698, 35699, 35700, 35701, 35702, 35703, 35704,
- 35705, 35706, 35707, 35708, 35709, 35710, 35711, 0,
- 0, 0, 35712, 35713, 35714, 35715, 35716, 35717,
- 35718, 35719, 35720, 35721, 35722, 35723, 35724, 35725,
- }},
- {{
- 35726, 35729, 35732, 35735, 35738, 35741, 35744, 35747,
- 35750, 35753, 35756, 35759, 35762, 35765, 35768, 35772,
- 35776, 35780, 35784, 35788, 35792, 35796, 35800, 35804,
- 35808, 35812, 35816, 35820, 35824, 0, 0, 0,
- }},
- {{
- 35828, 35831, 35834, 35837, 35840, 35843, 35846, 35849,
- 35852, 35855, 35858, 35861, 35864, 35867, 35870, 35873,
- 35876, 35879, 35882, 35885, 35888, 35891, 35894, 35897,
- 35900, 35903, 35906, 35909, 35912, 35915, 35918, 35921,
- }},
- {{
- 35924, 35927, 35930, 35933, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 35936, 35938, 35940, 35942, 35944, 35946, 35948,
- 35950, 35952, 35954, 35956, 35958, 35960, 35962, 35964,
- }},
- {{
- 35966, 35967, 35968, 35969, 35970, 35971, 35972, 35973,
- 35974, 35975, 35976, 35977, 35978, 35979, 35980, 35982,
- 35984, 35986, 35988, 35990, 35992, 35994, 35996, 35998,
- 36000, 36002, 36004, 36006, 0, 0, 0, 0,
- }},
- {{
- 36008, 36009, 36010, 36011, 36012, 36013, 36014, 36015,
- 36016, 36017, 36018, 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, 36059, 36061, 36063, 36065, 36067, 36069,
- 36071, 36073, 36075, 36077, 36079, 36081, 36083, 36085,
- }},
- {{
- 36087, 36089, 36091, 36093, 36095, 36097, 36099, 36101,
- 36103, 36105, 36108, 36111, 0, 0, 0, 0,
- 36114, 36115, 36116, 36117, 36118, 36119, 36120, 36121,
- 36122, 36123, 36124, 36125, 36126, 36127, 36128, 36129,
- }},
- {{
- 36130, 36131, 36132, 36133, 36134, 36135, 36136, 36137,
- 36138, 36139, 36140, 36141, 36142, 36143, 36144, 36145,
- 36146, 36147, 36148, 36149, 36150, 36151, 36152, 36153,
- 36154, 36155, 36156, 36157, 36158, 36159, 36160, 0,
- }},
- {{
- 36161, 36165, 36169, 36173, 36176, 36180, 36183, 36186,
- 36191, 36195, 36198, 36201, 36204, 36208, 36212, 36215,
- 36218, 36220, 36223, 36227, 36231, 36233, 36238, 36244,
- 36249, 36252, 36257, 36262, 36266, 36269, 36272, 36275,
- }},
- {{
- 36279, 36284, 36288, 36291, 36294, 36297, 36299, 36301,
- 36303, 36305, 36308, 36311, 36316, 36319, 36323, 36328,
- 36331, 36333, 36335, 36340, 36344, 36349, 36352, 36357,
- 36359, 36362, 36365, 36368, 36371, 36374, 36378, 36381,
- }},
- {{
- 36383, 36386, 36389, 36392, 36396, 36399, 36402, 36405,
- 36410, 36414, 36416, 36421, 36423, 36427, 36431, 36434,
- 36437, 36440, 36444, 36446, 36449, 36453, 36455, 36460,
- 36463, 36465, 36467, 36469, 36471, 36473, 36475, 36477,
- }},
- {{
- 36479, 36481, 36483, 36486, 36489, 36492, 36495, 36498,
- 36501, 36504, 36507, 36510, 36513, 36516, 36519, 36522,
- 36525, 36528, 36531, 36533, 36535, 36538, 36540, 0,
- 0, 0, 0, 36542, 36544, 36546, 36548, 36550,
- }},
- {{
- 36554, 36556, 36558, 36560, 36562, 36564, 36566, 36568,
- 36570, 36573, 36577, 36579, 36581, 36583, 36585, 36587,
- 36589, 36591, 36594, 36597, 36600, 36603, 36605, 36607,
- 36609, 36611, 36613, 36615, 36617, 36619, 36621, 36623,
- }},
- {{
- 36626, 36629, 36631, 36634, 36637, 36640, 36642, 36645,
- 36648, 36652, 36654, 36657, 36660, 36663, 36666, 36671,
- 36677, 36679, 36681, 36683, 36685, 36687, 36689, 36691,
- 36693, 36695, 36697, 36699, 36701, 36703, 36705, 36707,
- }},
- {{
- 36709, 36711, 36713, 36717, 36719, 36721, 36723, 36727,
- 36730, 36732, 36734, 36736, 36738, 36740, 36742, 36744,
- 36746, 36748, 36750, 36753, 36755, 36757, 36760, 36763,
- 36765, 36769, 36772, 36774, 36776, 36778, 0, 0,
- }},
- {{
- 36780, 36782, 36784, 36786, 36788, 36790, 36792, 36794,
- 36796, 36798, 36801, 36804, 36807, 36810, 36813, 36816,
- 36819, 36822, 36825, 36828, 36831, 36834, 36837, 36840,
- 36843, 36846, 36849, 36852, 36855, 36858, 36861, 0,
- }},
- {{
- 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, 4271,
- 4272, 4273, 4274, 4275, 4276, 4277, 4278, 4279,
- 4280, 4281, 4282, 4283, 4284, 4285, 4286, 4287,
- }},
- {{
- 4288, 4289, 4290, 4291, 4292, 4293, 4294, 4295,
- 4296, 4297, 4298, 4299, 4300, 4301, 4302, 4303,
- 4304, 4305, 4306, 4307, 4308, 4309, 4310, 4311,
- 4312, 4313, 4314, 4315, 4316, 4317, 4318, 4319,
- }},
- {{
- 4320, 4321, 4322, 4323, 4324, 4325, 4326, 4327,
- 4328, 4329, 4330, 4331, 4332, 4333, 4334, 4335,
- 4336, 4337, 4338, 4339, 4340, 4341, 4342, 4343,
- 4344, 4345, 4346, 4347, 4348, 4349, 4350, 4351,
- }},
- {{
- 4352, 4353, 4354, 4355, 4356, 4357, 4358, 4359,
- 4360, 4361, 4362, 4363, 4364, 4365, 0, 0,
- 4366, 0, 4367, 0, 0, 4368, 4369, 4370,
- 4371, 4372, 4373, 4374, 4375, 4376, 4377, 0,
- }},
- {{
- 4378, 0, 4379, 0, 0, 4380, 4381, 0,
- 0, 0, 4382, 4383, 4384, 4385, 0, 0,
- 4386, 4387, 4388, 4389, 4390, 4391, 4392, 4393,
- 4394, 4395, 4396, 4397, 4398, 4399, 4400, 4401,
- }},
- {{
- 4402, 4403, 4404, 4405, 4406, 4407, 4408, 4409,
- 4410, 4411, 4412, 4413, 4414, 4415, 4416, 4417,
- 4418, 4419, 4420, 4421, 4422, 4423, 4424, 4425,
- 4426, 4427, 4428, 4429, 4430, 4431, 4432, 4433,
- }},
- {{
- 4434, 4435, 4436, 4437, 4438, 4439, 4440, 4441,
- 4442, 4443, 4444, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- }},
- {{
- 37213, 37215, 37217, 37219, 37222, 37225, 37227, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 37229, 37231, 37233, 37235, 37237,
- 0, 0, 0, 0, 0, 4471, 0, 4473,
- }},
- {{
- 37243, 37244, 37245, 37246, 37247, 37248, 37249, 37250,
- 37251, 37252, 4485, 4487, 4489, 4491, 4493, 4495,
- 4497, 4499, 4501, 4503, 4505, 4507, 4509, 0,
- 4511, 4513, 4515, 4517, 4519, 0, 4521, 0,
- }},
- {{
- 4523, 4525, 0, 4527, 4529, 0, 4531, 4533,
- 4535, 4537, 4539, 4541, 4543, 4545, 4547, 37317,
- 37319, 37320, 37321, 37322, 37323, 37324, 37325, 37326,
- 37327, 37328, 37329, 37330, 37331, 37332, 37333, 37334,
- }},
- {{
- 37335, 37336, 37337, 37338, 37339, 37340, 37341, 37342,
- 37343, 37344, 37345, 37346, 37347, 37348, 37349, 37350,
- 37351, 37352, 37353, 37354, 37355, 37356, 37357, 37358,
- 37359, 37360, 37361, 37362, 37363, 37364, 37365, 37366,
- }},
- {{
- 37367, 37368, 37369, 37370, 37371, 37372, 37373, 37374,
- 37375, 37376, 37377, 37378, 37379, 37380, 37381, 37382,
- 37383, 37384, 37385, 37386, 37387, 37388, 37389, 37390,
- 37391, 37392, 37393, 37394, 37395, 37396, 37397, 37398,
- }},
- {{
- 37399, 37400, 37401, 37402, 37403, 37404, 37405, 37406,
- 37407, 37408, 37409, 37410, 37411, 37412, 37413, 37414,
- 37415, 37416, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- }},
- {{
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 37417, 37418, 37419, 37420, 37421,
- 37422, 37423, 37424, 37425, 37426, 37427, 37428, 37429,
- }},
- {{
- 37430, 37431, 37432, 37433, 37434, 37435, 37436, 37437,
- 37438, 37439, 37440, 37442, 37444, 37446, 37448, 37450,
- 37452, 37454, 37456, 37458, 37460, 37462, 37464, 37466,
- 37468, 37470, 37472, 37474, 37476, 37477, 37478, 37479,
- }},
- {{
- 37480, 37482, 37484, 37486, 37488, 37490, 37492, 37494,
- 37496, 37498, 37500, 37502, 37504, 37506, 37508, 37510,
- 37512, 37514, 37516, 37518, 37520, 37522, 37524, 37526,
- 37528, 37530, 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, 37671,
- }},
- {{
- 37674, 37677, 37680, 37683, 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, 37818, 37820,
- 37822, 37824, 37826, 37828, 37830, 37832, 37834, 37836,
- 37838, 37840, 37842, 37844, 37846, 37848, 37850, 37852,
- 37854, 37856, 37858, 37860, 37862, 37864, 37866, 37868,
- }},
- {{
- 37870, 37872, 37874, 37876, 37878, 37880, 37882, 37884,
- 37886, 37888, 37890, 37892, 37894, 37896, 37898, 37900,
- 37902, 37904, 37906, 37908, 37910, 37912, 37914, 37916,
- 37918, 37920, 37922, 37924, 37926, 37928, 37930, 37932,
- }},
- {{
- 37934, 37936, 37938, 37940, 37942, 37944, 37946, 37948,
- 37950, 37952, 37954, 37956, 37958, 37960, 37962, 37964,
- 37966, 37968, 37970, 37973, 37976, 37979, 37981, 37983,
- 37985, 37987, 37989, 37991, 37993, 37995, 37997, 37999,
- }},
- {{
- 38001, 38003, 38005, 38007, 38009, 38011, 38013, 38015,
- 38017, 38019, 38021, 38023, 38025, 38027, 38029, 38031,
- 38033, 38035, 38037, 38039, 38041, 38043, 38045, 38047,
- 38049, 38051, 38053, 38055, 38057, 38059, 38061, 38063,
- }},
- {{
- 38065, 38067, 38069, 38071, 38073, 38075, 38077, 38079,
- 38081, 38083, 38085, 38087, 38089, 38091, 38093, 38095,
- 38097, 38099, 38101, 38103, 38105, 38107, 38109, 38111,
- 38113, 38115, 38117, 38119, 38121, 38123, 0, 0,
- }},
- {{
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 38125, 38128, 38131, 38134, 38137, 38140, 38143, 38146,
- 38149, 38152, 38155, 38158, 38161, 38164, 38167, 38170,
- }},
- {{
- 38173, 38176, 38179, 38182, 38185, 38188, 38191, 38194,
- 38197, 38200, 38203, 38206, 38209, 38212, 38215, 38218,
- 38221, 38224, 38227, 38230, 38233, 38236, 38239, 38242,
- 38245, 38248, 38251, 38254, 38257, 38260, 38263, 38266,
- }},
- {{
- 38269, 38272, 38275, 38278, 38281, 38284, 38287, 38290,
- 38293, 38296, 38299, 38302, 38305, 38308, 38311, 38314,
- 0, 0, 38317, 38320, 38323, 38326, 38329, 38332,
- 38335, 38338, 38341, 38344, 38347, 38350, 38353, 38356,
- }},
- {{
- 38359, 38362, 38365, 38368, 38371, 38374, 38377, 38380,
- 38383, 38386, 38389, 38392, 38395, 38398, 38401, 38404,
- 38407, 38410, 38413, 38416, 38419, 38422, 38425, 38428,
- 38431, 38434, 38437, 38440, 38443, 38446, 38449, 38452,
- }},
- {{
- 38455, 38458, 38461, 38464, 38467, 38470, 38473, 38476,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- }},
- {{
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 38479, 38482, 38485, 38489, 38493, 38497, 38501, 38505,
- 38509, 38513, 38516, 38534, 38542, 0, 0, 0,
- }},
- {{
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 38546, 38547, 38548, 38549, 38550, 38551, 38552, 38553,
- 38554, 38555, 38556, 38557, 38558, 38559, 38560, 38561,
- }},
- {{
- 38562, 38563, 38564, 38565, 38566, 0, 0, 0,
- 0, 38567, 38568, 38569, 38570, 38571, 38572, 38573,
- 38574, 38575, 38576, 0, 38577, 38578, 38579, 38580,
- 38581, 38582, 38583, 38584, 38585, 38586, 38587, 38588,
- }},
- {{
- 38589, 38590, 38591, 38592, 38593, 38594, 38595, 0,
- 38596, 38597, 38598, 38599, 0, 0, 0, 0,
- 38600, 38602, 38604, 0, 38606, 0, 38608, 38610,
- 38612, 38614, 38616, 38618, 38620, 38622, 38624, 38626,
- }},
- {{
- 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, 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, 38747, 38749,
- 38751, 38753, 38755, 38757, 38759, 0, 0, 0,
- }},
- {{
- 0, 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, 38791,
- }},
- {{
- 38792, 38793, 38794, 38795, 38796, 38797, 38798, 38799,
- 38800, 38801, 38802, 38803, 38804, 38805, 38806, 38807,
- 38808, 38809, 38810, 38811, 38812, 38813, 38814, 38815,
- 38816, 38817, 38818, 38819, 38820, 38821, 38822, 38823,
- }},
- {{
- 38824, 38825, 38826, 38827, 38828, 38829, 38830, 38831,
- 38832, 38833, 38834, 38835, 38836, 38837, 38838, 38839,
- 38840, 38841, 38842, 38843, 38844, 38845, 38846, 38847,
- 38848, 38849, 38850, 38851, 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, 38937, 38938, 38939, 38940, 38941, 38942, 38943,
- 38944, 38945, 38946, 38947, 38948, 38949, 38950, 0,
- }},
- {{
- 0, 0, 38951, 38952, 38953, 38954, 38955, 38956,
- 0, 0, 38957, 38958, 38959, 38960, 38961, 38962,
- 0, 0, 38963, 38964, 38965, 38966, 38967, 38968,
- 0, 0, 38969, 38970, 38971, 0, 0, 0,
- }},
- {{
- 38972, 38973, 38974, 38975, 38976, 38977, 38978, 0,
- 38979, 38980, 38981, 38982, 38983, 38984, 38985, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- }},
- {{
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 6218, 6220,
- }},
- {{
- 6222, 6224, 6226, 6228, 6230, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- }},
- {{
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 6232, 6234, 6236, 6238, 6240,
- }},
- {{
- 6242, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- }},
- {{
- 39012, 39013, 39014, 39015, 39016, 39017, 39018, 39019,
- 39020, 39021, 39022, 39023, 39024, 39025, 39026, 39027,
- 39028, 39029, 39030, 39031, 39032, 39033, 39034, 39035,
- 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, 0, 39097, 39098,
- 39099, 39100, 39101, 39102, 39103, 39104, 39105, 39106,
- }},
- {{
- 39107, 39108, 39109, 39110, 39111, 39112, 39113, 39114,
- 39115, 39116, 39117, 39118, 39119, 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, 39148, 39149, 39150, 39151, 39152, 39153, 39154,
- 39155, 39156, 39157, 39158, 39159, 39160, 39161, 39162,
- 39163, 39164, 39165, 39166, 39167, 0, 39168, 39169,
- }},
- {{
- 0, 0, 39170, 0, 0, 39171, 39172, 0,
- 0, 39173, 39174, 39175, 39176, 0, 39177, 39178,
- 39179, 39180, 39181, 39182, 39183, 39184, 39185, 39186,
- 39187, 39188, 0, 39189, 0, 39190, 39191, 39192,
- }},
- {{
- 39193, 0, 39194, 39195, 0, 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, 0, 39261,
- 39262, 39263, 39264, 0, 0, 39265, 39266, 39267,
- 39268, 39269, 39270, 39271, 39272, 0, 39273, 39274,
- 39275, 39276, 39277, 39278, 39279, 0, 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, 0, 39308, 39309, 39310, 39311, 0,
- }},
- {{
- 39312, 39313, 39314, 39315, 39316, 0, 39317, 0,
- 0, 0, 39318, 39319, 39320, 39321, 39322, 39323,
- 39324, 0, 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, 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, 0, 0, 0, 0,
- 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, 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, 39843, 39844, 39845, 39846,
- }},
- {{
- 39847, 39848, 39849, 39850, 39851, 39852, 39853, 39854,
- 39855, 39856, 39857, 39858, 39859, 39860, 39861, 39862,
- 39863, 39864, 39865, 39866, 39867, 39868, 39869, 39870,
- 39871, 39872, 39873, 39874, 39875, 39876, 39877, 39878,
- }},
- {{
- 39879, 39880, 39881, 39882, 39883, 39884, 39885, 39886,
- 39887, 39888, 39889, 39890, 39891, 39892, 39893, 39894,
- 39895, 39896, 39897, 39898, 39899, 39900, 39901, 39902,
- 39903, 39904, 39905, 39906, 39907, 39908, 39909, 39910,
- }},
- {{
- 39911, 39912, 39913, 39914, 39915, 39916, 39917, 39918,
- 39919, 39920, 39921, 39922, 39923, 39924, 39925, 39926,
- 39927, 39928, 39929, 39930, 39931, 39932, 39933, 39934,
- 39935, 39936, 39937, 39938, 39939, 39940, 39941, 39942,
- }},
- {{
- 39943, 39944, 39945, 39946, 39947, 39948, 39949, 39950,
- 39951, 39952, 0, 0, 0, 0, 39953, 39954,
- 39955, 39956, 39957, 39958, 39959, 39960, 39961, 39962,
- 39963, 39964, 39965, 39966, 39967, 39968, 39969, 39970,
- }},
- {{
- 39971, 39972, 39973, 39974, 39975, 39976, 39977, 39978,
- 39979, 39980, 39981, 39982, 39983, 39984, 39985, 39986,
- 39987, 39988, 39989, 39990, 39991, 39992, 39993, 39994,
- 39995, 39996, 39997, 39998, 39999, 40000, 40001, 40002,
- }},
- {{
- 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, 7617, 7618,
- }},
- {{
- 7619, 7620, 7621, 7622, 7623, 7624, 7625, 7626,
- 7627, 7628, 7629, 7630, 7631, 7632, 7633, 7634,
- 7635, 7636, 7637, 7638, 7639, 7640, 7641, 7642,
- 7643, 7644, 7645, 7646, 7647, 7648, 7649, 7650,
- }},
- {{
- 7651, 7652, 7653, 7654, 7655, 7656, 7657, 7658,
- 7659, 7660, 7661, 7662, 7663, 7664, 7665, 7666,
- 7667, 7668, 7669, 7670, 7671, 7672, 7673, 7674,
- 7675, 7676, 7677, 7678, 7679, 7680, 7681, 7682,
- }},
- {{
- 7683, 7684, 7685, 7686, 7687, 7688, 7689, 7690,
- 7691, 7692, 7693, 7694, 7695, 7696, 7697, 7698,
- 7699, 7700, 7701, 7702, 7703, 7704, 7705, 7706,
- 7707, 7708, 7709, 7710, 7711, 7712, 7713, 7714,
- }},
- {{
- 7715, 7716, 7717, 7718, 7719, 7720, 7721, 7722,
- 7723, 7724, 7725, 7726, 7727, 7728, 7729, 7730,
- 7731, 7732, 7733, 7734, 7735, 7736, 7737, 7738,
- 7739, 7740, 7741, 7742, 7743, 7744, 7745, 7746,
- }},
- {{
- 7747, 7748, 7749, 7750, 7751, 7752, 7753, 7754,
- 7755, 7756, 7757, 7758, 7759, 7760, 7761, 7762,
- 7763, 7764, 7765, 7766, 7767, 7768, 7769, 7770,
- 7771, 7772, 7773, 7774, 7775, 7776, 0, 0,
- }},
-};
-static const unsigned long v320_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, 0x8000003f,
- 0x0000003f, 0x80000021, 0x00000021, 0x8000003f,
- 0x00002032, 0x00002032, 0x00002032, 0x80002032,
- 0x80000020, 0x80000030, 0x80000069, 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,
- 0x800003b3, 0x80000393, 0x800003a0, 0x80002211,
- 0x80000044, 0x80000064, 0x80000065, 0x80000069,
- 0x8000006a, 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, 0x0000222b,
- 0x0000222b, 0x0000222b, 0x8000222b, 0x0000003a,
- 0x0000003a, 0x8000003d, 0x0000003d, 0x8000003d,
- 0x0000003d, 0x0000003d, 0x8000003d, 0x00002add,
- 0x80000338, 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,
- 0x00003088, 0x8000308a, 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,
- 0x000030b3, 0x800030c8, 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,
- 0x00000032, 0x80000031, 0x00000032, 0x80000032,
- 0x00000032, 0x80000033, 0x00000032, 0x80000034,
- 0x00000032, 0x80000035, 0x00000032, 0x80000036,
- 0x00000032, 0x80000037, 0x00000032, 0x80000038,
- 0x00000032, 0x80000039, 0x00000033, 0x80000030,
- 0x00000033, 0x80000031, 0x00000033, 0x80000032,
- 0x00000033, 0x80000033, 0x00000033, 0x80000034,
- 0x00000033, 0x80000035, 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, 0x00000033, 0x80000036, 0x00000033,
- 0x80000037, 0x00000033, 0x80000038, 0x00000033,
- 0x80000039, 0x00000034, 0x80000030, 0x00000034,
- 0x80000031, 0x00000034, 0x80000032, 0x00000034,
- 0x80000033, 0x00000034, 0x80000034, 0x00000034,
- 0x80000035, 0x00000034, 0x80000036, 0x00000034,
- 0x80000037, 0x00000034, 0x80000038, 0x00000034,
- 0x80000039, 0x00000035, 0x80000030, 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, 0x8000964b, 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, 0x80004fae, 0x800050e7,
- 0x8000514d, 0x800052c9, 0x800052e4, 0x80005351,
- 0x8000559d, 0x80005606, 0x80005668, 0x80005840,
- 0x800058a8, 0x80005c64, 0x80005c6e, 0x80006094,
- 0x80006168, 0x8000618e, 0x800061f2, 0x8000654f,
- 0x800065e2, 0x80006691, 0x80006885, 0x80006d77,
- 0x80006e1a, 0x80006f22, 0x8000716e, 0x8000722b,
- 0x80007422, 0x80007891, 0x8000793e, 0x80007949,
- 0x80007948, 0x80007950, 0x80007956, 0x8000795d,
- 0x8000798d, 0x8000798e, 0x80007a40, 0x80007a81,
- 0x80007bc0, 0x80007df4, 0x80007e09, 0x80007e41,
- 0x80007f72, 0x80008005, 0x800081ed, 0x80008279,
- 0x80008279, 0x80008457, 0x80008910, 0x80008996,
- 0x80008b01, 0x80008b39, 0x80008cd3, 0x80008d08,
- 0x80008fb6, 0x80009038, 0x800096e3, 0x800097ff,
- 0x8000983b, 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, 0x00000631, 0x000006cc,
- 0x00000627, 0x80000644, 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, 0x80002985,
- 0x80002986, 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 v320_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,
- 30, 0, 0, 31, 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, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 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, 35, 36, 37, 38, 39, 40,
- 41, 42, 43, 44, 45, 46, 47, 48,
- 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, 50, 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, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 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, 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, 54, 55, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 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];
-} v320_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, 263, 0,
- }},
- {{
- 0, 265, 0, 267, 0, 269, 0, 0, 271, 0, 0,
- 0, 0, 273, 0, 0, 275, 0, 0, 0, 277, 0,
- 279, 0, 0, 281, 0, 0, 0, 283, 0, 285,
- }},
- {{
- 0, 0, 0, 0, 0, 287, 289, 0, 291, 293, 0,
- 295, 297, 0, 299, 0, 301, 0, 303, 0, 305, 0,
- 307, 0, 309, 0, 311, 0, 313, 315, 0, 317,
- }},
- {{
- 0, 319, 0, 321, 0, 323, 0, 325, 0, 327, 0,
- 329, 0, 331, 0, 333, 335, 0, 338, 340, 0, 342,
- 0, 0, 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, 382,
- }},
- {{
- 0, 0, 0, 384, 0, 386, 0, 388, 0, 390, 0,
- 392, 0, 394, 0, 396, 0, 398, 0, 400, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- }},
- {{
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 402, 404, 0,
- 406, 408, 0, 410, 0, 412, 0, 0, 0, 0,
- }},
- {{
- 414, 0, 0, 416, 0, 0, 0, 0, 418, 420, 0,
- 0, 0, 0, 0, 422, 0, 0, 424, 0, 0, 426,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- }},
- {{
- 428, 0, 0, 430, 0, 0, 0, 0, 432, 0, 434,
- 436, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 442, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- }},
- {{
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 446, 448, 450, 452, 454, 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, 516, 0, 518, 520, 0, 0, 0, 522,
- 524, 0, 0, 526, 0, 528, 0, 530, 0, 532,
- }},
- {{
- 0, 534, 0, 536, 0, 538, 0, 540, 0, 542, 0,
- 544, 0, 546, 0, 548, 550, 552, 554, 0, 0, 556,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- }},
- {{
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 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, 650, 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, 684,
- }},
- {{
- 0, 686, 0, 0, 0, 0, 0, 0, 0, 0, 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, 736, 0, 738, 0, 740,
- }},
- {{
- 0, 0, 742, 0, 744, 0, 746, 0, 748, 0, 750,
- 0, 752, 0, 754, 0, 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,
- 782, 0, 784, 0, 786, 0, 788, 0, 790, 0, 792,
- 0, 0, 0, 794, 0, 0, 0, 0, 0, 0,
- }},
- {{
- 0, 796, 0, 798, 0, 800, 0, 802, 0, 804, 0,
- 806, 0, 808, 0, 810, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- }},
- {{
- 0, 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, 862, 864, 866, 868, 870, 872,
- }},
- {{
- 874, 876, 878, 880, 882, 884, 886, 888, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- }},
- {{
- 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, 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,
- 1041, 1044, 1047, 1050, 1053, 1056, 0, 0, 0, 0,
- }},
- {{
- 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, 1120,
- }},
- {{
- 0, 1122, 0, 1124, 0, 1126, 0, 1128, 0, 1130, 0,
- 1132, 0, 1134, 0, 1136, 0, 1138, 0, 1140, 0, 1142,
- 0, 1144, 0, 1146, 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,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- }},
- {{
- 1176, 1178, 1180, 1182, 1184, 1186, 1188, 1190, 0, 0, 0,
- 0, 0, 0, 0, 0, 1192, 1194, 1196, 1198, 1200, 1202,
- 1204, 1206, 0, 0, 0, 0, 0, 0, 0, 0,
- }},
- {{
- 1208, 1210, 1212, 1214, 1216, 1218, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1220, 1223, 1225, 1229, 1231, 1235,
- 1237, 1241, 0, 0, 0, 0, 0, 0, 0, 0,
- }},
- {{
- 1243, 1245, 1247, 1249, 1251, 1253, 1255, 1257, 0, 0, 0,
- 0, 0, 0, 0, 0, 1259, 1261, 1263, 1265, 1267, 1269,
- 1271, 1273, 1275, 1277, 1279, 1281, 1283, 1285, 0, 0,
- }},
- {{
- 1287, 1292, 1297, 1302, 1307, 1312, 1317, 1322, 1327, 1330, 1333,
- 1336, 1339, 1342, 1345, 1348, 1351, 1356, 1361, 1366, 1371, 1376,
- 1381, 1386, 1391, 1394, 1397, 1400, 1403, 1406, 1409, 1412,
- }},
- {{
- 1415, 1420, 1425, 1430, 1435, 1440, 1445, 1450, 1455, 1458, 1461,
- 1464, 1467, 1470, 1473, 1476, 1479, 1481, 1483, 1486, 1491, 0,
- 1494, 1497, 0, 0, 0, 0, 1501, 0, 1504, 0,
- }},
- {{
- 0, 0, 1506, 1509, 1514, 0, 1517, 1520, 0, 0, 0,
- 0, 1524, 0, 0, 0, 1527, 1529, 1531, 1535, 0, 0,
- 1539, 1542, 0, 0, 0, 0, 0, 0, 0, 0,
- }},
- {{
- 1546, 1548, 1550, 1554, 1558, 1561, 1563, 1566, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1570, 1573, 1578, 0,
- 1581, 1584, 0, 0, 0, 0, 1588, 0, 0, 0,
- }},
- {{
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1591, 1593, 1595, 1597, 1599, 1601,
- 1603, 1605, 1607, 1609, 1611, 1613, 1615, 1617, 1619, 1621,
- }},
- {{
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1623, 1625, 1627, 1629, 1631, 1633,
- 1635, 1637, 1639, 1641, 1643, 1645, 1647, 1649, 1651, 1653,
- }},
- {{
- 1655, 1657, 1659, 1661, 1663, 1665, 1667, 1669, 1671, 1673, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- }},
- {{
- 1675, 1678, 1681, 1684, 1688, 1692, 1695, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1698, 1701, 1704,
- 1707, 1710, 0, 0, 0, 0, 0, 0, 0, 0,
- }},
- {{
- 0, 1713, 1715, 1717, 1719, 1721, 1723, 1725, 1727, 1729, 1731,
- 1733, 1735, 1737, 1739, 1741, 1743, 1745, 1747, 1749, 1751, 1753,
- 1755, 1757, 1759, 1761, 1763, 0, 0, 0, 0, 0,
- }},
- {{
- 0, 0, 0, 0, 0, 0, 0, 0, 1765, 1767, 1769,
- 1771, 1773, 1775, 1777, 1779, 1781, 1783, 1785, 1787, 1789, 1791,
- 1793, 1795, 1797, 1799, 1801, 1803, 1805, 1807, 1809, 1811,
- }},
- {{
- 1813, 1815, 1817, 1819, 1821, 1823, 1825, 1827, 1829, 1831, 1833,
- 1835, 1837, 1839, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- }},
-};
-static const unsigned short v320_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,
- 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, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 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,
- 35, 36, 37, 38, 39, 40, 41, 42,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 43, 0, 44, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 45, 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, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 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, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 48, 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, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 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];
-} v320_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, 165, 0, 167, 0,
- 169, 0, 0, 171, 0, 173, 0, 175, 0, 177,
- }},
- {{
- 0, 179, 0, 181, 0, 183, 0, 185, 0, 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, 0, 233, 235, 0, 237, 0, 239, 0, 0,
- }},
- {{
- 0, 241, 243, 0, 245, 0, 247, 249, 0, 251, 253,
- 255, 0, 0, 257, 259, 261, 263, 0, 265, 267, 0,
- 269, 271, 273, 0, 0, 0, 275, 277, 0, 279,
- }},
- {{
- 281, 0, 283, 0, 285, 0, 287, 289, 0, 291, 0,
- 0, 293, 0, 295, 297, 0, 299, 301, 303, 0, 305,
- 0, 307, 309, 0, 0, 0, 311, 0, 0, 0,
- }},
- {{
- 0, 0, 0, 0, 313, 315, 0, 317, 319, 0, 321,
- 323, 0, 325, 0, 327, 0, 329, 0, 331, 0, 333,
- 0, 335, 0, 337, 0, 339, 0, 0, 341, 0,
- }},
- {{
- 343, 0, 345, 0, 347, 0, 349, 0, 351, 0, 353,
- 0, 355, 0, 357, 0, 0, 359, 361, 0, 363, 0,
- 365, 367, 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, 407, 0,
- }},
- {{
- 409, 0, 411, 0, 413, 0, 415, 0, 417, 0, 419,
- 0, 421, 0, 423, 0, 425, 0, 427, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- }},
- {{
- 0, 0, 0, 0, 0, 0, 429, 0, 431, 433, 435,
- 0, 437, 0, 439, 441, 0, 443, 445, 447, 449, 451,
- 453, 455, 457, 459, 461, 463, 465, 467, 469, 471,
- }},
- {{
- 473, 475, 0, 477, 479, 481, 483, 485, 487, 489, 491,
- 493, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- }},
- {{
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 495, 0, 497, 0, 499, 0, 501, 0,
- }},
- {{
- 503, 0, 505, 0, 507, 0, 509, 0, 511, 0, 513,
- 0, 515, 0, 517, 0, 0, 0, 0, 0, 519, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- }},
- {{
- 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, 613, 615, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 647, 0,
- }},
- {{
- 649, 0, 0, 0, 0, 0, 0, 0, 0, 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, 699, 0, 701, 0, 703, 0,
- }},
- {{
- 0, 705, 0, 707, 0, 709, 0, 711, 0, 713, 0,
- 715, 0, 717, 0, 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, 745,
- 0, 747, 0, 749, 0, 751, 0, 753, 0, 755, 0,
- 0, 0, 757, 0, 0, 0, 0, 0, 0, 0,
- }},
- {{
- 759, 0, 761, 0, 763, 0, 765, 0, 767, 0, 769,
- 0, 771, 0, 773, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- }},
- {{
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 775, 777, 779, 781, 783,
- 785, 787, 789, 791, 793, 795, 797, 799, 801, 803,
- }},
- {{
- 805, 807, 809, 811, 813, 815, 817, 819, 821, 823, 825,
- 827, 829, 831, 833, 835, 837, 839, 841, 843, 845, 847,
- 849, 0, 0, 0, 0, 0, 0, 0, 0, 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, 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,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 1063, 0,
- }},
- {{
- 1065, 0, 1067, 0, 1069, 0, 1071, 0, 1073, 0, 1075,
- 0, 1077, 0, 1079, 0, 1081, 0, 1083, 0, 1085, 0,
- 1087, 0, 1089, 0, 0, 0, 0, 0, 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, 0, 0,
- }},
- {{
- 0, 0, 0, 0, 0, 0, 0, 0, 1119, 1121, 1123,
- 1125, 1127, 1129, 1131, 1133, 0, 0, 0, 0, 0, 0,
- 0, 0, 1135, 1137, 1139, 1141, 1143, 1145, 1147, 1149,
- }},
- {{
- 0, 0, 0, 0, 0, 0, 0, 0, 1151, 1153, 1155,
- 1157, 1159, 1161, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1163, 0, 1165, 0, 1167, 0, 1169,
- }},
- {{
- 0, 0, 0, 0, 0, 0, 0, 0, 1171, 1173, 1175,
- 1177, 1179, 1181, 1183, 1185, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- }},
- {{
- 0, 0, 0, 0, 0, 0, 0, 0, 1187, 1191, 1195,
- 1199, 1203, 1207, 1211, 1215, 0, 0, 0, 0, 0, 0,
- 0, 0, 1219, 1223, 1227, 1231, 1235, 1239, 1243, 1247,
- }},
- {{
- 0, 0, 0, 0, 0, 0, 0, 0, 1251, 1255, 1259,
- 1263, 1267, 1271, 1275, 1279, 0, 0, 0, 0, 0, 0,
- 0, 0, 1283, 1285, 1287, 1289, 1291, 0, 0, 0,
- }},
- {{
- 0, 0, 0, 0, 0, 0, 0, 0, 1295, 1297, 1299,
- 1301, 1303, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1307, 1309, 1311, 1313, 0, 0, 0, 0,
- }},
- {{
- 0, 0, 0, 0, 0, 0, 0, 0, 1315, 1317, 1319,
- 1321, 1323, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1325, 1327, 1329, 1331, 1333, 0, 0, 0,
- }},
- {{
- 0, 0, 0, 0, 0, 0, 1337, 0, 0, 0, 1339,
- 1341, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- }},
- {{
- 1343, 1345, 1347, 1349, 1351, 1353, 1355, 1357, 1359, 1361, 1363,
- 1365, 1367, 1369, 1371, 1373, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- }},
- {{
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1375, 1377, 1379, 1381, 1383, 1385, 1387, 1389, 1391, 1393,
- }},
- {{
- 1395, 1397, 1399, 1401, 1403, 1405, 1407, 1409, 1411, 1413, 1415,
- 1417, 1419, 1421, 1423, 1425, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- }},
- {{
- 0, 1427, 1429, 1431, 1433, 1435, 1437, 1439, 1441, 1443, 1445,
- 1447, 1449, 1451, 1453, 1455, 1457, 1459, 1461, 1463, 1465, 1467,
- 1469, 1471, 1473, 1475, 1477, 0, 0, 0, 0, 0,
- }},
- {{
- 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, 1549, 1551, 1553, 0, 0, 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 v320_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,
- 0x80000220, 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, 0x800003d8,
- 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, 0x8000048a, 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, 0x800004c5,
- 0x00000010, 0x800004c7, 0x00000010, 0x800004c9,
- 0x00000010, 0x800004cb, 0x00000010, 0x800004cd,
- 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, 0x80000500, 0x00000010, 0x80000502,
- 0x00000010, 0x80000504, 0x00000010, 0x80000506,
- 0x00000010, 0x80000508, 0x00000010, 0x8000050a,
- 0x00000010, 0x8000050c, 0x00000010, 0x8000050e,
- 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 v320_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, 0x00000000, 0x80000069, 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, 0x8000019e, 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, 0x00000010, 0x800003c3, 0x00000010,
- 0x800003c4, 0x00000010, 0x800003c5, 0x00000010,
- 0x800003c6, 0x00000010, 0x800003c7, 0x00000010,
- 0x800003c8, 0x00000010, 0x800003c9, 0x00000010,
- 0x800003ca, 0x00000010, 0x800003cb, 0x00000010,
- 0x800003d9, 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,
- 0x8000048b, 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, 0x800004c6, 0x00000010,
- 0x800004c8, 0x00000010, 0x800004ca, 0x00000010,
- 0x800004cc, 0x00000010, 0x800004ce, 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,
- 0x80000501, 0x00000010, 0x80000503, 0x00000010,
- 0x80000505, 0x00000010, 0x80000507, 0x00000010,
- 0x80000509, 0x00000010, 0x8000050b, 0x00000010,
- 0x8000050d, 0x00000010, 0x8000050f, 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 v320_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, 11, 12, 13, 14, 15,
- 4, 4, 4, 4, 16, 4, 14, 17,
- 18, 19, 20, 21, 22, 23, 24, 0,
- 0, 0, 25, 26, 0, 0, 27, 28,
- 29, 30, 31, 0, 0, 32, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 33, 34, 35, 36, 37, 34, 38, 36,
- 39, 34, 40, 41, 33, 34, 42, 0,
- 37, 43, 44, 0, 39, 0, 45, 0,
- 0, 46, 47, 0, 0, 48, 49, 0,
- 0, 0, 50, 0, 0, 0, 51, 0,
- 0, 52, 53, 0, 0, 54, 55, 0,
- 56, 57, 0, 58, 59, 60, 61, 0,
- 0, 62, 56, 0, 0, 4, 63, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 64, 64, 65, 65, 0, 66, 67, 0,
- 68, 0, 0, 0, 0, 69, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 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, 70, 4, 4, 71,
- 72, 4, 73, 74, 4, 75, 76, 77,
- 0, 0, 0, 78, 0, 0, 79, 80,
- 81, 82, 83, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 84, 0, 0, 85, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 86, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 11, 87, 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, 88, 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, 89, 90, 91, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 4, 4, 92, 4, 93, 94, 95, 4,
- 96, 97, 98, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 99, 100, 5,
- 92, 92, 14, 14, 101, 101, 102, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 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];
-} v320_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,
- }},
- {{
- 1, 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, 2, 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, 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, 0, 2, 2, 2, 2, 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,
- 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0,
- }},
- {{
- 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, 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, 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, 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, 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, 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, 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,
- 1, 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, 2, 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, 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, 1, 1, 1,
- }},
- {{
- 0, 0, 0, 0, 0, 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, 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, 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 v320_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,
- 26, 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, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 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, 31, 32, 33, 34, 35, 36, 37,
- 38, 39, 40, 41, 42, 43, 44, 45,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 46, 0, 47, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 48, 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, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 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, 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, 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, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 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];
-} v320_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, 10, 11,
- 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
- 23, 24, 25, 26, 27, 0, 0, 0, 0, 0,
- }},
- {{
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28,
- 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, 45, 46, 47, 48, 49, 50,
- 51, 0, 52, 53, 54, 55, 56, 57, 58, 59,
- }},
- {{
- 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, 0, 87, 0, 88, 0, 89, 0,
- 90, 0, 0, 91, 0, 92, 0, 93, 0, 94,
- }},
- {{
- 0, 95, 0, 96, 0, 97, 0, 98, 0, 99, 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,
- 123, 0, 124, 125, 0, 126, 0, 127, 0, 128,
- }},
- {{
- 0, 129, 130, 0, 131, 0, 132, 133, 0, 134, 135,
- 136, 0, 0, 137, 138, 139, 140, 0, 141, 142, 0,
- 143, 144, 145, 0, 0, 0, 146, 147, 0, 148,
- }},
- {{
- 149, 0, 150, 0, 151, 0, 152, 153, 0, 154, 0,
- 0, 155, 0, 156, 157, 0, 158, 159, 160, 0, 161,
- 0, 162, 163, 0, 0, 0, 164, 0, 0, 0,
- }},
- {{
- 0, 0, 0, 0, 165, 166, 0, 167, 168, 0, 169,
- 170, 0, 171, 0, 172, 0, 173, 0, 174, 0, 175,
- 0, 176, 0, 177, 0, 178, 0, 0, 179, 0,
- }},
- {{
- 180, 0, 181, 0, 182, 0, 183, 0, 184, 0, 185,
- 0, 186, 0, 187, 0, 188, 190, 191, 0, 192, 0,
- 193, 194, 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, 213, 0, 214, 0,
- }},
- {{
- 215, 0, 216, 0, 217, 0, 218, 0, 219, 0, 220,
- 0, 221, 0, 222, 0, 223, 0, 224, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- }},
- {{
- 0, 0, 0, 0, 0, 225, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- }},
- {{
- 0, 0, 0, 0, 0, 0, 226, 0, 227, 228, 229,
- 0, 230, 0, 231, 232, 233, 236, 237, 238, 239, 240,
- 241, 242, 243, 244, 245, 246, 247, 248, 249, 250,
- }},
- {{
- 251, 252, 0, 253, 254, 255, 256, 257, 258, 259, 260,
- 261, 0, 0, 0, 0, 262, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- }},
- {{
- 0, 0, 265, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 266, 267, 0, 0, 0, 268,
- 269, 0, 270, 0, 271, 0, 272, 0, 273, 0,
- }},
- {{
- 274, 0, 275, 0, 276, 0, 277, 0, 278, 0, 279,
- 0, 280, 0, 281, 0, 282, 283, 284, 0, 285, 286,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- }},
- {{
- 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, 331, 332, 333, 334, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 348, 0, 349, 0, 350, 0,
- }},
- {{
- 351, 0, 0, 0, 0, 0, 0, 0, 0, 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,
- 374, 0, 375, 0, 376, 0, 377, 0, 378, 0,
- }},
- {{
- 0, 379, 0, 380, 0, 381, 0, 382, 0, 383, 0,
- 384, 0, 385, 0, 0, 386, 0, 387, 0, 388, 0,
- 389, 0, 390, 0, 391, 0, 392, 0, 393, 0,
- }},
- {{
- 394, 0, 395, 0, 396, 0, 397, 0, 398, 0, 399,
- 0, 400, 0, 401, 0, 402, 0, 403, 0, 404, 0,
- 0, 0, 405, 0, 0, 0, 0, 0, 0, 0,
- }},
- {{
- 406, 0, 407, 0, 408, 0, 409, 0, 410, 0, 411,
- 0, 412, 0, 413, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- }},
- {{
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 414, 415, 416, 417, 418,
- 419, 420, 421, 422, 423, 424, 425, 426, 427, 428,
- }},
- {{
- 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439,
- 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450,
- 451, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- }},
- {{
- 0, 0, 0, 0, 0, 0, 0, 452, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 514, 0, 515, 0, 516, 0, 517, 0,
- }},
- {{
- 518, 0, 519, 0, 520, 0, 521, 0, 522, 0, 523,
- 0, 524, 0, 525, 0, 526, 0, 527, 0, 528, 0,
- 529, 531, 533, 535, 537, 539, 0, 0, 0, 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, 569, 0, 570, 0, 571, 0,
- }},
- {{
- 572, 0, 573, 0, 574, 0, 575, 0, 576, 0, 577,
- 0, 578, 0, 579, 0, 580, 0, 581, 0, 582, 0,
- 583, 0, 584, 0, 0, 0, 0, 0, 0, 0,
- }},
- {{
- 0, 0, 0, 0, 0, 0, 0, 0, 585, 586, 587,
- 588, 589, 590, 591, 592, 0, 0, 0, 0, 0, 0,
- 0, 0, 593, 594, 595, 596, 597, 598, 0, 0,
- }},
- {{
- 0, 0, 0, 0, 0, 0, 0, 0, 599, 600, 601,
- 602, 603, 604, 605, 606, 0, 0, 0, 0, 0, 0,
- 0, 0, 607, 608, 609, 610, 611, 612, 613, 614,
- }},
- {{
- 0, 0, 0, 0, 0, 0, 0, 0, 615, 616, 617,
- 618, 619, 620, 0, 0, 621, 0, 623, 0, 626, 0,
- 629, 0, 0, 632, 0, 633, 0, 634, 0, 635,
- }},
- {{
- 0, 0, 0, 0, 0, 0, 0, 0, 636, 637, 638,
- 639, 640, 641, 642, 643, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- }},
- {{
- 644, 646, 648, 650, 652, 654, 656, 658, 662, 665, 668,
- 671, 674, 677, 680, 683, 684, 686, 688, 690, 692, 694,
- 696, 698, 702, 705, 708, 711, 714, 717, 720, 723,
- }},
- {{
- 724, 726, 728, 730, 732, 734, 736, 738, 742, 745, 748,
- 751, 754, 757, 760, 763, 0, 0, 764, 766, 768, 0,
- 770, 772, 775, 776, 777, 778, 781, 0, 782, 0,
- }},
- {{
- 0, 0, 783, 785, 787, 0, 789, 791, 794, 795, 796,
- 797, 800, 0, 0, 0, 0, 0, 801, 804, 0, 0,
- 807, 809, 812, 813, 814, 815, 0, 0, 0, 0,
- }},
- {{
- 0, 0, 816, 819, 822, 0, 824, 826, 829, 830, 831,
- 832, 833, 0, 0, 0, 0, 0, 834, 836, 838, 0,
- 840, 842, 845, 846, 847, 848, 851, 0, 0, 0,
- }},
- {{
- 0, 0, 0, 0, 0, 0, 852, 0, 0, 0, 853,
- 854, 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, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- }},
- {{
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 871, 872, 873, 874, 875, 876, 877, 878, 879, 880,
- }},
- {{
- 881, 882, 883, 884, 885, 886, 887, 888, 889, 890, 891,
- 892, 893, 894, 895, 896, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- }},
- {{
- 897, 899, 901, 903, 906, 909, 911, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 913, 915, 917,
- 919, 921, 0, 0, 0, 0, 0, 0, 0, 0,
- }},
- {{
- 0, 923, 924, 925, 926, 927, 928, 929, 930, 931, 932,
- 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, 943,
- 944, 945, 946, 947, 948, 0, 0, 0, 0, 0,
- }},
- {{
- 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959,
- 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 970,
- 971, 972, 973, 974, 975, 976, 977, 978, 979, 980,
- }},
- {{
- 981, 982, 983, 984, 985, 986, 0, 0, 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 v320_case_folding_seq[] = {
- 0x00000000, 0x80000061, 0x80000062, 0x80000063,
- 0x80000064, 0x80000065, 0x80000066, 0x80000067,
- 0x80000068, 0x80000069, 0x80000131, 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, 0x00000069, 0x80000307, 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, 0x8000019e,
- 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, 0x800003d9, 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,
- 0x8000048b, 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, 0x800004c6, 0x800004c8, 0x800004ca,
- 0x800004cc, 0x800004ce, 0x800004d1, 0x800004d3,
- 0x800004d5, 0x800004d7, 0x800004d9, 0x800004db,
- 0x800004dd, 0x800004df, 0x800004e1, 0x800004e3,
- 0x800004e5, 0x800004e7, 0x800004e9, 0x800004eb,
- 0x800004ed, 0x800004ef, 0x800004f1, 0x800004f3,
- 0x800004f5, 0x800004f9, 0x80000501, 0x80000503,
- 0x80000505, 0x80000507, 0x80000509, 0x8000050b,
- 0x8000050d, 0x8000050f, 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,
-};
-
+++ /dev/null
-#ifndef lint
-static char *rcsid = "$Id: unormalize.c,v 1.1 2003/06/04 00:26:43 marka Exp $";
-#endif
-
-/*
- * Copyright (c) 2000,2001,2002 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-#include <config.h>
-
-#include <stddef.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <idn/result.h>
-#include <idn/assert.h>
-#include <idn/logmacro.h>
-#include <idn/ucs4.h>
-#include <idn/unicode.h>
-#include <idn/unormalize.h>
-#include <idn/debug.h>
-
-#if !defined(HAVE_MEMMOVE) && defined(HAVE_BCOPY)
-#define memmove(a,b,c) bcopy((char *)(b),(char *)(a),(int)(c))
-#endif
-
-#define WORKBUF_SIZE 128
-#define WORKBUF_SIZE_MAX 10000
-
-typedef struct {
- idn__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 */
- unsigned long *ucs4; /* UCS-4 characters */
- int *class; /* and their canonical classes */
- unsigned long ucs4_buf[WORKBUF_SIZE]; /* local buffer */
- int class_buf[WORKBUF_SIZE]; /* ditto */
-} workbuf_t;
-
-static idn_result_t normalize(idn__unicode_version_t version,
- int do_composition, int compat,
- const unsigned long *from,
- unsigned long *to, size_t tolen);
-static idn_result_t decompose(workbuf_t *wb, unsigned long c, int compat);
-static void get_class(workbuf_t *wb);
-static void reorder(workbuf_t *wb);
-static void compose(workbuf_t *wb);
-static idn_result_t flush_before_cur(workbuf_t *wb,
- unsigned long **top, size_t *tolenp);
-static void workbuf_init(workbuf_t *wb);
-static void workbuf_free(workbuf_t *wb);
-static idn_result_t workbuf_extend(workbuf_t *wb);
-static idn_result_t workbuf_append(workbuf_t *wb, unsigned long c);
-static void workbuf_shift(workbuf_t *wb, int shift);
-static void workbuf_removevoid(workbuf_t *wb);
-
-idn_result_t
-idn__unormalize_formkc(idn__unicode_version_t version,
- const unsigned long *from, unsigned long *to,
- size_t tolen) {
- assert(version != NULL && from != NULL && to != NULL && tolen >= 0);
- TRACE(("idn__unormalize_formkc(from=\"%s\", tolen=%d)\n",
- idn__debug_ucs4xstring(from, 50), tolen));
- return (normalize(version, 1, 1, from, to, tolen));
-}
-
-static idn_result_t
-normalize(idn__unicode_version_t version, int do_composition, int compat,
- const unsigned long *from, unsigned long *to, size_t tolen) {
- workbuf_t wb;
- idn_result_t r = idn_success;
-
- /*
- * Initialize working buffer.
- */
- workbuf_init(&wb);
- wb.version = version;
-
- while (*from != '\0') {
- unsigned long c;
-
- assert(wb.cur == wb.last);
-
- /*
- * Get one character from 'from'.
- */
- c = *from++;
-
- /*
- * Decompose it.
- */
- if ((r = decompose(&wb, c, compat)) != idn_success)
- goto ret;
-
- /*
- * Get canonical class.
- */
- get_class(&wb);
-
- /*
- * Reorder & compose.
- */
- for (; wb.cur < wb.last; wb.cur++) {
- if (wb.cur == 0) {
- continue;
- } else if (wb.class[wb.cur] > 0) {
- /*
- * This is not a starter. Try reordering.
- * Note that characters up to it are
- * already in canonical order.
- */
- reorder(&wb);
- continue;
- }
-
- /*
- * This is a starter character, and there are
- * some characters before it. Those characters
- * have been reordered properly, and
- * ready for composition.
- */
- if (do_composition && wb.class[0] == 0)
- compose(&wb);
-
- /*
- * If CUR points to a starter character,
- * then process of characters before CUR are
- * already finished, because any further
- * reordering/composition for them are blocked
- * by the starter CUR points.
- */
- if (wb.cur > 0 && wb.class[wb.cur] == 0) {
- /* Flush everything before CUR. */
- r = flush_before_cur(&wb, &to, &tolen);
- if (r != idn_success)
- goto ret;
- }
- }
- }
-
- if (r == idn_success) {
- if (do_composition && wb.cur > 0 && wb.class[0] == 0) {
- /*
- * There is some characters left in WB.
- * They are ordered, but not composed yet.
- * Now CUR points just after the last character in WB,
- * and since compose() tries to compose characters
- * between top and CUR inclusive, we must make CUR
- * one character back during compose().
- */
- wb.cur--;
- compose(&wb);
- wb.cur++;
- }
- /*
- * Call this even when WB.CUR == 0, to make TO
- * NUL-terminated.
- */
- r = flush_before_cur(&wb, &to, &tolen);
- if (r != idn_success)
- goto ret;
- }
-
- if (tolen <= 0) {
- r = idn_buffer_overflow;
- goto ret;
- }
- *to = '\0';
-
-ret:
- workbuf_free(&wb);
- return (r);
-}
-
-static idn_result_t
-decompose(workbuf_t *wb, unsigned long c, int compat) {
- idn_result_t r;
- int dec_len;
-
-again:
- r = idn__unicode_decompose(wb->version, compat, wb->ucs4 + wb->last,
- wb->size - wb->last, c, &dec_len);
- switch (r) {
- case idn_success:
- wb->last += dec_len;
- return (idn_success);
- case idn_notfound:
- return (workbuf_append(wb, c));
- case idn_buffer_overflow:
- if ((r = workbuf_extend(wb)) != idn_success)
- return (r);
- if (wb->size > WORKBUF_SIZE_MAX) {
- WARNING(("idn__unormalize_form*: "
- "working buffer too large\n"));
- return (idn_nomemory);
- }
- goto again;
- default:
- return (r);
- }
- /* NOTREACHED */
-}
-
-static void
-get_class(workbuf_t *wb) {
- int i;
-
- for (i = wb->cur; i < wb->last; i++)
- wb->class[i] = idn__unicode_canonicalclass(wb->version,
- wb->ucs4[i]);
-}
-
-static void
-reorder(workbuf_t *wb) {
- unsigned long c;
- int i;
- int class;
-
- assert(wb != NULL);
-
- i = wb->cur;
- c = wb->ucs4[i];
- class = wb->class[i];
-
- while (i > 0 && wb->class[i - 1] > class) {
- wb->ucs4[i] = wb->ucs4[i - 1];
- wb->class[i] =wb->class[i - 1];
- i--;
- wb->ucs4[i] = c;
- wb->class[i] = class;
- }
-}
-
-static void
-compose(workbuf_t *wb) {
- int cur;
- unsigned long *ucs4;
- int *class;
- int last_class;
- int nvoids;
- int i;
- idn__unicode_version_t ver;
-
- assert(wb != NULL && wb->class[0] == 0);
-
- cur = wb->cur;
- ucs4 = wb->ucs4;
- class = wb->class;
- ver = wb->version;
-
- /*
- * If there are no decomposition sequence that begins with
- * the top character, composition is impossible.
- */
- if (!idn__unicode_iscompositecandidate(ver, ucs4[0]))
- return;
-
- last_class = 0;
- nvoids = 0;
- for (i = 1; i <= cur; i++) {
- unsigned long c;
- int cl = class[i];
-
- if ((last_class < cl || cl == 0) &&
- idn__unicode_compose(ver, ucs4[0], ucs4[i],
- &c) == idn_success) {
- /*
- * Replace the top character with the composed one.
- */
- ucs4[0] = c;
- class[0] = idn__unicode_canonicalclass(ver, c);
-
- class[i] = -1; /* void this character */
- nvoids++;
- } else {
- last_class = cl;
- }
- }
-
- /* Purge void characters, if any. */
- if (nvoids > 0)
- workbuf_removevoid(wb);
-}
-
-static idn_result_t
-flush_before_cur(workbuf_t *wb, unsigned long **top, size_t *tolenp) {
- if (*tolenp < wb->cur)
- return (idn_buffer_overflow);
-
- memcpy(*top, wb->ucs4, sizeof(**top) * wb->cur);
- *top += wb->cur;
- *tolenp -= wb->cur;
- workbuf_shift(wb, wb->cur);
-
- return (idn_success);
-}
-
-static void
-workbuf_init(workbuf_t *wb) {
- wb->cur = 0;
- wb->last = 0;
- wb->size = WORKBUF_SIZE;
- wb->ucs4 = wb->ucs4_buf;
- wb->class = wb->class_buf;
-}
-
-static void
-workbuf_free(workbuf_t *wb) {
- if (wb->ucs4 != wb->ucs4_buf) {
- free(wb->ucs4);
- free(wb->class);
- }
-}
-
-static idn_result_t
-workbuf_extend(workbuf_t *wb) {
- int newsize = wb->size * 3;
-
- if (wb->ucs4 == wb->ucs4_buf) {
- wb->ucs4 = malloc(sizeof(wb->ucs4[0]) * newsize);
- wb->class = malloc(sizeof(wb->class[0]) * newsize);
- } else {
- wb->ucs4 = realloc(wb->ucs4, sizeof(wb->ucs4[0]) * newsize);
- wb->class = realloc(wb->class, sizeof(wb->class[0]) * newsize);
- }
- if (wb->ucs4 == NULL || wb->class == NULL)
- return (idn_nomemory);
- else
- return (idn_success);
-}
-
-static idn_result_t
-workbuf_append(workbuf_t *wb, unsigned long c) {
- idn_result_t r;
-
- if (wb->last >= wb->size && (r = workbuf_extend(wb)) != idn_success)
- return (r);
- wb->ucs4[wb->last++] = c;
- return (idn_success);
-}
-
-static void
-workbuf_shift(workbuf_t *wb, int shift) {
- int nmove;
-
- assert(wb != NULL && wb->cur >= shift);
-
- nmove = wb->last - shift;
- (void)memmove(&wb->ucs4[0], &wb->ucs4[shift],
- nmove * sizeof(wb->ucs4[0]));
- (void)memmove(&wb->class[0], &wb->class[shift],
- nmove * sizeof(wb->class[0]));
- wb->cur -= shift;
- wb->last -= shift;
-}
-
-static void
-workbuf_removevoid(workbuf_t *wb) {
- int i, j;
- int last = wb->last;
-
- for (i = j = 0; i < last; i++) {
- if (wb->class[i] >= 0) {
- if (j < i) {
- wb->ucs4[j] = wb->ucs4[i];
- wb->class[j] = wb->class[i];
- }
- j++;
- }
- }
- wb->cur -= last - j;
- wb->last = j;
-}
+++ /dev/null
-#ifndef lint
-static char *rcsid = "$Id: utf8.c,v 1.1 2003/06/04 00:26:44 marka Exp $";
-#endif
-
-/*
- * 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, 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-#include <config.h>
-
-#include <stddef.h>
-
-#include <idn/assert.h>
-#include <idn/logmacro.h>
-#include <idn/utf8.h>
-#include <idn/debug.h>
-
-#define UTF8_WIDTH(c) \
- (((c) < 0x80) ? 1 : \
- ((c) < 0xc0) ? 0 : \
- ((c) < 0xe0) ? 2 : \
- ((c) < 0xf0) ? 3 : \
- ((c) < 0xf8) ? 4 : \
- ((c) < 0xfc) ? 5 : \
- ((c) < 0xfe) ? 6 : 0)
-
-#define VALID_CONT_BYTE(c) (0x80 <= (c) && (c) < 0xc0)
-
-int
-idn_utf8_mblen(const char *s) {
- int c = *(unsigned char *)s;
-
- assert(s != NULL);
-
-#if 0
- TRACE(("idn_utf8_mblen(s=<%s>)\n", idn__debug_hexstring(s, 6)));
-#endif
-
- return UTF8_WIDTH(c);
-}
-
-int
-idn_utf8_getmb(const char *s, size_t len, char *buf) {
- /* buf must be at least 7-bytes long */
- const unsigned char *p = (const unsigned char *)s;
- unsigned char *q = (unsigned char *)buf;
- int width = UTF8_WIDTH(*p);
- int w;
-
- assert(s != NULL);
-
-#if 0
- TRACE(("idn_utf8_getmb(s=<%s>,len=%d)\n",
- idn__debug_hexstring(s, 6), len));
-#endif
-
- if (width == 0 || len < width)
- return (0);
-
- /* Copy the first byte. */
- *q++ = *p++;
-
- /* .. and the rest. */
- w = width;
- while (--w > 0) {
- if (!VALID_CONT_BYTE(*p))
- return (0);
- *q++ = *p++;
- }
- return (width);
-}
-
-int
-idn_utf8_getwc(const char *s, size_t len, unsigned long *vp) {
- unsigned long v;
- unsigned long min;
- const unsigned char *p = (const unsigned char *)s;
- int c;
- int width;
- int rest;
-
- assert(s != NULL);
-
-#if 0
- TRACE(("idn_utf8_getwc(s=<%s>,len=%d)\n",
- idn__debug_hexstring(s, 10), len));
-#endif
-
- c = *p++;
- width = UTF8_WIDTH(c);
-
- switch (width) {
- case 0:
- return (0);
- case 1:
- v = c;
- min = 0;
- break;
- case 2:
- v = c & 0x1f;
- min = 0x80;
- break;
- case 3:
- v = c & 0xf;
- min = 0x800;
- break;
- case 4:
- v = c & 0x7;
- min = 0x10000;
- break;
- case 5:
- v = c & 3;
- min = 0x200000;
- break;
- case 6:
- v = c & 1;
- min = 0x4000000;
- break;
- default:
- FATAL(("idn_utf8_getint: internal error\n"));
- return (0);
- }
-
- if (len < width)
- return (0);
-
- rest = width - 1;
- while (rest-- > 0) {
- if (!VALID_CONT_BYTE(*p))
- return (0);
- v = (v << 6) | (*p & 0x3f);
- p++;
- }
-
- if (v < min)
- return (0);
-
- *vp = v;
- return (width);
-}
-
-int
-idn_utf8_putwc(char *s, size_t len, unsigned long v) {
- unsigned char *p = (unsigned char *)s;
- int mask;
- int off;
- int l;
-
- assert(s != NULL);
-
-#if 0
- TRACE(("idn_utf8_putwc(v=%lx)\n", v));
-#endif
-
- if (v < 0x80) {
- mask = 0;
- l = 1;
- } else if (v < 0x800) {
- mask = 0xc0;
- l = 2;
- } else if (v < 0x10000) {
- mask = 0xe0;
- l = 3;
- } else if (v < 0x200000) {
- mask = 0xf0;
- l = 4;
- } else if (v < 0x4000000) {
- mask = 0xf8;
- l = 5;
- } else if (v < 0x80000000) {
- mask = 0xfc;
- l = 6;
- } else {
- return (0);
- }
-
- if (len < l)
- return (0);
-
- off = 6 * (l - 1);
- *p++ = (v >> off) | mask;
- mask = 0x80;
- while (off > 0) {
- off -= 6;
- *p++ = ((v >> off) & 0x3f) | mask;
- }
- return l;
-}
-
-int
-idn_utf8_isvalidchar(const char *s) {
- unsigned long dummy;
-
- TRACE(("idn_utf8_isvalidchar(s=<%s>)\n",
- idn__debug_hexstring(s, 6)));
-
- return (idn_utf8_getwc(s, 6, &dummy) > 0);
-}
-
-int
-idn_utf8_isvalidstring(const char *s) {
- unsigned long dummy;
- int width;
-
- assert(s != NULL);
-
- TRACE(("idn_utf8_isvalidstring(s=<%s>)\n",
- idn__debug_hexstring(s, 20)));
-
- while (*s != '\0') {
- width = idn_utf8_getwc(s, 6, &dummy);
- if (width == 0)
- return (0);
- s += width;
- }
- return (1);
-}
-
-char *
-idn_utf8_findfirstbyte(const char *s, const char *known_top) {
- const unsigned char *p = (const unsigned char *)s;
- const unsigned char *t = (const unsigned char *)known_top;
-
- assert(s != NULL && known_top != NULL && known_top <= s);
-
- TRACE(("idn_utf8_findfirstbyte(s=<%s>)\n",
- idn__debug_hexstring(s, 8)));
-
- while (p >= t) {
- if (!VALID_CONT_BYTE(*p))
- break;
- p--;
- }
- if (p < t || UTF8_WIDTH(*p) == 0)
- return (NULL);
-
- return ((char *)p);
-}
+++ /dev/null
-#ifndef lint
-static char *rcsid = "$Id: util.c,v 1.1 2003/06/04 00:26:45 marka Exp $";
-#endif
-
-/*
- * Copyright (c) 2000,2002 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-#include <config.h>
-
-#ifdef WIN32
-#include <windows.h>
-#undef ERROR
-#endif
-
-#include <stddef.h>
-
-#include <idn/assert.h>
-#include <idn/result.h>
-#include <idn/logmacro.h>
-#include <idn/util.h>
-#include <idn/ucs4.h>
-
-#ifdef WIN32
-#define IDNKEY_IDNKIT "Software\\JPNIC\\IDN"
-#endif
-
-/*
- * ASCII ctype macros.
- * Note that these macros evaluate the argument multiple times. Be careful.
- */
-#define ASCII_ISDIGIT(c) \
- ('0' <= (c) && (c) <= '9')
-#define ASCII_ISUPPER(c) \
- ('A' <= (c) && (c) <= 'Z')
-#define ASCII_ISLOWER(c) \
- ('a' <= (c) && (c) <= 'z')
-#define ASCII_ISALPHA(c) \
- (ASCII_ISUPPER(c) || ASCII_ISLOWER(c))
-#define ASCII_ISALNUM(c) \
- (ASCII_ISDIGIT(c) || ASCII_ISUPPER(c) || ASCII_ISLOWER(c))
-
-#define ASCII_TOUPPER(c) \
- (('a' <= (c) && (c) <= 'z') ? ((c) - 'a' + 'A') : (c))
-#define ASCII_TOLOWER(c) \
- (('A' <= (c) && (c) <= 'Z') ? ((c) - 'A' + 'a') : (c))
-
-int
-idn__util_asciihaveaceprefix(const char *str, const char *prefix) {
- assert(str != NULL && prefix != NULL);
-
- while (*prefix != '\0') {
- if (ASCII_TOLOWER(*str) != ASCII_TOLOWER(*prefix))
- return 0;
- str++;
- prefix++;
- }
-
- return (1);
-}
-
-int
-idn__util_ucs4haveaceprefix(const unsigned long *str, const char *prefix) {
- assert(str != NULL && prefix != NULL);
-
- while (*prefix != '\0') {
- if (ASCII_TOLOWER(*str) != ASCII_TOLOWER(*prefix))
- return 0;
- str++;
- prefix++;
- }
-
- return (1);
-}
-
-int
-idn__util_ucs4isasciirange(const unsigned long *str) {
- while (*str != '\0') {
- if (*str > 0x7f)
- return (0);
- str++;
- }
-
- return (1);
-}
-
-#ifdef WIN32
-int
-idn__util_getregistrystring(idn__util_hkey_t topkey, const char *name,
- char *str, size_t length)
-{
- HKEY top;
- LONG stat;
- HKEY hk;
- DWORD len, type;
-
- assert((topkey == idn__util_hkey_currentuser ||
- topkey == idn__util_hkey_localmachine) &&
- name != NULL && str != NULL);
-
- if (topkey == idn__util_hkey_currentuser) {
- top= HKEY_CURRENT_USER;
- } else { /* idn__util_hkey_localmachine */
- top = HKEY_LOCAL_MACHINE;
- }
-
- stat = RegOpenKeyEx(top, IDNKEY_IDNKIT, 0, KEY_READ, &hk);
- if (stat != ERROR_SUCCESS) {
- return (0);
- }
-
- len = (DWORD)length;
- stat = RegQueryValueEx(hk, (LPCTSTR)name, NULL,
- &type, (LPBYTE)str, &len);
- RegCloseKey(hk);
-
- if (stat != ERROR_SUCCESS || type != REG_SZ) {
- return (0);
- }
-
- return (1);
-}
-#endif /* WIN32 */
+++ /dev/null
-#ifndef lint
-static char *rcsid = "$Id: version.c,v 1.1 2003/06/04 00:26:45 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-#include <config.h>
-
-#include <idn/version.h>
-
-const char *
-idn_version_getstring(void) {
- return IDNKIT_VERSION;
-}
+++ /dev/null
-#! /bin/sh
-
-# ltconfig - Create a system-specific libtool.
-# Copyright (C) 1996-1999 Free Software Foundation, Inc.
-# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
-#
-# 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
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-#
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-# A lot of this script is taken from autoconf-2.10.
-
-# Check that we are running under the correct shell.
-SHELL=${CONFIG_SHELL-/bin/sh}
-echo=echo
-if test "X$1" = X--no-reexec; then
- # Discard the --no-reexec flag, and continue.
- shift
-elif test "X$1" = X--fallback-echo; then
- # Avoid inline document here, it may be left over
- :
-elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then
- # Yippee, $echo works!
- :
-else
- # Restart under the correct shell.
- exec "$SHELL" "$0" --no-reexec ${1+"$@"}
-fi
-
-if test "X$1" = X--fallback-echo; then
- # used as fallback echo
- shift
- cat <<EOF
-$*
-EOF
- exit 0
-fi
-
-# Find the correct PATH separator. Usually this is `:', but
-# DJGPP uses `;' like DOS.
-if test "X${PATH_SEPARATOR+set}" != Xset; then
- UNAME=${UNAME-`uname 2>/dev/null`}
- case X$UNAME in
- *-DOS) PATH_SEPARATOR=';' ;;
- *) PATH_SEPARATOR=':' ;;
- esac
-fi
-
-# The HP-UX ksh and POSIX shell print the target directory to stdout
-# if CDPATH is set.
-if test "X${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi
-
-if test "X${echo_test_string+set}" != Xset; then
- # find a string as large as possible, as long as the shell can cope with it
- for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do
- # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ...
- if (echo_test_string="`eval $cmd`") 2>/dev/null &&
- echo_test_string="`eval $cmd`" &&
- (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null; then
- break
- fi
- done
-fi
-
-if test "X`($echo '\t') 2>/dev/null`" != 'X\t' ||
- test "X`($echo "$echo_test_string") 2>/dev/null`" != X"$echo_test_string"; then
- # The Solaris, AIX, and Digital Unix default echo programs unquote
- # backslashes. This makes it impossible to quote backslashes using
- # echo "$something" | sed 's/\\/\\\\/g'
- #
- # So, first we look for a working echo in the user's PATH.
-
- IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}"
- for dir in $PATH /usr/ucb; do
- if (test -f $dir/echo || test -f $dir/echo$ac_exeext) &&
- test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' &&
- test "X`($dir/echo "$echo_test_string") 2>/dev/null`" = X"$echo_test_string"; then
- echo="$dir/echo"
- break
- fi
- done
- IFS="$save_ifs"
-
- if test "X$echo" = Xecho; then
- # We didn't find a better echo, so look for alternatives.
- if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' &&
- test "X`(print -r "$echo_test_string") 2>/dev/null`" = X"$echo_test_string"; then
- # This shell has a builtin print -r that does the trick.
- echo='print -r'
- elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) &&
- test "X$CONFIG_SHELL" != X/bin/ksh; then
- # If we have ksh, try running ltconfig again with it.
- ORIGINAL_CONFIG_SHELL="${CONFIG_SHELL-/bin/sh}"
- export ORIGINAL_CONFIG_SHELL
- CONFIG_SHELL=/bin/ksh
- export CONFIG_SHELL
- exec "$CONFIG_SHELL" "$0" --no-reexec ${1+"$@"}
- else
- # Try using printf.
- echo='printf "%s\n"'
- if test "X`($echo '\t') 2>/dev/null`" = 'X\t' &&
- test "X`($echo "$echo_test_string") 2>/dev/null`" = X"$echo_test_string"; then
- # Cool, printf works
- :
- elif test "X`("$ORIGINAL_CONFIG_SHELL" "$0" --fallback-echo '\t') 2>/dev/null`" = 'X\t' &&
- test "X`("$ORIGINAL_CONFIG_SHELL" "$0" --fallback-echo "$echo_test_string") 2>/dev/null`" = X"$echo_test_string"; then
- CONFIG_SHELL="$ORIGINAL_CONFIG_SHELL"
- export CONFIG_SHELL
- SHELL="$CONFIG_SHELL"
- export SHELL
- echo="$CONFIG_SHELL $0 --fallback-echo"
- elif test "X`("$CONFIG_SHELL" "$0" --fallback-echo '\t') 2>/dev/null`" = 'X\t' &&
- test "X`("$CONFIG_SHELL" "$0" --fallback-echo "$echo_test_string") 2>/dev/null`" = X"$echo_test_string"; then
- echo="$CONFIG_SHELL $0 --fallback-echo"
- else
- # maybe with a smaller string...
- prev=:
-
- for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do
- if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null; then
- break
- fi
- prev="$cmd"
- done
-
- if test "$prev" != 'sed 50q "$0"'; then
- echo_test_string=`eval $prev`
- export echo_test_string
- exec "${ORIGINAL_CONFIG_SHELL}" "$0" ${1+"$@"}
- else
- # Oops. We lost completely, so just stick with echo.
- echo=echo
- fi
- fi
- fi
- fi
-fi
-
-# Sed substitution that helps us do robust quoting. It backslashifies
-# metacharacters that are still active within double-quoted strings.
-Xsed='sed -e s/^X//'
-sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g'
-
-# Same as above, but do not quote variable references.
-double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g'
-
-# Sed substitution to delay expansion of an escaped shell variable in a
-# double_quote_subst'ed string.
-delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
-
-# The name of this program.
-progname=`$echo "X$0" | $Xsed -e 's%^.*/%%'`
-
-# Constants:
-PROGRAM=ltconfig
-PACKAGE=libtool
-VERSION=1.3.5
-TIMESTAMP=" (1.385.2.206 2000/05/27 11:12:27)"
-ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
-ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
-rm="rm -f"
-
-help="Try \`$progname --help' for more information."
-
-# Global variables:
-default_ofile=libtool
-can_build_shared=yes
-enable_shared=yes
-# All known linkers require a `.a' archive for static linking (except M$VC,
-# which needs '.lib').
-enable_static=yes
-enable_fast_install=yes
-enable_dlopen=unknown
-enable_win32_dll=no
-ltmain=
-silent=
-srcdir=
-ac_config_guess=
-ac_config_sub=
-host=
-nonopt=
-ofile="$default_ofile"
-verify_host=yes
-with_gcc=no
-with_gnu_ld=no
-need_locks=yes
-ac_ext=c
-objext=o
-libext=a
-exeext=
-cache_file=
-
-old_AR="$AR"
-old_CC="$CC"
-old_CFLAGS="$CFLAGS"
-old_CPPFLAGS="$CPPFLAGS"
-old_LDFLAGS="$LDFLAGS"
-old_LD="$LD"
-old_LN_S="$LN_S"
-old_LIBS="$LIBS"
-old_NM="$NM"
-old_RANLIB="$RANLIB"
-old_DLLTOOL="$DLLTOOL"
-old_OBJDUMP="$OBJDUMP"
-old_AS="$AS"
-
-# Parse the command line options.
-args=
-prev=
-for option
-do
- case "$option" in
- -*=*) optarg=`echo "$option" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
- *) optarg= ;;
- esac
-
- # If the previous option needs an argument, assign it.
- if test -n "$prev"; then
- eval "$prev=\$option"
- prev=
- continue
- fi
-
- case "$option" in
- --help) cat <<EOM
-Usage: $progname [OPTION]... [HOST [LTMAIN]]
-
-Generate a system-specific libtool script.
-
- --debug enable verbose shell tracing
- --disable-shared do not build shared libraries
- --disable-static do not build static libraries
- --disable-fast-install do not optimize for fast installation
- --enable-dlopen enable dlopen support
- --enable-win32-dll enable building dlls on win32 hosts
- --help display this help and exit
- --no-verify do not verify that HOST is a valid host type
--o, --output=FILE specify the output file [default=$default_ofile]
- --quiet same as \`--silent'
- --silent do not print informational messages
- --srcdir=DIR find \`config.guess' in DIR
- --version output version information and exit
- --with-gcc assume that the GNU C compiler will be used
- --with-gnu-ld assume that the C compiler uses the GNU linker
- --disable-lock disable file locking
- --cache-file=FILE configure cache file
-
-LTMAIN is the \`ltmain.sh' shell script fragment or \`ltmain.c' program
-that provides basic libtool functionality.
-
-HOST is the canonical host system name [default=guessed].
-EOM
- exit 0
- ;;
-
- --debug)
- echo "$progname: enabling shell trace mode"
- set -x
- ;;
-
- --disable-shared) enable_shared=no ;;
-
- --disable-static) enable_static=no ;;
-
- --disable-fast-install) enable_fast_install=no ;;
-
- --enable-dlopen) enable_dlopen=yes ;;
-
- --enable-win32-dll) enable_win32_dll=yes ;;
-
- --quiet | --silent) silent=yes ;;
-
- --srcdir) prev=srcdir ;;
- --srcdir=*) srcdir="$optarg" ;;
-
- --no-verify) verify_host=no ;;
-
- --output | -o) prev=ofile ;;
- --output=*) ofile="$optarg" ;;
-
- --version) echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP"; exit 0 ;;
-
- --with-gcc) with_gcc=yes ;;
- --with-gnu-ld) with_gnu_ld=yes ;;
-
- --disable-lock) need_locks=no ;;
-
- --cache-file=*) cache_file="$optarg" ;;
-
- -*)
- echo "$progname: unrecognized option \`$option'" 1>&2
- echo "$help" 1>&2
- exit 1
- ;;
-
- *)
- if test -z "$ltmain"; then
- ltmain="$option"
- elif test -z "$host"; then
-# This generates an unnecessary warning for sparc-sun-solaris4.1.3_U1
-# if test -n "`echo $option| sed 's/[-a-z0-9.]//g'`"; then
-# echo "$progname: warning \`$option' is not a valid host type" 1>&2
-# fi
- host="$option"
- else
- echo "$progname: too many arguments" 1>&2
- echo "$help" 1>&2
- exit 1
- fi ;;
- esac
-done
-
-if test -z "$ltmain"; then
- echo "$progname: you must specify a LTMAIN file" 1>&2
- echo "$help" 1>&2
- exit 1
-fi
-
-if test ! -f "$ltmain"; then
- echo "$progname: \`$ltmain' does not exist" 1>&2
- echo "$help" 1>&2
- exit 1
-fi
-
-# Quote any args containing shell metacharacters.
-ltconfig_args=
-for arg
-do
- case "$arg" in
- *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*)
- ltconfig_args="$ltconfig_args '$arg'" ;;
- *) ltconfig_args="$ltconfig_args $arg" ;;
- esac
-done
-
-# A relevant subset of AC_INIT.
-
-# File descriptor usage:
-# 0 standard input
-# 1 file creation
-# 2 errors and warnings
-# 3 some systems may open it to /dev/tty
-# 4 used on the Kubota Titan
-# 5 compiler messages saved in config.log
-# 6 checking for... messages and results
-if test "$silent" = yes; then
- exec 6>/dev/null
-else
- exec 6>&1
-fi
-exec 5>>./config.log
-
-# NLS nuisances.
-# Only set LANG and LC_ALL to C if already set.
-# These must not be set unconditionally because not all systems understand
-# e.g. LANG=C (notably SCO).
-if test "X${LC_ALL+set}" = Xset; then LC_ALL=C; export LC_ALL; fi
-if test "X${LANG+set}" = Xset; then LANG=C; export LANG; fi
-
-if test -n "$cache_file" && test -r "$cache_file"; then
- echo "loading cache $cache_file within ltconfig"
- . $cache_file
-fi
-
-if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then
- # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu.
- if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then
- ac_n= ac_c='
-' ac_t=' '
- else
- ac_n=-n ac_c= ac_t=
- fi
-else
- ac_n= ac_c='\c' ac_t=
-fi
-
-if test -z "$srcdir"; then
- # Assume the source directory is the same one as the path to LTMAIN.
- srcdir=`$echo "X$ltmain" | $Xsed -e 's%/[^/]*$%%'`
- test "$srcdir" = "$ltmain" && srcdir=.
-fi
-
-trap "$rm conftest*; exit 1" 1 2 15
-if test "$verify_host" = yes; then
- # Check for config.guess and config.sub.
- ac_aux_dir=
- for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do
- if test -f $ac_dir/config.guess; then
- ac_aux_dir=$ac_dir
- break
- fi
- done
- if test -z "$ac_aux_dir"; then
- echo "$progname: cannot find config.guess in $srcdir $srcdir/.. $srcdir/../.." 1>&2
- echo "$help" 1>&2
- exit 1
- fi
- ac_config_guess=$ac_aux_dir/config.guess
- ac_config_sub=$ac_aux_dir/config.sub
-
- # Make sure we can run config.sub.
- if $SHELL $ac_config_sub sun4 >/dev/null 2>&1; then :
- else
- echo "$progname: cannot run $ac_config_sub" 1>&2
- echo "$help" 1>&2
- exit 1
- fi
-
- echo $ac_n "checking host system type""... $ac_c" 1>&6
-
- host_alias=$host
- case "$host_alias" in
- "")
- if host_alias=`$SHELL $ac_config_guess`; then :
- else
- echo "$progname: cannot guess host type; you must specify one" 1>&2
- echo "$help" 1>&2
- exit 1
- fi ;;
- esac
- host=`$SHELL $ac_config_sub $host_alias`
- echo "$ac_t$host" 1>&6
-
- # Make sure the host verified.
- test -z "$host" && exit 1
-
-elif test -z "$host"; then
- echo "$progname: you must specify a host type if you use \`--no-verify'" 1>&2
- echo "$help" 1>&2
- exit 1
-else
- host_alias=$host
-fi
-
-# Transform linux* to *-*-linux-gnu*, to support old configure scripts.
-case "$host_os" in
-linux-gnu*) ;;
-linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'`
-esac
-
-host_cpu=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
-host_vendor=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
-host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
-
-case "$host_os" in
-aix3*)
- # AIX sometimes has problems with the GCC collect2 program. For some
- # reason, if we set the COLLECT_NAMES environment variable, the problems
- # vanish in a puff of smoke.
- if test "X${COLLECT_NAMES+set}" != Xset; then
- COLLECT_NAMES=
- export COLLECT_NAMES
- fi
- ;;
-esac
-
-# Determine commands to create old-style static archives.
-old_archive_cmds='$AR cru $oldlib$oldobjs'
-old_postinstall_cmds='chmod 644 $oldlib'
-old_postuninstall_cmds=
-
-# Set a sane default for `AR'.
-test -z "$AR" && AR=ar
-
-# Set a sane default for `OBJDUMP'.
-test -z "$OBJDUMP" && OBJDUMP=objdump
-
-# If RANLIB is not set, then run the test.
-if test "${RANLIB+set}" != "set"; then
- result=no
-
- echo $ac_n "checking for ranlib... $ac_c" 1>&6
- IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}"
- for dir in $PATH; do
- test -z "$dir" && dir=.
- if test -f $dir/ranlib || test -f $dir/ranlib$ac_exeext; then
- RANLIB="ranlib"
- result="ranlib"
- break
- fi
- done
- IFS="$save_ifs"
-
- echo "$ac_t$result" 1>&6
-fi
-
-if test -n "$RANLIB"; then
- old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
- old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds"
-fi
-
-# Set sane defaults for `DLLTOOL', `OBJDUMP', and `AS', used on cygwin.
-test -z "$DLLTOOL" && DLLTOOL=dlltool
-test -z "$OBJDUMP" && OBJDUMP=objdump
-test -z "$AS" && AS=as
-
-# Check to see if we are using GCC.
-if test "$with_gcc" != yes || test -z "$CC"; then
- # If CC is not set, then try to find GCC or a usable CC.
- if test -z "$CC"; then
- echo $ac_n "checking for gcc... $ac_c" 1>&6
- IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}"
- for dir in $PATH; do
- test -z "$dir" && dir=.
- if test -f $dir/gcc || test -f $dir/gcc$ac_exeext; then
- CC="gcc"
- break
- fi
- done
- IFS="$save_ifs"
-
- if test -n "$CC"; then
- echo "$ac_t$CC" 1>&6
- else
- echo "$ac_t"no 1>&6
- fi
- fi
-
- # Not "gcc", so try "cc", rejecting "/usr/ucb/cc".
- if test -z "$CC"; then
- echo $ac_n "checking for cc... $ac_c" 1>&6
- IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}"
- cc_rejected=no
- for dir in $PATH; do
- test -z "$dir" && dir=.
- if test -f $dir/cc || test -f $dir/cc$ac_exeext; then
- if test "$dir/cc" = "/usr/ucb/cc"; then
- cc_rejected=yes
- continue
- fi
- CC="cc"
- break
- fi
- done
- IFS="$save_ifs"
- if test $cc_rejected = yes; then
- # We found a bogon in the path, so make sure we never use it.
- set dummy $CC
- shift
- if test $# -gt 0; then
- # We chose a different compiler from the bogus one.
- # However, it has the same name, so the bogon will be chosen
- # first if we set CC to just the name; use the full file name.
- shift
- set dummy "$dir/cc" "$@"
- shift
- CC="$@"
- fi
- fi
-
- if test -n "$CC"; then
- echo "$ac_t$CC" 1>&6
- else
- echo "$ac_t"no 1>&6
- fi
-
- if test -z "$CC"; then
- echo "$progname: error: no acceptable cc found in \$PATH" 1>&2
- exit 1
- fi
- fi
-
- # Now see if the compiler is really GCC.
- with_gcc=no
- echo $ac_n "checking whether we are using GNU C... $ac_c" 1>&6
- echo "$progname:581: checking whether we are using GNU C" >&5
-
- $rm conftest.c
- cat > conftest.c <<EOF
-#ifdef __GNUC__
- yes;
-#endif
-EOF
- if { ac_try='${CC-cc} -E conftest.c'; { (eval echo $progname:589: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
- with_gcc=yes
- fi
- $rm conftest.c
- echo "$ac_t$with_gcc" 1>&6
-fi
-
-# Allow CC to be a program name with arguments.
-set dummy $CC
-compiler="$2"
-
-echo $ac_n "checking for object suffix... $ac_c" 1>&6
-$rm conftest*
-echo 'int i = 1;' > conftest.c
-echo "$progname:603: checking for object suffix" >& 5
-if { (eval echo $progname:604: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; }; then
- # Append any warnings to the config.log.
- cat conftest.err 1>&5
-
- for ac_file in conftest.*; do
- case $ac_file in
- *.c) ;;
- *) objext=`echo $ac_file | sed -e s/conftest.//` ;;
- esac
- done
-else
- cat conftest.err 1>&5
- echo "$progname: failed program was:" >&5
- cat conftest.c >&5
-fi
-$rm conftest*
-echo "$ac_t$objext" 1>&6
-
-echo $ac_n "checking for executable suffix... $ac_c" 1>&6
-if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- ac_cv_exeext="no"
- $rm conftest*
- echo 'main () { return 0; }' > conftest.c
- echo "$progname:629: checking for executable suffix" >& 5
- if { (eval echo $progname:630: \"$ac_link\") 1>&5; (eval $ac_link) 2>conftest.err; }; then
- # Append any warnings to the config.log.
- cat conftest.err 1>&5
-
- for ac_file in conftest.*; do
- case $ac_file in
- *.c | *.err | *.$objext ) ;;
- *) ac_cv_exeext=.`echo $ac_file | sed -e s/conftest.//` ;;
- esac
- done
- else
- cat conftest.err 1>&5
- echo "$progname: failed program was:" >&5
- cat conftest.c >&5
- fi
- $rm conftest*
-fi
-if test "X$ac_cv_exeext" = Xno; then
- exeext=""
-else
- exeext="$ac_cv_exeext"
-fi
-echo "$ac_t$ac_cv_exeext" 1>&6
-
-echo $ac_n "checking for $compiler option to produce PIC... $ac_c" 1>&6
-pic_flag=
-special_shlib_compile_flags=
-wl=
-link_static_flag=
-no_builtin_flag=
-
-if test "$with_gcc" = yes; then
- wl='-Wl,'
- link_static_flag='-static'
-
- case "$host_os" in
- beos* | irix5* | irix6* | osf3* | osf4* | osf5*)
- # PIC is the default for these OSes.
- ;;
- aix*)
- # Below there is a dirty hack to force normal static linking with -ldl
- # The problem is because libdl dynamically linked with both libc and
- # libC (AIX C++ library), which obviously doesn't included in libraries
- # list by gcc. This cause undefined symbols with -static flags.
- # This hack allows C programs to be linked with "-static -ldl", but
- # we not sure about C++ programs.
- link_static_flag="$link_static_flag ${wl}-lC"
- ;;
- cygwin* | mingw* | os2*)
- # We can build DLLs from non-PIC.
- ;;
- amigaos*)
- # FIXME: we need at least 68020 code to build shared libraries, but
- # adding the `-m68020' flag to GCC prevents building anything better,
- # like `-m68040'.
- pic_flag='-m68020 -resident32 -malways-restore-a4'
- ;;
- sysv4*MP*)
- if test -d /usr/nec; then
- pic_flag=-Kconform_pic
- fi
- ;;
- *)
- pic_flag='-fPIC'
- ;;
- esac
-else
- # PORTME Check for PIC flags for the system compiler.
- case "$host_os" in
- aix3* | aix4*)
- # All AIX code is PIC.
- link_static_flag='-bnso -bI:/lib/syscalls.exp'
- ;;
-
- hpux9* | hpux10* | hpux11*)
- # Is there a better link_static_flag that works with the bundled CC?
- wl='-Wl,'
- link_static_flag="${wl}-a ${wl}archive"
- pic_flag='+Z'
- ;;
-
- irix5* | irix6*)
- wl='-Wl,'
- link_static_flag='-non_shared'
- # PIC (with -KPIC) is the default.
- ;;
-
- cygwin* | mingw* | os2*)
- # We can build DLLs from non-PIC.
- ;;
-
- osf3* | osf4* | osf5*)
- # All OSF/1 code is PIC.
- wl='-Wl,'
- link_static_flag='-non_shared'
- ;;
-
- sco3.2v5*)
- pic_flag='-Kpic'
- link_static_flag='-dn'
- special_shlib_compile_flags='-belf'
- ;;
-
- solaris*)
- pic_flag='-KPIC'
- link_static_flag='-Bstatic'
- wl='-Wl,'
- ;;
-
- sunos4*)
- pic_flag='-PIC'
- link_static_flag='-Bstatic'
- wl='-Qoption ld '
- ;;
-
- sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
- pic_flag='-KPIC'
- link_static_flag='-Bstatic'
- wl='-Wl,'
- ;;
-
- uts4*)
- pic_flag='-pic'
- link_static_flag='-Bstatic'
- ;;
- sysv4*MP*)
- if test -d /usr/nec ;then
- pic_flag='-Kconform_pic'
- link_static_flag='-Bstatic'
- fi
- ;;
- *)
- can_build_shared=no
- ;;
- esac
-fi
-
-if test -n "$pic_flag"; then
- echo "$ac_t$pic_flag" 1>&6
-
- # Check to make sure the pic_flag actually works.
- echo $ac_n "checking if $compiler PIC flag $pic_flag works... $ac_c" 1>&6
- $rm conftest*
- echo "int some_variable = 0;" > conftest.c
- save_CFLAGS="$CFLAGS"
- CFLAGS="$CFLAGS $pic_flag -DPIC"
- echo "$progname:776: checking if $compiler PIC flag $pic_flag works" >&5
- if { (eval echo $progname:777: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; } && test -s conftest.$objext; then
- # Append any warnings to the config.log.
- cat conftest.err 1>&5
-
- case "$host_os" in
- hpux9* | hpux10* | hpux11*)
- # On HP-UX, both CC and GCC only warn that PIC is supported... then they
- # create non-PIC objects. So, if there were any warnings, we assume that
- # PIC is not supported.
- if test -s conftest.err; then
- echo "$ac_t"no 1>&6
- can_build_shared=no
- pic_flag=
- else
- echo "$ac_t"yes 1>&6
- pic_flag=" $pic_flag"
- fi
- ;;
- *)
- echo "$ac_t"yes 1>&6
- pic_flag=" $pic_flag"
- ;;
- esac
- else
- # Append any errors to the config.log.
- cat conftest.err 1>&5
- can_build_shared=no
- pic_flag=
- echo "$ac_t"no 1>&6
- fi
- CFLAGS="$save_CFLAGS"
- $rm conftest*
-else
- echo "$ac_t"none 1>&6
-fi
-
-# Check to see if options -o and -c are simultaneously supported by compiler
-echo $ac_n "checking if $compiler supports -c -o file.o... $ac_c" 1>&6
-$rm -r conftest 2>/dev/null
-mkdir conftest
-cd conftest
-$rm conftest*
-echo "int some_variable = 0;" > conftest.c
-mkdir out
-# According to Tom Tromey, Ian Lance Taylor reported there are C compilers
-# that will create temporary files in the current directory regardless of
-# the output directory. Thus, making CWD read-only will cause this test
-# to fail, enabling locking or at least warning the user not to do parallel
-# builds.
-chmod -w .
-save_CFLAGS="$CFLAGS"
-CFLAGS="$CFLAGS -o out/conftest2.o"
-echo "$progname:829: checking if $compiler supports -c -o file.o" >&5
-if { (eval echo $progname:830: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>out/conftest.err; } && test -s out/conftest2.o; 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
- echo "$ac_t"no 1>&6
- compiler_c_o=no
- else
- echo "$ac_t"yes 1>&6
- compiler_c_o=yes
- fi
-else
- # Append any errors to the config.log.
- cat out/conftest.err 1>&5
- compiler_c_o=no
- echo "$ac_t"no 1>&6
-fi
-CFLAGS="$save_CFLAGS"
-chmod u+w .
-$rm conftest* out/*
-rmdir out
-cd ..
-rmdir conftest
-$rm -r conftest 2>/dev/null
-
-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
- $rm conftest*
- echo "int some_variable = 0;" > conftest.c
- save_CFLAGS="$CFLAGS"
- CFLAGS="$CFLAGS -c -o conftest.lo"
- echo "$progname:862: checking if $compiler supports -c -o file.lo" >&5
-if { (eval echo $progname:863: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; } && test -s conftest.lo; then
-
- # The compiler can only warn and ignore the option if not recognized
- # So say no if there are warnings
- if test -s conftest.err; then
- echo "$ac_t"no 1>&6
- compiler_o_lo=no
- else
- echo "$ac_t"yes 1>&6
- compiler_o_lo=yes
- fi
- else
- # Append any errors to the config.log.
- cat conftest.err 1>&5
- compiler_o_lo=no
- echo "$ac_t"no 1>&6
- fi
- CFLAGS="$save_CFLAGS"
- $rm conftest*
-else
- compiler_o_lo=no
-fi
-
-# Check to see if we can do hard links to lock some files if needed
-hard_links="nottested"
-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
- hard_links=yes
- $rm conftest*
- ln conftest.a conftest.b 2>/dev/null && hard_links=no
- touch conftest.a
- ln conftest.a conftest.b 2>&5 || hard_links=no
- ln conftest.a conftest.b 2>/dev/null && hard_links=no
- echo "$ac_t$hard_links" 1>&6
- $rm conftest*
- if test "$hard_links" = no; then
- echo "*** WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2
- need_locks=warn
- fi
-else
- need_locks=no
-fi
-
-if test "$with_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
- $rm conftest*
- echo "int some_variable = 0;" > conftest.c
- save_CFLAGS="$CFLAGS"
- CFLAGS="$CFLAGS -fno-rtti -fno-exceptions -c conftest.c"
- echo "$progname:914: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
- if { (eval echo $progname:915: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; } && test -s conftest.o; then
-
- # The compiler can only warn and ignore the option if not recognized
- # So say no if there are warnings
- if test -s conftest.err; then
- echo "$ac_t"no 1>&6
- compiler_rtti_exceptions=no
- else
- echo "$ac_t"yes 1>&6
- compiler_rtti_exceptions=yes
- fi
- else
- # Append any errors to the config.log.
- cat conftest.err 1>&5
- compiler_rtti_exceptions=no
- echo "$ac_t"no 1>&6
- fi
- CFLAGS="$save_CFLAGS"
- $rm conftest*
-
- if test "$compiler_rtti_exceptions" = "yes"; then
- no_builtin_flag=' -fno-builtin -fno-rtti -fno-exceptions'
- else
- no_builtin_flag=' -fno-builtin'
- fi
-
-fi
-
-# Check for any special shared library compilation flags.
-if test -n "$special_shlib_compile_flags"; then
- echo "$progname: warning: \`$CC' requires \`$special_shlib_compile_flags' to build shared libraries" 1>&2
- if echo "$old_CC $old_CFLAGS " | egrep -e "[ ]$special_shlib_compile_flags[ ]" >/dev/null; then :
- else
- echo "$progname: add \`$special_shlib_compile_flags' to the CC or CFLAGS env variable and reconfigure" 1>&2
- can_build_shared=no
- fi
-fi
-
-echo $ac_n "checking if $compiler static flag $link_static_flag works... $ac_c" 1>&6
-$rm conftest*
-echo 'main(){return(0);}' > conftest.c
-save_LDFLAGS="$LDFLAGS"
-LDFLAGS="$LDFLAGS $link_static_flag"
-echo "$progname:958: checking if $compiler static flag $link_static_flag works" >&5
-if { (eval echo $progname:959: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
- echo "$ac_t$link_static_flag" 1>&6
-else
- echo "$ac_t"none 1>&6
- link_static_flag=
-fi
-LDFLAGS="$save_LDFLAGS"
-$rm conftest*
-
-if test -z "$LN_S"; then
- # Check to see if we can use ln -s, or we need hard links.
- echo $ac_n "checking whether ln -s works... $ac_c" 1>&6
- $rm conftest.dat
- if ln -s X conftest.dat 2>/dev/null; then
- $rm conftest.dat
- LN_S="ln -s"
- else
- LN_S=ln
- fi
- if test "$LN_S" = "ln -s"; then
- echo "$ac_t"yes 1>&6
- else
- echo "$ac_t"no 1>&6
- fi
-fi
-
-# Make sure LD is an absolute path.
-if test -z "$LD"; then
- ac_prog=ld
- if test "$with_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 "$progname:991: checking for ld used by GCC" >&5
- ac_prog=`($CC -print-prog-name=ld) 2>&5`
- case "$ac_prog" in
- # Accept absolute paths.
- [\\/]* | [A-Za-z]:[\\/]*)
- re_direlt='/[^/][^/]*/\.\./'
- # Canonicalize the path of ld
- ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'`
- while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
- ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"`
- done
- test -z "$LD" && LD="$ac_prog"
- ;;
- "")
- # If it fails, then pretend we are not using GCC.
- ac_prog=ld
- ;;
- *)
- # If it is relative, then search for the first ld in PATH.
- with_gnu_ld=unknown
- ;;
- esac
- elif test "$with_gnu_ld" = yes; then
- echo $ac_n "checking for GNU ld... $ac_c" 1>&6
- echo "$progname:1015: checking for GNU ld" >&5
- else
- echo $ac_n "checking for non-GNU ld""... $ac_c" 1>&6
- echo "$progname:1018: checking for non-GNU ld" >&5
- fi
-
- if test -z "$LD"; then
- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}"
- for ac_dir in $PATH; do
- test -z "$ac_dir" && ac_dir=.
- if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
- LD="$ac_dir/$ac_prog"
- # Check to see if the program is GNU ld. I'd rather use --version,
- # but apparently some GNU ld's only accept -v.
- # Break only if it was the GNU/non-GNU ld that we prefer.
- if "$LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then
- test "$with_gnu_ld" != no && break
- else
- test "$with_gnu_ld" != yes && break
- fi
- fi
- done
- IFS="$ac_save_ifs"
- fi
-
- if test -n "$LD"; then
- echo "$ac_t$LD" 1>&6
- else
- echo "$ac_t"no 1>&6
- fi
-
- if test -z "$LD"; then
- echo "$progname: error: no acceptable ld found in \$PATH" 1>&2
- exit 1
- fi
-fi
-
-# Check to see if it really is or is not GNU ld.
-echo $ac_n "checking if the linker ($LD) is GNU ld... $ac_c" 1>&6
-# I'd rather use --version here, but apparently some GNU ld's only accept -v.
-if $LD -v 2>&1 </dev/null | egrep '(GNU|with BFD)' 1>&5; then
- with_gnu_ld=yes
-else
- with_gnu_ld=no
-fi
-echo "$ac_t$with_gnu_ld" 1>&6
-
-# See if the linker supports building shared libraries.
-echo $ac_n "checking whether the linker ($LD) supports shared libraries... $ac_c" 1>&6
-
-allow_undefined_flag=
-no_undefined_flag=
-need_lib_prefix=unknown
-need_version=unknown
-# when you set need_version to no, make sure it does not cause -set_version
-# flags to be left without arguments
-archive_cmds=
-archive_expsym_cmds=
-old_archive_from_new_cmds=
-export_dynamic_flag_spec=
-whole_archive_flag_spec=
-thread_safe_flag_spec=
-hardcode_libdir_flag_spec=
-hardcode_libdir_separator=
-hardcode_direct=no
-hardcode_minus_L=no
-hardcode_shlibpath_var=unsupported
-runpath_var=
-always_export_symbols=no
-export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | sed '\''s/.* //'\'' | sort | uniq > $export_symbols'
-# include_expsyms should be a list of space-separated symbols to be *always*
-# included in the symbol list
-include_expsyms=
-# exclude_expsyms can be an egrep regular expression of symbols to exclude
-# it will be wrapped by ` (' and `)$', so one must not match beginning or
-# end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
-# as well as any symbol that contains `d'.
-exclude_expsyms="_GLOBAL_OFFSET_TABLE_"
-# Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
-# platforms (ab)use it in PIC code, but their linkers get confused if
-# the symbol is explicitly referenced. Since portable code cannot
-# rely on this symbol name, it's probably fine to never include it in
-# preloaded symbol tables.
-
-case "$host_os" in
-cygwin* | mingw*)
- # FIXME: the MSVC++ port hasn't been tested in a loooong time
- # When not using gcc, we currently assume that we are using
- # Microsoft Visual C++.
- if test "$with_gcc" != yes; then
- with_gnu_ld=no
- fi
- ;;
-
-esac
-
-ld_shlibs=yes
-if test "$with_gnu_ld" = yes; then
- # If archive_cmds runs LD, not CC, wlarc should be empty
- wlarc='${wl}'
-
- # See if GNU ld supports shared libraries.
- case "$host_os" in
- aix3* | aix4*)
- # On AIX, the GNU linker is very broken
- ld_shlibs=no
- cat <<EOF 1>&2
-
-*** Warning: the GNU linker, at least up to release 2.9.1, is reported
-*** to be unable to reliably create shared libraries on AIX.
-*** Therefore, libtool is disabling shared libraries support. If you
-*** really care for shared libraries, you may want to modify your PATH
-*** so that a non-GNU linker is found, and then restart.
-
-EOF
- ;;
-
- amigaos*)
- archive_cmds='$rm $objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $objdir/a2ixlibrary.data~$AR cru $lib $libobjs~$RANLIB $lib~(cd $objdir && a2ixlibrary -32)'
- hardcode_libdir_flag_spec='-L$libdir'
- hardcode_minus_L=yes
-
- # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
- # that the semantics of dynamic libraries on AmigaOS, at least up
- # to version 4, is to share data among multiple programs linked
- # with the same dynamic library. Since this doesn't match the
- # behavior of shared libraries on other platforms, we can use
- # them.
- ld_shlibs=no
- ;;
-
- beos*)
- if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then
- allow_undefined_flag=unsupported
- # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
- # support --undefined. This deserves some investigation. FIXME
- archive_cmds='$CC -nostart $libobjs $deplibs $linkopts ${wl}-soname $wl$soname -o $lib'
- else
- ld_shlibs=no
- fi
- ;;
-
- cygwin* | mingw*)
- # hardcode_libdir_flag_spec is actually meaningless, as there is
- # no search path for DLLs.
- hardcode_libdir_flag_spec='-L$libdir'
- allow_undefined_flag=unsupported
- always_export_symbols=yes
-
- # Extract the symbol export list from an `--export-all' def file,
- # then regenerate the def file from the symbol export list, so that
- # the compiled dll only exports the symbol export list.
- # Be careful not to strip the DATA tag left by newer dlltools.
- export_symbols_cmds='test -f $objdir/$soname-ltdll.c || sed -e "/^# \/\* ltdll\.c starts here \*\//,/^# \/\* ltdll.c ends here \*\// { s/^# //; p; }" -e d < $0 > $objdir/$soname-ltdll.c~
- test -f $objdir/$soname-ltdll.$objext || (cd $objdir && $CC -c $soname-ltdll.c)~
- $DLLTOOL --export-all --exclude-symbols DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12 --output-def $objdir/$soname-def $objdir/$soname-ltdll.$objext $libobjs $convenience~
- sed -e "1,/EXPORTS/d" -e "s/ @ [0-9]*//" -e "s/ *;.*$//" < $objdir/$soname-def > $export_symbols'
-
- # If DATA tags from a recent dlltool are present, honour them!
- archive_expsym_cmds='echo EXPORTS > $objdir/$soname-def~
- _lt_hint=1;
- cat $export_symbols | while read symbol; do
- set dummy \$symbol;
- case \$# in
- 2) echo " \$2 @ \$_lt_hint ; " >> $objdir/$soname-def;;
- *) echo " \$2 @ \$_lt_hint \$3 ; " >> $objdir/$soname-def;;
- esac;
- _lt_hint=`expr 1 + \$_lt_hint`;
- done~
- test -f $objdir/$soname-ltdll.c || sed -e "/^# \/\* ltdll\.c starts here \*\//,/^# \/\* ltdll.c ends here \*\// { s/^# //; p; }" -e d < $0 > $objdir/$soname-ltdll.c~
- test -f $objdir/$soname-ltdll.$objext || (cd $objdir && $CC -c $soname-ltdll.c)~
- $CC -Wl,--base-file,$objdir/$soname-base -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 -o $lib $objdir/$soname-ltdll.$objext $libobjs $deplibs $linkopts~
- $DLLTOOL --as=$AS --dllname $soname --exclude-symbols DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12 --def $objdir/$soname-def --base-file $objdir/$soname-base --output-exp $objdir/$soname-exp~
- $CC -Wl,--base-file,$objdir/$soname-base $objdir/$soname-exp -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 -o $lib $objdir/$soname-ltdll.$objext $libobjs $deplibs $linkopts~
- $DLLTOOL --as=$AS --dllname $soname --exclude-symbols DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12 --def $objdir/$soname-def --base-file $objdir/$soname-base --output-exp $objdir/$soname-exp~
- $CC $objdir/$soname-exp -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 -o $lib $objdir/$soname-ltdll.$objext $libobjs $deplibs $linkopts'
-
- old_archive_from_new_cmds='$DLLTOOL --as=$AS --dllname $soname --def $objdir/$soname-def --output-lib $objdir/$libname.a'
- ;;
-
- netbsd*)
- if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
- archive_cmds='$LD -Bshareable $libobjs $deplibs $linkopts -o $lib'
- # can we support soname and/or expsyms with a.out? -oliva
- else
- archive_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname -o $lib'
- archive_expsym_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
- fi
- ;;
-
- solaris* | sysv5*)
- if $LD -v 2>&1 | egrep 'BFD 2\.8' > /dev/null; then
- ld_shlibs=no
- cat <<EOF 1>&2
-
-*** Warning: The releases 2.8.* of the GNU linker cannot reliably
-*** create shared libraries on Solaris systems. Therefore, libtool
-*** is disabling shared libraries support. We urge you to upgrade GNU
-*** binutils to release 2.9.1 or newer. Another option is to modify
-*** your PATH or compiler configuration so that the native linker is
-*** used, and then restart.
-
-EOF
- elif $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then
- archive_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname -o $lib'
- archive_expsym_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
- else
- ld_shlibs=no
- fi
- ;;
-
- sunos4*)
- archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linkopts'
- wlarc=
- hardcode_direct=yes
- hardcode_shlibpath_var=no
- ;;
-
- *)
- if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then
- archive_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname -o $lib'
- archive_expsym_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
- else
- ld_shlibs=no
- fi
- ;;
- esac
-
- if test "$ld_shlibs" = yes; then
- runpath_var=LD_RUN_PATH
- hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir'
- export_dynamic_flag_spec='${wl}--export-dynamic'
- case $host_os in
- cygwin* | mingw*)
- # dlltool doesn't understand --whole-archive et. al.
- whole_archive_flag_spec=
- ;;
- *)
- # ancient GNU ld didn't support --whole-archive et. al.
- if $LD --help 2>&1 | egrep 'no-whole-archive' > /dev/null; then
- whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
- else
- whole_archive_flag_spec=
- fi
- ;;
- esac
- fi
-else
- # PORTME fill in a description of your system's linker (not GNU ld)
- case "$host_os" in
- aix3*)
- allow_undefined_flag=unsupported
- always_export_symbols=yes
- archive_expsym_cmds='$LD -o $objdir/$soname $libobjs $deplibs $linkopts -bE:$export_symbols -T512 -H512 -bM:SRE~$AR cru $lib $objdir/$soname'
- # Note: this linker hardcodes the directories in LIBPATH if there
- # are no directories specified by -L.
- hardcode_minus_L=yes
- if test "$with_gcc" = yes && test -z "$link_static_flag"; then
- # Neither direct hardcoding nor static linking is supported with a
- # broken collect2.
- hardcode_direct=unsupported
- fi
- ;;
-
- aix4*)
- hardcode_libdir_flag_spec='${wl}-b ${wl}nolibpath ${wl}-b ${wl}libpath:$libdir:/usr/lib:/lib'
- hardcode_libdir_separator=':'
- if test "$with_gcc" = yes; then
- collect2name=`${CC} -print-prog-name=collect2`
- if test -f "$collect2name" && \
- strings "$collect2name" | grep resolve_lib_name >/dev/null
- then
- # We have reworked collect2
- hardcode_direct=yes
- else
- # We have old collect2
- hardcode_direct=unsupported
- # It fails to find uninstalled libraries when the uninstalled
- # path is not listed in the libpath. Setting hardcode_minus_L
- # to unsupported forces relinking
- hardcode_minus_L=yes
- hardcode_libdir_flag_spec='-L$libdir'
- hardcode_libdir_separator=
- fi
- shared_flag='-shared'
- else
- shared_flag='${wl}-bM:SRE'
- hardcode_direct=yes
- fi
- allow_undefined_flag=' ${wl}-berok'
- archive_cmds="\$CC $shared_flag"' -o $objdir/$soname $libobjs $deplibs $linkopts ${wl}-bexpall ${wl}-bnoentry${allow_undefined_flag}'
- archive_expsym_cmds="\$CC $shared_flag"' -o $objdir/$soname $libobjs $deplibs $linkopts ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}'
- case "$host_os" in aix4.[01]|aix4.[01].*)
- # According to Greg Wooledge, -bexpall is only supported from AIX 4.2 on
- always_export_symbols=yes ;;
- esac
- ;;
-
- amigaos*)
- archive_cmds='$rm $objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $objdir/a2ixlibrary.data~$AR cru $lib $libobjs~$RANLIB $lib~(cd $objdir && a2ixlibrary -32)'
- hardcode_libdir_flag_spec='-L$libdir'
- hardcode_minus_L=yes
- # see comment about different semantics on the GNU ld section
- ld_shlibs=no
- ;;
-
- cygwin* | mingw*)
- # When not using gcc, we currently assume that we are using
- # Microsoft Visual C++.
- # hardcode_libdir_flag_spec is actually meaningless, as there is
- # no search path for DLLs.
- hardcode_libdir_flag_spec=' '
- allow_undefined_flag=unsupported
- # Tell ltmain to make .lib files, not .a files.
- libext=lib
- # FIXME: Setting linknames here is a bad hack.
- archive_cmds='$CC -o $lib $libobjs $linkopts `echo "$deplibs" | sed -e '\''s/ -lc$//'\''` -link -dll~linknames='
- # The linker will automatically build a .lib file if we build a DLL.
- old_archive_from_new_cmds='true'
- # FIXME: Should let the user specify the lib program.
- old_archive_cmds='lib /OUT:$oldlib$oldobjs'
- fix_srcfile_path='`cygpath -w $srcfile`'
- ;;
-
- freebsd1*)
- ld_shlibs=no
- ;;
-
- # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
- # support. Future versions do this automatically, but an explicit c++rt0.o
- # does not break anything, and helps significantly (at the cost of a little
- # extra space).
- freebsd2.2*)
- archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linkopts /usr/lib/c++rt0.o'
- hardcode_libdir_flag_spec='-R$libdir'
- hardcode_direct=yes
- hardcode_shlibpath_var=no
- ;;
-
- # Unfortunately, older versions of FreeBSD 2 do not have this feature.
- freebsd2*)
- archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linkopts'
- hardcode_direct=yes
- hardcode_minus_L=yes
- hardcode_shlibpath_var=no
- ;;
-
- # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
- freebsd*)
- archive_cmds='$CC -shared -o $lib $libobjs $deplibs $linkopts'
- hardcode_libdir_flag_spec='-R$libdir'
- hardcode_direct=yes
- hardcode_shlibpath_var=no
- ;;
-
- hpux9* | hpux10* | hpux11*)
- case "$host_os" in
- hpux9*) archive_cmds='$rm $objdir/$soname~$LD -b +b $install_libdir -o $objdir/$soname $libobjs $deplibs $linkopts~test $objdir/$soname = $lib || mv $objdir/$soname $lib' ;;
- *) archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linkopts' ;;
- esac
- hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
- hardcode_libdir_separator=:
- hardcode_direct=yes
- hardcode_minus_L=yes # Not in the search PATH, but as the default
- # location of the library.
- export_dynamic_flag_spec='${wl}-E'
- ;;
-
- irix5* | irix6*)
- if test "$with_gcc" = yes; then
- archive_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib'
- else
- archive_cmds='$LD -shared $libobjs $deplibs $linkopts -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib'
- fi
- hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
- hardcode_libdir_separator=:
- ;;
-
- netbsd*)
- if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
- archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linkopts' # a.out
- else
- archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linkopts' # ELF
- fi
- hardcode_libdir_flag_spec='${wl}-R$libdir'
- hardcode_direct=yes
- hardcode_shlibpath_var=no
- ;;
-
- openbsd*)
- archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linkopts'
- hardcode_libdir_flag_spec='-R$libdir'
- hardcode_direct=yes
- hardcode_shlibpath_var=no
- ;;
-
- os2*)
- hardcode_libdir_flag_spec='-L$libdir'
- hardcode_minus_L=yes
- allow_undefined_flag=unsupported
- archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $objdir/$libname.def~$echo DATA >> $objdir/$libname.def~$echo " SINGLE NONSHARED" >> $objdir/$libname.def~$echo EXPORTS >> $objdir/$libname.def~emxexp $libobjs >> $objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $linkopts $objdir/$libname.def'
- old_archive_from_new_cmds='emximp -o $objdir/$libname.a $objdir/$libname.def'
- ;;
-
- osf3*)
- if test "$with_gcc" = yes; then
- allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
- archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $linkopts ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib'
- else
- allow_undefined_flag=' -expect_unresolved \*'
- archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linkopts -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib'
- fi
- hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
- hardcode_libdir_separator=:
- ;;
-
- osf4* | osf5*) # As osf3* with the addition of the -msym flag
- if test "$with_gcc" = yes; then
- allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
- archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $linkopts ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib'
- else
- allow_undefined_flag=' -expect_unresolved \*'
- archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linkopts -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib'
- fi
- hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
- hardcode_libdir_separator=:
- ;;
- rhapsody*)
- archive_cmds='$CC -bundle -undefined suppress -o $lib $libobjs $deplibs $linkopts'
- hardcode_libdir_flags_spec='-L$libdir'
- hardcode_direct=yes
- hardcode_shlibpath_var=no
- ;;
-
- sco3.2v5*)
- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts'
- hardcode_shlibpath_var=no
- runpath_var=LD_RUN_PATH
- hardcode_runpath_var=yes
- ;;
-
- solaris*)
- no_undefined_flag=' -z text'
- # $CC -shared without GNU ld will not create a library from C++
- # object files and a static libstdc++, better avoid it by now
- archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linkopts'
- archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
- $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linkopts~$rm $lib.exp'
- hardcode_libdir_flag_spec='-R$libdir'
- hardcode_shlibpath_var=no
- case "$host_os" in
- solaris2.[0-5] | solaris2.[0-5].*) ;;
- *) # Supported since Solaris 2.6 (maybe 2.5.1?)
- whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;;
- esac
- ;;
-
- sunos4*)
- archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linkopts'
- hardcode_libdir_flag_spec='-L$libdir'
- hardcode_direct=yes
- hardcode_minus_L=yes
- hardcode_shlibpath_var=no
- ;;
-
- sysv4)
- if test "x$host_vendor" = xsequent; then
- # Use $CC to link under sequent, because it throws in some extra .o
- # files that make .init and .fini sections work.
- archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $linkopts'
- else
- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts'
- fi
- runpath_var='LD_RUN_PATH'
- hardcode_shlibpath_var=no
- hardcode_direct=no #Motorola manual says yes, but my tests say they lie
- ;;
-
- sysv4.3*)
- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts'
- hardcode_shlibpath_var=no
- export_dynamic_flag_spec='-Bexport'
- ;;
-
- sysv5*)
- no_undefined_flag=' -z text'
- # $CC -shared without GNU ld will not create a library from C++
- # object files and a static libstdc++, better avoid it by now
- archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linkopts'
- archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
- $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linkopts~$rm $lib.exp'
- hardcode_libdir_flag_spec=
- hardcode_shlibpath_var=no
- runpath_var='LD_RUN_PATH'
- ;;
-
- uts4*)
- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts'
- hardcode_libdir_flag_spec='-L$libdir'
- hardcode_shlibpath_var=no
- ;;
-
- dgux*)
- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts'
- hardcode_libdir_flag_spec='-L$libdir'
- hardcode_shlibpath_var=no
- ;;
-
- sysv4*MP*)
- if test -d /usr/nec; then
- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts'
- hardcode_shlibpath_var=no
- runpath_var=LD_RUN_PATH
- hardcode_runpath_var=yes
- ld_shlibs=yes
- fi
- ;;
-
- sysv4.2uw2*)
- archive_cmds='$LD -G -o $lib $libobjs $deplibs $linkopts'
- hardcode_direct=yes
- hardcode_minus_L=no
- hardcode_shlibpath_var=no
- hardcode_runpath_var=yes
- runpath_var=LD_RUN_PATH
- ;;
-
- unixware7*)
- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts'
- runpath_var='LD_RUN_PATH'
- hardcode_shlibpath_var=no
- ;;
-
- *)
- ld_shlibs=no
- ;;
- esac
-fi
-echo "$ac_t$ld_shlibs" 1>&6
-test "$ld_shlibs" = no && can_build_shared=no
-
-if test -z "$NM"; then
- echo $ac_n "checking for BSD-compatible nm... $ac_c" 1>&6
- case "$NM" in
- [\\/]* | [A-Za-z]:[\\/]*) ;; # Let the user override the test with a path.
- *)
- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}"
- for ac_dir in $PATH /usr/ucb /usr/ccs/bin /bin; do
- test -z "$ac_dir" && ac_dir=.
- if test -f $ac_dir/nm || test -f $ac_dir/nm$ac_exeext; then
- # Check to see if the nm accepts a BSD-compat flag.
- # Adding the `sed 1q' prevents false positives on HP-UX, which says:
- # nm: unknown option "B" ignored
- if ($ac_dir/nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then
- NM="$ac_dir/nm -B"
- break
- elif ($ac_dir/nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then
- NM="$ac_dir/nm -p"
- break
- else
- NM=${NM="$ac_dir/nm"} # keep the first match, but
- continue # so that we can try to find one that supports BSD flags
- fi
- fi
- done
- IFS="$ac_save_ifs"
- test -z "$NM" && NM=nm
- ;;
- esac
- echo "$ac_t$NM" 1>&6
-fi
-
-# 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
-
-# These are sane defaults that work on at least a few old systems.
-# [They come from Ultrix. What could be older than Ultrix?!! ;)]
-
-# Character class describing NM global symbol codes.
-symcode='[BCDEGRST]'
-
-# Regexp to match symbols that can be accessed directly from C.
-sympat='\([_A-Za-z][_A-Za-z0-9]*\)'
-
-# Transform the above into a raw symbol and a C symbol.
-symxfrm='\1 \2\3 \3'
-
-# Transform an extracted symbol line into a proper C declaration
-global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern char \1;/p'"
-
-# Define system-specific variables.
-case "$host_os" in
-aix*)
- symcode='[BCDT]'
- ;;
-cygwin* | mingw*)
- symcode='[ABCDGISTW]'
- ;;
-hpux*) # Its linker distinguishes data from code symbols
- global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern char \1();/p' -e 's/^. .* \(.*\)$/extern char \1;/p'"
- ;;
-irix*)
- symcode='[BCDEGRST]'
- ;;
-solaris*)
- symcode='[BDT]'
- ;;
-sysv4)
- symcode='[DFNSTU]'
- ;;
-esac
-
-# If we're using GNU nm, then use its standard symbol codes.
-if $NM -V 2>&1 | egrep '(GNU|with BFD)' > /dev/null; then
- symcode='[ABCDGISTW]'
-fi
-
-# Try without a prefix undercore, then with it.
-for ac_symprfx in "" "_"; do
-
- # Write the raw and C identifiers.
- global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode\)[ ][ ]*\($ac_symprfx\)$sympat$/$symxfrm/p'"
-
- # Check to see that the pipe works correctly.
- pipe_works=no
- $rm conftest*
- cat > conftest.c <<EOF
-#ifdef __cplusplus
-extern "C" {
-#endif
-char nm_test_var;
-void nm_test_func(){}
-#ifdef __cplusplus
-}
-#endif
-main(){nm_test_var='a';nm_test_func();return(0);}
-EOF
-
- echo "$progname:1653: checking if global_symbol_pipe works" >&5
- if { (eval echo $progname:1654: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; } && test -s conftest.$objext; then
- # Now try to grab the symbols.
- nlist=conftest.nm
- if { echo "$progname:1657: eval \"$NM conftest.$objext | $global_symbol_pipe > $nlist\"" >&5; eval "$NM conftest.$objext | $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"
- else
- rm -f "$nlist"T
- fi
-
- # Make sure that we snagged all the symbols we need.
- if egrep ' nm_test_var$' "$nlist" >/dev/null; then
- if egrep ' nm_test_func$' "$nlist" >/dev/null; then
- cat <<EOF > conftest.c
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-EOF
- # Now generate the symbol file.
- eval "$global_symbol_to_cdecl"' < "$nlist" >> conftest.c'
-
- cat <<EOF >> conftest.c
-#if defined (__STDC__) && __STDC__
-# define lt_ptr_t void *
-#else
-# define lt_ptr_t char *
-# define const
-#endif
-
-/* The mapping between symbol names and symbols. */
-const struct {
- const char *name;
- lt_ptr_t address;
-}
-lt_preloaded_symbols[] =
-{
-EOF
- sed 's/^. \(.*\) \(.*\)$/ {"\2", (lt_ptr_t) \&\2},/' < "$nlist" >> conftest.c
- cat <<\EOF >> conftest.c
- {0, (lt_ptr_t) 0}
-};
-
-#ifdef __cplusplus
-}
-#endif
-EOF
- # Now try linking the two files.
- mv conftest.$objext conftstm.$objext
- save_LIBS="$LIBS"
- save_CFLAGS="$CFLAGS"
- LIBS="conftstm.$objext"
- CFLAGS="$CFLAGS$no_builtin_flag"
- if { (eval echo $progname:1709: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
- pipe_works=yes
- else
- echo "$progname: failed program was:" >&5
- cat conftest.c >&5
- fi
- LIBS="$save_LIBS"
- else
- echo "cannot find nm_test_func in $nlist" >&5
- fi
- else
- echo "cannot find nm_test_var in $nlist" >&5
- fi
- else
- echo "cannot run $global_symbol_pipe" >&5
- fi
- else
- echo "$progname: failed program was:" >&5
- cat conftest.c >&5
- fi
- $rm conftest* conftst*
-
- # Do not use the global_symbol_pipe unless it works.
- if test "$pipe_works" = yes; then
- break
- else
- global_symbol_pipe=
- fi
-done
-if test "$pipe_works" = yes; then
- echo "${ac_t}ok" 1>&6
-else
- echo "${ac_t}failed" 1>&6
-fi
-
-if test -z "$global_symbol_pipe"; then
- global_symbol_to_cdecl=
-fi
-
-# Check hardcoding attributes.
-echo $ac_n "checking how to hardcode library paths into programs... $ac_c" 1>&6
-hardcode_action=
-if test -n "$hardcode_libdir_flag_spec" || \
- test -n "$runpath_var"; then
-
- # We can hardcode non-existant directories.
- if test "$hardcode_direct" != no &&
- # If the only mechanism to avoid hardcoding is shlibpath_var, we
- # have to relink, otherwise we might link with an installed library
- # when we should be linking with a yet-to-be-installed one
- ## test "$hardcode_shlibpath_var" != no &&
- test "$hardcode_minus_L" != no; then
- # Linking always hardcodes the temporary library directory.
- hardcode_action=relink
- else
- # We can link without hardcoding, and we can hardcode nonexisting dirs.
- hardcode_action=immediate
- fi
-else
- # We cannot hardcode anything, or else we can only hardcode existing
- # directories.
- hardcode_action=unsupported
-fi
-echo "$ac_t$hardcode_action" 1>&6
-
-
-reload_flag=
-reload_cmds='$LD$reload_flag -o $output$reload_objs'
-echo $ac_n "checking for $LD option to reload object files... $ac_c" 1>&6
-# PORTME Some linkers may need a different reload flag.
-reload_flag='-r'
-echo "$ac_t$reload_flag" 1>&6
-test -n "$reload_flag" && reload_flag=" $reload_flag"
-
-# PORTME Fill in your ld.so characteristics
-library_names_spec=
-libname_spec='lib$name'
-soname_spec=
-postinstall_cmds=
-postuninstall_cmds=
-finish_cmds=
-finish_eval=
-shlibpath_var=
-shlibpath_overrides_runpath=unknown
-version_type=none
-dynamic_linker="$host_os ld.so"
-sys_lib_dlsearch_path_spec="/lib /usr/lib"
-sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
-file_magic_cmd=
-file_magic_test_file=
-deplibs_check_method='unknown'
-# Need to set the preceding variable on all platforms that support
-# interlibrary dependencies.
-# 'none' -- dependencies not supported.
-# `unknown' -- same as none, but documents that we really don't know.
-# 'pass_all' -- all dependencies passed with no checks.
-# 'test_compile' -- check by making test program.
-# 'file_magic [regex]' -- check by looking for files in library path
-# which responds to the $file_magic_cmd with a given egrep regex.
-# If you have `file' or equivalent on your system and you're not sure
-# whether `pass_all' will *always* work, you probably want this one.
-echo $ac_n "checking dynamic linker characteristics... $ac_c" 1>&6
-case "$host_os" in
-aix3*)
- version_type=linux
- library_names_spec='${libname}${release}.so$versuffix $libname.a'
- shlibpath_var=LIBPATH
-
- # AIX has no versioning support, so we append a major version to the name.
- soname_spec='${libname}${release}.so$major'
- ;;
-
-aix4*)
- version_type=linux
- # AIX has no versioning support, so currently we can not hardcode correct
- # soname into executable. Probably we can add versioning support to
- # collect2, so additional links can be useful in future.
- # We preserve .a as extension for shared libraries though AIX4.2
- # and later linker supports .so
- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.a'
- shlibpath_var=LIBPATH
- deplibs_check_method=pass_all
- ;;
-
-amigaos*)
- library_names_spec='$libname.ixlibrary $libname.a'
- # Create ${libname}_ixlibrary.a entries in /sys/libs.
- finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "(cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a)"; (cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a) || exit 1; done'
- ;;
-
-beos*)
- library_names_spec='${libname}.so'
- dynamic_linker="$host_os ld.so"
- shlibpath_var=LIBRARY_PATH
- deplibs_check_method=pass_all
- lt_cv_dlopen="load_add_on"
- lt_cv_dlopen_libs=
- lt_cv_dlopen_self=yes
- ;;
-
-bsdi4*)
- version_type=linux
- need_version=no
- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
- soname_spec='${libname}${release}.so$major'
- finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
- shlibpath_var=LD_LIBRARY_PATH
- deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)'
- file_magic_cmd=/usr/bin/file
- file_magic_test_file=/shlib/libc.so
- sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
- sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
- export_dynamic_flag_spec=-rdynamic
- # the default ld.so.conf also contains /usr/contrib/lib and
- # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
- # libtool to hard-code these into programs
- ;;
-
-cygwin* | mingw*)
- version_type=windows
- need_version=no
- need_lib_prefix=no
- if test "$with_gcc" = yes; then
- library_names_spec='${libname}`echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll $libname.a'
- else
- library_names_spec='${libname}`echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll $libname.lib'
- fi
- dynamic_linker='Win32 ld.exe'
- deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
- file_magic_cmd='${OBJDUMP} -f'
- # FIXME: first we should search . and the directory the executable is in
- shlibpath_var=PATH
- lt_cv_dlopen="LoadLibrary"
- lt_cv_dlopen_libs=
- ;;
-
-freebsd1*)
- dynamic_linker=no
- ;;
-
-freebsd*)
- objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout`
- version_type=freebsd-$objformat
- case "$version_type" in
- freebsd-elf*)
- deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB shared object'
- file_magic_cmd=/usr/bin/file
- file_magic_test_file=`echo /usr/lib/libc.so*`
- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so'
- need_version=no
- need_lib_prefix=no
- ;;
- freebsd-*)
- deplibs_check_method=unknown
- library_names_spec='${libname}${release}.so$versuffix $libname.so$versuffix'
- need_version=yes
- ;;
- esac
- shlibpath_var=LD_LIBRARY_PATH
- case "$host_os" in
- freebsd2* | freebsd3.[01]* | freebsdelf3.[01]*)
- shlibpath_overrides_runpath=yes
- ;;
- *) # from 3.2 on
- shlibpath_overrides_runpath=no
- ;;
- esac
- ;;
-
-gnu*)
- version_type=linux
- need_lib_prefix=no
- need_version=no
- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so${major} ${libname}.so'
- soname_spec='${libname}${release}.so$major'
- shlibpath_var=LD_LIBRARY_PATH
- ;;
-
-hpux9* | hpux10* | hpux11*)
- # Give a soname corresponding to the major version so that dld.sl refuses to
- # link against other versions.
- dynamic_linker="$host_os dld.sl"
- version_type=sunos
- need_lib_prefix=no
- need_version=no
- shlibpath_var=SHLIB_PATH
- shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
- library_names_spec='${libname}${release}.sl$versuffix ${libname}${release}.sl$major $libname.sl'
- soname_spec='${libname}${release}.sl$major'
- # HP-UX runs *really* slowly unless shared libraries are mode 555.
- postinstall_cmds='chmod 555 $lib'
- case "$host_os" in
- hpux10.20*)
- # TODO: Does this work for hpux-11 too?
- deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library'
- file_magic_cmd=/usr/bin/file
- file_magic_test_file=/usr/lib/libc.sl
- ;;
- esac
- ;;
-
-irix5* | irix6*)
- version_type=irix
- need_lib_prefix=no
- need_version=no
- soname_spec='${libname}${release}.so.$major'
- library_names_spec='${libname}${release}.so.$versuffix ${libname}${release}.so.$major ${libname}${release}.so $libname.so'
- case "$host_os" in
- irix5*)
- libsuff= shlibsuff=
- # this will be overridden with pass_all, but let us keep it just in case
- deplibs_check_method="file_magic ELF 32-bit MSB dynamic lib MIPS - version 1"
- ;;
- *)
- case "$LD" in # libtool.m4 will add one of these switches to LD
- *-32|*"-32 ") libsuff= shlibsuff= libmagic=32-bit;;
- *-n32|*"-n32 ") libsuff=32 shlibsuff=N32 libmagic=N32;;
- *-64|*"-64 ") libsuff=64 shlibsuff=64 libmagic=64-bit;;
- *) libsuff= shlibsuff= libmagic=never-match;;
- esac
- ;;
- esac
- shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
- shlibpath_overrides_runpath=no
- sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
- sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
- file_magic_cmd=/usr/bin/file
- file_magic_test_file=`echo /lib${libsuff}/libc.so*`
- deplibs_check_method='pass_all'
- ;;
-
-# No shared lib support for Linux oldld, aout, or coff.
-linux-gnuoldld* | linux-gnuaout* | linux-gnucoff*)
- dynamic_linker=no
- ;;
-
-# This must be Linux ELF.
-linux-gnu*)
- version_type=linux
- need_lib_prefix=no
- need_version=no
- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
- soname_spec='${libname}${release}.so$major'
- finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
- shlibpath_var=LD_LIBRARY_PATH
- shlibpath_overrides_runpath=no
- deplibs_check_method=pass_all
-
- if test -f /lib/ld.so.1; then
- dynamic_linker='GNU ld.so'
- else
- # Only the GNU ld.so supports shared libraries on MkLinux.
- case "$host_cpu" in
- powerpc*) dynamic_linker=no ;;
- *) dynamic_linker='Linux ld.so' ;;
- esac
- fi
- ;;
-
-netbsd*)
- version_type=sunos
- if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
- library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix'
- finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
- dynamic_linker='NetBSD (a.out) ld.so'
- else
- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so ${libname}.so'
- soname_spec='${libname}${release}.so$major'
- dynamic_linker='NetBSD ld.elf_so'
- fi
- shlibpath_var=LD_LIBRARY_PATH
- ;;
-
-openbsd*)
- version_type=sunos
- if test "$with_gnu_ld" = yes; then
- need_lib_prefix=no
- need_version=no
- fi
- library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix'
- finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
- shlibpath_var=LD_LIBRARY_PATH
- ;;
-
-os2*)
- libname_spec='$name'
- need_lib_prefix=no
- library_names_spec='$libname.dll $libname.a'
- dynamic_linker='OS/2 ld.exe'
- shlibpath_var=LIBPATH
- ;;
-
-osf3* | osf4* | osf5*)
- version_type=osf
- need_version=no
- soname_spec='${libname}${release}.so'
- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so'
- shlibpath_var=LD_LIBRARY_PATH
- # this will be overridden with pass_all, but let us keep it just in case
- deplibs_check_method='file_magic COFF format alpha shared library'
- file_magic_cmd=/usr/bin/file
- file_magic_test_file=/shlib/libc.so
- deplibs_check_method='pass_all'
- sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
- sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
- ;;
-
-rhapsody*)
- version_type=sunos
- library_names_spec='${libname}.so'
- soname_spec='${libname}.so'
- shlibpath_var=DYLD_LIBRARY_PATH
- deplibs_check_method=pass_all
- ;;
-
-sco3.2v5*)
- version_type=osf
- soname_spec='${libname}${release}.so$major'
- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
- shlibpath_var=LD_LIBRARY_PATH
- ;;
-
-solaris*)
- version_type=linux
- need_lib_prefix=no
- need_version=no
- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
- soname_spec='${libname}${release}.so$major'
- shlibpath_var=LD_LIBRARY_PATH
- shlibpath_overrides_runpath=yes
- # ldd complains unless libraries are executable
- postinstall_cmds='chmod +x $lib'
- deplibs_check_method="file_magic ELF [0-9][0-9]-bit [LM]SB dynamic lib"
- file_magic_cmd=/usr/bin/file
- file_magic_test_file=/lib/libc.so
- ;;
-
-sunos4*)
- version_type=sunos
- library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix'
- finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
- shlibpath_var=LD_LIBRARY_PATH
- shlibpath_overrides_runpath=yes
- if test "$with_gnu_ld" = yes; then
- need_lib_prefix=no
- fi
- need_version=yes
- ;;
-
-sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
- version_type=linux
- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
- soname_spec='${libname}${release}.so$major'
- shlibpath_var=LD_LIBRARY_PATH
- case "$host_vendor" in
- sequent)
- file_magic_cmd='/bin/file'
- deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )'
- ;;
- ncr)
- deplibs_check_method='pass_all'
- ;;
- motorola)
- need_lib_prefix=no
- need_version=no
- shlibpath_overrides_runpath=no
- sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
- deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]'
- file_magic_cmd=/usr/bin/file
- file_magic_test_file=`echo /usr/lib/libc.so*`
- ;;
- esac
- ;;
-
-uts4*)
- version_type=linux
- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
- soname_spec='${libname}${release}.so$major'
- shlibpath_var=LD_LIBRARY_PATH
- ;;
-
-dgux*)
- version_type=linux
- need_lib_prefix=no
- need_version=no
- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
- soname_spec='${libname}${release}.so$major'
- shlibpath_var=LD_LIBRARY_PATH
- ;;
-
-sysv4*MP*)
- if test -d /usr/nec ;then
- version_type=linux
- library_names_spec='$libname.so.$versuffix $libname.so.$major $libname.so'
- soname_spec='$libname.so.$major'
- shlibpath_var=LD_LIBRARY_PATH
- fi
- ;;
-
-*)
- dynamic_linker=no
- ;;
-esac
-echo "$ac_t$dynamic_linker" 1>&6
-test "$dynamic_linker" = no && can_build_shared=no
-
-# Report the final consequences.
-echo "checking if libtool supports shared libraries... $can_build_shared" 1>&6
-
-# Only try to build win32 dlls if AC_LIBTOOL_WIN32_DLL was used in
-# configure.in, otherwise build static only libraries.
-case "$host_os" in
-cygwin* | mingw* | os2*)
- if test x$can_build_shared = xyes; then
- test x$enable_win32_dll = xno && can_build_shared=no
- echo "checking if package supports dlls... $can_build_shared" 1>&6
- fi
-;;
-esac
-
-if test -n "$file_magic_test_file" && test -n "$file_magic_cmd"; then
- case "$deplibs_check_method" in
- "file_magic "*)
- file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`"
- if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
- egrep "$file_magic_regex" > /dev/null; then
- :
- else
- cat <<EOF 1>&2
-
-*** Warning: the command libtool uses to detect shared libraries,
-*** $file_magic_cmd, produces output that libtool cannot recognize.
-*** The result is that libtool may fail to recognize shared libraries
-*** as such. This will affect the creation of libtool libraries that
-*** depend on shared libraries, but programs linked with such libtool
-*** libraries will work regardless of this problem. Nevertheless, you
-*** may want to report the problem to your system manager and/or to
-*** bug-libtool@gnu.org
-
-EOF
- fi ;;
- esac
-fi
-
-echo $ac_n "checking whether to build shared libraries... $ac_c" 1>&6
-test "$can_build_shared" = "no" && enable_shared=no
-
-# On AIX, shared libraries and static libraries use the same namespace, and
-# are all built from PIC.
-case "$host_os" in
-aix3*)
- test "$enable_shared" = yes && enable_static=no
- if test -n "$RANLIB"; then
- archive_cmds="$archive_cmds~\$RANLIB \$lib"
- postinstall_cmds='$RANLIB $lib'
- fi
- ;;
-
-aix4*)
- test "$enable_shared" = yes && enable_static=no
- ;;
-esac
-
-echo "$ac_t$enable_shared" 1>&6
-
-# Make sure either enable_shared or enable_static is yes.
-test "$enable_shared" = yes || enable_static=yes
-
-echo "checking whether to build static libraries... $enable_static" 1>&6
-
-if test "$hardcode_action" = relink; then
- # Fast installation is not supported
- enable_fast_install=no
-elif test "$shlibpath_overrides_runpath" = yes ||
- test "$enable_shared" = no; then
- # Fast installation is not necessary
- enable_fast_install=needless
-fi
-
-echo $ac_n "checking for objdir... $ac_c" 1>&6
-rm -f .libs 2>/dev/null
-mkdir .libs 2>/dev/null
-if test -d .libs; then
- objdir=.libs
-else
- # MS-DOS does not allow filenames that begin with a dot.
- objdir=_libs
-fi
-rmdir .libs 2>/dev/null
-echo "$ac_t$objdir" 1>&6
-
-if test "x$enable_dlopen" != xyes; then
- enable_dlopen=unknown
- enable_dlopen_self=unknown
- enable_dlopen_self_static=unknown
-else
-if eval "test \"`echo '$''{'lt_cv_dlopen'+set}'`\" != set"; then
- lt_cv_dlopen=no lt_cv_dlopen_libs=
-echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6
-echo "$progname:2248: 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
-else
- ac_save_LIBS="$LIBS"
-LIBS="-ldl $LIBS"
-cat > conftest.$ac_ext <<EOF
-#line 2256 "ltconfig"
-/* 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. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char dlopen();
-
-int main() {
-dlopen()
-; return 0; }
-EOF
-if { (eval echo $progname:2269: \"$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
- echo "$progname: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=no"
-fi
-rm -f conftest*
-LIBS="$ac_save_LIBS"
-
-fi
-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
- echo "$ac_t""yes" 1>&6
- lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
-else
- echo "$ac_t""no" 1>&6
-echo $ac_n "checking for dlopen""... $ac_c" 1>&6
-echo "$progname:2288: 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 <<EOF
-#line 2293 "ltconfig"
-/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char dlopen(); below. */
-#include <assert.h>
-/* 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. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char dlopen();
-
-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_dlopen) || defined (__stub___dlopen)
-choke me
-#else
-dlopen();
-#endif
-
-; return 0; }
-EOF
-if { (eval echo $progname:2318: \"$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
- echo "$progname: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- eval "ac_cv_func_dlopen=no"
-fi
-rm -f conftest*
-fi
-if eval "test \"`echo '$ac_cv_func_'dlopen`\" = yes"; then
- echo "$ac_t""yes" 1>&6
- lt_cv_dlopen="dlopen"
-else
- echo "$ac_t""no" 1>&6
-echo $ac_n "checking for dld_link in -ldld""... $ac_c" 1>&6
-echo "$progname:2335: checking for dld_link in -ldld" >&5
-ac_lib_var=`echo dld'_'dld_link | sed 'y%./+-%__p_%'`
-if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- ac_save_LIBS="$LIBS"
-LIBS="-ldld $LIBS"
-cat > conftest.$ac_ext <<EOF
-#line 2343 "ltconfig"
-/* 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. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char dld_link();
-
-int main() {
-dld_link()
-; return 0; }
-EOF
-if { (eval echo $progname:2356: \"$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
- echo "$progname: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=no"
-fi
-rm -f conftest*
-LIBS="$ac_save_LIBS"
-
-fi
-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
- echo "$ac_t""yes" 1>&6
- lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"
-else
- echo "$ac_t""no" 1>&6
-echo $ac_n "checking for shl_load""... $ac_c" 1>&6
-echo "$progname:2375: 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 <<EOF
-#line 2380 "ltconfig"
-/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char shl_load(); below. */
-#include <assert.h>
-/* 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. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char shl_load();
-
-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_shl_load) || defined (__stub___shl_load)
-choke me
-#else
-shl_load();
-#endif
-
-; return 0; }
-EOF
-if { (eval echo $progname:2405: \"$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
- echo "$progname: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- eval "ac_cv_func_shl_load=no"
-fi
-rm -f conftest*
-fi
-
-if eval "test \"`echo '$ac_cv_func_'shl_load`\" = yes"; then
- echo "$ac_t""yes" 1>&6
- lt_cv_dlopen="shl_load"
-else
- echo "$ac_t""no" 1>&6
-echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6
-echo "$progname:2423: 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
-else
- ac_save_LIBS="$LIBS"
-LIBS="-ldld $LIBS"
-cat > conftest.$ac_ext <<EOF
-#line 2431 "ltconfig"
-#include "confdefs.h"
-/* 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. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char shl_load();
-
-int main() {
-shl_load()
-; return 0; }
-EOF
-if { (eval echo $progname:2445: \"$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
- echo "$progname: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=no"
-fi
-rm -f conftest*
-LIBS="$ac_save_LIBS"
-
-fi
-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
- echo "$ac_t""yes" 1>&6
- lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"
-else
- echo "$ac_t""no" 1>&6
-fi
-
-
-fi
-
-
-fi
-
-
-fi
-
-
-fi
-
-fi
-
- if test "x$lt_cv_dlopen" != xno; then
- enable_dlopen=yes
- fi
-
- case "$lt_cv_dlopen" in
- dlopen)
-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 "$progname:2488: 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
-#line 2493 "ltconfig"
-#include <$ac_hdr>
-int fnord = 0;
-EOF
-ac_try="$ac_compile >/dev/null 2>conftest.out"
-{ (eval echo $progname:2498: \"$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 "$progname: 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
-fi
-done
-
- if test "x$ac_cv_header_dlfcn_h" = xyes; then
- CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
- fi
- eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
- LIBS="$lt_cv_dlopen_libs $LIBS"
-
- echo $ac_n "checking whether a program can dlopen itself""... $ac_c" 1>&6
-echo "$progname:2526: checking whether a program can dlopen itself" >&5
-if test "${lt_cv_dlopen_self+set}" = set; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- if test "$cross_compiling" = yes; then
- lt_cv_dlopen_self=cross
- else
- cat > conftest.c <<EOF
-#line 2534 "ltconfig"
-
-#if HAVE_DLFCN_H
-#include <dlfcn.h>
-#endif
-
-#include <stdio.h>
-
-#ifdef RTLD_GLOBAL
-# define LTDL_GLOBAL RTLD_GLOBAL
-#else
-# ifdef DL_GLOBAL
-# define LTDL_GLOBAL DL_GLOBAL
-# else
-# define LTDL_GLOBAL 0
-# endif
-#endif
-
-/* We may have to define LTDL_LAZY_OR_NOW in the command line if we
- find out it does not work in some platform. */
-#ifndef LTDL_LAZY_OR_NOW
-# ifdef RTLD_LAZY
-# define LTDL_LAZY_OR_NOW RTLD_LAZY
-# else
-# ifdef DL_LAZY
-# define LTDL_LAZY_OR_NOW DL_LAZY
-# else
-# ifdef RTLD_NOW
-# define LTDL_LAZY_OR_NOW RTLD_NOW
-# else
-# ifdef DL_NOW
-# define LTDL_LAZY_OR_NOW DL_NOW
-# else
-# define LTDL_LAZY_OR_NOW 0
-# endif
-# endif
-# endif
-# endif
-#endif
-
-fnord() { int i=42;}
-main() { void *self, *ptr1, *ptr2; self=dlopen(0,LTDL_GLOBAL|LTDL_LAZY_OR_NOW);
- if(self) { ptr1=dlsym(self,"fnord"); ptr2=dlsym(self,"_fnord");
- if(ptr1 || ptr2) { dlclose(self); exit(0); } } exit(1); }
-
-EOF
-if { (eval echo $progname:2580: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
-then
- lt_cv_dlopen_self=yes
-else
- echo "$progname: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -fr conftest*
- lt_cv_dlopen_self=no
-fi
-rm -fr conftest*
-fi
-
-fi
-
-echo "$ac_t""$lt_cv_dlopen_self" 1>&6
-
- if test "$lt_cv_dlopen_self" = yes; then
- LDFLAGS="$LDFLAGS $link_static_flag"
- echo $ac_n "checking whether a statically linked program can dlopen itself""... $ac_c" 1>&6
-echo "$progname:2599: checking whether a statically linked program can dlopen itself" >&5
-if test "${lt_cv_dlopen_self_static+set}" = set; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- if test "$cross_compiling" = yes; then
- lt_cv_dlopen_self_static=cross
- else
- cat > conftest.c <<EOF
-#line 2607 "ltconfig"
-
-#if HAVE_DLFCN_H
-#include <dlfcn.h>
-#endif
-
-#include <stdio.h>
-
-#ifdef RTLD_GLOBAL
-# define LTDL_GLOBAL RTLD_GLOBAL
-#else
-# ifdef DL_GLOBAL
-# define LTDL_GLOBAL DL_GLOBAL
-# else
-# define LTDL_GLOBAL 0
-# endif
-#endif
-
-/* We may have to define LTDL_LAZY_OR_NOW in the command line if we
- find out it does not work in some platform. */
-#ifndef LTDL_LAZY_OR_NOW
-# ifdef RTLD_LAZY
-# define LTDL_LAZY_OR_NOW RTLD_LAZY
-# else
-# ifdef DL_LAZY
-# define LTDL_LAZY_OR_NOW DL_LAZY
-# else
-# ifdef RTLD_NOW
-# define LTDL_LAZY_OR_NOW RTLD_NOW
-# else
-# ifdef DL_NOW
-# define LTDL_LAZY_OR_NOW DL_NOW
-# else
-# define LTDL_LAZY_OR_NOW 0
-# endif
-# endif
-# endif
-# endif
-#endif
-
-fnord() { int i=42;}
-main() { void *self, *ptr1, *ptr2; self=dlopen(0,LTDL_GLOBAL|LTDL_LAZY_OR_NOW);
- if(self) { ptr1=dlsym(self,"fnord"); ptr2=dlsym(self,"_fnord");
- if(ptr1 || ptr2) { dlclose(self); exit(0); } } exit(1); }
-
-EOF
-if { (eval echo $progname:2653: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
-then
- lt_cv_dlopen_self_static=yes
-else
- echo "$progname: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -fr conftest*
- lt_cv_dlopen_self_static=no
-fi
-rm -fr conftest*
-fi
-
-fi
-
-echo "$ac_t""$lt_cv_dlopen_self_static" 1>&6
-fi
- ;;
- esac
-
- case "$lt_cv_dlopen_self" in
- yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
- *) enable_dlopen_self=unknown ;;
- esac
-
- case "$lt_cv_dlopen_self_static" in
- yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
- *) enable_dlopen_self_static=unknown ;;
- esac
-fi
-
-# Copy echo and quote the copy, instead of the original, because it is
-# used later.
-ltecho="$echo"
-if test "X$ltecho" = "X$CONFIG_SHELL $0 --fallback-echo"; then
- ltecho="$CONFIG_SHELL \$0 --fallback-echo"
-fi
-LTSHELL="$SHELL"
-
-LTCONFIG_VERSION="$VERSION"
-
-# Only quote variables if we're using ltmain.sh.
-case "$ltmain" in
-*.sh)
- # Now quote all the things that may contain metacharacters.
- for var in ltecho old_CC old_CFLAGS old_CPPFLAGS \
- old_LD old_LDFLAGS old_LIBS \
- old_NM old_RANLIB old_LN_S old_DLLTOOL old_OBJDUMP old_AS \
- AR CC LD LN_S NM LTSHELL LTCONFIG_VERSION \
- reload_flag reload_cmds wl \
- pic_flag link_static_flag no_builtin_flag export_dynamic_flag_spec \
- thread_safe_flag_spec whole_archive_flag_spec libname_spec \
- library_names_spec soname_spec \
- RANLIB old_archive_cmds old_archive_from_new_cmds old_postinstall_cmds \
- old_postuninstall_cmds archive_cmds archive_expsym_cmds postinstall_cmds postuninstall_cmds \
- file_magic_cmd export_symbols_cmds deplibs_check_method allow_undefined_flag no_undefined_flag \
- finish_cmds finish_eval global_symbol_pipe global_symbol_to_cdecl \
- hardcode_libdir_flag_spec hardcode_libdir_separator \
- sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
- compiler_c_o compiler_o_lo need_locks exclude_expsyms include_expsyms; do
-
- case "$var" in
- reload_cmds | old_archive_cmds | old_archive_from_new_cmds | \
- old_postinstall_cmds | old_postuninstall_cmds | \
- export_symbols_cmds | archive_cmds | archive_expsym_cmds | \
- postinstall_cmds | postuninstall_cmds | \
- finish_cmds | sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
- # Double-quote double-evaled strings.
- eval "$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
- ;;
- *)
- eval "$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
- ;;
- esac
- done
-
- case "$ltecho" in
- *'\$0 --fallback-echo"')
- ltecho=`$echo "X$ltecho" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
- ;;
- esac
-
- trap "$rm \"$ofile\"; exit 1" 1 2 15
- echo "creating $ofile"
- $rm "$ofile"
- cat <<EOF > "$ofile"
-#! $SHELL
-
-# `$echo "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
-# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP)
-# NOTE: Changes made to this file will be lost: look at ltconfig or ltmain.sh.
-#
-# Copyright (C) 1996-1999 Free Software Foundation, Inc.
-# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-#
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-# Sed that helps us avoid accidentally triggering echo(1) options like -n.
-Xsed="sed -e s/^X//"
-
-# The HP-UX ksh and POSIX shell print the target directory to stdout
-# if CDPATH is set.
-if test "X\${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi
-
-### BEGIN LIBTOOL CONFIG
-EOF
- cfgfile="$ofile"
- ;;
-
-*)
- # Double-quote the variables that need it (for aesthetics).
- for var in old_CC old_CFLAGS old_CPPFLAGS \
- old_LD old_LDFLAGS old_LIBS \
- old_NM old_RANLIB old_LN_S old_DLLTOOL old_OBJDUMP old_AS; do
- eval "$var=\\\"\$var\\\""
- done
-
- # Just create a config file.
- cfgfile="$ofile.cfg"
- trap "$rm \"$cfgfile\"; exit 1" 1 2 15
- echo "creating $cfgfile"
- $rm "$cfgfile"
- cat <<EOF > "$cfgfile"
-# `$echo "$cfgfile" | sed 's%^.*/%%'` - Libtool configuration file.
-# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP)
-EOF
- ;;
-esac
-
-cat <<EOF >> "$cfgfile"
-# Libtool was configured as follows, on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
-#
-# CC=$old_CC CFLAGS=$old_CFLAGS CPPFLAGS=$old_CPPFLAGS \\
-# LD=$old_LD LDFLAGS=$old_LDFLAGS LIBS=$old_LIBS \\
-# NM=$old_NM RANLIB=$old_RANLIB LN_S=$old_LN_S \\
-# DLLTOOL=$old_DLLTOOL OBJDUMP=$old_OBJDUMP AS=$old_AS \\
-# $0$ltconfig_args
-#
-# Compiler and other test output produced by $progname, useful for
-# debugging $progname, is in ./config.log if it exists.
-
-# The version of $progname that generated this script.
-LTCONFIG_VERSION=$LTCONFIG_VERSION
-
-# Shell to use when invoking shell scripts.
-SHELL=$LTSHELL
-
-# Whether or not to build shared libraries.
-build_libtool_libs=$enable_shared
-
-# Whether or not to build static libraries.
-build_old_libs=$enable_static
-
-# Whether or not to optimize for fast installation.
-fast_install=$enable_fast_install
-
-# The host system.
-host_alias=$host_alias
-host=$host
-
-# An echo program that does not interpret backslashes.
-echo=$ltecho
-
-# The archiver.
-AR=$AR
-
-# The default C compiler.
-CC=$CC
-
-# The linker used to build libraries.
-LD=$LD
-
-# Whether we need hard or soft links.
-LN_S=$LN_S
-
-# A BSD-compatible nm program.
-NM=$NM
-
-# Used on cygwin: DLL creation program.
-DLLTOOL="$DLLTOOL"
-
-# Used on cygwin: object dumper.
-OBJDUMP="$OBJDUMP"
-
-# Used on cygwin: assembler.
-AS="$AS"
-
-# The name of the directory that contains temporary libtool files.
-objdir=$objdir
-
-# How to create reloadable object files.
-reload_flag=$reload_flag
-reload_cmds=$reload_cmds
-
-# How to pass a linker flag through the compiler.
-wl=$wl
-
-# Object file suffix (normally "o").
-objext="$objext"
-
-# Old archive suffix (normally "a").
-libext="$libext"
-
-# Executable file suffix (normally "").
-exeext="$exeext"
-
-# Additional compiler flags for building library objects.
-pic_flag=$pic_flag
-
-# Does compiler simultaneously support -c and -o options?
-compiler_c_o=$compiler_c_o
-
-# Can we write directly to a .lo ?
-compiler_o_lo=$compiler_o_lo
-
-# Must we lock files when doing compilation ?
-need_locks=$need_locks
-
-# Do we need the lib prefix for modules?
-need_lib_prefix=$need_lib_prefix
-
-# Do we need a version for libraries?
-need_version=$need_version
-
-# Whether dlopen is supported.
-dlopen=$enable_dlopen
-
-# Whether dlopen of programs is supported.
-dlopen_self=$enable_dlopen_self
-
-# Whether dlopen of statically linked programs is supported.
-dlopen_self_static=$enable_dlopen_self_static
-
-# Compiler flag to prevent dynamic linking.
-link_static_flag=$link_static_flag
-
-# Compiler flag to turn off builtin functions.
-no_builtin_flag=$no_builtin_flag
-
-# Compiler flag to allow reflexive dlopens.
-export_dynamic_flag_spec=$export_dynamic_flag_spec
-
-# Compiler flag to generate shared objects directly from archives.
-whole_archive_flag_spec=$whole_archive_flag_spec
-
-# Compiler flag to generate thread-safe objects.
-thread_safe_flag_spec=$thread_safe_flag_spec
-
-# Library versioning type.
-version_type=$version_type
-
-# Format of library name prefix.
-libname_spec=$libname_spec
-
-# List of archive names. First name is the real one, the rest are links.
-# The last name is the one that the linker finds with -lNAME.
-library_names_spec=$library_names_spec
-
-# The coded name of the library, if different from the real name.
-soname_spec=$soname_spec
-
-# Commands used to build and install an old-style archive.
-RANLIB=$RANLIB
-old_archive_cmds=$old_archive_cmds
-old_postinstall_cmds=$old_postinstall_cmds
-old_postuninstall_cmds=$old_postuninstall_cmds
-
-# Create an old-style archive from a shared archive.
-old_archive_from_new_cmds=$old_archive_from_new_cmds
-
-# Commands used to build and install a shared archive.
-archive_cmds=$archive_cmds
-archive_expsym_cmds=$archive_expsym_cmds
-postinstall_cmds=$postinstall_cmds
-postuninstall_cmds=$postuninstall_cmds
-
-# Method to check whether dependent libraries are shared objects.
-deplibs_check_method=$deplibs_check_method
-
-# Command to use when deplibs_check_method == file_magic.
-file_magic_cmd=$file_magic_cmd
-
-# Flag that allows shared libraries with undefined symbols to be built.
-allow_undefined_flag=$allow_undefined_flag
-
-# Flag that forces no undefined symbols.
-no_undefined_flag=$no_undefined_flag
-
-# Commands used to finish a libtool library installation in a directory.
-finish_cmds=$finish_cmds
-
-# Same as above, but a single script fragment to be evaled but not shown.
-finish_eval=$finish_eval
-
-# Take the output of nm and produce a listing of raw symbols and C names.
-global_symbol_pipe=$global_symbol_pipe
-
-# Transform the output of nm in a proper C declaration
-global_symbol_to_cdecl=$global_symbol_to_cdecl
-
-# This is the shared library runtime path variable.
-runpath_var=$runpath_var
-
-# This is the shared library path variable.
-shlibpath_var=$shlibpath_var
-
-# Is shlibpath searched before the hard-coded library search path?
-shlibpath_overrides_runpath=$shlibpath_overrides_runpath
-
-# How to hardcode a shared library path into an executable.
-hardcode_action=$hardcode_action
-
-# Flag to hardcode \$libdir into a binary during linking.
-# This must work even if \$libdir does not exist.
-hardcode_libdir_flag_spec=$hardcode_libdir_flag_spec
-
-# Whether we need a single -rpath flag with a separated argument.
-hardcode_libdir_separator=$hardcode_libdir_separator
-
-# Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the
-# resulting binary.
-hardcode_direct=$hardcode_direct
-
-# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
-# resulting binary.
-hardcode_minus_L=$hardcode_minus_L
-
-# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
-# the resulting binary.
-hardcode_shlibpath_var=$hardcode_shlibpath_var
-
-# Compile-time system search path for libraries
-sys_lib_search_path_spec=$sys_lib_search_path_spec
-
-# Run-time system search path for libraries
-sys_lib_dlsearch_path_spec=$sys_lib_dlsearch_path_spec
-
-# Fix the shell variable \$srcfile for the compiler.
-fix_srcfile_path="$fix_srcfile_path"
-
-# Set to yes if exported symbols are required.
-always_export_symbols=$always_export_symbols
-
-# The commands to list exported symbols.
-export_symbols_cmds=$export_symbols_cmds
-
-# Symbols that should not be listed in the preloaded symbols.
-exclude_expsyms=$exclude_expsyms
-
-# Symbols that must always be exported.
-include_expsyms=$include_expsyms
-
-EOF
-
-case "$ltmain" in
-*.sh)
- echo '### END LIBTOOL CONFIG' >> "$ofile"
- echo >> "$ofile"
- case "$host_os" in
- aix3*)
- cat <<\EOF >> "$ofile"
-
-# AIX sometimes has problems with the GCC collect2 program. For some
-# reason, if we set the COLLECT_NAMES environment variable, the problems
-# vanish in a puff of smoke.
-if test "X${COLLECT_NAMES+set}" != Xset; then
- COLLECT_NAMES=
- export COLLECT_NAMES
-fi
-EOF
- ;;
- esac
-
- # Append the ltmain.sh script.
- sed '$q' "$ltmain" >> "$ofile" || (rm -f "$ofile"; exit 1)
- # We use sed instead of cat because bash on DJGPP gets confused if
- # if finds mixed CR/LF and LF-only lines. Since sed operates in
- # text mode, it properly converts lines to CR/LF. This bash problem
- # is reportedly fixed, but why not run on old versions too?
-
- chmod +x "$ofile"
- ;;
-
-*)
- # Compile the libtool program.
- echo "FIXME: would compile $ltmain"
- ;;
-esac
-
-test -n "$cache_file" || exit 0
-
-# AC_CACHE_SAVE
-trap '' 1 2 15
-cat > confcache <<\EOF
-# This file is a shell script that caches the results of configure
-# tests run on this system so they can be shared between configure
-# scripts and configure runs. It is not useful on other systems.
-# If it contains results you don't want to keep, you may remove or edit it.
-#
-# By default, configure uses ./config.cache as the cache file,
-# creating it if it does not exist already. You can give configure
-# the --cache-file=FILE option to use a different cache file; that is
-# what configure does when it calls configure scripts in
-# subdirectories, so they share the cache.
-# Giving --cache-file=/dev/null disables caching, for debugging configure.
-# config.status only pays attention to the cache file if you give it the
-# --recheck option to rerun configure.
-#
-EOF
-# The following way of writing the cache mishandles newlines in values,
-# but we know of no workaround that is simple, portable, and efficient.
-# So, don't put newlines in cache variables' values.
-# Ultrix sh set writes to stderr and can't be redirected directly,
-# and sets the high bit in the cache file unless we assign to the vars.
-(set) 2>&1 |
- case `(ac_space=' '; set | grep ac_space) 2>&1` in
- *ac_space=\ *)
- # `set' does not quote correctly, so add quotes (double-quote substitution
- # turns \\\\ into \\, and sed turns \\ into \).
- sed -n \
- -e "s/'/'\\\\''/g" \
- -e "s/^\\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\\)=\\(.*\\)/\\1=\${\\1='\\2'}/p"
- ;;
- *)
- # `set' quotes correctly as required by POSIX, so do not add quotes.
- sed -n -e 's/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=${\1=\2}/p'
- ;;
- esac >> confcache
-if cmp -s $cache_file confcache; then
- :
-else
- if test -w $cache_file; then
- echo "updating cache $cache_file"
- cat confcache > $cache_file
- else
- echo "not updating unwritable cache $cache_file"
- fi
-fi
-rm -f confcache
-
-exit 0
-
-# Local Variables:
-# mode:shell-script
-# sh-indentation:2
-# End:
+++ /dev/null
-# ltmain.sh - Provide generalized library-building support services.
-# NOTE: Changing this file will not affect anything until you rerun ltconfig.
-#
-# Copyright (C) 1996-1999 Free Software Foundation, Inc.
-# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-#
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-# Check that we have a working $echo.
-if test "X$1" = X--no-reexec; then
- # Discard the --no-reexec flag, and continue.
- shift
-elif test "X$1" = X--fallback-echo; then
- # Avoid inline document here, it may be left over
- :
-elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then
- # Yippee, $echo works!
- :
-else
- # Restart under the correct shell, and then maybe $echo will work.
- exec $SHELL "$0" --no-reexec ${1+"$@"}
-fi
-
-if test "X$1" = X--fallback-echo; then
- # used as fallback echo
- shift
- cat <<EOF
-$*
-EOF
- exit 0
-fi
-
-# The name of this program.
-progname=`$echo "$0" | sed 's%^.*/%%'`
-modename="$progname"
-
-# Constants.
-PROGRAM=ltmain.sh
-PACKAGE=libtool
-VERSION=1.3.5
-TIMESTAMP=" (1.385.2.206 2000/05/27 11:12:27)"
-
-default_mode=
-help="Try \`$progname --help' for more information."
-magic="%%%MAGIC variable%%%"
-mkdir="mkdir"
-mv="mv -f"
-rm="rm -f"
-
-# Sed substitution that helps us do robust quoting. It backslashifies
-# metacharacters that are still active within double-quoted strings.
-Xsed='sed -e 1s/^X//'
-sed_quote_subst='s/\([\\`\\"$\\\\]\)/\\\1/g'
-SP2NL='tr \040 \012'
-NL2SP='tr \015\012 \040\040'
-
-# NLS nuisances.
-# Only set LANG and LC_ALL to C if already set.
-# These must not be set unconditionally because not all systems understand
-# e.g. LANG=C (notably SCO).
-# We save the old values to restore during execute mode.
-if test "${LC_ALL+set}" = set; then
- save_LC_ALL="$LC_ALL"; LC_ALL=C; export LC_ALL
-fi
-if test "${LANG+set}" = set; then
- save_LANG="$LANG"; LANG=C; export LANG
-fi
-
-if test "$LTCONFIG_VERSION" != "$VERSION"; then
- echo "$modename: ltconfig version \`$LTCONFIG_VERSION' does not match $PROGRAM version \`$VERSION'" 1>&2
- echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2
- exit 1
-fi
-
-if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
- echo "$modename: not configured to build any kind of library" 1>&2
- echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2
- exit 1
-fi
-
-# Global variables.
-mode=$default_mode
-nonopt=
-prev=
-prevopt=
-run=
-show="$echo"
-show_help=
-execute_dlfiles=
-lo2o="s/\\.lo\$/.${objext}/"
-o2lo="s/\\.${objext}\$/.lo/"
-
-# Parse our command line options once, thoroughly.
-while test $# -gt 0
-do
- arg="$1"
- shift
-
- case "$arg" in
- -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;;
- *) optarg= ;;
- esac
-
- # If the previous option needs an argument, assign it.
- if test -n "$prev"; then
- case "$prev" in
- execute_dlfiles)
- eval "$prev=\"\$$prev \$arg\""
- ;;
- *)
- eval "$prev=\$arg"
- ;;
- esac
-
- prev=
- prevopt=
- continue
- fi
-
- # Have we seen a non-optional argument yet?
- case "$arg" in
- --help)
- show_help=yes
- ;;
-
- --version)
- echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP"
- exit 0
- ;;
-
- --config)
- sed -e '1,/^### BEGIN LIBTOOL CONFIG/d' -e '/^### END LIBTOOL CONFIG/,$d' $0
- exit 0
- ;;
-
- --debug)
- echo "$progname: enabling shell trace mode"
- set -x
- ;;
-
- --dry-run | -n)
- run=:
- ;;
-
- --features)
- echo "host: $host"
- if test "$build_libtool_libs" = yes; then
- echo "enable shared libraries"
- else
- echo "disable shared libraries"
- fi
- if test "$build_old_libs" = yes; then
- echo "enable static libraries"
- else
- echo "disable static libraries"
- fi
- exit 0
- ;;
-
- --finish) mode="finish" ;;
-
- --mode) prevopt="--mode" prev=mode ;;
- --mode=*) mode="$optarg" ;;
-
- --quiet | --silent)
- show=:
- ;;
-
- -dlopen)
- prevopt="-dlopen"
- prev=execute_dlfiles
- ;;
-
- -*)
- $echo "$modename: unrecognized option \`$arg'" 1>&2
- $echo "$help" 1>&2
- exit 1
- ;;
-
- *)
- nonopt="$arg"
- break
- ;;
- esac
-done
-
-if test -n "$prevopt"; then
- $echo "$modename: option \`$prevopt' requires an argument" 1>&2
- $echo "$help" 1>&2
- exit 1
-fi
-
-if test -z "$show_help"; then
-
- # Infer the operation mode.
- if test -z "$mode"; then
- case "$nonopt" in
- *cc | *++ | gcc* | *-gcc*)
- mode=link
- for arg
- do
- case "$arg" in
- -c)
- mode=compile
- break
- ;;
- esac
- done
- ;;
- *db | *dbx | *strace | *truss)
- mode=execute
- ;;
- *install*|cp|mv)
- mode=install
- ;;
- *rm)
- mode=uninstall
- ;;
- *)
- # If we have no mode, but dlfiles were specified, then do execute mode.
- test -n "$execute_dlfiles" && mode=execute
-
- # Just use the default operation mode.
- if test -z "$mode"; then
- if test -n "$nonopt"; then
- $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2
- else
- $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2
- fi
- fi
- ;;
- esac
- fi
-
- # Only execute mode is allowed to have -dlopen flags.
- if test -n "$execute_dlfiles" && test "$mode" != execute; then
- $echo "$modename: unrecognized option \`-dlopen'" 1>&2
- $echo "$help" 1>&2
- exit 1
- fi
-
- # Change the help message to a mode-specific one.
- generic_help="$help"
- help="Try \`$modename --help --mode=$mode' for more information."
-
- # These modes are in order of execution frequency so that they run quickly.
- case "$mode" in
- # libtool compile mode
- compile)
- modename="$modename: compile"
- # Get the compilation command and the source file.
- base_compile=
- lastarg=
- srcfile="$nonopt"
- suppress_output=
-
- user_target=no
- for arg
- do
- # Accept any command-line options.
- case "$arg" in
- -o)
- if test "$user_target" != "no"; then
- $echo "$modename: you cannot specify \`-o' more than once" 1>&2
- exit 1
- fi
- user_target=next
- ;;
-
- -static)
- build_old_libs=yes
- continue
- ;;
- esac
-
- case "$user_target" in
- next)
- # The next one is the -o target name
- user_target=yes
- continue
- ;;
- yes)
- # We got the output file
- user_target=set
- libobj="$arg"
- continue
- ;;
- esac
-
- # Accept the current argument as the source file.
- lastarg="$srcfile"
- srcfile="$arg"
-
- # Aesthetically quote the previous argument.
-
- # Backslashify any backslashes, double quotes, and dollar signs.
- # These are the only characters that are still specially
- # interpreted inside of double-quoted scrings.
- lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"`
-
- # Double-quote args containing other shell metacharacters.
- # Many Bourne shells cannot handle close brackets correctly in scan
- # sets, so we specify it separately.
- case "$lastarg" in
- *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*)
- lastarg="\"$lastarg\""
- ;;
- esac
-
- # Add the previous argument to base_compile.
- if test -z "$base_compile"; then
- base_compile="$lastarg"
- else
- base_compile="$base_compile $lastarg"
- fi
- done
-
- case "$user_target" in
- set)
- ;;
- no)
- # Get the name of the library object.
- libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'`
- ;;
- *)
- $echo "$modename: you must specify a target with \`-o'" 1>&2
- exit 1
- ;;
- esac
-
- # Recognize several different file suffixes.
- # If the user specifies -o file.o, it is replaced with file.lo
- xform='[cCFSfmso]'
- case "$libobj" in
- *.ada) xform=ada ;;
- *.adb) xform=adb ;;
- *.ads) xform=ads ;;
- *.asm) xform=asm ;;
- *.c++) xform=c++ ;;
- *.cc) xform=cc ;;
- *.cpp) xform=cpp ;;
- *.cxx) xform=cxx ;;
- *.f90) xform=f90 ;;
- *.for) xform=for ;;
- esac
-
- libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"`
-
- case "$libobj" in
- *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;;
- *)
- $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2
- exit 1
- ;;
- esac
-
- if test -z "$base_compile"; then
- $echo "$modename: you must specify a compilation command" 1>&2
- $echo "$help" 1>&2
- exit 1
- fi
-
- # Delete any leftover library objects.
- if test "$build_old_libs" = yes; then
- removelist="$obj $libobj"
- else
- removelist="$libobj"
- fi
-
- $run $rm $removelist
- trap "$run $rm $removelist; exit 1" 1 2 15
-
- # Calculate the filename of the output object if compiler does
- # not support -o with -c
- if test "$compiler_c_o" = no; then
- output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\..*$%%'`.${objext}
- lockfile="$output_obj.lock"
- removelist="$removelist $output_obj $lockfile"
- trap "$run $rm $removelist; exit 1" 1 2 15
- else
- need_locks=no
- lockfile=
- fi
-
- # Lock this critical section if it is needed
- # We use this script file to make the link, it avoids creating a new file
- if test "$need_locks" = yes; then
- until ln "$0" "$lockfile" 2>/dev/null; do
- $show "Waiting for $lockfile to be removed"
- sleep 2
- done
- elif test "$need_locks" = warn; then
- if test -f "$lockfile"; then
- echo "\
-*** ERROR, $lockfile exists and contains:
-`cat $lockfile 2>/dev/null`
-
-This indicates that another process is trying to use the same
-temporary object file, and libtool could not work around it because
-your compiler does not support \`-c' and \`-o' together. If you
-repeat this compilation, it may succeed, by chance, but you had better
-avoid parallel builds (make -j) in this platform, or get a better
-compiler."
-
- $run $rm $removelist
- exit 1
- fi
- echo $srcfile > "$lockfile"
- fi
-
- if test -n "$fix_srcfile_path"; then
- eval srcfile=\"$fix_srcfile_path\"
- fi
-
- # Only build a PIC object if we are building libtool libraries.
- if test "$build_libtool_libs" = yes; then
- # Without this assignment, base_compile gets emptied.
- fbsd_hideous_sh_bug=$base_compile
-
- # All platforms use -DPIC, to notify preprocessed assembler code.
- command="$base_compile $srcfile $pic_flag -DPIC"
- if test "$build_old_libs" = yes; then
- lo_libobj="$libobj"
- dir=`$echo "X$libobj" | $Xsed -e 's%/[^/]*$%%'`
- if test "X$dir" = "X$libobj"; then
- dir="$objdir"
- else
- dir="$dir/$objdir"
- fi
- libobj="$dir/"`$echo "X$libobj" | $Xsed -e 's%^.*/%%'`
-
- if test -d "$dir"; then
- $show "$rm $libobj"
- $run $rm $libobj
- else
- $show "$mkdir $dir"
- $run $mkdir $dir
- status=$?
- if test $status -ne 0 && test ! -d $dir; then
- exit $status
- fi
- fi
- fi
- if test "$compiler_o_lo" = yes; then
- output_obj="$libobj"
- command="$command -o $output_obj"
- elif test "$compiler_c_o" = yes; then
- output_obj="$obj"
- command="$command -o $output_obj"
- fi
-
- $run $rm "$output_obj"
- $show "$command"
- if $run eval "$command"; then :
- else
- test -n "$output_obj" && $run $rm $removelist
- exit 1
- fi
-
- if test "$need_locks" = warn &&
- test x"`cat $lockfile 2>/dev/null`" != x"$srcfile"; then
- echo "\
-*** ERROR, $lockfile contains:
-`cat $lockfile 2>/dev/null`
-
-but it should contain:
-$srcfile
-
-This indicates that another process is trying to use the same
-temporary object file, and libtool could not work around it because
-your compiler does not support \`-c' and \`-o' together. If you
-repeat this compilation, it may succeed, by chance, but you had better
-avoid parallel builds (make -j) in this platform, or get a better
-compiler."
-
- $run $rm $removelist
- exit 1
- fi
-
- # Just move the object if needed, then go on to compile the next one
- if test x"$output_obj" != x"$libobj"; then
- $show "$mv $output_obj $libobj"
- if $run $mv $output_obj $libobj; then :
- else
- error=$?
- $run $rm $removelist
- exit $error
- fi
- fi
-
- # If we have no pic_flag, then copy the object into place and finish.
- if test -z "$pic_flag" && test "$build_old_libs" = yes; then
- # Rename the .lo from within objdir to obj
- if test -f $obj; then
- $show $rm $obj
- $run $rm $obj
- fi
-
- $show "$mv $libobj $obj"
- if $run $mv $libobj $obj; then :
- else
- error=$?
- $run $rm $removelist
- exit $error
- fi
-
- xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'`
- if test "X$xdir" = "X$obj"; then
- xdir="."
- else
- xdir="$xdir"
- fi
- baseobj=`$echo "X$obj" | $Xsed -e "s%.*/%%"`
- libobj=`$echo "X$baseobj" | $Xsed -e "$o2lo"`
- # Now arrange that obj and lo_libobj become the same file
- $show "(cd $xdir && $LN_S $baseobj $libobj)"
- if $run eval '(cd $xdir && $LN_S $baseobj $libobj)'; then
- exit 0
- else
- error=$?
- $run $rm $removelist
- exit $error
- fi
- fi
-
- # Allow error messages only from the first compilation.
- suppress_output=' >/dev/null 2>&1'
- fi
-
- # Only build a position-dependent object if we build old libraries.
- if test "$build_old_libs" = yes; then
- command="$base_compile $srcfile"
- if test "$compiler_c_o" = yes; then
- command="$command -o $obj"
- output_obj="$obj"
- fi
-
- # Suppress compiler output if we already did a PIC compilation.
- command="$command$suppress_output"
- $run $rm "$output_obj"
- $show "$command"
- if $run eval "$command"; then :
- else
- $run $rm $removelist
- exit 1
- fi
-
- if test "$need_locks" = warn &&
- test x"`cat $lockfile 2>/dev/null`" != x"$srcfile"; then
- echo "\
-*** ERROR, $lockfile contains:
-`cat $lockfile 2>/dev/null`
-
-but it should contain:
-$srcfile
-
-This indicates that another process is trying to use the same
-temporary object file, and libtool could not work around it because
-your compiler does not support \`-c' and \`-o' together. If you
-repeat this compilation, it may succeed, by chance, but you had better
-avoid parallel builds (make -j) in this platform, or get a better
-compiler."
-
- $run $rm $removelist
- exit 1
- fi
-
- # Just move the object if needed
- if test x"$output_obj" != x"$obj"; then
- $show "$mv $output_obj $obj"
- if $run $mv $output_obj $obj; then :
- else
- error=$?
- $run $rm $removelist
- exit $error
- fi
- fi
-
- # Create an invalid libtool object if no PIC, so that we do not
- # accidentally link it into a program.
- if test "$build_libtool_libs" != yes; then
- $show "echo timestamp > $libobj"
- $run eval "echo timestamp > \$libobj" || exit $?
- else
- # Move the .lo from within objdir
- $show "$mv $libobj $lo_libobj"
- if $run $mv $libobj $lo_libobj; then :
- else
- error=$?
- $run $rm $removelist
- exit $error
- fi
- fi
- fi
-
- # Unlock the critical section if it was locked
- if test "$need_locks" != no; then
- $rm "$lockfile"
- fi
-
- exit 0
- ;;
-
- # libtool link mode
- link)
- modename="$modename: link"
- case "$host" in
- *-*-cygwin* | *-*-mingw* | *-*-os2*)
- # It is impossible to link a dll without this setting, and
- # we shouldn't force the makefile maintainer to figure out
- # which system we are compiling for in order to pass an extra
- # flag for every libtool invokation.
- # allow_undefined=no
-
- # FIXME: Unfortunately, there are problems with the above when trying
- # to make a dll which has undefined symbols, in which case not
- # even a static library is built. For now, we need to specify
- # -no-undefined on the libtool link line when we can be certain
- # that all symbols are satisfied, otherwise we get a static library.
- allow_undefined=yes
-
- # This is a source program that is used to create dlls on Windows
- # Don't remove nor modify the starting and closing comments
-# /* ltdll.c starts here */
-# #define WIN32_LEAN_AND_MEAN
-# #include <windows.h>
-# #undef WIN32_LEAN_AND_MEAN
-# #include <stdio.h>
-#
-# #ifndef __CYGWIN__
-# # ifdef __CYGWIN32__
-# # define __CYGWIN__ __CYGWIN32__
-# # endif
-# #endif
-#
-# #ifdef __cplusplus
-# extern "C" {
-# #endif
-# BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved);
-# #ifdef __cplusplus
-# }
-# #endif
-#
-# #ifdef __CYGWIN__
-# #include <cygwin/cygwin_dll.h>
-# DECLARE_CYGWIN_DLL( DllMain );
-# #endif
-# HINSTANCE __hDllInstance_base;
-#
-# BOOL APIENTRY
-# DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved)
-# {
-# __hDllInstance_base = hInst;
-# return TRUE;
-# }
-# /* ltdll.c ends here */
- # This is a source program that is used to create import libraries
- # on Windows for dlls which lack them. Don't remove nor modify the
- # starting and closing comments
-# /* impgen.c starts here */
-# /* Copyright (C) 1999 Free Software Foundation, Inc.
-#
-# This file is part of GNU libtool.
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-# */
-#
-# #include <stdio.h> /* for printf() */
-# #include <unistd.h> /* for open(), lseek(), read() */
-# #include <fcntl.h> /* for O_RDONLY, O_BINARY */
-# #include <string.h> /* for strdup() */
-#
-# static unsigned int
-# pe_get16 (fd, offset)
-# int fd;
-# int offset;
-# {
-# unsigned char b[2];
-# lseek (fd, offset, SEEK_SET);
-# read (fd, b, 2);
-# return b[0] + (b[1]<<8);
-# }
-#
-# static unsigned int
-# pe_get32 (fd, offset)
-# int fd;
-# int offset;
-# {
-# unsigned char b[4];
-# lseek (fd, offset, SEEK_SET);
-# read (fd, b, 4);
-# return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24);
-# }
-#
-# static unsigned int
-# pe_as32 (ptr)
-# void *ptr;
-# {
-# unsigned char *b = ptr;
-# return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24);
-# }
-#
-# int
-# main (argc, argv)
-# int argc;
-# char *argv[];
-# {
-# int dll;
-# unsigned long pe_header_offset, opthdr_ofs, num_entries, i;
-# unsigned long export_rva, export_size, nsections, secptr, expptr;
-# unsigned long name_rvas, nexp;
-# unsigned char *expdata, *erva;
-# char *filename, *dll_name;
-#
-# filename = argv[1];
-#
-# dll = open(filename, O_RDONLY|O_BINARY);
-# if (!dll)
-# return 1;
-#
-# dll_name = filename;
-#
-# for (i=0; filename[i]; i++)
-# if (filename[i] == '/' || filename[i] == '\\' || filename[i] == ':')
-# dll_name = filename + i +1;
-#
-# pe_header_offset = pe_get32 (dll, 0x3c);
-# opthdr_ofs = pe_header_offset + 4 + 20;
-# num_entries = pe_get32 (dll, opthdr_ofs + 92);
-#
-# if (num_entries < 1) /* no exports */
-# return 1;
-#
-# export_rva = pe_get32 (dll, opthdr_ofs + 96);
-# export_size = pe_get32 (dll, opthdr_ofs + 100);
-# nsections = pe_get16 (dll, pe_header_offset + 4 +2);
-# secptr = (pe_header_offset + 4 + 20 +
-# pe_get16 (dll, pe_header_offset + 4 + 16));
-#
-# expptr = 0;
-# for (i = 0; i < nsections; i++)
-# {
-# char sname[8];
-# unsigned long secptr1 = secptr + 40 * i;
-# unsigned long vaddr = pe_get32 (dll, secptr1 + 12);
-# unsigned long vsize = pe_get32 (dll, secptr1 + 16);
-# unsigned long fptr = pe_get32 (dll, secptr1 + 20);
-# lseek(dll, secptr1, SEEK_SET);
-# read(dll, sname, 8);
-# if (vaddr <= export_rva && vaddr+vsize > export_rva)
-# {
-# expptr = fptr + (export_rva - vaddr);
-# if (export_rva + export_size > vaddr + vsize)
-# export_size = vsize - (export_rva - vaddr);
-# break;
-# }
-# }
-#
-# expdata = (unsigned char*)malloc(export_size);
-# lseek (dll, expptr, SEEK_SET);
-# read (dll, expdata, export_size);
-# erva = expdata - export_rva;
-#
-# nexp = pe_as32 (expdata+24);
-# name_rvas = pe_as32 (expdata+32);
-#
-# printf ("EXPORTS\n");
-# for (i = 0; i<nexp; i++)
-# {
-# unsigned long name_rva = pe_as32 (erva+name_rvas+i*4);
-# printf ("\t%s @ %ld ;\n", erva+name_rva, 1+ i);
-# }
-#
-# return 0;
-# }
-# /* impgen.c ends here */
- ;;
- *)
- allow_undefined=yes
- ;;
- esac
- compile_command="$nonopt"
- finalize_command="$nonopt"
-
- compile_rpath=
- finalize_rpath=
- compile_shlibpath=
- finalize_shlibpath=
- convenience=
- old_convenience=
- deplibs=
- linkopts=
-
- if test -n "$shlibpath_var"; then
- # get the directories listed in $shlibpath_var
- eval lib_search_path=\`\$echo \"X \${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\`
- else
- lib_search_path=
- fi
- # now prepend the system-specific ones
- eval lib_search_path=\"$sys_lib_search_path_spec\$lib_search_path\"
- eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
-
- avoid_version=no
- dlfiles=
- dlprefiles=
- dlself=no
- export_dynamic=no
- export_symbols=
- export_symbols_regex=
- generated=
- libobjs=
- link_against_libtool_libs=
- ltlibs=
- module=no
- objs=
- prefer_static_libs=no
- preload=no
- prev=
- prevarg=
- release=
- rpath=
- xrpath=
- perm_rpath=
- temp_rpath=
- thread_safe=no
- vinfo=
-
- # We need to know -static, to get the right output filenames.
- for arg
- do
- case "$arg" in
- -all-static | -static)
- if test "X$arg" = "X-all-static"; then
- if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
- $echo "$modename: warning: complete static linking is impossible in this configuration" 1>&2
- fi
- if test -n "$link_static_flag"; then
- dlopen_self=$dlopen_self_static
- fi
- else
- if test -z "$pic_flag" && test -n "$link_static_flag"; then
- dlopen_self=$dlopen_self_static
- fi
- fi
- build_libtool_libs=no
- build_old_libs=yes
- prefer_static_libs=yes
- break
- ;;
- esac
- done
-
- # See if our shared archives depend on static archives.
- test -n "$old_archive_from_new_cmds" && build_old_libs=yes
-
- # Go through the arguments, transforming them on the way.
- while test $# -gt 0; do
- arg="$1"
- shift
-
- # If the previous option needs an argument, assign it.
- if test -n "$prev"; then
- case "$prev" in
- output)
- compile_command="$compile_command @OUTPUT@"
- finalize_command="$finalize_command @OUTPUT@"
- ;;
- esac
-
- case "$prev" in
- dlfiles|dlprefiles)
- if test "$preload" = no; then
- # Add the symbol object into the linking commands.
- compile_command="$compile_command @SYMFILE@"
- finalize_command="$finalize_command @SYMFILE@"
- preload=yes
- fi
- case "$arg" in
- *.la | *.lo) ;; # We handle these cases below.
- force)
- if test "$dlself" = no; then
- dlself=needless
- export_dynamic=yes
- fi
- prev=
- continue
- ;;
- self)
- if test "$prev" = dlprefiles; then
- dlself=yes
- elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then
- dlself=yes
- else
- dlself=needless
- export_dynamic=yes
- fi
- prev=
- continue
- ;;
- *)
- if test "$prev" = dlfiles; then
- dlfiles="$dlfiles $arg"
- else
- dlprefiles="$dlprefiles $arg"
- fi
- prev=
- ;;
- esac
- ;;
- expsyms)
- export_symbols="$arg"
- if test ! -f "$arg"; then
- $echo "$modename: symbol file \`$arg' does not exist"
- exit 1
- fi
- prev=
- continue
- ;;
- expsyms_regex)
- export_symbols_regex="$arg"
- prev=
- continue
- ;;
- release)
- release="-$arg"
- prev=
- continue
- ;;
- rpath | xrpath)
- # We need an absolute path.
- case "$arg" in
- [\\/]* | [A-Za-z]:[\\/]*) ;;
- *)
- $echo "$modename: only absolute run-paths are allowed" 1>&2
- exit 1
- ;;
- esac
- if test "$prev" = rpath; then
- case "$rpath " in
- *" $arg "*) ;;
- *) rpath="$rpath $arg" ;;
- esac
- else
- case "$xrpath " in
- *" $arg "*) ;;
- *) xrpath="$xrpath $arg" ;;
- esac
- fi
- prev=
- continue
- ;;
- *)
- eval "$prev=\"\$arg\""
- prev=
- continue
- ;;
- esac
- fi
-
- prevarg="$arg"
-
- case "$arg" in
- -all-static)
- if test -n "$link_static_flag"; then
- compile_command="$compile_command $link_static_flag"
- finalize_command="$finalize_command $link_static_flag"
- fi
- continue
- ;;
-
- -allow-undefined)
- # FIXME: remove this flag sometime in the future.
- $echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2
- continue
- ;;
-
- -avoid-version)
- avoid_version=yes
- continue
- ;;
-
- -dlopen)
- prev=dlfiles
- continue
- ;;
-
- -dlpreopen)
- prev=dlprefiles
- continue
- ;;
-
- -export-dynamic)
- export_dynamic=yes
- continue
- ;;
-
- -export-symbols | -export-symbols-regex)
- if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
- $echo "$modename: not more than one -exported-symbols argument allowed"
- exit 1
- fi
- if test "X$arg" = "X-export-symbols"; then
- prev=expsyms
- else
- prev=expsyms_regex
- fi
- continue
- ;;
-
- -L*)
- dir=`$echo "X$arg" | $Xsed -e 's/^-L//'`
- # We need an absolute path.
- case "$dir" in
- [\\/]* | [A-Za-z]:[\\/]*) ;;
- *)
- absdir=`cd "$dir" && pwd`
- if test -z "$absdir"; then
- $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2
- $echo "$modename: passing it literally to the linker, although it might fail" 1>&2
- absdir="$dir"
- fi
- dir="$absdir"
- ;;
- esac
- case " $deplibs " in
- *" $arg "*) ;;
- *) deplibs="$deplibs $arg";;
- esac
- case " $lib_search_path " in
- *" $dir "*) ;;
- *) lib_search_path="$lib_search_path $dir";;
- esac
- case "$host" in
- *-*-cygwin* | *-*-mingw* | *-*-os2*)
- dllsearchdir=`cd "$dir" && pwd || echo "$dir"`
- case ":$dllsearchpath:" in
- ::) dllsearchpath="$dllsearchdir";;
- *":$dllsearchdir:"*) ;;
- *) dllsearchpath="$dllsearchpath:$dllsearchdir";;
- esac
- ;;
- esac
- ;;
-
- -l*)
- if test "$arg" = "-lc"; then
- case "$host" in
- *-*-cygwin* | *-*-mingw* | *-*-os2* | *-*-beos*)
- # These systems don't actually have c library (as such)
- continue
- ;;
- esac
- elif test "$arg" = "-lm"; then
- case "$host" in
- *-*-cygwin* | *-*-beos*)
- # These systems don't actually have math library (as such)
- continue
- ;;
- esac
- fi
- deplibs="$deplibs $arg"
- ;;
-
- -module)
- module=yes
- continue
- ;;
-
- -no-undefined)
- allow_undefined=no
- continue
- ;;
-
- -o) prev=output ;;
-
- -release)
- prev=release
- continue
- ;;
-
- -rpath)
- prev=rpath
- continue
- ;;
-
- -R)
- prev=xrpath
- continue
- ;;
-
- -R*)
- dir=`$echo "X$arg" | $Xsed -e 's/^-R//'`
- # We need an absolute path.
- case "$dir" in
- [\\/]* | [A-Za-z]:[\\/]*) ;;
- *)
- $echo "$modename: only absolute run-paths are allowed" 1>&2
- exit 1
- ;;
- esac
- case "$xrpath " in
- *" $dir "*) ;;
- *) xrpath="$xrpath $dir" ;;
- esac
- continue
- ;;
-
- -static)
- # If we have no pic_flag, then this is the same as -all-static.
- if test -z "$pic_flag" && test -n "$link_static_flag"; then
- compile_command="$compile_command $link_static_flag"
- finalize_command="$finalize_command $link_static_flag"
- fi
- continue
- ;;
-
- -thread-safe)
- thread_safe=yes
- continue
- ;;
-
- -version-info)
- prev=vinfo
- continue
- ;;
-
- # Some other compiler flag.
- -* | +*)
- # Unknown arguments in both finalize_command and compile_command need
- # to be aesthetically quoted because they are evaled later.
- arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
- case "$arg" in
- *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*)
- arg="\"$arg\""
- ;;
- esac
- ;;
-
- *.o | *.obj | *.a | *.lib)
- # A standard object.
- objs="$objs $arg"
- ;;
-
- *.lo)
- # A library object.
- if test "$prev" = dlfiles; then
- dlfiles="$dlfiles $arg"
- if test "$build_libtool_libs" = yes && test "$dlopen" = yes; then
- prev=
- continue
- else
- # If libtool objects are unsupported, then we need to preload.
- prev=dlprefiles
- fi
- fi
-
- if test "$prev" = dlprefiles; then
- # Preload the old-style object.
- dlprefiles="$dlprefiles "`$echo "X$arg" | $Xsed -e "$lo2o"`
- prev=
- fi
- libobjs="$libobjs $arg"
- ;;
-
- *.la)
- # A libtool-controlled library.
-
- dlname=
- libdir=
- library_names=
- old_library=
-
- # Check to see that this really is a libtool archive.
- if (sed -e '2q' $arg | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
- else
- $echo "$modename: \`$arg' is not a valid libtool archive" 1>&2
- exit 1
- fi
-
- # If the library was installed with an old release of libtool,
- # it will not redefine variable installed.
- installed=yes
-
- # Read the .la file
- # If there is no directory component, then add one.
- case "$arg" in
- */* | *\\*) . $arg ;;
- *) . ./$arg ;;
- esac
-
- # Get the name of the library we link against.
- linklib=
- for l in $old_library $library_names; do
- linklib="$l"
- done
-
- if test -z "$linklib"; then
- $echo "$modename: cannot find name of link library for \`$arg'" 1>&2
- exit 1
- fi
-
- # Find the relevant object directory and library name.
- name=`$echo "X$arg" | $Xsed -e 's%^.*/%%' -e 's/\.la$//' -e 's/^lib//'`
-
- if test "X$installed" = Xyes; then
- dir="$libdir"
- else
- dir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
- if test "X$dir" = "X$arg"; then
- dir="$objdir"
- else
- dir="$dir/$objdir"
- fi
- fi
-
- if test -n "$dependency_libs"; then
- # Extract -R and -L from dependency_libs
- temp_deplibs=
- for deplib in $dependency_libs; do
- case "$deplib" in
- -R*) temp_xrpath=`$echo "X$deplib" | $Xsed -e 's/^-R//'`
- case " $rpath $xrpath " in
- *" $temp_xrpath "*) ;;
- *) xrpath="$xrpath $temp_xrpath";;
- esac;;
- -L*) case "$compile_command $temp_deplibs " in
- *" $deplib "*) ;;
- *) temp_deplibs="$temp_deplibs $deplib";;
- esac
- temp_dir=`$echo "X$deplib" | $Xsed -e 's/^-L//'`
- case " $lib_search_path " in
- *" $temp_dir "*) ;;
- *) lib_search_path="$lib_search_path $temp_dir";;
- esac
- ;;
- *) temp_deplibs="$temp_deplibs $deplib";;
- esac
- done
- dependency_libs="$temp_deplibs"
- fi
-
- if test -z "$libdir"; then
- # It is a libtool convenience library, so add in its objects.
- convenience="$convenience $dir/$old_library"
- old_convenience="$old_convenience $dir/$old_library"
- deplibs="$deplibs$dependency_libs"
- compile_command="$compile_command $dir/$old_library$dependency_libs"
- finalize_command="$finalize_command $dir/$old_library$dependency_libs"
- continue
- fi
-
- # This library was specified with -dlopen.
- if test "$prev" = dlfiles; then
- dlfiles="$dlfiles $arg"
- if test -z "$dlname" || test "$dlopen" != yes || test "$build_libtool_libs" = no; then
- # If there is no dlname, no dlopen support or we're linking statically,
- # we need to preload.
- prev=dlprefiles
- else
- # We should not create a dependency on this library, but we
- # may need any libraries it requires.
- compile_command="$compile_command$dependency_libs"
- finalize_command="$finalize_command$dependency_libs"
- prev=
- continue
- fi
- fi
-
- # The library was specified with -dlpreopen.
- if test "$prev" = dlprefiles; then
- # Prefer using a static library (so that no silly _DYNAMIC symbols
- # are required to link).
- if test -n "$old_library"; then
- dlprefiles="$dlprefiles $dir/$old_library"
- else
- dlprefiles="$dlprefiles $dir/$linklib"
- fi
- prev=
- fi
-
- if test -n "$library_names" &&
- { test "$prefer_static_libs" = no || test -z "$old_library"; }; then
- link_against_libtool_libs="$link_against_libtool_libs $arg"
- if test -n "$shlibpath_var"; then
- # Make sure the rpath contains only unique directories.
- case "$temp_rpath " in
- *" $dir "*) ;;
- *) temp_rpath="$temp_rpath $dir" ;;
- esac
- fi
-
- # We need an absolute path.
- case "$dir" in
- [\\/] | [A-Za-z]:[\\/]*) absdir="$dir" ;;
- *)
- absdir=`cd "$dir" && pwd`
- if test -z "$absdir"; then
- $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2
- $echo "$modename: passing it literally to the linker, although it might fail" 1>&2
- absdir="$dir"
- fi
- ;;
- esac
-
- # This is the magic to use -rpath.
- # Skip directories that are in the system default run-time
- # search path, unless they have been requested with -R.
- case " $sys_lib_dlsearch_path " in
- *" $absdir "*) ;;
- *)
- case "$compile_rpath " in
- *" $absdir "*) ;;
- *) compile_rpath="$compile_rpath $absdir"
- esac
- ;;
- esac
-
- case " $sys_lib_dlsearch_path " in
- *" $libdir "*) ;;
- *)
- case "$finalize_rpath " in
- *" $libdir "*) ;;
- *) finalize_rpath="$finalize_rpath $libdir"
- esac
- ;;
- esac
-
- lib_linked=yes
- case "$hardcode_action" in
- immediate | unsupported)
- if test "$hardcode_direct" = no; then
- compile_command="$compile_command $dir/$linklib"
- deplibs="$deplibs $dir/$linklib"
- case "$host" in
- *-*-cygwin* | *-*-mingw* | *-*-os2*)
- dllsearchdir=`cd "$dir" && pwd || echo "$dir"`
- if test -n "$dllsearchpath"; then
- dllsearchpath="$dllsearchpath:$dllsearchdir"
- else
- dllsearchpath="$dllsearchdir"
- fi
- ;;
- esac
- elif test "$hardcode_minus_L" = no; then
- case "$host" in
- *-*-sunos*)
- compile_shlibpath="$compile_shlibpath$dir:"
- ;;
- esac
- case "$compile_command " in
- *" -L$dir "*) ;;
- *) compile_command="$compile_command -L$dir";;
- esac
- compile_command="$compile_command -l$name"
- deplibs="$deplibs -L$dir -l$name"
- elif test "$hardcode_shlibpath_var" = no; then
- case ":$compile_shlibpath:" in
- *":$dir:"*) ;;
- *) compile_shlibpath="$compile_shlibpath$dir:";;
- esac
- compile_command="$compile_command -l$name"
- deplibs="$deplibs -l$name"
- else
- lib_linked=no
- fi
- ;;
-
- relink)
- if test "$hardcode_direct" = yes; then
- compile_command="$compile_command $absdir/$linklib"
- deplibs="$deplibs $absdir/$linklib"
- elif test "$hardcode_minus_L" = yes; then
- case "$compile_command " in
- *" -L$absdir "*) ;;
- *) compile_command="$compile_command -L$absdir";;
- esac
- compile_command="$compile_command -l$name"
- deplibs="$deplibs -L$absdir -l$name"
- elif test "$hardcode_shlibpath_var" = yes; then
- case ":$compile_shlibpath:" in
- *":$absdir:"*) ;;
- *) compile_shlibpath="$compile_shlibpath$absdir:";;
- esac
- compile_command="$compile_command -l$name"
- deplibs="$deplibs -l$name"
- else
- lib_linked=no
- fi
- ;;
-
- *)
- lib_linked=no
- ;;
- esac
-
- if test "$lib_linked" != yes; then
- $echo "$modename: configuration error: unsupported hardcode properties"
- exit 1
- fi
-
- # Finalize command for both is simple: just hardcode it.
- if test "$hardcode_direct" = yes; then
- finalize_command="$finalize_command $libdir/$linklib"
- elif test "$hardcode_minus_L" = yes; then
- case "$finalize_command " in
- *" -L$libdir "*) ;;
- *) finalize_command="$finalize_command -L$libdir";;
- esac
- finalize_command="$finalize_command -l$name"
- elif test "$hardcode_shlibpath_var" = yes; then
- case ":$finalize_shlibpath:" in
- *":$libdir:"*) ;;
- *) finalize_shlibpath="$finalize_shlibpath$libdir:";;
- esac
- finalize_command="$finalize_command -l$name"
- else
- # We cannot seem to hardcode it, guess we'll fake it.
- case "$finalize_command " in
- *" -L$dir "*) ;;
- *) finalize_command="$finalize_command -L$libdir";;
- esac
- finalize_command="$finalize_command -l$name"
- fi
- else
- # Transform directly to old archives if we don't build new libraries.
- if test -n "$pic_flag" && test -z "$old_library"; then
- $echo "$modename: cannot find static library for \`$arg'" 1>&2
- exit 1
- fi
-
- # Here we assume that one of hardcode_direct or hardcode_minus_L
- # is not unsupported. This is valid on all known static and
- # shared platforms.
- if test "$hardcode_direct" != unsupported; then
- test -n "$old_library" && linklib="$old_library"
- compile_command="$compile_command $dir/$linklib"
- finalize_command="$finalize_command $dir/$linklib"
- else
- case "$compile_command " in
- *" -L$dir "*) ;;
- *) compile_command="$compile_command -L$dir";;
- esac
- compile_command="$compile_command -l$name"
- case "$finalize_command " in
- *" -L$dir "*) ;;
- *) finalize_command="$finalize_command -L$dir";;
- esac
- finalize_command="$finalize_command -l$name"
- fi
- fi
-
- # Add in any libraries that this one depends upon.
- compile_command="$compile_command$dependency_libs"
- finalize_command="$finalize_command$dependency_libs"
- continue
- ;;
-
- # Some other compiler argument.
- *)
- # Unknown arguments in both finalize_command and compile_command need
- # to be aesthetically quoted because they are evaled later.
- arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
- case "$arg" in
- *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*)
- arg="\"$arg\""
- ;;
- esac
- ;;
- esac
-
- # Now actually substitute the argument into the commands.
- if test -n "$arg"; then
- compile_command="$compile_command $arg"
- finalize_command="$finalize_command $arg"
- fi
- done
-
- if test -n "$prev"; then
- $echo "$modename: the \`$prevarg' option requires an argument" 1>&2
- $echo "$help" 1>&2
- exit 1
- fi
-
- if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
- eval arg=\"$export_dynamic_flag_spec\"
- compile_command="$compile_command $arg"
- finalize_command="$finalize_command $arg"
- fi
-
- oldlibs=
- # calculate the name of the file, without its directory
- outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'`
- libobjs_save="$libobjs"
-
- case "$output" in
- "")
- $echo "$modename: you must specify an output file" 1>&2
- $echo "$help" 1>&2
- exit 1
- ;;
-
- *.a | *.lib)
- if test -n "$link_against_libtool_libs"; then
- $echo "$modename: error: cannot link libtool libraries into archives" 1>&2
- exit 1
- fi
-
- if test -n "$deplibs"; then
- $echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2
- fi
-
- if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
- $echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2
- fi
-
- if test -n "$rpath"; then
- $echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2
- fi
-
- if test -n "$xrpath"; then
- $echo "$modename: warning: \`-R' is ignored for archives" 1>&2
- fi
-
- if test -n "$vinfo"; then
- $echo "$modename: warning: \`-version-info' is ignored for archives" 1>&2
- fi
-
- if test -n "$release"; then
- $echo "$modename: warning: \`-release' is ignored for archives" 1>&2
- fi
-
- if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
- $echo "$modename: warning: \`-export-symbols' is ignored for archives" 1>&2
- fi
-
- # Now set the variables for building old libraries.
- build_libtool_libs=no
- oldlibs="$output"
- ;;
-
- *.la)
- # Make sure we only generate libraries of the form `libNAME.la'.
- case "$outputname" in
- lib*)
- name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
- eval libname=\"$libname_spec\"
- ;;
- *)
- if test "$module" = no; then
- $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2
- $echo "$help" 1>&2
- exit 1
- fi
- if test "$need_lib_prefix" != no; then
- # Add the "lib" prefix for modules if required
- name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'`
- eval libname=\"$libname_spec\"
- else
- libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'`
- fi
- ;;
- esac
-
- output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'`
- if test "X$output_objdir" = "X$output"; then
- output_objdir="$objdir"
- else
- output_objdir="$output_objdir/$objdir"
- fi
-
- if test -n "$objs"; then
- $echo "$modename: cannot build libtool library \`$output' from non-libtool objects:$objs" 2>&1
- exit 1
- fi
-
- # How the heck are we supposed to write a wrapper for a shared library?
- if test -n "$link_against_libtool_libs"; then
- $echo "$modename: error: cannot link shared libraries into libtool libraries" 1>&2
- exit 1
- fi
-
- if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
- $echo "$modename: warning: \`-dlopen' is ignored for libtool libraries" 1>&2
- fi
-
- set dummy $rpath
- if test $# -gt 2; then
- $echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2
- fi
- install_libdir="$2"
-
- oldlibs=
- if test -z "$rpath"; then
- if test "$build_libtool_libs" = yes; then
- # Building a libtool convenience library.
- libext=al
- oldlibs="$output_objdir/$libname.$libext $oldlibs"
- build_libtool_libs=convenience
- build_old_libs=yes
- fi
- dependency_libs="$deplibs"
-
- if test -n "$vinfo"; then
- $echo "$modename: warning: \`-version-info' is ignored for convenience libraries" 1>&2
- fi
-
- if test -n "$release"; then
- $echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2
- fi
- else
-
- # Parse the version information argument.
- IFS="${IFS= }"; save_ifs="$IFS"; IFS=':'
- set dummy $vinfo 0 0 0
- IFS="$save_ifs"
-
- if test -n "$8"; then
- $echo "$modename: too many parameters to \`-version-info'" 1>&2
- $echo "$help" 1>&2
- exit 1
- fi
-
- current="$2"
- revision="$3"
- age="$4"
-
- # Check that each of the things are valid numbers.
- case "$current" in
- 0 | [1-9] | [1-9][0-9]*) ;;
- *)
- $echo "$modename: CURRENT \`$current' is not a nonnegative integer" 1>&2
- $echo "$modename: \`$vinfo' is not valid version information" 1>&2
- exit 1
- ;;
- esac
-
- case "$revision" in
- 0 | [1-9] | [1-9][0-9]*) ;;
- *)
- $echo "$modename: REVISION \`$revision' is not a nonnegative integer" 1>&2
- $echo "$modename: \`$vinfo' is not valid version information" 1>&2
- exit 1
- ;;
- esac
-
- case "$age" in
- 0 | [1-9] | [1-9][0-9]*) ;;
- *)
- $echo "$modename: AGE \`$age' is not a nonnegative integer" 1>&2
- $echo "$modename: \`$vinfo' is not valid version information" 1>&2
- exit 1
- ;;
- esac
-
- if test $age -gt $current; then
- $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2
- $echo "$modename: \`$vinfo' is not valid version information" 1>&2
- exit 1
- fi
-
- # Calculate the version variables.
- major=
- versuffix=
- verstring=
- case "$version_type" in
- none) ;;
-
- irix)
- major=`expr $current - $age + 1`
- versuffix="$major.$revision"
- verstring="sgi$major.$revision"
-
- # Add in all the interfaces that we are compatible with.
- loop=$revision
- while test $loop != 0; do
- iface=`expr $revision - $loop`
- loop=`expr $loop - 1`
- verstring="sgi$major.$iface:$verstring"
- done
- ;;
-
- linux)
- major=.`expr $current - $age`
- versuffix="$major.$age.$revision"
- ;;
-
- osf)
- major=`expr $current - $age`
- versuffix=".$current.$age.$revision"
- verstring="$current.$age.$revision"
-
- # Add in all the interfaces that we are compatible with.
- loop=$age
- while test $loop != 0; do
- iface=`expr $current - $loop`
- loop=`expr $loop - 1`
- verstring="$verstring:${iface}.0"
- done
-
- # Make executables depend on our current version.
- verstring="$verstring:${current}.0"
- ;;
-
- sunos)
- major=".$current"
- versuffix=".$current.$revision"
- ;;
-
- freebsd-aout)
- major=".$current"
- versuffix=".$current.$revision";
- ;;
-
- freebsd-elf)
- major=".$current"
- versuffix=".$current";
- ;;
-
- windows)
- # Like Linux, but with '-' rather than '.', since we only
- # want one extension on Windows 95.
- major=`expr $current - $age`
- versuffix="-$major-$age-$revision"
- ;;
-
- *)
- $echo "$modename: unknown library version type \`$version_type'" 1>&2
- echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2
- exit 1
- ;;
- esac
-
- # Clear the version info if we defaulted, and they specified a release.
- if test -z "$vinfo" && test -n "$release"; then
- major=
- verstring="0.0"
- if test "$need_version" = no; then
- versuffix=
- else
- versuffix=".0.0"
- fi
- fi
-
- # Remove version info from name if versioning should be avoided
- if test "$avoid_version" = yes && test "$need_version" = no; then
- major=
- versuffix=
- verstring=""
- fi
-
- # Check to see if the archive will have undefined symbols.
- if test "$allow_undefined" = yes; then
- if test "$allow_undefined_flag" = unsupported; then
- $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2
- build_libtool_libs=no
- build_old_libs=yes
- fi
- else
- # Don't allow undefined symbols.
- allow_undefined_flag="$no_undefined_flag"
- fi
-
- dependency_libs="$deplibs"
- case "$host" in
- *-*-cygwin* | *-*-mingw* | *-*-os2* | *-*-beos*)
- # these systems don't actually have a c library (as such)!
- ;;
- *-*-rhapsody*)
- # rhapsody is a little odd...
- deplibs="$deplibs -framework System"
- ;;
- *)
- # Add libc to deplibs on all other systems.
- deplibs="$deplibs -lc"
- ;;
- esac
- fi
-
- # Create the output directory, or remove our outputs if we need to.
- if test -d $output_objdir; then
- $show "${rm}r $output_objdir/$outputname $output_objdir/$libname.* $output_objdir/${libname}${release}.*"
- $run ${rm}r $output_objdir/$outputname $output_objdir/$libname.* $output_objdir/${libname}${release}.*
- else
- $show "$mkdir $output_objdir"
- $run $mkdir $output_objdir
- status=$?
- if test $status -ne 0 && test ! -d $output_objdir; then
- exit $status
- fi
- fi
-
- # Now set the variables for building old libraries.
- if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
- oldlibs="$oldlibs $output_objdir/$libname.$libext"
-
- # Transform .lo files to .o files.
- oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP`
- fi
-
- if test "$build_libtool_libs" = yes; then
- # Transform deplibs into only deplibs that can be linked in shared.
- name_save=$name
- libname_save=$libname
- release_save=$release
- versuffix_save=$versuffix
- major_save=$major
- # I'm not sure if I'm treating the release correctly. I think
- # release should show up in the -l (ie -lgmp5) so we don't want to
- # add it in twice. Is that correct?
- release=""
- versuffix=""
- major=""
- newdeplibs=
- droppeddeps=no
- case "$deplibs_check_method" in
- pass_all)
- # Don't check for shared/static. Everything works.
- # This might be a little naive. We might want to check
- # whether the library exists or not. But this is on
- # osf3 & osf4 and I'm not really sure... Just
- # implementing what was already the behaviour.
- newdeplibs=$deplibs
- ;;
- test_compile)
- # This code stresses the "libraries are programs" paradigm to its
- # limits. Maybe even breaks it. We compile a program, linking it
- # against the deplibs as a proxy for the library. Then we can check
- # whether they linked in statically or dynamically with ldd.
- $rm conftest.c
- cat > conftest.c <<EOF
- int main() { return 0; }
-EOF
- $rm conftest
- $CC -o conftest conftest.c $deplibs
- if test $? -eq 0 ; then
- ldd_output=`ldd conftest`
- for i in $deplibs; do
- name="`expr $i : '-l\(.*\)'`"
- # If $name is empty we are operating on a -L argument.
- if test "$name" != "" ; then
- libname=`eval \\$echo \"$libname_spec\"`
- deplib_matches=`eval \\$echo \"$library_names_spec\"`
- set dummy $deplib_matches
- deplib_match=$2
- if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
- newdeplibs="$newdeplibs $i"
- else
- droppeddeps=yes
- echo
- echo "*** Warning: This library needs some functionality provided by $i."
- echo "*** I have the capability to make that library automatically link in when"
- echo "*** you link to this library. But I can only do this if you have a"
- echo "*** shared version of the library, which you do not appear to have."
- fi
- else
- newdeplibs="$newdeplibs $i"
- fi
- done
- else
- # Error occured in the first compile. Let's try to salvage the situation:
- # Compile a seperate program for each library.
- for i in $deplibs; do
- name="`expr $i : '-l\(.*\)'`"
- # If $name is empty we are operating on a -L argument.
- if test "$name" != "" ; then
- $rm conftest
- $CC -o conftest conftest.c $i
- # Did it work?
- if test $? -eq 0 ; then
- ldd_output=`ldd conftest`
- libname=`eval \\$echo \"$libname_spec\"`
- deplib_matches=`eval \\$echo \"$library_names_spec\"`
- set dummy $deplib_matches
- deplib_match=$2
- if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
- newdeplibs="$newdeplibs $i"
- else
- droppeddeps=yes
- echo
- echo "*** Warning: This library needs some functionality provided by $i."
- echo "*** I have the capability to make that library automatically link in when"
- echo "*** you link to this library. But I can only do this if you have a"
- echo "*** shared version of the library, which you do not appear to have."
- fi
- else
- droppeddeps=yes
- echo
- echo "*** Warning! Library $i is needed by this library but I was not able to"
- echo "*** make it link in! You will probably need to install it or some"
- echo "*** library that it depends on before this library will be fully"
- echo "*** functional. Installing it before continuing would be even better."
- fi
- else
- newdeplibs="$newdeplibs $i"
- fi
- done
- fi
- ;;
- file_magic*)
- set dummy $deplibs_check_method
- file_magic_regex="`expr \"$deplibs_check_method\" : \"$2 \(.*\)\"`"
- for a_deplib in $deplibs; do
- name="`expr $a_deplib : '-l\(.*\)'`"
- # If $name is empty we are operating on a -L argument.
- if test "$name" != "" ; then
- libname=`eval \\$echo \"$libname_spec\"`
- for i in $lib_search_path; do
- potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
- for potent_lib in $potential_libs; do
- # Follow soft links.
- if ls -lLd "$potent_lib" 2>/dev/null \
- | grep " -> " >/dev/null; then
- continue
- fi
- # The statement above tries to avoid entering an
- # endless loop below, in case of cyclic links.
- # We might still enter an endless loop, since a link
- # loop can be closed while we follow links,
- # but so what?
- potlib="$potent_lib"
- while test -h "$potlib" 2>/dev/null; do
- potliblink=`ls -ld $potlib | sed 's/.* -> //'`
- case "$potliblink" in
- [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
- *) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";;
- esac
- done
- if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \
- | sed 10q \
- | egrep "$file_magic_regex" > /dev/null; then
- newdeplibs="$newdeplibs $a_deplib"
- a_deplib=""
- break 2
- fi
- done
- done
- if test -n "$a_deplib" ; then
- droppeddeps=yes
- echo
- echo "*** Warning: This library needs some functionality provided by $a_deplib."
- echo "*** I have the capability to make that library automatically link in when"
- echo "*** you link to this library. But I can only do this if you have a"
- echo "*** shared version of the library, which you do not appear to have."
- fi
- else
- # Add a -L argument.
- newdeplibs="$newdeplibs $a_deplib"
- fi
- done # Gone through all deplibs.
- ;;
- none | unknown | *)
- newdeplibs=""
- if $echo "X $deplibs" | $Xsed -e 's/ -lc$//' \
- -e 's/ -[LR][^ ]*//g' -e 's/[ ]//g' |
- grep . >/dev/null; then
- echo
- if test "X$deplibs_check_method" = "Xnone"; then
- echo "*** Warning: inter-library dependencies are not supported in this platform."
- else
- echo "*** Warning: inter-library dependencies are not known to be supported."
- fi
- echo "*** All declared inter-library dependencies are being dropped."
- droppeddeps=yes
- fi
- ;;
- esac
- versuffix=$versuffix_save
- major=$major_save
- release=$release_save
- libname=$libname_save
- name=$name_save
-
- if test "$droppeddeps" = yes; then
- if test "$module" = yes; then
- echo
- echo "*** Warning: libtool could not satisfy all declared inter-library"
- echo "*** dependencies of module $libname. Therefore, libtool will create"
- echo "*** a static module, that should work as long as the dlopening"
- echo "*** application is linked with the -dlopen flag."
- if test -z "$global_symbol_pipe"; then
- echo
- echo "*** However, this would only work if libtool was able to extract symbol"
- echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
- echo "*** not find such a program. So, this module is probably useless."
- echo "*** \`nm' from GNU binutils and a full rebuild may help."
- fi
- if test "$build_old_libs" = no; then
- oldlibs="$output_objdir/$libname.$libext"
- build_libtool_libs=module
- build_old_libs=yes
- else
- build_libtool_libs=no
- fi
- else
- echo "*** The inter-library dependencies that have been dropped here will be"
- echo "*** automatically added whenever a program is linked with this library"
- echo "*** or is declared to -dlopen it."
- fi
- fi
- # Done checking deplibs!
- deplibs=$newdeplibs
- fi
-
- # All the library-specific variables (install_libdir is set above).
- library_names=
- old_library=
- dlname=
-
- # Test again, we may have decided not to build it any more
- if test "$build_libtool_libs" = yes; then
- # Get the real and link names of the library.
- eval library_names=\"$library_names_spec\"
- set dummy $library_names
- realname="$2"
- shift; shift
-
- if test -n "$soname_spec"; then
- eval soname=\"$soname_spec\"
- else
- soname="$realname"
- fi
-
- lib="$output_objdir/$realname"
- for link
- do
- linknames="$linknames $link"
- done
-
- # Ensure that we have .o objects for linkers which dislike .lo
- # (e.g. aix) in case we are running --disable-static
- for obj in $libobjs; do
- xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'`
- if test "X$xdir" = "X$obj"; then
- xdir="."
- else
- xdir="$xdir"
- fi
- baseobj=`$echo "X$obj" | $Xsed -e 's%^.*/%%'`
- oldobj=`$echo "X$baseobj" | $Xsed -e "$lo2o"`
- if test ! -f $xdir/$oldobj; then
- $show "(cd $xdir && ${LN_S} $baseobj $oldobj)"
- $run eval '(cd $xdir && ${LN_S} $baseobj $oldobj)' || exit $?
- fi
- done
-
- # Use standard objects if they are pic
- test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
-
- # Prepare the list of exported symbols
- if test -z "$export_symbols"; then
- if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
- $show "generating symbol list for \`$libname.la'"
- export_symbols="$output_objdir/$libname.exp"
- $run $rm $export_symbols
- eval cmds=\"$export_symbols_cmds\"
- IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
- for cmd in $cmds; do
- IFS="$save_ifs"
- $show "$cmd"
- $run eval "$cmd" || exit $?
- done
- IFS="$save_ifs"
- if test -n "$export_symbols_regex"; then
- $show "egrep -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\""
- $run eval 'egrep -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
- $show "$mv \"${export_symbols}T\" \"$export_symbols\""
- $run eval '$mv "${export_symbols}T" "$export_symbols"'
- fi
- fi
- fi
-
- if test -n "$export_symbols" && test -n "$include_expsyms"; then
- $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"'
- fi
-
- if test -n "$convenience"; then
- if test -n "$whole_archive_flag_spec"; then
- eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
- else
- gentop="$output_objdir/${outputname}x"
- $show "${rm}r $gentop"
- $run ${rm}r "$gentop"
- $show "mkdir $gentop"
- $run mkdir "$gentop"
- status=$?
- if test $status -ne 0 && test ! -d "$gentop"; then
- exit $status
- fi
- generated="$generated $gentop"
-
- for xlib in $convenience; do
- # Extract the objects.
- case "$xlib" in
- [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;;
- *) xabs=`pwd`"/$xlib" ;;
- esac
- xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'`
- xdir="$gentop/$xlib"
-
- $show "${rm}r $xdir"
- $run ${rm}r "$xdir"
- $show "mkdir $xdir"
- $run mkdir "$xdir"
- status=$?
- if test $status -ne 0 && test ! -d "$xdir"; then
- exit $status
- fi
- $show "(cd $xdir && $AR x $xabs)"
- $run eval "(cd \$xdir && $AR x \$xabs)" || exit $?
-
- libobjs="$libobjs "`find $xdir -name \*.o -print -o -name \*.lo -print | $NL2SP`
- done
- fi
- fi
-
- if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
- eval flag=\"$thread_safe_flag_spec\"
- linkopts="$linkopts $flag"
- fi
-
- # Do each of the archive commands.
- if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
- eval cmds=\"$archive_expsym_cmds\"
- else
- eval cmds=\"$archive_cmds\"
- fi
- IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
- for cmd in $cmds; do
- IFS="$save_ifs"
- $show "$cmd"
- $run eval "$cmd" || exit $?
- done
- IFS="$save_ifs"
-
- # Create links to the real library.
- for linkname in $linknames; do
- if test "$realname" != "$linkname"; then
- $show "(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)"
- $run eval '(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)' || exit $?
- fi
- done
-
- # If -module or -export-dynamic was specified, set the dlname.
- if test "$module" = yes || test "$export_dynamic" = yes; then
- # On all known operating systems, these are identical.
- dlname="$soname"
- fi
- fi
- ;;
-
- *.lo | *.o | *.obj)
- if test -n "$link_against_libtool_libs"; then
- $echo "$modename: error: cannot link libtool libraries into objects" 1>&2
- exit 1
- fi
-
- if test -n "$deplibs"; then
- $echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2
- fi
-
- if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
- $echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2
- fi
-
- if test -n "$rpath"; then
- $echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2
- fi
-
- if test -n "$xrpath"; then
- $echo "$modename: warning: \`-R' is ignored for objects" 1>&2
- fi
-
- if test -n "$vinfo"; then
- $echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2
- fi
-
- if test -n "$release"; then
- $echo "$modename: warning: \`-release' is ignored for objects" 1>&2
- fi
-
- case "$output" in
- *.lo)
- if test -n "$objs"; then
- $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2
- exit 1
- fi
- libobj="$output"
- obj=`$echo "X$output" | $Xsed -e "$lo2o"`
- ;;
- *)
- libobj=
- obj="$output"
- ;;
- esac
-
- # Delete the old objects.
- $run $rm $obj $libobj
-
- # Objects from convenience libraries. This assumes
- # single-version convenience libraries. Whenever we create
- # different ones for PIC/non-PIC, this we'll have to duplicate
- # the extraction.
- reload_conv_objs=
- gentop=
- # reload_cmds runs $LD directly, so let us get rid of
- # -Wl from whole_archive_flag_spec
- wl=
-
- if test -n "$convenience"; then
- if test -n "$whole_archive_flag_spec"; then
- eval reload_conv_objs=\"\$reload_objs $whole_archive_flag_spec\"
- else
- gentop="$output_objdir/${obj}x"
- $show "${rm}r $gentop"
- $run ${rm}r "$gentop"
- $show "mkdir $gentop"
- $run mkdir "$gentop"
- status=$?
- if test $status -ne 0 && test ! -d "$gentop"; then
- exit $status
- fi
- generated="$generated $gentop"
-
- for xlib in $convenience; do
- # Extract the objects.
- case "$xlib" in
- [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;;
- *) xabs=`pwd`"/$xlib" ;;
- esac
- xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'`
- xdir="$gentop/$xlib"
-
- $show "${rm}r $xdir"
- $run ${rm}r "$xdir"
- $show "mkdir $xdir"
- $run mkdir "$xdir"
- status=$?
- if test $status -ne 0 && test ! -d "$xdir"; then
- exit $status
- fi
- $show "(cd $xdir && $AR x $xabs)"
- $run eval "(cd \$xdir && $AR x \$xabs)" || exit $?
-
- reload_conv_objs="$reload_objs "`find $xdir -name \*.o -print -o -name \*.lo -print | $NL2SP`
- done
- fi
- fi
-
- # Create the old-style object.
- reload_objs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs"
-
- output="$obj"
- eval cmds=\"$reload_cmds\"
- IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
- for cmd in $cmds; do
- IFS="$save_ifs"
- $show "$cmd"
- $run eval "$cmd" || exit $?
- done
- IFS="$save_ifs"
-
- # Exit if we aren't doing a library object file.
- if test -z "$libobj"; then
- if test -n "$gentop"; then
- $show "${rm}r $gentop"
- $run ${rm}r $gentop
- fi
-
- exit 0
- fi
-
- if test "$build_libtool_libs" != yes; then
- if test -n "$gentop"; then
- $show "${rm}r $gentop"
- $run ${rm}r $gentop
- fi
-
- # Create an invalid libtool object if no PIC, so that we don't
- # accidentally link it into a program.
- $show "echo timestamp > $libobj"
- $run eval "echo timestamp > $libobj" || exit $?
- exit 0
- fi
-
- if test -n "$pic_flag"; then
- # Only do commands if we really have different PIC objects.
- reload_objs="$libobjs $reload_conv_objs"
- output="$libobj"
- eval cmds=\"$reload_cmds\"
- IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
- for cmd in $cmds; do
- IFS="$save_ifs"
- $show "$cmd"
- $run eval "$cmd" || exit $?
- done
- IFS="$save_ifs"
- else
- # Just create a symlink.
- $show $rm $libobj
- $run $rm $libobj
- xdir=`$echo "X$libobj" | $Xsed -e 's%/[^/]*$%%'`
- if test "X$xdir" = "X$libobj"; then
- xdir="."
- else
- xdir="$xdir"
- fi
- baseobj=`$echo "X$libobj" | $Xsed -e 's%^.*/%%'`
- oldobj=`$echo "X$baseobj" | $Xsed -e "$lo2o"`
- $show "(cd $xdir && $LN_S $oldobj $baseobj)"
- $run eval '(cd $xdir && $LN_S $oldobj $baseobj)' || exit $?
- fi
-
- if test -n "$gentop"; then
- $show "${rm}r $gentop"
- $run ${rm}r $gentop
- fi
-
- exit 0
- ;;
-
- # Anything else should be a program.
- *)
- if test -n "$vinfo"; then
- $echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2
- fi
-
- if test -n "$release"; then
- $echo "$modename: warning: \`-release' is ignored for programs" 1>&2
- fi
-
- if test "$preload" = yes; then
- if test "$dlopen" = unknown && test "$dlopen_self" = unknown &&
- test "$dlopen_self_static" = unknown; then
- $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support."
- fi
- fi
-
- if test -n "$rpath$xrpath"; then
- # If the user specified any rpath flags, then add them.
- for libdir in $rpath $xrpath; do
- # This is the magic to use -rpath.
- case "$compile_rpath " in
- *" $libdir "*) ;;
- *) compile_rpath="$compile_rpath $libdir" ;;
- esac
- case "$finalize_rpath " in
- *" $libdir "*) ;;
- *) finalize_rpath="$finalize_rpath $libdir" ;;
- esac
- done
- fi
-
- # Now hardcode the library paths
- rpath=
- hardcode_libdirs=
- for libdir in $compile_rpath $finalize_rpath; do
- if test -n "$hardcode_libdir_flag_spec"; then
- if test -n "$hardcode_libdir_separator"; then
- if test -z "$hardcode_libdirs"; then
- hardcode_libdirs="$libdir"
- else
- # Just accumulate the unique libdirs.
- case "$hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator" in
- *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
- ;;
- *)
- hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
- ;;
- esac
- fi
- else
- eval flag=\"$hardcode_libdir_flag_spec\"
- rpath="$rpath $flag"
- fi
- elif test -n "$runpath_var"; then
- case "$perm_rpath " in
- *" $libdir "*) ;;
- *) perm_rpath="$perm_rpath $libdir" ;;
- esac
- fi
- done
- # Substitute the hardcoded libdirs into the rpath.
- if test -n "$hardcode_libdir_separator" &&
- test -n "$hardcode_libdirs"; then
- libdir="$hardcode_libdirs"
- eval rpath=\" $hardcode_libdir_flag_spec\"
- fi
- compile_rpath="$rpath"
-
- rpath=
- hardcode_libdirs=
- for libdir in $finalize_rpath; do
- if test -n "$hardcode_libdir_flag_spec"; then
- if test -n "$hardcode_libdir_separator"; then
- if test -z "$hardcode_libdirs"; then
- hardcode_libdirs="$libdir"
- else
- # Just accumulate the unique libdirs.
- case "$hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator" in
- *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
- ;;
- *)
- hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
- ;;
- esac
- fi
- else
- eval flag=\"$hardcode_libdir_flag_spec\"
- rpath="$rpath $flag"
- fi
- elif test -n "$runpath_var"; then
- case "$finalize_perm_rpath " in
- *" $libdir "*) ;;
- *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;;
- esac
- fi
- done
- # Substitute the hardcoded libdirs into the rpath.
- if test -n "$hardcode_libdir_separator" &&
- test -n "$hardcode_libdirs"; then
- libdir="$hardcode_libdirs"
- eval rpath=\" $hardcode_libdir_flag_spec\"
- fi
- finalize_rpath="$rpath"
-
- output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'`
- if test "X$output_objdir" = "X$output"; then
- output_objdir="$objdir"
- else
- output_objdir="$output_objdir/$objdir"
- fi
-
- # Create the binary in the object directory, then wrap it.
- if test ! -d $output_objdir; then
- $show "$mkdir $output_objdir"
- $run $mkdir $output_objdir
- status=$?
- if test $status -ne 0 && test ! -d $output_objdir; then
- exit $status
- fi
- fi
-
- if test -n "$libobjs" && test "$build_old_libs" = yes; then
- # Transform all the library objects into standard objects.
- compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
- finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
- fi
-
- dlsyms=
- if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
- if test -n "$NM" && test -n "$global_symbol_pipe"; then
- dlsyms="${outputname}S.c"
- else
- $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2
- fi
- fi
-
- if test -n "$dlsyms"; then
- case "$dlsyms" in
- "") ;;
- *.c)
- # Discover the nlist of each of the dlfiles.
- nlist="$output_objdir/${outputname}.nm"
-
- $show "$rm $nlist ${nlist}S ${nlist}T"
- $run $rm "$nlist" "${nlist}S" "${nlist}T"
-
- # Parse the name list into a source file.
- $show "creating $output_objdir/$dlsyms"
-
- test -z "$run" && $echo > "$output_objdir/$dlsyms" "\
-/* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */
-/* Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP */
-
-#ifdef __cplusplus
-extern \"C\" {
-#endif
-
-/* Prevent the only kind of declaration conflicts we can make. */
-#define lt_preloaded_symbols some_other_symbol
-
-/* External symbol declarations for the compiler. */\
-"
-
- if test "$dlself" = yes; then
- $show "generating symbol list for \`$output'"
-
- test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist"
-
- # Add our own program objects to the symbol list.
- progfiles=`$echo "X$objs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
- for arg in $progfiles; do
- $show "extracting global C symbols from \`$arg'"
- $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
- done
-
- if test -n "$exclude_expsyms"; then
- $run eval 'egrep -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
- $run eval '$mv "$nlist"T "$nlist"'
- fi
-
- if test -n "$export_symbols_regex"; then
- $run eval 'egrep -e "$export_symbols_regex" "$nlist" > "$nlist"T'
- $run eval '$mv "$nlist"T "$nlist"'
- fi
-
- # Prepare the list of exported symbols
- if test -z "$export_symbols"; then
- export_symbols="$output_objdir/$output.exp"
- $run $rm $export_symbols
- $run eval "sed -n -e '/^: @PROGRAM@$/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
- else
- $run eval "sed -e 's/\([][.*^$]\)/\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$output.exp"'
- $run eval 'grep -f "$output_objdir/$output.exp" < "$nlist" > "$nlist"T'
- $run eval 'mv "$nlist"T "$nlist"'
- fi
- fi
-
- for arg in $dlprefiles; do
- $show "extracting global C symbols from \`$arg'"
- name=`echo "$arg" | sed -e 's%^.*/%%'`
- $run eval 'echo ": $name " >> "$nlist"'
- $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
- done
-
- if test -z "$run"; then
- # Make sure we have at least an empty file.
- test -f "$nlist" || : > "$nlist"
-
- if test -n "$exclude_expsyms"; then
- egrep -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
- $mv "$nlist"T "$nlist"
- fi
-
- # Try sorting and uniquifying the output.
- if grep -v "^: " < "$nlist" | sort +2 | uniq > "$nlist"S; then
- :
- else
- grep -v "^: " < "$nlist" > "$nlist"S
- fi
-
- if test -f "$nlist"S; then
- eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$dlsyms"'
- else
- echo '/* NONE */' >> "$output_objdir/$dlsyms"
- fi
-
- $echo >> "$output_objdir/$dlsyms" "\
-
-#undef lt_preloaded_symbols
-
-#if defined (__STDC__) && __STDC__
-# define lt_ptr_t void *
-#else
-# define lt_ptr_t char *
-# define const
-#endif
-
-/* The mapping between symbol names and symbols. */
-const struct {
- const char *name;
- lt_ptr_t address;
-}
-lt_preloaded_symbols[] =
-{\
-"
-
- sed -n -e 's/^: \([^ ]*\) $/ {\"\1\", (lt_ptr_t) 0},/p' \
- -e 's/^. \([^ ]*\) \([^ ]*\)$/ {"\2", (lt_ptr_t) \&\2},/p' \
- < "$nlist" >> "$output_objdir/$dlsyms"
-
- $echo >> "$output_objdir/$dlsyms" "\
- {0, (lt_ptr_t) 0}
-};
-
-/* This works around a problem in FreeBSD linker */
-#ifdef FREEBSD_WORKAROUND
-static const void *lt_preloaded_setup() {
- return lt_preloaded_symbols;
-}
-#endif
-
-#ifdef __cplusplus
-}
-#endif\
-"
- fi
-
- pic_flag_for_symtable=
- case "$host" in
- # compiling the symbol table file with pic_flag works around
- # a FreeBSD bug that causes programs to crash when -lm is
- # linked before any other PIC object. But we must not use
- # pic_flag when linking with -static. The problem exists in
- # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
- *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)\r
- case "$compile_command " in
- *" -static "*) ;;
- *) pic_flag_for_symtable=" $pic_flag -DPIC -DFREEBSD_WORKAROUND";;
- esac;;
- *-*-hpux*)
- case "$compile_command " in
- *" -static "*) ;;
- *) pic_flag_for_symtable=" $pic_flag -DPIC";;
- esac
- esac
-
- # Now compile the dynamic symbol file.
- $show "(cd $output_objdir && $CC -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")"
- $run eval '(cd $output_objdir && $CC -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $?
-
- # Clean up the generated files.
- $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T"
- $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T"
-
- # Transform the symbol file into the correct name.
- compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
- finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
- ;;
- *)
- $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2
- exit 1
- ;;
- esac
- else
- # We keep going just in case the user didn't refer to
- # lt_preloaded_symbols. The linker will fail if global_symbol_pipe
- # really was required.
-
- # Nullify the symbol file.
- compile_command=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"`
- finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"`
- fi
-
- if test -z "$link_against_libtool_libs" || test "$build_libtool_libs" != yes; then
- # Replace the output file specification.
- compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
- link_command="$compile_command$compile_rpath"
-
- # We have no uninstalled library dependencies, so finalize right now.
- $show "$link_command"
- $run eval "$link_command"
- status=$?
-
- # Delete the generated files.
- if test -n "$dlsyms"; then
- $show "$rm $output_objdir/${outputname}S.${objext}"
- $run $rm "$output_objdir/${outputname}S.${objext}"
- fi
-
- exit $status
- fi
-
- if test -n "$shlibpath_var"; then
- # We should set the shlibpath_var
- rpath=
- for dir in $temp_rpath; do
- case "$dir" in
- [\\/]* | [A-Za-z]:[\\/]*)
- # Absolute path.
- rpath="$rpath$dir:"
- ;;
- *)
- # Relative path: add a thisdir entry.
- rpath="$rpath\$thisdir/$dir:"
- ;;
- esac
- done
- temp_rpath="$rpath"
- fi
-
- if test -n "$compile_shlibpath$finalize_shlibpath"; then
- compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
- fi
- if test -n "$finalize_shlibpath"; then
- finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
- fi
-
- compile_var=
- finalize_var=
- if test -n "$runpath_var"; then
- if test -n "$perm_rpath"; then
- # We should set the runpath_var.
- rpath=
- for dir in $perm_rpath; do
- rpath="$rpath$dir:"
- done
- compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
- fi
- if test -n "$finalize_perm_rpath"; then
- # We should set the runpath_var.
- rpath=
- for dir in $finalize_perm_rpath; do
- rpath="$rpath$dir:"
- done
- finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
- fi
- fi
-
- if test "$hardcode_action" = relink; then
- # Fast installation is not supported
- link_command="$compile_var$compile_command$compile_rpath"
- relink_command="$finalize_var$finalize_command$finalize_rpath"
-
- $echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2
- $echo "$modename: \`$output' will be relinked during installation" 1>&2
- else
- if test "$fast_install" != no; then
- link_command="$finalize_var$compile_command$finalize_rpath"
- if test "$fast_install" = yes; then
- relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'`
- else
- # fast_install is set to needless
- relink_command=
- fi
- else
- link_command="$compile_var$compile_command$compile_rpath"
- relink_command="$finalize_var$finalize_command$finalize_rpath"
- fi
- fi
-
- # Replace the output file specification.
- link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
-
- # Delete the old output files.
- $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname
-
- $show "$link_command"
- $run eval "$link_command" || exit $?
-
- # Now create the wrapper script.
- $show "creating $output"
-
- # Quote the relink command for shipping.
- if test -n "$relink_command"; then
- relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"`
- fi
-
- # Quote $echo for shipping.
- if test "X$echo" = "X$SHELL $0 --fallback-echo"; then
- case "$0" in
- [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $0 --fallback-echo";;
- *) qecho="$SHELL `pwd`/$0 --fallback-echo";;
- esac
- qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"`
- else
- qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"`
- fi
-
- # Only actually do things if our run command is non-null.
- if test -z "$run"; then
- # win32 will think the script is a binary if it has
- # a .exe suffix, so we strip it off here.
- case $output in
- *.exe) output=`echo $output|sed 's,.exe$,,'` ;;
- esac
- $rm $output
- trap "$rm $output; exit 1" 1 2 15
-
- $echo > $output "\
-#! $SHELL
-
-# $output - temporary wrapper script for $objdir/$outputname
-# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
-#
-# The $output program cannot be directly executed until all the libtool
-# libraries that it depends on are installed.
-#
-# This wrapper script should never be moved out of the build directory.
-# If it is, it will not operate correctly.
-
-# Sed substitution that helps us do robust quoting. It backslashifies
-# metacharacters that are still active within double-quoted strings.
-Xsed='sed -e 1s/^X//'
-sed_quote_subst='$sed_quote_subst'
-
-# The HP-UX ksh and POSIX shell print the target directory to stdout
-# if CDPATH is set.
-if test \"\${CDPATH+set}\" = set; then CDPATH=:; export CDPATH; fi
-
-relink_command=\"$relink_command\"
-
-# This environment variable determines our operation mode.
-if test \"\$libtool_install_magic\" = \"$magic\"; then
- # install mode needs the following variable:
- link_against_libtool_libs='$link_against_libtool_libs'
-else
- # When we are sourced in execute mode, \$file and \$echo are already set.
- if test \"\$libtool_execute_magic\" != \"$magic\"; then
- echo=\"$qecho\"
- file=\"\$0\"
- # Make sure echo works.
- if test \"X\$1\" = X--no-reexec; then
- # Discard the --no-reexec flag, and continue.
- shift
- elif test \"X\`(\$echo '\t') 2>/dev/null\`\" = 'X\t'; then
- # Yippee, \$echo works!
- :
- else
- # Restart under the correct shell, and then maybe \$echo will work.
- exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"}
- fi
- fi\
-"
- $echo >> $output "\
-
- # Find the directory that this script lives in.
- thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\`
- test \"x\$thisdir\" = \"x\$file\" && thisdir=.
-
- # Follow symbolic links until we get to the real thisdir.
- file=\`ls -ld \"\$file\" | sed -n 's/.*-> //p'\`
- while test -n \"\$file\"; do
- destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\`
-
- # If there was a directory component, then change thisdir.
- if test \"x\$destdir\" != \"x\$file\"; then
- case \"\$destdir\" in
- [\\/]* | [A-Za-z]:[\\/]*) thisdir=\"\$destdir\" ;;
- *) thisdir=\"\$thisdir/\$destdir\" ;;
- esac
- fi
-
- file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\`
- file=\`ls -ld \"\$thisdir/\$file\" | sed -n 's/.*-> //p'\`
- done
-
- # Try to get the absolute directory name.
- absdir=\`cd \"\$thisdir\" && pwd\`
- test -n \"\$absdir\" && thisdir=\"\$absdir\"
-"
-
- if test "$fast_install" = yes; then
- echo >> $output "\
- program=lt-'$outputname'
- progdir=\"\$thisdir/$objdir\"
-
- if test ! -f \"\$progdir/\$program\" || \\
- { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | sed 1q\`; \\
- test \"X\$file\" != \"X\$progdir/\$program\"; }; then
-
- file=\"\$\$-\$program\"
-
- if test ! -d \"\$progdir\"; then
- $mkdir \"\$progdir\"
- else
- $rm \"\$progdir/\$file\"
- fi"
-
- echo >> $output "\
-
- # relink executable if necessary
- if test -n \"\$relink_command\"; then
- if (cd \"\$thisdir\" && eval \$relink_command); then :
- else
- $rm \"\$progdir/\$file\"
- exit 1
- fi
- fi
-
- $mv \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
- { $rm \"\$progdir/\$program\";
- $mv \"\$progdir/\$file\" \"\$progdir/\$program\"; }
- $rm \"\$progdir/\$file\"
- fi"
- else
- echo >> $output "\
- program='$outputname'
- progdir=\"\$thisdir/$objdir\"
-"
- fi
-
- echo >> $output "\
-
- if test -f \"\$progdir/\$program\"; then"
-
- # Export our shlibpath_var if we have one.
- if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
- $echo >> $output "\
- # Add our own library path to $shlibpath_var
- $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
-
- # Some systems cannot cope with colon-terminated $shlibpath_var
- # The second colon is a workaround for a bug in BeOS R4 sed
- $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\`
-
- export $shlibpath_var
-"
- fi
-
- # fixup the dll searchpath if we need to.
- if test -n "$dllsearchpath"; then
- $echo >> $output "\
- # Add the dll search path components to the executable PATH
- PATH=$dllsearchpath:\$PATH
-"
- fi
-
- $echo >> $output "\
- if test \"\$libtool_execute_magic\" != \"$magic\"; then
- # Run the actual program with our arguments.
-"
- case $host in
- # win32 systems need to use the prog path for dll
- # lookup to work
- *-*-cygwin*)
- $echo >> $output "\
- exec \$progdir/\$program \${1+\"\$@\"}
-"
- ;;
-
- # Backslashes separate directories on plain windows
- *-*-mingw | *-*-os2*)
- $echo >> $output "\
- exec \$progdir\\\\\$program \${1+\"\$@\"}
-"
- ;;
-
- *)
- $echo >> $output "\
- # Export the path to the program.
- PATH=\"\$progdir:\$PATH\"
- export PATH
-
- exec \$program \${1+\"\$@\"}
-"
- ;;
- esac
- $echo >> $output "\
- \$echo \"\$0: cannot exec \$program \${1+\"\$@\"}\"
- exit 1
- fi
- else
- # The program doesn't exist.
- \$echo \"\$0: error: \$progdir/\$program does not exist\" 1>&2
- \$echo \"This script is just a wrapper for \$program.\" 1>&2
- echo \"See the $PACKAGE documentation for more information.\" 1>&2
- exit 1
- fi
-fi\
-"
- chmod +x $output
- fi
- exit 0
- ;;
- esac
-
- # See if we need to build an old-fashioned archive.
- for oldlib in $oldlibs; do
-
- if test "$build_libtool_libs" = convenience; then
- oldobjs="$libobjs_save"
- addlibs="$convenience"
- build_libtool_libs=no
- else
- if test "$build_libtool_libs" = module; then
- oldobjs="$libobjs_save"
- build_libtool_libs=no
- else
- oldobjs="$objs "`$echo "X$libobjs_save" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`
- fi
- addlibs="$old_convenience"
- fi
-
- if test -n "$addlibs"; then
- gentop="$output_objdir/${outputname}x"
- $show "${rm}r $gentop"
- $run ${rm}r "$gentop"
- $show "mkdir $gentop"
- $run mkdir "$gentop"
- status=$?
- if test $status -ne 0 && test ! -d "$gentop"; then
- exit $status
- fi
- generated="$generated $gentop"
-
- # Add in members from convenience archives.
- for xlib in $addlibs; do
- # Extract the objects.
- case "$xlib" in
- [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;;
- *) xabs=`pwd`"/$xlib" ;;
- esac
- xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'`
- xdir="$gentop/$xlib"
-
- $show "${rm}r $xdir"
- $run ${rm}r "$xdir"
- $show "mkdir $xdir"
- $run mkdir "$xdir"
- status=$?
- if test $status -ne 0 && test ! -d "$xdir"; then
- exit $status
- fi
- $show "(cd $xdir && $AR x $xabs)"
- $run eval "(cd \$xdir && $AR x \$xabs)" || exit $?
-
- oldobjs="$oldobjs "`find $xdir -name \*.${objext} -print -o -name \*.lo -print | $NL2SP`
- done
- fi
-
- # Do each command in the archive commands.
- if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
- eval cmds=\"$old_archive_from_new_cmds\"
- else
- # Ensure that we have .o objects in place in case we decided
- # not to build a shared library, and have fallen back to building
- # static libs even though --disable-static was passed!
- for oldobj in $oldobjs; do
- if test ! -f $oldobj; then
- xdir=`$echo "X$oldobj" | $Xsed -e 's%/[^/]*$%%'`
- if test "X$xdir" = "X$oldobj"; then
- xdir="."
- else
- xdir="$xdir"
- fi
- baseobj=`$echo "X$oldobj" | $Xsed -e 's%^.*/%%'`
- obj=`$echo "X$baseobj" | $Xsed -e "$o2lo"`
- $show "(cd $xdir && ${LN_S} $obj $baseobj)"
- $run eval '(cd $xdir && ${LN_S} $obj $baseobj)' || exit $?
- fi
- done
-
- eval cmds=\"$old_archive_cmds\"
- fi
- IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
- for cmd in $cmds; do
- IFS="$save_ifs"
- $show "$cmd"
- $run eval "$cmd" || exit $?
- done
- IFS="$save_ifs"
- done
-
- if test -n "$generated"; then
- $show "${rm}r$generated"
- $run ${rm}r$generated
- fi
-
- # Now create the libtool archive.
- case "$output" in
- *.la)
- old_library=
- test "$build_old_libs" = yes && old_library="$libname.$libext"
- $show "creating $output"
-
- if test -n "$xrpath"; then
- temp_xrpath=
- for libdir in $xrpath; do
- temp_xrpath="$temp_xrpath -R$libdir"
- done
- dependency_libs="$temp_xrpath $dependency_libs"
- fi
-
- # Only create the output if not a dry run.
- if test -z "$run"; then
- for installed in no yes; do
- if test "$installed" = yes; then
- if test -z "$install_libdir"; then
- break
- fi
- output="$output_objdir/$outputname"i
- fi
- $rm $output
- $echo > $output "\
-# $outputname - a libtool library file
-# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
-#
-# Please DO NOT delete this file!
-# It is necessary for linking the library.
-
-# The name that we can dlopen(3).
-dlname='$dlname'
-
-# Names of this library.
-library_names='$library_names'
-
-# The name of the static archive.
-old_library='$old_library'
-
-# Libraries that this one depends upon.
-dependency_libs='$dependency_libs'
-
-# Version information for $libname.
-current=$current
-age=$age
-revision=$revision
-
-# Is this an already installed library?
-installed=$installed
-
-# Directory that this library needs to be installed in:
-libdir='$install_libdir'\
-"
- done
- fi
-
- # Do a symbolic link so that the libtool archive can be found in
- # LD_LIBRARY_PATH before the program is installed.
- $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)"
- $run eval "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)" || exit $?
- ;;
- esac
- exit 0
- ;;
-
- # libtool install mode
- install)
- modename="$modename: install"
-
- # There may be an optional sh(1) argument at the beginning of
- # install_prog (especially on Windows NT).
- if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh; then
- # Aesthetically quote it.
- arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"`
- case "$arg" in
- *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*)
- arg="\"$arg\""
- ;;
- esac
- install_prog="$arg "
- arg="$1"
- shift
- else
- install_prog=
- arg="$nonopt"
- fi
-
- # The real first argument should be the name of the installation program.
- # Aesthetically quote it.
- arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
- case "$arg" in
- *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*)
- arg="\"$arg\""
- ;;
- esac
- install_prog="$install_prog$arg"
-
- # We need to accept at least all the BSD install flags.
- dest=
- files=
- opts=
- prev=
- install_type=
- isdir=no
- stripme=
- for arg
- do
- if test -n "$dest"; then
- files="$files $dest"
- dest="$arg"
- continue
- fi
-
- case "$arg" in
- -d) isdir=yes ;;
- -f) prev="-f" ;;
- -g) prev="-g" ;;
- -m) prev="-m" ;;
- -o) prev="-o" ;;
- -s)
- stripme=" -s"
- continue
- ;;
- -*) ;;
-
- *)
- # If the previous option needed an argument, then skip it.
- if test -n "$prev"; then
- prev=
- else
- dest="$arg"
- continue
- fi
- ;;
- esac
-
- # Aesthetically quote the argument.
- arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
- case "$arg" in
- *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*)
- arg="\"$arg\""
- ;;
- esac
- install_prog="$install_prog $arg"
- done
-
- if test -z "$install_prog"; then
- $echo "$modename: you must specify an install program" 1>&2
- $echo "$help" 1>&2
- exit 1
- fi
-
- if test -n "$prev"; then
- $echo "$modename: the \`$prev' option requires an argument" 1>&2
- $echo "$help" 1>&2
- exit 1
- fi
-
- if test -z "$files"; then
- if test -z "$dest"; then
- $echo "$modename: no file or destination specified" 1>&2
- else
- $echo "$modename: you must specify a destination" 1>&2
- fi
- $echo "$help" 1>&2
- exit 1
- fi
-
- # Strip any trailing slash from the destination.
- dest=`$echo "X$dest" | $Xsed -e 's%/$%%'`
-
- # Check to see that the destination is a directory.
- test -d "$dest" && isdir=yes
- if test "$isdir" = yes; then
- destdir="$dest"
- destname=
- else
- destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'`
- test "X$destdir" = "X$dest" && destdir=.
- destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'`
-
- # Not a directory, so check to see that there is only one file specified.
- set dummy $files
- if test $# -gt 2; then
- $echo "$modename: \`$dest' is not a directory" 1>&2
- $echo "$help" 1>&2
- exit 1
- fi
- fi
- case "$destdir" in
- [\\/]* | [A-Za-z]:[\\/]*) ;;
- *)
- for file in $files; do
- case "$file" in
- *.lo) ;;
- *)
- $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2
- $echo "$help" 1>&2
- exit 1
- ;;
- esac
- done
- ;;
- esac
-
- # This variable tells wrapper scripts just to set variables rather
- # than running their programs.
- libtool_install_magic="$magic"
-
- staticlibs=
- future_libdirs=
- current_libdirs=
- for file in $files; do
-
- # Do each installation.
- case "$file" in
- *.a | *.lib)
- # Do the static libraries later.
- staticlibs="$staticlibs $file"
- ;;
-
- *.la)
- # Check to see that this really is a libtool archive.
- if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
- else
- $echo "$modename: \`$file' is not a valid libtool archive" 1>&2
- $echo "$help" 1>&2
- exit 1
- fi
-
- library_names=
- old_library=
- # If there is no directory component, then add one.
- case "$file" in
- */* | *\\*) . $file ;;
- *) . ./$file ;;
- esac
-
- # Add the libdir to current_libdirs if it is the destination.
- if test "X$destdir" = "X$libdir"; then
- case "$current_libdirs " in
- *" $libdir "*) ;;
- *) current_libdirs="$current_libdirs $libdir" ;;
- esac
- else
- # Note the libdir as a future libdir.
- case "$future_libdirs " in
- *" $libdir "*) ;;
- *) future_libdirs="$future_libdirs $libdir" ;;
- esac
- fi
-
- dir="`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/"
- test "X$dir" = "X$file/" && dir=
- dir="$dir$objdir"
-
- # See the names of the shared library.
- set dummy $library_names
- if test -n "$2"; then
- realname="$2"
- shift
- shift
-
- # Install the shared library and build the symlinks.
- $show "$install_prog $dir/$realname $destdir/$realname"
- $run eval "$install_prog $dir/$realname $destdir/$realname" || exit $?
-
- if test $# -gt 0; then
- # Delete the old symlinks, and create new ones.
- for linkname
- do
- if test "$linkname" != "$realname"; then
- $show "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)"
- $run eval "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)"
- fi
- done
- fi
-
- # Do each command in the postinstall commands.
- lib="$destdir/$realname"
- eval cmds=\"$postinstall_cmds\"
- IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
- for cmd in $cmds; do
- IFS="$save_ifs"
- $show "$cmd"
- $run eval "$cmd" || exit $?
- done
- IFS="$save_ifs"
- fi
-
- # Install the pseudo-library for information purposes.
- name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
- instname="$dir/$name"i
- $show "$install_prog $instname $destdir/$name"
- $run eval "$install_prog $instname $destdir/$name" || exit $?
-
- # Maybe install the static library, too.
- test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library"
- ;;
-
- *.lo)
- # Install (i.e. copy) a libtool object.
-
- # Figure out destination file name, if it wasn't already specified.
- if test -n "$destname"; then
- destfile="$destdir/$destname"
- else
- destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
- destfile="$destdir/$destfile"
- fi
-
- # Deduce the name of the destination old-style object file.
- case "$destfile" in
- *.lo)
- staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"`
- ;;
- *.o | *.obj)
- staticdest="$destfile"
- destfile=
- ;;
- *)
- $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2
- $echo "$help" 1>&2
- exit 1
- ;;
- esac
-
- # Install the libtool object if requested.
- if test -n "$destfile"; then
- $show "$install_prog $file $destfile"
- $run eval "$install_prog $file $destfile" || exit $?
- fi
-
- # Install the old object if enabled.
- if test "$build_old_libs" = yes; then
- # Deduce the name of the old-style object file.
- staticobj=`$echo "X$file" | $Xsed -e "$lo2o"`
-
- $show "$install_prog $staticobj $staticdest"
- $run eval "$install_prog \$staticobj \$staticdest" || exit $?
- fi
- exit 0
- ;;
-
- *)
- # Figure out destination file name, if it wasn't already specified.
- if test -n "$destname"; then
- destfile="$destdir/$destname"
- else
- destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
- destfile="$destdir/$destfile"
- fi
-
- # Do a test to see if this is really a libtool program.
- if (sed -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
- link_against_libtool_libs=
- relink_command=
-
- # If there is no directory component, then add one.
- case "$file" in
- */* | *\\*) . $file ;;
- *) . ./$file ;;
- esac
-
- # Check the variables that should have been set.
- if test -z "$link_against_libtool_libs"; then
- $echo "$modename: invalid libtool wrapper script \`$file'" 1>&2
- exit 1
- fi
-
- finalize=yes
- for lib in $link_against_libtool_libs; do
- # Check to see that each library is installed.
- libdir=
- if test -f "$lib"; then
- # If there is no directory component, then add one.
- case "$lib" in
- */* | *\\*) . $lib ;;
- *) . ./$lib ;;
- esac
- fi
- libfile="$libdir/`$echo "X$lib" | $Xsed -e 's%^.*/%%g'`"
- if test -n "$libdir" && test ! -f "$libfile"; then
- $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2
- finalize=no
- fi
- done
-
- outputname=
- if test "$fast_install" = no && test -n "$relink_command"; then
- if test "$finalize" = yes && test -z "$run"; then
- tmpdir="/tmp"
- test -n "$TMPDIR" && tmpdir="$TMPDIR"
- tmpdir="$tmpdir/libtool-$$"
- if $mkdir -p "$tmpdir" && chmod 700 "$tmpdir"; then :
- else
- $echo "$modename: error: cannot create temporary directory \`$tmpdir'" 1>&2
- continue
- fi
- outputname="$tmpdir/$file"
- # Replace the output file specification.
- relink_command=`$echo "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'`
-
- $show "$relink_command"
- if $run eval "$relink_command"; then :
- else
- $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2
- ${rm}r "$tmpdir"
- continue
- fi
- file="$outputname"
- else
- $echo "$modename: warning: cannot relink \`$file'" 1>&2
- fi
- else
- # Install the binary that we compiled earlier.
- file=`$echo "X$file" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"`
- fi
- fi
-
- $show "$install_prog$stripme $file $destfile"
- $run eval "$install_prog\$stripme \$file \$destfile" || exit $?
- test -n "$outputname" && ${rm}r "$tmpdir"
- ;;
- esac
- done
-
- for file in $staticlibs; do
- name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
-
- # Set up the ranlib parameters.
- oldlib="$destdir/$name"
-
- $show "$install_prog $file $oldlib"
- $run eval "$install_prog \$file \$oldlib" || exit $?
-
- # Do each command in the postinstall commands.
- eval cmds=\"$old_postinstall_cmds\"
- IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
- for cmd in $cmds; do
- IFS="$save_ifs"
- $show "$cmd"
- $run eval "$cmd" || exit $?
- done
- IFS="$save_ifs"
- done
-
- if test -n "$future_libdirs"; then
- $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2
- fi
-
- if test -n "$current_libdirs"; then
- # Maybe just do a dry run.
- test -n "$run" && current_libdirs=" -n$current_libdirs"
- exec $SHELL $0 --finish$current_libdirs
- exit 1
- fi
-
- exit 0
- ;;
-
- # libtool finish mode
- finish)
- modename="$modename: finish"
- libdirs="$nonopt"
- admincmds=
-
- if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
- for dir
- do
- libdirs="$libdirs $dir"
- done
-
- for libdir in $libdirs; do
- if test -n "$finish_cmds"; then
- # Do each command in the finish commands.
- eval cmds=\"$finish_cmds\"
- IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
- for cmd in $cmds; do
- IFS="$save_ifs"
- $show "$cmd"
- $run eval "$cmd" || admincmds="$admincmds
- $cmd"
- done
- IFS="$save_ifs"
- fi
- if test -n "$finish_eval"; then
- # Do the single finish_eval.
- eval cmds=\"$finish_eval\"
- $run eval "$cmds" || admincmds="$admincmds
- $cmds"
- fi
- done
- fi
-
- # Exit here if they wanted silent mode.
- test "$show" = : && exit 0
-
- echo "----------------------------------------------------------------------"
- echo "Libraries have been installed in:"
- for libdir in $libdirs; do
- echo " $libdir"
- done
- echo
- echo "If you ever happen to want to link against installed libraries"
- echo "in a given directory, LIBDIR, you must either use libtool, and"
- echo "specify the full pathname of the library, or use \`-LLIBDIR'"
- echo "flag during linking and do at least one of the following:"
- if test -n "$shlibpath_var"; then
- echo " - add LIBDIR to the \`$shlibpath_var' environment variable"
- echo " during execution"
- fi
- if test -n "$runpath_var"; then
- echo " - add LIBDIR to the \`$runpath_var' environment variable"
- echo " during linking"
- fi
- if test -n "$hardcode_libdir_flag_spec"; then
- libdir=LIBDIR
- eval flag=\"$hardcode_libdir_flag_spec\"
-
- echo " - use the \`$flag' linker flag"
- fi
- if test -n "$admincmds"; then
- echo " - have your system administrator run these commands:$admincmds"
- fi
- if test -f /etc/ld.so.conf; then
- echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
- fi
- echo
- echo "See any operating system documentation about shared libraries for"
- echo "more information, such as the ld(1) and ld.so(8) manual pages."
- echo "----------------------------------------------------------------------"
- exit 0
- ;;
-
- # libtool execute mode
- execute)
- modename="$modename: execute"
-
- # The first argument is the command name.
- cmd="$nonopt"
- if test -z "$cmd"; then
- $echo "$modename: you must specify a COMMAND" 1>&2
- $echo "$help"
- exit 1
- fi
-
- # Handle -dlopen flags immediately.
- for file in $execute_dlfiles; do
- if test ! -f "$file"; then
- $echo "$modename: \`$file' is not a file" 1>&2
- $echo "$help" 1>&2
- exit 1
- fi
-
- dir=
- case "$file" in
- *.la)
- # Check to see that this really is a libtool archive.
- if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
- else
- $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
- $echo "$help" 1>&2
- exit 1
- fi
-
- # Read the libtool library.
- dlname=
- library_names=
-
- # If there is no directory component, then add one.
- case "$file" in
- */* | *\\*) . $file ;;
- *) . ./$file ;;
- esac
-
- # Skip this library if it cannot be dlopened.
- if test -z "$dlname"; then
- # Warn if it was a shared library.
- test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'"
- continue
- fi
-
- dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
- test "X$dir" = "X$file" && dir=.
-
- if test -f "$dir/$objdir/$dlname"; then
- dir="$dir/$objdir"
- else
- $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2
- exit 1
- fi
- ;;
-
- *.lo)
- # Just add the directory containing the .lo file.
- dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
- test "X$dir" = "X$file" && dir=.
- ;;
-
- *)
- $echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2
- continue
- ;;
- esac
-
- # Get the absolute pathname.
- absdir=`cd "$dir" && pwd`
- test -n "$absdir" && dir="$absdir"
-
- # Now add the directory to shlibpath_var.
- if eval "test -z \"\$$shlibpath_var\""; then
- eval "$shlibpath_var=\"\$dir\""
- else
- eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
- fi
- done
-
- # This variable tells wrapper scripts just to set shlibpath_var
- # rather than running their programs.
- libtool_execute_magic="$magic"
-
- # Check if any of the arguments is a wrapper script.
- args=
- for file
- do
- case "$file" in
- -*) ;;
- *)
- # Do a test to see if this is really a libtool program.
- if (sed -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
- # If there is no directory component, then add one.
- case "$file" in
- */* | *\\*) . $file ;;
- *) . ./$file ;;
- esac
-
- # Transform arg to wrapped name.
- file="$progdir/$program"
- fi
- ;;
- esac
- # Quote arguments (to preserve shell metacharacters).
- file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"`
- args="$args \"$file\""
- done
-
- if test -z "$run"; then
- if test -n "$shlibpath_var"; then
- # Export the shlibpath_var.
- eval "export $shlibpath_var"
- fi
-
- # Restore saved enviroment variables
- if test "${save_LC_ALL+set}" = set; then
- LC_ALL="$save_LC_ALL"; export LC_ALL
- fi
- if test "${save_LANG+set}" = set; then
- LANG="$save_LANG"; export LANG
- fi
-
- # Now actually exec the command.
- eval "exec \$cmd$args"
-
- $echo "$modename: cannot exec \$cmd$args"
- exit 1
- else
- # Display what would be done.
- if test -n "$shlibpath_var"; then
- eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\""
- $echo "export $shlibpath_var"
- fi
- $echo "$cmd$args"
- exit 0
- fi
- ;;
-
- # libtool uninstall mode
- uninstall)
- modename="$modename: uninstall"
- rm="$nonopt"
- files=
-
- for arg
- do
- case "$arg" in
- -*) rm="$rm $arg" ;;
- *) files="$files $arg" ;;
- esac
- done
-
- if test -z "$rm"; then
- $echo "$modename: you must specify an RM program" 1>&2
- $echo "$help" 1>&2
- exit 1
- fi
-
- for file in $files; do
- dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
- test "X$dir" = "X$file" && dir=.
- name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
-
- rmfiles="$file"
-
- case "$name" in
- *.la)
- # Possibly a libtool archive, so verify it.
- if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
- . $dir/$name
-
- # Delete the libtool libraries and symlinks.
- for n in $library_names; do
- rmfiles="$rmfiles $dir/$n"
- done
- test -n "$old_library" && rmfiles="$rmfiles $dir/$old_library"
-
- $show "$rm $rmfiles"
- $run $rm $rmfiles
-
- if test -n "$library_names"; then
- # Do each command in the postuninstall commands.
- eval cmds=\"$postuninstall_cmds\"
- IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
- for cmd in $cmds; do
- IFS="$save_ifs"
- $show "$cmd"
- $run eval "$cmd"
- done
- IFS="$save_ifs"
- fi
-
- if test -n "$old_library"; then
- # Do each command in the old_postuninstall commands.
- eval cmds=\"$old_postuninstall_cmds\"
- IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
- for cmd in $cmds; do
- IFS="$save_ifs"
- $show "$cmd"
- $run eval "$cmd"
- done
- IFS="$save_ifs"
- fi
-
- # FIXME: should reinstall the best remaining shared library.
- fi
- ;;
-
- *.lo)
- if test "$build_old_libs" = yes; then
- oldobj=`$echo "X$name" | $Xsed -e "$lo2o"`
- rmfiles="$rmfiles $dir/$oldobj"
- fi
- $show "$rm $rmfiles"
- $run $rm $rmfiles
- ;;
-
- *)
- $show "$rm $rmfiles"
- $run $rm $rmfiles
- ;;
- esac
- done
- exit 0
- ;;
-
- "")
- $echo "$modename: you must specify a MODE" 1>&2
- $echo "$generic_help" 1>&2
- exit 1
- ;;
- esac
-
- $echo "$modename: invalid operation mode \`$mode'" 1>&2
- $echo "$generic_help" 1>&2
- exit 1
-fi # test -z "$show_help"
-
-# We need to display help for each of the modes.
-case "$mode" in
-"") $echo \
-"Usage: $modename [OPTION]... [MODE-ARG]...
-
-Provide generalized library-building support services.
-
- --config show all configuration variables
- --debug enable verbose shell tracing
--n, --dry-run display commands without modifying any files
- --features display basic configuration information and exit
- --finish same as \`--mode=finish'
- --help display this help message and exit
- --mode=MODE use operation mode MODE [default=inferred from MODE-ARGS]
- --quiet same as \`--silent'
- --silent don't print informational messages
- --version print version information
-
-MODE must be one of the following:
-
- compile compile a source file into a libtool object
- execute automatically set library path, then run a program
- finish complete the installation of libtool libraries
- install install libraries or executables
- link create a library or an executable
- uninstall remove libraries from an installed directory
-
-MODE-ARGS vary depending on the MODE. Try \`$modename --help --mode=MODE' for
-a more detailed description of MODE."
- exit 0
- ;;
-
-compile)
- $echo \
-"Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
-
-Compile a source file into a libtool library object.
-
-This mode accepts the following additional options:
-
- -o OUTPUT-FILE set the output file name to OUTPUT-FILE
- -static always build a \`.o' file suitable for static linking
-
-COMPILE-COMMAND is a command to be used in creating a \`standard' object file
-from the given SOURCEFILE.
-
-The output file name is determined by removing the directory component from
-SOURCEFILE, then substituting the C source code suffix \`.c' with the
-library object suffix, \`.lo'."
- ;;
-
-execute)
- $echo \
-"Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]...
-
-Automatically set library path, then run a program.
-
-This mode accepts the following additional options:
-
- -dlopen FILE add the directory containing FILE to the library path
-
-This mode sets the library path environment variable according to \`-dlopen'
-flags.
-
-If any of the ARGS are libtool executable wrappers, then they are translated
-into their corresponding uninstalled binary, and any of their required library
-directories are added to the library path.
-
-Then, COMMAND is executed, with ARGS as arguments."
- ;;
-
-finish)
- $echo \
-"Usage: $modename [OPTION]... --mode=finish [LIBDIR]...
-
-Complete the installation of libtool libraries.
-
-Each LIBDIR is a directory that contains libtool libraries.
-
-The commands that this mode executes may require superuser privileges. Use
-the \`--dry-run' option if you just want to see what would be executed."
- ;;
-
-install)
- $echo \
-"Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND...
-
-Install executables or libraries.
-
-INSTALL-COMMAND is the installation command. The first component should be
-either the \`install' or \`cp' program.
-
-The rest of the components are interpreted as arguments to that command (only
-BSD-compatible install options are recognized)."
- ;;
-
-link)
- $echo \
-"Usage: $modename [OPTION]... --mode=link LINK-COMMAND...
-
-Link object files or libraries together to form another library, or to
-create an executable program.
-
-LINK-COMMAND is a command using the C compiler that you would use to create
-a program from several object files.
-
-The following components of LINK-COMMAND are treated specially:
-
- -all-static do not do any dynamic linking at all
- -avoid-version do not add a version suffix if possible
- -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime
- -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols
- -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
- -export-symbols SYMFILE
- try to export only the symbols listed in SYMFILE
- -export-symbols-regex REGEX
- try to export only the symbols matching REGEX
- -LLIBDIR search LIBDIR for required installed libraries
- -lNAME OUTPUT-FILE requires the installed library libNAME
- -module build a library that can dlopened
- -no-undefined declare that a library does not refer to external symbols
- -o OUTPUT-FILE create OUTPUT-FILE from the specified objects
- -release RELEASE specify package release information
- -rpath LIBDIR the created library will eventually be installed in LIBDIR
- -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries
- -static do not do any dynamic linking of libtool libraries
- -version-info CURRENT[:REVISION[:AGE]]
- specify library version info [each variable defaults to 0]
-
-All other options (arguments beginning with \`-') are ignored.
-
-Every other argument is treated as a filename. Files ending in \`.la' are
-treated as uninstalled libtool libraries, other files are standard or library
-object files.
-
-If the OUTPUT-FILE ends in \`.la', then a libtool library is created,
-only library objects (\`.lo' files) may be specified, and \`-rpath' is
-required, except when creating a convenience library.
-
-If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
-using \`ar' and \`ranlib', or on Windows using \`lib'.
-
-If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
-is created, otherwise an executable program is created."
- ;;
-
-uninstall)
- $echo \
-"Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
-
-Remove libraries from an installation directory.
-
-RM is the name of the program to use to delete files associated with each FILE
-(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed
-to RM.
-
-If FILE is a libtool library, all the files associated with it are deleted.
-Otherwise, only FILE itself is deleted using RM."
- ;;
-
-*)
- $echo "$modename: invalid operation mode \`$mode'" 1>&2
- $echo "$help" 1>&2
- exit 1
- ;;
-esac
-
-echo
-$echo "Try \`$modename --help' for more information about other modes."
-
-exit 0
-
-# Local Variables:
-# mode:shell-script
-# sh-indentation:2
-# End:
+++ /dev/null
-# $Id: make.wnt,v 1.1 2003/06/04 00:25: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.
-#
-# 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) 2000-2002 Japan Network Information Center. All rights reserved."
-#
-# 4. The name of JPNIC may not 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.
-
-all : force
- copy include\config.h.win include\config.h
- cd lib
- $(MAKE) -f make.wnt
- cd ..
- cd tools
- $(MAKE) -f make.wnt
- cd ..
- cd wsock
- $(MAKE) -f make.wnt
- cd ..
-
-install : all
- cd lib
- $(MAKE) -f make.wnt install
- cd ..
- cd tools
- $(MAKE) -f make.wnt install
- cd ..
- cd wsock
- $(MAKE) -f make.wnt install
- cd ..
-
-clean : force
- cd lib
- $(MAKE) -f make.wnt clean
- cd ..
- cd tools
- $(MAKE) -f make.wnt clean
- cd ..
- cd wsock
- $(MAKE) -f make.wnt clean
- cd ..
-
-force:
+++ /dev/null
-# $Id: Makefile.in,v 1.1 2003/06/04 00:27:14 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, 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) 2000-2002 Japan Network Information Center. All rights reserved."
-#
-# 4. The name of JPNIC may not 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.
-
-top_builddir = ..
-
-srcdir = @srcdir@
-VPATH = @srcdir@
-
-prefix = @prefix@
-exec_prefix = @exec_prefix@
-
-sysconfdir = @sysconfdir@
-mandir = @mandir@
-man3dir = $(mandir)/man3
-man5dir = $(mandir)/man5
-
-INSTALL = @INSTALL@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_DATA = @INSTALL_DATA@
-MKINSTALLDIRS = @top_srcdir@/mkinstalldirs
-SHELL = @SHELL@
-
-@LITEONLY_TRUE@all: libidnkitlite.3 idn.conf.5 idnrc.5 idnalias.conf.5
-@LITEONLY_FALSE@all: libidnkitlite.3 idn.conf.5 idnrc.5 idnalias.conf.5 libidnkit.3
-
-libidnkit.3: libidnkit.3.in
- sed 's%[@]sysconfdir[@]%$(sysconfdir)%' < $(srcdir)/libidnkit.3.in > $@
-libidnkitlite.3: libidnkit.3.in
- sed 's%[@]sysconfdir[@]%$(sysconfdir)%' < $(srcdir)/libidnkit.3.in > $@
-idn.conf.5: idn.conf.5.in
- sed 's%[@]sysconfdir[@]%$(sysconfdir)%' < $(srcdir)/idn.conf.5.in > $@
-idnrc.5: idn.conf.5.in
- sed 's%[@]sysconfdir[@]%$(sysconfdir)%' < $(srcdir)/idn.conf.5.in > $@
-idnalias.conf.5: idn.conf.5.in
- sed 's%[@]sysconfdir[@]%$(sysconfdir)%' < $(srcdir)/idn.conf.5.in > $@
-
-@LITEONLY_TRUE@@COMPAT_TRUE@install: all install-common install-compat-common
-@LITEONLY_FALSE@@COMPAT_TRUE@install: all install-common install-nolite install-compat-common install-compat-nolite
-@LITEONLY_TRUE@@COMPAT_FALSE@install: all install-common
-@LITEONLY_FALSE@@COMPAT_FALSE@install: all install-common install-nolite
-
-install-common:
- $(MKINSTALLDIRS) $(DESTDIR)$(man3dir)
- $(INSTALL_DATA) libidnkitlite.3 $(DESTDIR)$(man3dir)/libidnkitlite.3
- $(MKINSTALLDIRS) $(DESTDIR)$(man5dir)
- $(INSTALL_DATA) idn.conf.5 $(DESTDIR)$(man5dir)/idn.conf.5
- $(INSTALL_DATA) idnrc.5 $(DESTDIR)$(man5dir)/idnrc.5
- $(INSTALL_DATA) idnalias.conf.5 $(DESTDIR)$(man5dir)/idnalias.conf.5
-
-install-nolite:
- $(MKINSTALLDIRS) $(DESTDIR)$(man3dir)
- $(INSTALL_DATA) libidnkit.3 $(DESTDIR)$(man3dir)/libidnkit.3
-
-install-compat-common:
- src=$(DESTDIR)$(man3dir)/libidnkitlite.3; \
- dst=$(DESTDIR)$(man3dir)/libmdnlite.3; \
- rm -f $$dst; \
- ln $$src $$dst || cp $$src $$dst
- src=$(DESTDIR)$(man5dir)/idn.conf.5; \
- dst=$(DESTDIR)$(man5dir)/mdn.conf.5; \
- rm -f $$dst; \
- ln $$src $$dst || cp $$src $$dst
-
-install-compat-nolite:
- src=$(DESTDIR)$(man3dir)/libidnkit.3; \
- dst=$(DESTDIR)$(man3dir)/libmdn.3; \
- rm -f $$dst; \
- ln $$src $$dst || cp $$src $$dst
-
-clean:
- rm -f idn.conf.5 idnrc.5 idnalias.conf.5 libidnkit.3 libidnkitlite.3
- rm -f *~
-
-distclean: clean
- rm -f Makefile
-
-test check:
+++ /dev/null
-.\" $Id: idn.conf.5.in,v 1.1 2003/06/04 00:27:16 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) 2000-2002 Japan Network Information Center. All rights reserved."
-.\"
-.\" 4. The name of JPNIC may not 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.
-.\"
-.TH idn.conf 5 "Mar 8, 2002"
-.\"
-.SH NAME
-idn.conf, .idnrc, idnalias.conf \- configuration files for idnkit library
-.\"
-.SH SYNOPSIS
-@sysconfdir@/idn.conf
-.br
-~/.idnrc
-.br
-@sysconfdir@/idnalias.conf
-.\"
-.SH DESCRIPTION
-\fBidn.conf\fR and \fB.idnrc\fR are configuration files for idnkit
-library which is a toolkit for handling internationalized domain names.
-.PP
-idnkit library tries to load the user's configuration file ~/.idnrc
-first, and then tries the system configutation file
-@sysconfdir@/idn.conf.
-Note that idnkit library loads either, not both.
-.PP
-To use internationalized domain names in DNS or other protocols, they
-must be converted to an appropriate format before further processing.
-In idnkit, this conversion process is comprised of the following tasks.
-.IP 1. 3
-Convert the given domain name in application's local codeset to Unicode,
-and vice versa.
-.IP 2. 3
-Map certain characters in the name to period character so that they are
-treated as the domain name
-delimiter (\fIdelimiter mapping\fR).
-.IP 3. 3
-Map certain characters in the name to other characters or chracter sequences,
-according to a mapping rule determined by its top level domain (TLD).
-.IP 4. 3
-Perform NAMEPREP, which is a starndard name preparation process for
-internationalized domain names. This process is composed of
-the tree steps called mapping, normalization, prohibited character
-checking and bidirectional string checking.
-.IP 5. 3
-Convert the nameprepped name to IDN encoding, which is the standard encoding
-for internationalized domain names (also known as ASCII-compatible encoding,
-ACE), and vice versa.
-.PP
-The configuration file specifies the parameters for these tasks, such as:
-.RS 2
-.IP \- 2
-the encoding of internationalized domain names (IDN encoding).
-.IP \- 2
-NAMEPREP schemes.
-.RE
-.\"
-.SH SYNTAX
-The configuration file is a simple text files, and each line in the file
-(other than comment lines, which begin with ``#'', and empty lines)
-forms an entry of the following format:
-.PP
-.RS 4
-.nf
-\fIkeyword\fP\ \fIvalue..\fP
-.fi
-.RE
-\."
-.SH "IDN-ENCODING ENTRY"
-IDN encoding entry specifies the encoding name (codeset name) which
-is used as the encoding of internationalized domain names.
-.PP
-The syntax of this entry is:
-.PP
-.RS 4
-.nf
-\f(CWidn-encoding \fP\fIencoding\fP
-.fi
-.RE
-.PP
-\fIencoding\fP is the encoding name to be used, and any of the following
-names can be specified.
-.RS 2
-.IP "\(bu" 2
-``Punycode''
-.IP "\(bu" 2
-``UTF-8''
-.IP "\(bu" 2
-Codeset names which iconv_open() library function accepts. Please
-consult iconv() documentation for the available codesets.
-.IP "\(bu" 2
-Any alias names for the above, defined by the alias file.
-(See section ``ENCODING-ALIAS-FILE'')
-.RE
-.PP
-The standard encoding was determined as Punycode.
-.\"
-.SH "NAMEPREP ENTRY"
-Nameprep entry specifies the version of NAMEPREP, which is a specification
-of ``canonicalization'' process of internationalized domain name before
-it is converted to the IDN encoding.
-.PP
-The syntax of this entry is:
-.PP
-.RS 4
-.nf
-\f(CWnameprep \fP\fIversion\fP
-.fi
-.RE
-.PP
-\fIversion\fR is the version name of NAMEPREP specification, and currently
-the following versions can be specified.
-.RS 2
-.IP "\(bu" 2
-``RFC3491''
-.br
-This version refers to RFC3491 ``rfc-3491.txt''.
-.RE
-.PP
-The NAMEPREP process consists of the following 4 subprocesses.
-.IP 1. 3
-mapping, which maps certain characters in a name to other characters,
-possibly none.
-.IP 2. 3
-normalization, which replaces character variants in a name to
-a unique one.
-.IP 3. 3
-prohibited character checking, which detects invalid characters in a name.
-.IP 4. 3
-unassigned codepoint checking, which also invalid codepoints in a name.
-.IP 5. 3
-bidirectional string checking, which detecs invalid string.
-.\"
-.SH "LOCAL-MAP ENTRY"
-This entry specifies localized mapping phase before NAMEPREP takes place.
-Different mapping rules can be specified for each TLD (top-level domain).
-For example, you can have one mapping for ``.tw'' domain, and another for
-``.jp'' domain.
-.PP
-The syntax of this entry is:
-.PP
-.RS 4
-.nf
-\f(CWlocal-map \fItld\f(CW \fIscheme\fR [\fIscheme\fR..]
-.fi
-.RE
-.PP
-\fItld\fR specifies the TLD to which the mapping rule is to be applied,
-and \fIscheme\fR specifies the mapping scheme, and currently available
-schemes are:
-.RS 2
-.TP 4
-\f(CWRFC3491\fP
-Specify mapping defined by RFC3491.
-.TP 4
-\f(CWfilemap:\fP\fIpathname\fP
-Specify mapping defined by the file \fIpathname\fP.
-See ``MAPFILE FORMAT'' for the format of this file.
-.RE
-.PP
-There are two special \fItld\fRs for specifying the mapping rule for
-local domain names (domain names without any dots in them), and the
-default mapping rule.
-If
-\fItld\fR is ``-'', it matches domain names which do not contain any
-dots.
-If \fItld\fR is ``.'', it matches any domain names which don't match
-to any other mapping rules specified by ``local-map'' entries.
-.\"
-.SH "MAPFILE FORMAT"
-A mapfile defines a set of character mapping rules. It can define
-unconditional one-character to N-character-sequence (N can be 0, 1 or more)
-mappings.
-.PP
-A mapfile is a simple text file, and each line specifies a single mapping.
-Each line is of the form:
-.PP
-.RS 4
-.nf
-\fIsrc-codepoint\fR\f(CW; \fImapped-codepoint-seq\fR\f(CW;\fR
-.fi
-.RE
-.PP
-\fIsrc-codepoint\fR indicates source character of the mapping, and must
-be a Unicode codepoint value in hexadecimal string.
-\fImapped-codepoint-seq\fR is a sequence of characters which is the
-outcome of the mapping, and must be a (possibly empty) list of Unicode
-codepoint values in hexadecimal string, separated by spaces.
-.PP
-Lines which begin with ``#'' are treated as comments and ignored.
-.PP
-A sample mapfile is shown below.
-.PP
-.RS 4
-.nf
-.ft CW
-# map "A" to "a"
-0041; 0061;
-# map "#" to nothing
-0023; ;
-# map "@" to "at"
-0040; 0061 0074;
-.ft R
-.fi
-.RE
-.\"
-.SH "LOCAL CODESET"
-\fBidn.conf\fR or \fB~/.idnrc\fR doesn't have an entry to specify the
-local codeset, since it is determined from the application's current
-locale information.
-So each application can use different local codeset.
-.PP
-Although idnkit tries hard to find out the local codeset, sometimes it
-fails. For example, there are applications which use non-ASCII codeset
-but work in C locale. In this case, you can specify the application's
-local codeset by an environment variable ``\fBIDN_LOCAL_CODESET\fR''.
-Just set the codeset name (or its alias name) to the variable, and
-idnkit will use the codeset as the local one, regardless of the locale
-setting.
-.\"
-.SH "ENCODING-ALIAS-FILE"
-Encoding alias file specifies codeset name aliases. It is located on
-@sysconfdir@/idnalias.conf and always loaded automatically as idn.conf
-and .idnrc. The aliases in this file can be used just as the real names.
-.PP
-The alias file is a simple text file, consisting of lines of the form:
-.PP
-.RS 4
-.nf
-\fIalias-name\fP\ \fIname\fP
-.fi
-.RE
-.PP
-\fIalias-name\fR is the alias name to be defined, and \fIname\fR is
-the real name or another alias name.
-.\"
-.SH "SAMPLE CONFIGURATION"
-The following shows a sample configuration file.
-.PP
-.RS 4
-.ft CW
-.nf
-#
-# a sample configuration.
-#
-
-# Use Punycode as the IDN encoding.
-idn-encoding Punycode
-
-# Use RFC3491 as NAMEPREP.
-nameprep RFC3491
-
-# Perform Japanese-specific mapping for .jp domain.
-# assuming /usr/local/lib/idnkit/jp-map contains the mapping.
-local-map .jp filemap:/usr/local/lib/idnkit/jp-map
-.fi
-.ft R
-.RE
-.\"
-.SH FILES
-.I @sysconfdir@/idn.conf
-.br
-.I ~/.idnrc
-.br
-.I @sysconfdir@/idnalias.conf
-.br
-.I @sysconfdir@/idn.conf.sample
-\- sample configuration with comments
-.br
-.I @sysconfdir@/idnalias.conf.sample
-\- sample alias file
-.\"
-.SH "SEE ALSO"
-iconv(3)
+++ /dev/null
-.\" $Id: libidnkit.3.in,v 1.1 2003/06/04 00:27:15 marka Exp $
-.\"
-.\" Copyright (c) 2001,2002 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) 2000-2002 Japan Network Information Center. All rights reserved."
-.\"
-.\" 4. The name of JPNIC may not 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.
-.\"
-.TH libidnkit 3 "Mar 11, 2002"
-.\"
-.SH NAME
-libidnkit, libidnkitlite \- Internationalized Domain Name Handling Libraries
-.\"
-.SH SYNOPSIS
-.nf
-#include <idn/api.h>
-
-idn_result_t
-\fBidn_nameinit\fP(int\ load_file)
-
-idn_result_t
-\fBidn_encodename\fP(int\ actions,\ const\ char\ *from,\ char\ *to,\ size_t\ tolen)
-
-idn_result_t
-\fBidn_decodename\fP(int\ actions,\ const\ char\ *from,\ char\ *to,\ size_t\ tolen)
-
-idn_result_t
-\fBidn_decodename2\fP(int\ actions,\ const\ char\ *from,\ char\ *to,\ size_t\ tolen,
- const\ char\ *auxencoding)
-
-idn_result_t
-\fBidn_enable\fP(int\ on_off)
-
-#include <idn/result.h>
-
-char *
-\fBidn_result_tostring\fP(idn_result_t\ result)
-
-.\"
-.SH OVERVIEW
-The
-\fBlibidnkit\fR and \fBlibidnkitlite\fR libraries support various
-manipulations of internationalized domain names, including:
-.RS 2
-.IP \- 2
-encoding convesion
-.IP \- 2
-name preparation
-.RE
-.PP
-They are designed according to IDNA framework where each application must
-do necessary preparations for the internationalized domain names before
-passing them to the resolver.
-.PP
-To help applications do the preparation, the libraries provide easy-to-use,
-high-level interface for the work.
-.PP
-Both libraries provide almost the same API.
-The difference between them is that \fBlibidnkit\fR internally uses
-\fIiconv\fR function to provide encoding conversion from UTF-8 to the
-local encoding
-(such as iso-8859-1, usually determined by the current locale), and vise
-versa.
-\fBlibidnkitlite\fR is lightweight version of libidnkit.
-It assumes local encoding is UTF-8 so that it never uses \fIiconv\fR.
-.PP
-This manual describes only a small subset of the API that the libraries
-provide, most important functions for application programmers.
-For other API, please refer to the idnkit's specification document
-(which is not yet available) or the header files typically found under
-`/usr/local/include/idn/' on your system.
-.\"
-.SH DESCRIPTION
-.PP
-The \fBidn_nameinit\fR function initializes the library.
-It also sets default configuration if \fIload_file\fR is 0, otherwise
-it tries to read a configuration file.
-If \fBidn_nameinit\fR is called more than once, the library initialization
-will take place only at the first call while the actual configuration
-procedure will occur at every call.
-.PP
-If there are no errors, \fBidn_nameinit\fR returns \fBidn_success\fR.
-Otherwise, the returned value indicates the cause of the error.
-See the section ``RETURN VALUES'' below for the error codes.
-.PP
-Usually you don't have to call this function explicitly because
-it is implicitly called when \fBidn_encodename\fR or \fBidn_decodename\fR
-is first called without prior calling of \fBidn_nameinit\fR.
-In such case, initialization without the configuration file
-takes place.
-.\"
-.PP
-\fBidn_encodename\fR function performs name preparation and encoding
-conversion on the internationalized domain name specified by \fIfrom\fR,
-and stores the result to \fIto\fR, whose length is specified by
-\fItolen\fR.
-\fIactions\fR is a bitwise-OR of the following macros, specifying which
-subprocesses in the encoding process are to be employed.
-.RS 2
-.nf
-.ft CW
-IDN_LOCALCONV Local encoding to UTF-8 conversion
-IDN_DELIMMAP Delimiter mapping
-IDN_LOCALMAP Local mapping
-IDN_NAMEPREP NAMEPREP mapping, normalization,
- prohibited character check and bidirectional
- string check
-IDN_UNASCHECK NAMEPREP unassigned codepoint check
-IDN_ASCCHECK ASCII range character check
-IDN_IDNCONV UTF-8 to IDN encoding conversion
-IDN_LENCHECK Label length check
-.ft R
-.fi
-.RE
-.PP
-Details of this encoding process can be found in the section ``NAME ENCODING''.
-.PP
-For convenience, also \fBIDN_ENCODE_QUERY\fR, \fBIDN_ENCODE_APP\fR
-and \fBIDN_ENCODE_STORED\fR macros are provided.
-\fBIDN_ENCODE_QUERY\fR is used to encode a ``query string''
-(see the IDNA specification).
-It is equal to
-.RS 4
-.nf
-.ft CW
-(IDN_LOCALCONV | IDN_DELIMMAP | IDN_LOCALMAP | IDN_NAMEPREP
- | IDN_IDNCONV | IDN_LENCHECK)
-.ft R
-.fi
-.RE
-.PP
-if you are using \fBlibidnkit\fR, and equal to
-.RS 4
-.nf
-.ft CW
-(IDN_DELIMMAP | IDN_LOCALMAP | IDN_NAMEPREP | IDN_IDNCONV
- | IDN_LENCHECK)
-.ft R
-.fi
-.RE
-.PP
-if you are using \fBlibidnkitlite\fR.
-.PP
-\fBIDN_ENCODE_APP\fR is used for ordinary application to encode a
-domain name.
-It performs \fBIDN_ASCCHECK\fR in addition with \fBIDN_ENCODE_QUERY\fR.
-\fBIDN_ENCODE_STORED\fR is used to encode a ``stored string''
-(see the IDNA specification).
-It performs \fBIDN_ENCODE_APP\fR plus \fBIDN_UNASCHECK\fR.
-.PP
-\fBidn_decodename\fR function performs the reverse of \fBidn_encodename\fR.
-It converts the internationalized domain name given by \fIfrom\fR,
-which is represented in a special encoding called ACE,
-to the application's local codeset and stores into \fIto\fR,
-whose length is specified by \fItolen\fR.
-As in \fBidn_encodename\fR, \fIactions\fR is a bitwise-OR of the following
-macros.
-.RS 2
-.nf
-.ft CW
-IDN_DELIMMAP Delimiter mapping
-IDN_NAMEPREP NAMEPREP mapping, normalization,
- prohibited character check and bidirectional
- string check
-IDN_UNASCHECK NAMEPREP unassigned codepoint check
-IDN_IDNCONV UTF-8 to IDN encoding conversion
-IDN_RTCHECK Round trip check
-IDN_ASCCHECK ASCII range character check
-IDN_LOCALCONV Local encoding to UTF-8 conversion
-.ft R
-.fi
-.RE
-.PP
-Details of this decoding process can be found in the section ``NAME DECODING''.
-.PP
-For convenience, also \fBIDN_DECODE_QUERY\fR, \fBIDN_DECODE_APP\fR
-and \fBIDN_DECODE_STORED\fR macros are provided.
-\fBIDN_DECODE_QUERY\fR is used to decode a ``qeury string''
-(see the IDNA specification).
-It is equal to
-.RS 4
-.nf
-.ft CW
-(IDN_DELIMMAP | IDN_NAMEPREP | IDN_IDNCONV | IDN_RTCHECK
- | IDN_LOCALCONV)
-.ft R
-.fi
-.RE
-.PP
-if you are using \fBlibidnkit\fR, and equal to
-.RS 4
-.nf
-.ft CW
-(IDN_DELIMMAP | IDN_NAMEPREP | IDN_IDNCONV | IDN_RTCHECK)
-.ft R
-.fi
-.RE
-.PP
-if you are using \fBlibidnkitlite\fR.
-.PP
-\fBIDN_DECODE_APP\fR is used for ordinary application to decode a
-domain name.
-It performs \fBIDN_ASCCHECK\fR in addition with \fBIDN_DECODE_QUERY\fR.
-\fBIDN_DECODE_STORED\fR is used to decode a ``stored string''
-(see the IDNA specification).
-It performs \fBIDN_DECODE_APP\fR plus \fBIDN_UNASCHECK\fR.
-.PP
-\fBidn_decodename2\fR function provides the same functionality as
-\fBidn_decodename\fR except that character encoding of \fIfrom\fR is
-supposed to be \fIauxencoding\fR.
-If IDN encoding is Punycode and \fIauxencoding\fR is ISO 8859-2
-for example, it is assumed that the Punycode string stored in
-\fIfrom\fR is written in ISO 8859-2.
-.PP
-In the IDN decode procedure, \fBIDN_NAMEPREP\fR is done before
-\fBIDN_IDNCONV\fR, and some non-ASCII characters are converted to
-ASCII characters as the result of \fBIDN_NAMEPREP\fR.
-Therefore, ACE string given by \fBfrom\fR may contains those non-ASCII
-characters.
-That is the reason \fBdocode_name2\fR exists.
-.PP
-All of the functions above return error code of type \fBidn_result_t\fR.
-All codes other than \fBidn_success\fR indicates some kind of failure.
-\fBidn_result_tostring\fR function takes an error code \fIresult\fR
-and returns a pointer to the corresponding message string.
-.\"
-.SH "NAME ENCODING"
-Name encoding is a process that transforms the specified
-internationalized domain name to a certain string suitable for name
-resolution.
-For each label in a given domain name, the encoding processor performs:
-.\"
-.IP "(1) Convert to UTF-8 (IDN_LOCALCONV)"
-Convert the encoding of the given domain name from application's local
-encoding (e.g. ISO-8859-1) to UTF-8.
-Note that \fBlibidnkitlite\fR doesn't support this step.
-.\"
-.IP "(2) Delimiter mapping (IDN_DELIMMAP)"
-Map domain name delimiters to `.' (U+002E).
-The recoginzed delimiters are: U+3002 (ideographic full stop),
-U+FF0E (fullwidth full stop), U+FF61 (halfwidth ideographic full stop).
-.\"
-.IP "(3) Local mapping (IDN_LOCALMAP)"
-Apply character mapping whose rule is determined by the TLD of the name.
-.\"
-.IP "(4) NAMEPREP (IDN_NAMEPREP, IDN_UNASCHECK)"
-Perform name preparation (NAMEPREP), which is a standard process for
-name canonicalizaion of internationalized domain names.
-.br
-NAMEPREP consists of 5 steps:
-mapping, normalization, prohibited character check, bidirectional
-text check and unassigned codepoint check.
-The first four steps are done by IDN_NAMEPREP, and the last step is
-done by IDN_UNASCHECK.
-.\"
-.IP "(5) ASCII range character check (IDN_ASCCHECK)"
-Checks if the domain name contains non-LDH ASCII character (not
-alpha-numeric or hyphen), or it begins or end with hyphen.
-.\"
-.IP "(6) Convert to ACE (IDN_IDNCONV)"
-Convert the NAMEPREPed name to a special encoding designed for representing
-internationalized domain names.
-.br
-The encoding is also known as ACE (ASCII Compatible Encoding) since
-a string in the encoding is just like a traditional ASCII domain name
-consisting of only letters, numbers and hyphens.
-.\"
-.IP "(7) Label length check (IDN_LENCHECK)"
-For each label, check the number of characters in it.
-It must be in the range 1 to 63.
-.PP
-There are many configuration parameters for this process, such as the
-ACE or the local mapping rules. These parameters are read from the
-default idnkit's configuration file, \fBidn.conf\fR.
-See idn.conf(5) for details.
-.\"
-.SH "NAME DECODING"
-Name decoding is a reverse process of the name encoding.
-It transforms the specified
-internationalized 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.
-.PP
-For each label in a given domain name, the decoding processor performs:
-.\"
-.IP "(1) Delimiter mapping (IDN_DELIMMAP)"
-Map domain name delimiters to `.' (U+002E).
-The recoginzed delimiters are: U+3002 (ideographic full stop),
-U+FF0E (fullwidth full stop), U+FF61 (halfwidth ideographic full stop).
-.\"
-.IP "(2) NAMEPREP (IDN_NAMEPREP, IDN_UNASCHECK)"
-Perform name preparation (NAMEPREP), which is a standard process for
-name canonicalizaion of internationalized domain names.
-.\"
-.IP "(3) Convert to UTF-8 (IDN_IDNCONV)"
-Convert the encoding of the given domain name from ACE to UTF-8.
-.\"
-.IP "(4) Round trip check (IDN_RTCHECK)"
-Encode the result of (3) using the ``NAME ENCODING'' scheme, and then
-compare it with the result of the step (2).
-If they are different, the check is failed.
-If IDN_UNASCHECK, IDN_ASCCHECK or both are specified, also they are
-done in the encoding processes.
-.\"
-.IP "(5) Convert to local encoding"
-Convert the result of (3) from UTF-8 to the application's local
-encoding (e.g. ISO-8859-1).
-Note that \fBlibidnkitlite\fR doesn't support this step.
-.PP
-If prohibited character check, unassigned codepoint check or
-bidirectional text check at step (2) is failed, or round trip check
-at step (4) is failed, the original input label is returned.
-.PP
-The configuration parameters for this process,
-are also read from the configuration file \fBidn.conf\fR.
-.\"
-.SH "IDN_DISABLE"
-If the \fBIDN_DISABLE\fR environ variable is defined at run-time,
-the libraries disable internationalized domain name support, by default.
-In this case, \fBidn_encodename\fR and \fBidn_decodename\fR don't
-encode/decode an input name, but instead they simply ouput a copy
-of the input name as the result of encoding/decoding.
-.PP
-If your application should always enable mulitilingual domain name
-support regardless of definition of \fBIDN_DISABLE\fR, call
-.RS 4
-.nf
-.ft CW
-idn_enable(1)
-.ft R
-.fi
-.RE
-.PP
-before performing encoding/decoding.
-.\"
-.SH "RETURN VALUES"
-Most of the API functions return values of type \fBidn_result_t\fR in
-order to indicate the status of the call.
-
-The following is a complete list of the status codes. Note that some
-of them are never returned by the functions described in this manual.
-.TP 15
-.SB idn_success
-Not an error. The call succeeded.
-.TP
-.SB idn_notfound
-Specified information does not exist.
-.TP
-.SB idn_invalid_encoding
-The encoding of the specified string is invalid.
-.TP
-.SB idn_invalid_syntax
-There is a syntax error in the configuration file.
-.TP
-.SB idn_invalid_name
-The specified name is not valid.
-.TP
-.SB idn_invalid_message
-The specified DNS message is not valid.
-.TP
-.SB idn_invalid_action
-The specified action contains invalid flags.
-.TP
-.SB idn_invalid_codepoint
-The specified Unicode code point value is not valid.
-.TP
-.SB idn_invalid_length
-The number of characters in an ACE label is not in the range 1 to 63.
-.TP
-.SB idn_buffer_overflow
-The specified buffer is too small to hold the result.
-.TP
-.SB idn_noentry
-The specified key does not exist in the hash table.
-.TP
-.SB idn_nomemory
-Memory allocation using malloc failed.
-.TP
-.SB idn_nofile
-The specified file could not be opened.
-.TP
-.SB idn_nomapping
-Some characters do not have the mapping to the target character set.
-.TP
-.SB idn_context_required
-Context information is required.
-.TP
-.SB idn_prohibited
-The specified string contains some prohibited characters.
-.TP
-.SB idn_failure
-Generic error which is not covered by the above codes.
-.\"
-.SH EXAMPLES
-To get the address of a internationalized domain name in the application's
-local codeset, use \fBidn_encodename\fR to convert the name to the format
-suitable for passing to resolver functions.
-.RS 4
-.nf
-.ft CW
-idn_result_t r;
-char ace_name[256];
-struct hostent *hp;
-
-\&...
-r = idn_encodename(IDN_ENCODE_APP, name, ace_name,
- sizeof(ace_name));
-if (r != idn_success) {
- fprintf(stderr, "idn_encodename failed: %s\en",
- idn_result_tostring(r));
- exit(1);
-}
-
-hp = gethostbyname(ace_name);
-\&...
-.ft R
-.fi
-.RE
-.PP
-To decode the internationalized domain name returned from a resolver function,
-use \fBidn_decodename\fR.
-.RS 4
-.nf
-.ft CW
-idn_result_t r;
-char local_name[256];
-struct hostent *hp;
-
-\&...
-hp = gethostbyname(name);
-r = idn_decodename(IDN_DECODE_APP, hp->h_name, local_name,
- sizeof(local_name));
-if (r != idn_success) {
- fprintf(stderr, "idn_decodename failed: %s\en",
- idn_result_tostring(r));
- exit(1);
-}
-printf("name: %s\en", local_name);
-\&...
-.ft R
-.fi
-.RE
-.\"
-.SH "SEE ALSO"
-idn.conf(5)
+++ /dev/null
-# $Id: Makefile.in,v 1.1 2003/06/04 00:27:55 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, 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) 2000-2002 Japan Network Information Center. All rights reserved."
-#
-# 4. The name of JPNIC may not 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.
-
-top_builddir = ..
-
-srcdir = @srcdir@
-VPATH = @srcdir@
-
-prefix = @prefix@
-exec_prefix = @exec_prefix@
-
-datadir = @datadir@
-mapdir = $(datadir)/idnkit
-
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-MKINSTALLDIRS = @top_srcdir@/mkinstalldirs
-SHELL = @SHELL@
-
-MAPS = jp.map
-
-all:
-
-install:
- $(MKINSTALLDIRS) $(DESTDIR)$(mapdir)
- for map in $(MAPS); do \
- $(INSTALL_DATA) $(srcdir)/$$map $(DESTDIR)$(mapdir)/$$map; \
- done
-
-clean:
- rm -f *~
-
-distclean: clean
- rm -f Makefile
-
-test check:
+++ /dev/null
-# $Id: jp.map,v 1.1 2003/06/04 00:27:55 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) 2000-2002 Japan Network Information Center. All rights reserved."
-#
-# 4. The name of JPNIC may not 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.
-
-#
-# Local map table for JP domain.
-#
-
-# version=1.0
-
-2212; FF0D
-309B; 3099
-309C; 309A
+++ /dev/null
-#! /bin/sh
-# mkinstalldirs --- make directory hierarchy
-# Author: Noah Friedman <friedman@prep.ai.mit.edu>
-# Created: 1993-05-16
-# Public domain
-
-# $Id: mkinstalldirs,v 1.1 2003/06/04 00:25:33 marka Exp $
-
-errstatus=0
-
-for file
-do
- set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'`
- shift
-
- pathcomp=
- for d
- do
- pathcomp="$pathcomp$d"
- case "$pathcomp" in
- -* ) pathcomp=./$pathcomp ;;
- esac
-
- if test ! -d "$pathcomp"; then
- echo "mkdir $pathcomp"
-
- mkdir "$pathcomp" || lasterr=$?
-
- if test ! -d "$pathcomp"; then
- errstatus=$lasterr
- fi
- fi
-
- pathcomp="$pathcomp/"
- done
-done
-
-exit $errstatus
-
-# mkinstalldirs ends here
+++ /dev/null
-IDN patch for bind-9.2.1
-========================
-
-
-This is a patch file for ISC BIND 9.2.1 to make it work with
-internationalized domain names. With this patch you'll get IDN-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.idnkit' to compile
-and install.
-
-
-Index: README.idnkit
-diff -c /dev/null mdn/othersrc/bind9/README.idnkit:1.2
-*** README.idnkit Mon May 27 16:53:24 2002
---- README.idnkit Tue Mar 26 16:35:05 2002
-***************
-*** 0 ****
---- 1,113 ----
-+
-+ BIND-9 IDN patch
-+
-+ Japan Network Information Center (JPNIC)
-+
-+
-+ * What is this patch for?
-+
-+ This patch adds internationalized domain name (IDN) support to BIND-9.
-+ You'll get internationalized version of dig/host/nslookup commands.
-+
-+ + internationalized 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 idnkit 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-idn' option to enable IDN support.
-+
-+ --with-idn[=IDN_PREFIX]
-+ To enable IDN support, you have to specify `--with-idn' option.
-+ The argument IDN_PREFIX is the install prefix of idnkit. If
-+ IDN_PREFIX is omitted, PREFIX (derived from `--prefix=PREFIX')
-+ is assumed.
-+
-+ --with-libiconv[=LIBICONV_PREFIX]
-+ Specify this option if idnkit 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-idnlib=IDN_LIBSPEC
-+ With this option, you can explicitly specify the argument(s)
-+ to `cc' or `ld' to link the idnkit's library, `libidnkit'. If
-+ this option is not specified, `-L${PREFIX}/lib -lidnkit' is
-+ assumed, where ${PREFIX} is the installation prefix specified
-+ with `--with-idn' option above. You may need to use this
-+ option to specify extra argments, for example,
-+ `--with-idnlib="-L/usr/local/lib -R/usr/local/lib -lidnkit"'.
-+
-+ 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.
-+
-+
-+ * Contact information
-+
-+ Please see http//www.nic.ad.jp/jp/research/mdn/ for the latest news
-+ about idnkit and this patch.
-+
-+ Bug reports and comments on this kit should be sent to
-+ mdnkit-bugs@nic.ad.jp and mdn-cmt@nic.ad.jp, respectively.
-+
-+
-+ ; $Id: bind-9.2.1-patch,v 1.1 2003/06/04 00:27:30 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.12
-*** config.h.in Tue Nov 27 16:55:45 2001
---- config.h.in Tue Mar 19 16:45:35 2002
-***************
-*** 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 <dlfcn.h> header file. */
- #undef HAVE_DLFCN_H
-
-***************
-*** 150,155 ****
---- 153,161 ----
- /* Define if you have the <linux/capability.h> header file. */
- #undef HAVE_LINUX_CAPABILITY_H
-
-+ /* Define if you have the <locale.h> header file. */
-+ #undef HAVE_LOCALE_H
-+
- /* Define if you have the <sys/prctl.h> header file. */
- #undef HAVE_SYS_PRCTL_H
-
-***************
-*** 176,178 ****
---- 182,188 ----
-
- /* Define if you have the socket library (-lsocket). */
- #undef HAVE_LIBSOCKET
-+
-+ /* define if idnkit support is to be included. */
-+ #undef WITH_IDN
-+
-Index: configure
-diff -c mdn/othersrc/bind9/configure:1.1.1.9 mdn/othersrc/bind9/configure:1.15
-*** configure Wed May 22 17:14:53 2002
---- configure Mon May 27 12:10:14 2002
-***************
-*** 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-idn[=MPREFIX] enable IDN support using idnkit [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-idnlib=ARG specify libidnkit"
-
- # 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 <<EOF
-! #line 1568 "configure"
- #include "confdefs.h"
- #include <assert.h>
- 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 <<EOF
-! #line 1576 "configure"
- #include "confdefs.h"
- #include <assert.h>
- 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 <<EOF
-! #line 1585 "configure"
- #include "confdefs.h"
- #include <assert.h>
- 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 <<EOF
-! #line 1593 "configure"
- #include "confdefs.h"
- #include <assert.h>
- 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 <<EOF
-! #line 1602 "configure"
- #include "confdefs.h"
- #include <assert.h>
- 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 <<EOF
-! #line 1610 "configure"
- #include "confdefs.h"
- #include <assert.h>
- 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 <<EOF
-! #line 1638 "configure"
- #include "confdefs.h"
- #include <stdlib.h>
- #include <stdarg.h>
---- 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 <<EOF
-! #line 1646 "configure"
- #include "confdefs.h"
- #include <stdlib.h>
- #include <stdarg.h>
-***************
-*** 1642,1648 ****
- #include <float.h>
- 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 <float.h>
- 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
-! #line 1663 "configure"
- #include "confdefs.h"
- #include <string.h>
- 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
-! #line 1671 "configure"
- #include "confdefs.h"
- #include <string.h>
- 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
-! #line 1681 "configure"
- #include "confdefs.h"
- #include <stdlib.h>
- 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
-! #line 1689 "configure"
- #include "confdefs.h"
- #include <stdlib.h>
- EOF
-***************
-*** 1698,1704 ****
- :
- else
- cat > conftest.$ac_ext <<EOF
-! #line 1702 "configure"
- #include "confdefs.h"
- #include <ctype.h>
- #define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
---- 1706,1712 ----
- :
- else
- cat > conftest.$ac_ext <<EOF
-! #line 1710 "configure"
- #include "confdefs.h"
- #include <ctype.h>
- #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
-! #line 1746 "configure"
- #include "confdefs.h"
- #include <$ac_hdr>
- 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
-! #line 1754 "configure"
- #include "confdefs.h"
- #include <$ac_hdr>
- 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 <<EOF
-! #line 1784 "configure"
- #include "confdefs.h"
-
- int main() {
---- 1783,1794 ----
-
-
- echo $ac_n "checking for working const""... $ac_c" 1>&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 <<EOF
-! #line 1792 "configure"
- #include "confdefs.h"
-
- int main() {
-***************
-*** 1829,1835 ****
-
- ; return 0; }
- EOF
-! if { (eval echo configure:1833: \"$ac_compile\") 1>&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 <<EOF
-! #line 1861 "configure"
- #include "confdefs.h"
-
- int main() {
- } $ac_kw foo() {
- ; return 0; }
- EOF
-! if { (eval echo configure:1868: \"$ac_compile\") 1>&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 <<EOF
-! #line 1869 "configure"
- #include "confdefs.h"
-
- int main() {
- } $ac_kw foo() {
- ; return 0; }
- EOF
-! if { (eval echo configure:1876: \"$ac_compile\") 1>&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 <<EOF
-! #line 1899 "configure"
- #include "confdefs.h"
- /* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char sysctlbyname(); below. */
---- 1898,1909 ----
- esac
-
- echo $ac_n "checking for sysctlbyname""... $ac_c" 1>&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 <<EOF
-! #line 1907 "configure"
- #include "confdefs.h"
- /* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char sysctlbyname(); below. */
-***************
-*** 1918,1924 ****
-
- ; return 0; }
- EOF
-! if { (eval echo configure:1922: \"$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
---- 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 <<EOF
-! #line 1952 "configure"
- #include "confdefs.h"
-
- int main() {
---- 1954,1962 ----
- # is reported to not support "static inline" (RT #1212).
- #
- echo $ac_n "checking for static inline breakage""... $ac_c" 1>&6
-! echo "configure:1958: checking for static inline breakage" >&5
- cat > conftest.$ac_ext <<EOF
-! #line 1960 "configure"
- #include "confdefs.h"
-
- int main() {
-***************
-*** 1965,1971 ****
-
- ; return 0; }
- EOF
-! if { (eval echo configure:1969: \"$ac_compile\") 1>&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 <<EOF
-! #line 1990 "configure"
- #include "confdefs.h"
- #include <sys/types.h>
- #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 <<EOF
-! #line 1998 "configure"
- #include "confdefs.h"
- #include <sys/types.h>
- #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 <<EOF
-! #line 2023 "configure"
- #include "confdefs.h"
- #include <sys/types.h>
- #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 <<EOF
-! #line 2031 "configure"
- #include "confdefs.h"
- #include <sys/types.h>
- #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 <<EOF
-! #line 2056 "configure"
- #include "confdefs.h"
- #include <sys/types.h>
- #include <sys/time.h>
---- 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 <<EOF
-! #line 2064 "configure"
- #include "confdefs.h"
- #include <sys/types.h>
- #include <sys/time.h>
-***************
-*** 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 <<EOF
-! #line 2088 "configure"
- #include "confdefs.h"
-
- int main() {
- long long i = 0; return (0);
- ; return 0; }
- EOF
-! if { (eval echo configure:2095: \"$ac_compile\") 1>&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 <<EOF
-! #line 2096 "configure"
- #include "confdefs.h"
-
- int main() {
- long long i = 0; return (0);
- ; return 0; }
- EOF
-! if { (eval echo configure:2103: \"$ac_compile\") 1>&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 <<EOF
-! #line 2117 "configure"
- #include "confdefs.h"
-
- #include <unistd.h>
---- 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 <<EOF
-! #line 2125 "configure"
- #include "confdefs.h"
-
- #include <unistd.h>
-***************
-*** 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 <<EOF
-! #line 2174 "configure"
- #include "confdefs.h"
- #include <sys/types.h>
- #include <sys/param.h>
---- 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 <<EOF
-! #line 2182 "configure"
- #include "confdefs.h"
- #include <sys/types.h>
- #include <sys/param.h>
-***************
-*** 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 <<EOF
-! #line 2189 "configure"
- #include "confdefs.h"
- #include <sys/types.h>
- #include <sys/param.h>
---- 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 <<EOF
-! #line 2197 "configure"
- #include "confdefs.h"
- #include <sys/types.h>
- #include <sys/param.h>
-***************
-*** 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 <<EOF
-! #line 2220 "configure"
- #include "confdefs.h"
- main () {
- /* Are we little or big endian? From Harbison&Steele. */
---- 2224,2230 ----
- { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
- else
- cat > conftest.$ac_ext <<EOF
-! #line 2228 "configure"
- #include "confdefs.h"
- main () {
- /* Are we little or big endian? From Harbison&Steele. */
-***************
-*** 2229,2235 ****
- exit (u.c[sizeof (long) - 1] == 1);
- }
- EOF
-! if { (eval echo configure:2233: \"$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
---- 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 <<EOF
-! #line 2311 "configure"
- #include "confdefs.h"
-
- #include <stdio.h>
---- 2315,2321 ----
- echo "$ac_t""assuming target platform has compatible version" 1>&6
- else
- cat > conftest.$ac_ext <<EOF
-! #line 2319 "configure"
- #include "confdefs.h"
-
- #include <stdio.h>
-***************
-*** 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 <<EOF
-! #line 2602 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
---- 2606,2612 ----
- ac_save_LIBS="$LIBS"
- LIBS="-lpthread $LIBS"
- cat > conftest.$ac_ext <<EOF
-! #line 2610 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-***************
-*** 2609,2615 ****
- pthread_create()
- ; return 0; }
- EOF
-! if { (eval echo configure:2613: \"$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
---- 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 <<EOF
-! #line 2647 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
---- 2651,2657 ----
- ac_save_LIBS="$LIBS"
- LIBS="-lpthread $LIBS"
- cat > conftest.$ac_ext <<EOF
-! #line 2655 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-***************
-*** 2654,2660 ****
- __pthread_create()
- ; return 0; }
- EOF
-! if { (eval echo configure:2658: \"$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
---- 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 <<EOF
-! #line 2692 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
---- 2696,2702 ----
- ac_save_LIBS="$LIBS"
- LIBS="-lpthread $LIBS"
- cat > conftest.$ac_ext <<EOF
-! #line 2700 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-***************
-*** 2699,2705 ****
- __pthread_create_system()
- ; return 0; }
- EOF
-! if { (eval echo configure:2703: \"$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
---- 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 <<EOF
-! #line 2737 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
---- 2741,2747 ----
- ac_save_LIBS="$LIBS"
- LIBS="-lc_r $LIBS"
- cat > conftest.$ac_ext <<EOF
-! #line 2745 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-***************
-*** 2744,2750 ****
- pthread_create()
- ; return 0; }
- EOF
-! if { (eval echo configure:2748: \"$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
---- 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 <<EOF
-! #line 2782 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
---- 2786,2792 ----
- ac_save_LIBS="$LIBS"
- LIBS="-lc $LIBS"
- cat > conftest.$ac_ext <<EOF
-! #line 2790 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-***************
-*** 2789,2795 ****
- pthread_create()
- ; return 0; }
- EOF
-! if { (eval echo configure:2793: \"$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
---- 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 <<EOF
-! #line 2847 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
---- 2851,2857 ----
- ac_save_LIBS="$LIBS"
- LIBS="-lc $LIBS"
- cat > conftest.$ac_ext <<EOF
-! #line 2855 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-***************
-*** 2854,2860 ****
- sigwait()
- ; return 0; }
- EOF
-! if { (eval echo configure:2858: \"$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
---- 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 <<EOF
-! #line 2888 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
---- 2892,2898 ----
- ac_save_LIBS="$LIBS"
- LIBS="-lpthread $LIBS"
- cat > conftest.$ac_ext <<EOF
-! #line 2896 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-***************
-*** 2895,2901 ****
- sigwait()
- ; return 0; }
- EOF
-! if { (eval echo configure:2899: \"$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
---- 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 <<EOF
-! #line 2929 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
---- 2933,2939 ----
- ac_save_LIBS="$LIBS"
- LIBS="-lpthread $LIBS"
- cat > conftest.$ac_ext <<EOF
-! #line 2937 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-***************
-*** 2936,2942 ****
- _Psigwait()
- ; return 0; }
- EOF
-! if { (eval echo configure:2940: \"$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
---- 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 <<EOF
-! #line 2975 "configure"
- #include "confdefs.h"
- /* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char pthread_attr_getstacksize(); below. */
---- 2974,2985 ----
-
-
- echo $ac_n "checking for pthread_attr_getstacksize""... $ac_c" 1>&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 <<EOF
-! #line 2983 "configure"
- #include "confdefs.h"
- /* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char pthread_attr_getstacksize(); below. */
-***************
-*** 2994,3000 ****
-
- ; return 0; }
- EOF
-! if { (eval echo configure:2998: \"$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
---- 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 <<EOF
-! #line 3038 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
---- 3042,3048 ----
- ac_save_LIBS="$LIBS"
- LIBS="-lc_r $LIBS"
- cat > conftest.$ac_ext <<EOF
-! #line 3046 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-***************
-*** 3045,3051 ****
- sigwait()
- ; return 0; }
- EOF
-! if { (eval echo configure:3049: \"$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
---- 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 <<EOF
-! #line 3109 "configure"
- #include "confdefs.h"
- /* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char pthread_setconcurrency(); below. */
---- 3108,3119 ----
- EOF
-
- echo $ac_n "checking for pthread_setconcurrency""... $ac_c" 1>&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 <<EOF
-! #line 3117 "configure"
- #include "confdefs.h"
- /* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char pthread_setconcurrency(); below. */
-***************
-*** 3128,3134 ****
-
- ; return 0; }
- EOF
-! if { (eval echo configure:3132: \"$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
---- 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 <<EOF
-! #line 3175 "configure"
- #include "confdefs.h"
- /* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char sysconf(); below. */
---- 3174,3185 ----
- # Look for sysconf to allow detection of the number of processors.
- #
- echo $ac_n "checking for sysconf""... $ac_c" 1>&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 <<EOF
-! #line 3183 "configure"
- #include "confdefs.h"
- /* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char sysconf(); below. */
-***************
-*** 3194,3200 ****
-
- ; return 0; }
- EOF
-! if { (eval echo configure:3198: \"$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
---- 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 <<EOF
-! #line 3284 "configure"
- #include "confdefs.h"
- /* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char flockfile(); below. */
---- 3283,3294 ----
- # be defined.
- #
- echo $ac_n "checking for flockfile""... $ac_c" 1>&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 <<EOF
-! #line 3292 "configure"
- #include "confdefs.h"
- /* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char flockfile(); below. */
-***************
-*** 3303,3309 ****
-
- ; return 0; }
- EOF
-! if { (eval echo configure:3307: \"$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
---- 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 <<EOF
-! #line 3335 "configure"
- #include "confdefs.h"
- /* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char getc_unlocked(); below. */
---- 3334,3345 ----
- fi
-
- echo $ac_n "checking for getc_unlocked""... $ac_c" 1>&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 <<EOF
-! #line 3343 "configure"
- #include "confdefs.h"
- /* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char getc_unlocked(); below. */
-***************
-*** 3354,3360 ****
-
- ; return 0; }
- EOF
-! if { (eval echo configure:3358: \"$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
---- 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 <<EOF
-! #line 3466 "configure"
- #include "confdefs.h"
- /* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char catgets(); below. */
---- 3465,3476 ----
- # NLS
- #
- echo $ac_n "checking for catgets""... $ac_c" 1>&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 <<EOF
-! #line 3474 "configure"
- #include "confdefs.h"
- /* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char catgets(); below. */
-***************
-*** 3485,3491 ****
-
- ; return 0; }
- EOF
-! if { (eval echo configure:3489: \"$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
---- 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 <<EOF
-! #line 3535 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
---- 3539,3545 ----
- ac_save_LIBS="$LIBS"
- LIBS="-lsocket $LIBS"
- cat > conftest.$ac_ext <<EOF
-! #line 3543 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-***************
-*** 3542,3548 ****
- socket()
- ; return 0; }
- EOF
-! if { (eval echo configure:3546: \"$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
---- 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 <<EOF
-! #line 3582 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
---- 3586,3592 ----
- ac_save_LIBS="$LIBS"
- LIBS="-lnsl $LIBS"
- cat > conftest.$ac_ext <<EOF
-! #line 3590 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-***************
-*** 3589,3595 ****
- inet_ntoa()
- ; return 0; }
- EOF
-! if { (eval echo configure:3593: \"$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
---- 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 <<EOF
-! #line 3726 "configure"
- #include "confdefs.h"
-
- int main() {
---- 3725,3736 ----
- case $use_libtool in
- yes)
- echo $ac_n "checking for Cygwin environment""... $ac_c" 1>&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 <<EOF
-! #line 3734 "configure"
- #include "confdefs.h"
-
- int main() {
-***************
-*** 3733,3739 ****
- return __CYGWIN__;
- ; return 0; }
- EOF
-! if { (eval echo configure:3737: \"$ac_compile\") 1>&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 <<EOF
-! #line 3759 "configure"
- #include "confdefs.h"
-
- int main() {
- return __MINGW32__;
- ; return 0; }
- EOF
-! if { (eval echo configure:3766: \"$ac_compile\") 1>&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 <<EOF
-! #line 3767 "configure"
- #include "confdefs.h"
-
- int main() {
- return __MINGW32__;
- ; return 0; }
- EOF
-! if { (eval echo configure:3774: \"$ac_compile\") 1>&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
-! #line 4458 "configure"
- #include "confdefs.h"
- #include <$ac_hdr>
- 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
-! #line 4466 "configure"
- #include "confdefs.h"
- #include <$ac_hdr>
- 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 <<EOF
-! #line 4814 "configure"
- #include "confdefs.h"
-
- int main() {
-
- ; return 0; }
- EOF
-! if { (eval echo configure:4821: \"$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
---- 4818,4831 ----
- cross_compiling=$ac_cv_prog_cc_cross
-
- cat > conftest.$ac_ext <<EOF
-! #line 4822 "configure"
- #include "confdefs.h"
-
- int main() {
-
- ; return 0; }
- EOF
-! if { (eval echo configure:4829: \"$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
-***************
-*** 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 <<EOF
-! #line 5126 "configure"
- #include "confdefs.h"
-
- int main() {
-
- ; return 0; }
- EOF
-! if { (eval echo configure:5133: \"$ac_compile\") 1>&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 <<EOF
-! #line 5134 "configure"
- #include "confdefs.h"
-
- int main() {
-
- ; return 0; }
- EOF
-! if { (eval echo configure:5141: \"$ac_compile\") 1>&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 <<EOF
-! #line 5197 "configure"
- #include "confdefs.h"
-
- int main() {
-
- ; return 0; }
- EOF
-! if { (eval echo configure:5204: \"$ac_link\") 1>&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 <<EOF
-! #line 5205 "configure"
- #include "confdefs.h"
-
- int main() {
-
- ; return 0; }
- EOF
-! if { (eval echo configure:5212: \"$ac_link\") 1>&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 <<EOF
-! #line 5292 "configure"
- #include "confdefs.h"
-
- int main() {
- int some_variable = 0;
- ; return 0; }
- EOF
-! if { (eval echo configure:5299: \"$ac_compile\") 1>&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 <<EOF
-! #line 5300 "configure"
- #include "confdefs.h"
-
- int main() {
- int some_variable = 0;
- ; return 0; }
- EOF
-! if { (eval echo configure:5307: \"$ac_compile\") 1>&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 <<EOF
-! #line 5362 "configure"
- #include "confdefs.h"
-
- int main() {
- int some_variable = 0;
- ; return 0; }
- EOF
-! if { (eval echo configure:5369: \"$ac_compile\") 1>&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 <<EOF
-! #line 5370 "configure"
- #include "confdefs.h"
-
- int main() {
- int some_variable = 0;
- ; return 0; }
- EOF
-! if { (eval echo configure:5377: \"$ac_compile\") 1>&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 <<EOF
-! #line 6509 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
---- 6513,6519 ----
- ac_save_LIBS="$LIBS"
- LIBS="-ldl $LIBS"
- cat > conftest.$ac_ext <<EOF
-! #line 6517 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-***************
-*** 6516,6522 ****
- dlopen()
- ; return 0; }
- EOF
-! if { (eval echo configure:6520: \"$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
---- 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 <<EOF
-! #line 6544 "configure"
- #include "confdefs.h"
- /* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char dlopen(); below. */
---- 6543,6554 ----
- else
- echo "$ac_t""no" 1>&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 <<EOF
-! #line 6552 "configure"
- #include "confdefs.h"
- /* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char dlopen(); below. */
-***************
-*** 6563,6569 ****
-
- ; return 0; }
- EOF
-! if { (eval echo configure:6567: \"$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
---- 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 <<EOF
-! #line 6590 "configure"
- #include "confdefs.h"
- /* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char shl_load(); below. */
---- 6589,6600 ----
- else
- echo "$ac_t""no" 1>&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 <<EOF
-! #line 6598 "configure"
- #include "confdefs.h"
- /* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char shl_load(); below. */
-***************
-*** 6609,6615 ****
-
- ; return 0; }
- EOF
-! if { (eval echo configure:6613: \"$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
---- 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 <<EOF
-! #line 6639 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
---- 6643,6649 ----
- ac_save_LIBS="$LIBS"
- LIBS="-lsvld $LIBS"
- cat > conftest.$ac_ext <<EOF
-! #line 6647 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-***************
-*** 6646,6652 ****
- dlopen()
- ; return 0; }
- EOF
-! if { (eval echo configure:6650: \"$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
---- 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 <<EOF
-! #line 6677 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
---- 6681,6687 ----
- ac_save_LIBS="$LIBS"
- LIBS="-ldld $LIBS"
- cat > conftest.$ac_ext <<EOF
-! #line 6685 "configure"
- #include "confdefs.h"
- /* Override any gcc2 internal prototype to avoid an error. */
- /* We use char because int might match the return type of a gcc2
-***************
-*** 6684,6690 ****
- shl_load()
- ; return 0; }
- EOF
-! if { (eval echo configure:6688: \"$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
---- 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 <<EOF
-! #line 6751 "configure"
- #include "confdefs.h"
-
- #if HAVE_DLFCN_H
---- 6755,6761 ----
- lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
- lt_status=$lt_dlunknown
- cat > conftest.$ac_ext <<EOF
-! #line 6759 "configure"
- #include "confdefs.h"
-
- #if HAVE_DLFCN_H
-***************
-*** 6808,6814 ****
- exit (status);
- }
- EOF
-! if { (eval echo configure:6812: \"$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
---- 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 <<EOF
-! #line 6845 "configure"
- #include "confdefs.h"
-
- #if HAVE_DLFCN_H
---- 6849,6855 ----
- lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
- lt_status=$lt_dlunknown
- cat > conftest.$ac_ext <<EOF
-! #line 6853 "configure"
- #include "confdefs.h"
-
- #if HAVE_DLFCN_H
-***************
-*** 6902,6908 ****
- exit (status);
- }
- EOF
-! if { (eval echo configure:6906: \"$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
---- 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 <<EOF
-! #line 7636 "configure"
- #include "confdefs.h"
-
- #include <sys/types.h>
---- 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 <<EOF
-! #line 7644 "configure"
- #include "confdefs.h"
-
- #include <sys/types.h>
-***************
-*** 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 <<EOF
-! #line 7757 "configure"
- #include "confdefs.h"
-
- #include <sys/types.h>
---- 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 <<EOF
-! #line 7765 "configure"
- #include "confdefs.h"
-
- #include <sys/types.h>
-***************
-*** 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 <<EOF
-! #line 7790 "configure"
- #include "confdefs.h"
-
- #include <sys/types.h>
---- 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 <<EOF
-! #line 7798 "configure"
- #include "confdefs.h"
-
- #include <sys/types.h>
-***************
-*** 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 <<EOF
-! #line 7822 "configure"
- #include "confdefs.h"
-
- #include <sys/types.h>
---- 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 <<EOF
-! #line 7830 "configure"
- #include "confdefs.h"
-
- #include <sys/types.h>
-***************
-*** 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 <<EOF
-! #line 7854 "configure"
- #include "confdefs.h"
-
- #include <sys/types.h>
---- 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 <<EOF
-! #line 7862 "configure"
- #include "confdefs.h"
-
- #include <sys/types.h>
-***************
-*** 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 <<EOF
-! #line 7884 "configure"
- #include "confdefs.h"
-
- #include <sys/types.h>
---- 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 <<EOF
-! #line 7892 "configure"
- #include "confdefs.h"
-
- #include <sys/types.h>
-***************
-*** 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 <<EOF
-! #line 7954 "configure"
- #include "confdefs.h"
-
- #include <sys/types.h>
---- 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 <<EOF
-! #line 7962 "configure"
- #include "confdefs.h"
-
- #include <sys/types.h>
-***************
-*** 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 <<EOF
-! #line 7991 "configure"
- #include "confdefs.h"
-
- #include <sys/types.h>
---- 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 <<EOF
-! #line 7999 "configure"
- #include "confdefs.h"
-
- #include <sys/types.h>
-***************
-*** 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 <<EOF
-! #line 8021 "configure"
- #include "confdefs.h"
-
- #include <sys/types.h>
---- 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 <<EOF
-! #line 8029 "configure"
- #include "confdefs.h"
-
- #include <sys/types.h>
-***************
-*** 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 <<EOF
-! #line 8066 "configure"
- #include "confdefs.h"
-
- #include <sys/types.h>
---- 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 <<EOF
-! #line 8074 "configure"
- #include "confdefs.h"
-
- #include <sys/types.h>
-***************
-*** 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 <<EOF
-! #line 8098 "configure"
- #include "confdefs.h"
-
- #include <sys/types.h>
---- 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 <<EOF
-! #line 8106 "configure"
- #include "confdefs.h"
-
- #include <sys/types.h>
-***************
-*** 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 <<EOF
-! #line 8127 "configure"
- #include "confdefs.h"
-
- #include <sys/types.h>
---- 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 <<EOF
-! #line 8135 "configure"
- #include "confdefs.h"
-
- #include <sys/types.h>
-***************
-*** 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 <<EOF
-! #line 8156 "configure"
- #include "confdefs.h"
-
- #include <netdb.h>
---- 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 <<EOF
-! #line 8164 "configure"
- #include "confdefs.h"
-
- #include <netdb.h>
-***************
-*** 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 <<EOF
-! #line 8188 "configure"
- #include "confdefs.h"
-
- #include <netdb.h>
---- 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 <<EOF
-! #line 8196 "configure"
- #include "confdefs.h"
-
- #include <netdb.h>
-***************
-*** 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 <<EOF
-! #line 8213 "configure"
- #include "confdefs.h"
-
- #include <netdb.h>
---- 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 <<EOF
-! #line 8221 "configure"
- #include "confdefs.h"
-
- #include <netdb.h>
-***************
-*** 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 <<EOF
-! #line 8238 "configure"
- #include "confdefs.h"
-
- #include <netdb.h>
---- 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 <<EOF
-! #line 8246 "configure"
- #include "confdefs.h"
-
- #include <netdb.h>
-***************
-*** 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 <<EOF
-! #line 8263 "configure"
- #include "confdefs.h"
-
- #include <netdb.h>
---- 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 <<EOF
-! #line 8271 "configure"
- #include "confdefs.h"
-
- #include <netdb.h>
-***************
-*** 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 <<EOF
-! #line 8289 "configure"
- #include "confdefs.h"
-
- #include <netdb.h>
---- 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 <<EOF
-! #line 8297 "configure"
- #include "confdefs.h"
-
- #include <netdb.h>
-***************
-*** 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 <<EOF
-! #line 8314 "configure"
- #include "confdefs.h"
-
- #include <netdb.h>
---- 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 <<EOF
-! #line 8322 "configure"
- #include "confdefs.h"
-
- #include <netdb.h>
-***************
-*** 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 <<EOF
-! #line 8339 "configure"
- #include "confdefs.h"
-
- #include <netdb.h>
---- 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 <<EOF
-! #line 8347 "configure"
- #include "confdefs.h"
-
- #include <netdb.h>
-***************
-*** 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 <<EOF
-! #line 8365 "configure"
- #include "confdefs.h"
-
- #include <netdb.h>
---- 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 <<EOF
-! #line 8373 "configure"
- #include "confdefs.h"
-
- #include <netdb.h>
-***************
-*** 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 <<EOF
-! #line 8393 "configure"
- #include "confdefs.h"
- /* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char getipnodebyname(); below. */
---- 8392,8403 ----
-
-
- echo $ac_n "checking for getipnodebyname""... $ac_c" 1>&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 <<EOF
-! #line 8401 "configure"
- #include "confdefs.h"
- /* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char getipnodebyname(); below. */
-***************
-*** 8412,8418 ****
-
- ; return 0; }
- EOF
-! if { (eval echo configure:8416: \"$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
---- 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 <<EOF
-! #line 8442 "configure"
- #include "confdefs.h"
- /* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char getnameinfo(); below. */
---- 8441,8452 ----
- fi
-
- echo $ac_n "checking for getnameinfo""... $ac_c" 1>&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 <<EOF
-! #line 8450 "configure"
- #include "confdefs.h"
- /* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char getnameinfo(); below. */
-***************
-*** 8461,8467 ****
-
- ; return 0; }
- EOF
-! if { (eval echo configure:8465: \"$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
---- 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 <<EOF
-! #line 8491 "configure"
- #include "confdefs.h"
- /* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char getaddrinfo(); below. */
---- 8490,8501 ----
- fi
-
- echo $ac_n "checking for getaddrinfo""... $ac_c" 1>&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 <<EOF
-! #line 8499 "configure"
- #include "confdefs.h"
- /* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char getaddrinfo(); below. */
-***************
-*** 8510,8516 ****
-
- ; return 0; }
- EOF
-! if { (eval echo configure:8514: \"$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
---- 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 <<EOF
-! #line 8544 "configure"
- #include "confdefs.h"
- /* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char gai_strerror(); below. */
---- 8543,8554 ----
- fi
-
- echo $ac_n "checking for gai_strerror""... $ac_c" 1>&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 <<EOF
-! #line 8552 "configure"
- #include "confdefs.h"
- /* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char gai_strerror(); below. */
-***************
-*** 8563,8569 ****
-
- ; return 0; }
- EOF
-! if { (eval echo configure:8567: \"$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
---- 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 <<EOF
-! #line 8599 "configure"
- #include "confdefs.h"
-
- #include <sys/param.h>
---- 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 <<EOF
-! #line 8607 "configure"
- #include "confdefs.h"
-
- #include <sys/param.h>
-***************
-*** 8632,8647 ****
- # AC_CHECK_FUNC() incorrectly succeeds because it declares
- # the function itself.
- echo $ac_n "checking for correctly declared strsep()""... $ac_c" 1>&6
-! echo "configure:8636: checking for correctly declared strsep()" >&5
- cat > conftest.$ac_ext <<EOF
-! #line 8638 "configure"
- #include "confdefs.h"
- #include <string.h>
- int main() {
- char *sp; char *foo = strsep(&sp, ".");
- ; return 0; }
- EOF
-! if { (eval echo configure:8645: \"$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_NEEDSTRSEP="#undef ISC_PLATFORM_NEEDSTRSEP"
- else
---- 8640,8655 ----
- # AC_CHECK_FUNC() incorrectly succeeds because it declares
- # the function itself.
- echo $ac_n "checking for correctly declared strsep()""... $ac_c" 1>&6
-! echo "configure:8644: checking for correctly declared strsep()" >&5
- cat > conftest.$ac_ext <<EOF
-! #line 8646 "configure"
- #include "confdefs.h"
- #include <string.h>
- int main() {
- char *sp; char *foo = strsep(&sp, ".");
- ; return 0; }
- EOF
-! if { (eval echo configure:8653: \"$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_NEEDSTRSEP="#undef ISC_PLATFORM_NEEDSTRSEP"
- else
-***************
-*** 8653,8664 ****
- rm -f conftest*
-
- echo $ac_n "checking for vsnprintf""... $ac_c" 1>&6
-! echo "configure:8657: 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 <<EOF
-! #line 8662 "configure"
- #include "confdefs.h"
- /* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char vsnprintf(); below. */
---- 8661,8672 ----
- rm -f conftest*
-
- echo $ac_n "checking for vsnprintf""... $ac_c" 1>&6
-! echo "configure:8665: 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 <<EOF
-! #line 8670 "configure"
- #include "confdefs.h"
- /* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char vsnprintf(); below. */
-***************
-*** 8681,8687 ****
-
- ; return 0; }
- EOF
-! if { (eval echo configure:8685: \"$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
---- 8689,8695 ----
-
- ; return 0; }
- EOF
-! if { (eval echo configure:8693: \"$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
-***************
-*** 8706,8717 ****
-
-
- echo $ac_n "checking for strerror""... $ac_c" 1>&6
-! echo "configure:8710: 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 <<EOF
-! #line 8715 "configure"
- #include "confdefs.h"
- /* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char strerror(); below. */
---- 8714,8725 ----
-
-
- echo $ac_n "checking for strerror""... $ac_c" 1>&6
-! echo "configure:8718: 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 <<EOF
-! #line 8723 "configure"
- #include "confdefs.h"
- /* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char strerror(); below. */
-***************
-*** 8734,8740 ****
-
- ; return 0; }
- EOF
-! if { (eval echo configure:8738: \"$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
---- 8742,8748 ----
-
- ; return 0; }
- EOF
-! if { (eval echo configure:8746: \"$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
-***************
-*** 8768,8784 ****
- # 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:8772: 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 <<EOF
-! #line 8778 "configure"
- #include "confdefs.h"
- main() { exit(!(sizeof(long long int) == sizeof(long int))); }
- EOF
-! if { (eval echo configure:8782: \"$ac_link\") 1>&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"'
---- 8776,8792 ----
- # 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:8780: 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 <<EOF
-! #line 8786 "configure"
- #include "confdefs.h"
- main() { exit(!(sizeof(long long int) == sizeof(long int))); }
- EOF
-! if { (eval echo configure:8790: \"$ac_link\") 1>&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"'
-***************
-*** 8798,8809 ****
- # Security Stuff
- #
- echo $ac_n "checking for chroot""... $ac_c" 1>&6
-! echo "configure:8802: 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 <<EOF
-! #line 8807 "configure"
- #include "confdefs.h"
- /* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char chroot(); below. */
---- 8806,8817 ----
- # Security Stuff
- #
- echo $ac_n "checking for chroot""... $ac_c" 1>&6
-! echo "configure:8810: 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 <<EOF
-! #line 8815 "configure"
- #include "confdefs.h"
- /* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char chroot(); below. */
-***************
-*** 8826,8832 ****
-
- ; return 0; }
- EOF
-! if { (eval echo configure:8830: \"$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
---- 8834,8840 ----
-
- ; return 0; }
- EOF
-! if { (eval echo configure:8838: \"$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
-***************
-*** 8860,8876 ****
- do
- ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
- echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-! echo "configure:8864: 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
-! #line 8869 "configure"
- #include "confdefs.h"
- #include <$ac_hdr>
- EOF
- ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-! { (eval echo configure:8874: \"$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*
---- 8868,8884 ----
- do
- ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
- echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-! echo "configure:8872: 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
-! #line 8877 "configure"
- #include "confdefs.h"
- #include <$ac_hdr>
- EOF
- ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-! { (eval echo configure:8882: \"$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*
-***************
-*** 8904,8920 ****
- do
- ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
- echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-! echo "configure:8908: 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
-! #line 8913 "configure"
- #include "confdefs.h"
- #include <$ac_hdr>
- EOF
- ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-! { (eval echo configure:8918: \"$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*
---- 8912,8928 ----
- do
- ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
- echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-! echo "configure:8916: 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
-! #line 8921 "configure"
- #include "confdefs.h"
- #include <$ac_hdr>
- EOF
- ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-! { (eval echo configure:8926: \"$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*
-***************
-*** 8945,8953 ****
- # 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:8949: checking for type rlim_t" >&5
- cat > conftest.$ac_ext <<EOF
-! #line 8951 "configure"
- #include "confdefs.h"
-
- #include <sys/types.h>
---- 8953,8961 ----
- # 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:8957: checking for type rlim_t" >&5
- cat > conftest.$ac_ext <<EOF
-! #line 8959 "configure"
- #include "confdefs.h"
-
- #include <sys/types.h>
-***************
-*** 8957,8963 ****
- rlim_t rl = 19671212; return (0);
- ; return 0; }
- EOF
-! if { (eval echo configure:8961: \"$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"
---- 8965,8971 ----
- rlim_t rl = 19671212; return (0);
- ; return 0; }
- EOF
-! if { (eval echo configure:8969: \"$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"
-***************
-*** 8968,8979 ****
- echo "$ac_t""no" 1>&6
-
- echo $ac_n "checking type of rlim_cur""... $ac_c" 1>&6
-! echo "configure:8972: 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 <<EOF
-! #line 8977 "configure"
- #include "confdefs.h"
-
- #include <sys/types.h>
---- 8976,8987 ----
- echo "$ac_t""no" 1>&6
-
- echo $ac_n "checking type of rlim_cur""... $ac_c" 1>&6
-! echo "configure:8980: 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 <<EOF
-! #line 8985 "configure"
- #include "confdefs.h"
-
- #include <sys/types.h>
-***************
-*** 8981,8987 ****
- #include <sys/resource.h>
- main() { struct rlimit r; exit(!(sizeof(r.rlim_cur) == sizeof(int)));}
- EOF
-! if { (eval echo configure:8985: \"$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"
---- 8989,8995 ----
- #include <sys/resource.h>
- main() { struct rlimit r; exit(!(sizeof(r.rlim_cur) == sizeof(int)));}
- EOF
-! if { (eval echo configure:8993: \"$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"
-***************
-*** 8994,9000 ****
- { echo "configure: error: this cannot happen" 1>&2; exit 1; }
- else
- cat > conftest.$ac_ext <<EOF
-! #line 8998 "configure"
- #include "confdefs.h"
-
- #include <sys/types.h>
---- 9002,9008 ----
- { echo "configure: error: this cannot happen" 1>&2; exit 1; }
- else
- cat > conftest.$ac_ext <<EOF
-! #line 9006 "configure"
- #include "confdefs.h"
-
- #include <sys/types.h>
-***************
-*** 9002,9008 ****
- #include <sys/resource.h>
- main() { struct rlimit r; exit(!(sizeof(r.rlim_cur) == sizeof(long 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""long int" 1>&6
- ISC_PLATFORM_RLIMITTYPE="#define ISC_PLATFORM_RLIMITTYPE long int"
---- 9010,9016 ----
- #include <sys/resource.h>
- main() { struct rlimit r; exit(!(sizeof(r.rlim_cur) == sizeof(long 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""long int" 1>&6
- ISC_PLATFORM_RLIMITTYPE="#define ISC_PLATFORM_RLIMITTYPE long int"
-***************
-*** 9015,9021 ****
- { echo "configure: error: this cannot happen" 1>&2; exit 1; }
- else
- cat > conftest.$ac_ext <<EOF
-! #line 9019 "configure"
- #include "confdefs.h"
-
- #include <sys/types.h>
---- 9023,9029 ----
- { echo "configure: error: this cannot happen" 1>&2; exit 1; }
- else
- cat > conftest.$ac_ext <<EOF
-! #line 9027 "configure"
- #include "confdefs.h"
-
- #include <sys/types.h>
-***************
-*** 9023,9029 ****
- #include <sys/resource.h>
- main() { struct rlimit r; exit((!sizeof(r.rlim_cur) == sizeof(long 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 long int" 1>&6
- ISC_PLATFORM_RLIMITTYPE="#define ISC_PLATFORM_RLIMITTYPE long long int"
---- 9031,9037 ----
- #include <sys/resource.h>
- main() { struct rlimit r; exit((!sizeof(r.rlim_cur) == sizeof(long 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 long int" 1>&6
- ISC_PLATFORM_RLIMITTYPE="#define ISC_PLATFORM_RLIMITTYPE long long int"
-***************
-*** 9147,9153 ****
- # 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:9151: 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
---- 9155,9161 ----
- # 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:9159: 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
-***************
-*** 9194,9200 ****
- # 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:9198: 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
---- 9202,9208 ----
- # 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:9206: 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
-***************
-*** 9237,9243 ****
- # 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:9241: 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
---- 9245,9251 ----
- # 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:9249: 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
-***************
-*** 9293,9299 ****
-
- SGMLCATALOG=""
- echo $ac_n "checking for catalog""... $ac_c" 1>&6
-! echo "configure:9297: checking for catalog" >&5
- for d in $sgmltrees
- do
- f=$d/catalog
---- 9301,9307 ----
-
- SGMLCATALOG=""
- echo $ac_n "checking for catalog""... $ac_c" 1>&6
-! echo "configure:9305: checking for catalog" >&5
- for d in $sgmltrees
- do
- f=$d/catalog
-***************
-*** 9335,9341 ****
-
- HTMLSTYLE=""
- echo $ac_n "checking for html/docbook.dsl""... $ac_c" 1>&6
-! echo "configure:9339: checking for html/docbook.dsl" >&5
- for d in $stylepath
- do
- f=$d/html/docbook.dsl
---- 9343,9349 ----
-
- HTMLSTYLE=""
- echo $ac_n "checking for html/docbook.dsl""... $ac_c" 1>&6
-! echo "configure:9347: checking for html/docbook.dsl" >&5
- for d in $stylepath
- do
- f=$d/html/docbook.dsl
-***************
-*** 9356,9362 ****
-
- PRINTSTYLE=""
- echo $ac_n "checking for print/docbook.dsl""... $ac_c" 1>&6
-! echo "configure:9360: checking for print/docbook.dsl" >&5
- for d in $stylepath
- do
- f=$d/print/docbook.dsl
---- 9364,9370 ----
-
- PRINTSTYLE=""
- echo $ac_n "checking for print/docbook.dsl""... $ac_c" 1>&6
-! echo "configure:9368: checking for print/docbook.dsl" >&5
- for d in $stylepath
- do
- f=$d/print/docbook.dsl
-***************
-*** 9382,9388 ****
-
- XMLDCL=""
- echo $ac_n "checking for docbook/dsssl/modular/dtds/decls/xml.dcl""... $ac_c" 1>&6
-! echo "configure:9386: checking for docbook/dsssl/modular/dtds/decls/xml.dcl" >&5
- for d in $sgmltrees
- do
- f=$d/docbook/dsssl/modular/dtds/decls/xml.dcl
---- 9390,9396 ----
-
- XMLDCL=""
- echo $ac_n "checking for docbook/dsssl/modular/dtds/decls/xml.dcl""... $ac_c" 1>&6
-! echo "configure:9394: checking for docbook/dsssl/modular/dtds/decls/xml.dcl" >&5
- for d in $sgmltrees
- do
- f=$d/docbook/dsssl/modular/dtds/decls/xml.dcl
-***************
-*** 9408,9414 ****
-
- DOCBOOK2MANSPEC=""
- echo $ac_n "checking for docbook2X/docbook2man-spec.pl""... $ac_c" 1>&6
-! echo "configure:9412: checking for docbook2X/docbook2man-spec.pl" >&5
- for d in $sgmltrees
- do
- f=$d/docbook2X/docbook2man-spec.pl
---- 9416,9422 ----
-
- DOCBOOK2MANSPEC=""
- echo $ac_n "checking for docbook2X/docbook2man-spec.pl""... $ac_c" 1>&6
-! echo "configure:9420: checking for docbook2X/docbook2man-spec.pl" >&5
- for d in $sgmltrees
- do
- f=$d/docbook2X/docbook2man-spec.pl
-***************
-*** 9428,9433 ****
---- 9436,9631 ----
-
-
- #
-+ # IDN support
-+ #
-+ # Check whether --with-idn or --without-idn was given.
-+ if test "${with_idn+set}" = set; then
-+ withval="$with_idn"
-+ use_idn="$withval"
-+ else
-+ use_idn="no"
-+ fi
-+
-+ case "$use_idn" in
-+ yes)
-+ if test X$prefix = XNONE ; then
-+ idn_path=/usr/local
-+ else
-+ idn_path=$prefix
-+ fi
-+ ;;
-+ no)
-+ ;;
-+ *)
-+ idn_path="$use_idn"
-+ ;;
-+ 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-idnlib or --without-idnlib was given.
-+ if test "${with_idnlib+set}" = set; then
-+ withval="$with_idnlib"
-+ idnlib="$withval"
-+ else
-+ idnlib="no"
-+ fi
-+
-+ if test "$idnlib" = yes; then
-+ { echo "configure: error: You must specify ARG for --with-idnlib." 1>&2; exit 1; }
-+ fi
-+
-+ IDNLIBS=
-+ if test "$use_idn" != no; then
-+ cat >> confdefs.h <<\EOF
-+ #define WITH_IDN 1
-+ EOF
-+
-+ STD_CINCLUDES="$STD_CINCLUDES -I$idn_path/include"
-+ if test "$idnlib" != no; then
-+ IDNLIBS="$idnlib $iconvlib"
-+ else
-+ IDNLIBS="-L$idn_path/lib -lidnkit $iconvlib"
-+ 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:9537: 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
-+ #line 9542 "configure"
-+ #include "confdefs.h"
-+ #include <$ac_hdr>
-+ EOF
-+ ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-+ { (eval echo configure:9547: \"$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 <<EOF
-+ #define $ac_tr_hdr 1
-+ EOF
-+
-+ else
-+ echo "$ac_t""no" 1>&6
-+ fi
-+ done
-+
-+ for ac_func in setlocale
-+ do
-+ echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-+ echo "configure:9576: 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 <<EOF
-+ #line 9581 "configure"
-+ #include "confdefs.h"
-+ /* System header to define __stub macros and hopefully few prototypes,
-+ which can conflict with char $ac_func(); below. */
-+ #include <assert.h>
-+ /* 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:9604: \"$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 <<EOF
-+ #define $ac_tr_func 1
-+ EOF
-+
-+ else
-+ echo "$ac_t""no" 1>&6
-+ fi
-+ done
-+
-+
-+ #
- # Substitutions
- #
-
-***************
-*** 9799,9804 ****
---- 9997,10003 ----
- s%@PRINTSTYLE@%$PRINTSTYLE%g
- s%@XMLDCL@%$XMLDCL%g
- s%@DOCBOOK2MANSPEC@%$DOCBOOK2MANSPEC%g
-+ s%@IDNLIBS@%$IDNLIBS%g
- s%@BIND9_TOP_BUILDDIR@%$BIND9_TOP_BUILDDIR%g
- s%@BIND9_ISC_BUILDINCLUDE@%$BIND9_ISC_BUILDINCLUDE%g
- s%@BIND9_ISCCC_BUILDINCLUDE@%$BIND9_ISCCC_BUILDINCLUDE%g
-***************
-*** 9828,9834 ****
-
- # 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.
---- 10027,10033 ----
-
- # 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.9 mdn/othersrc/bind9/configure.in:1.15
-*** configure.in Wed May 22 17:14:53 2002
---- configure.in Mon May 27 12:10:14 2002
-***************
-*** 1614,1619 ****
---- 1614,1695 ----
- NOM_PATH_FILE(DOCBOOK2MANSPEC, docbook2X/docbook2man-spec.pl, $sgmltrees)
-
- #
-+ # IDN support
-+ #
-+ AC_ARG_WITH(idn,
-+ [ --with-idn[=MPREFIX] enable IDN support using idnkit [default PREFIX]],
-+ use_idn="$withval", use_idn="no")
-+ case "$use_idn" in
-+ yes)
-+ if test X$prefix = XNONE ; then
-+ idn_path=/usr/local
-+ else
-+ idn_path=$prefix
-+ fi
-+ ;;
-+ no)
-+ ;;
-+ *)
-+ idn_path="$use_idn"
-+ ;;
-+ 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(idnlib,
-+ [ --with-idnlib=ARG specify libidnkit],
-+ idnlib="$withval", idnlib="no")
-+ if test "$idnlib" = yes; then
-+ AC_MSG_ERROR([You must specify ARG for --with-idnlib.])
-+ fi
-+
-+ IDNLIBS=
-+ if test "$use_idn" != no; then
-+ AC_DEFINE(WITH_IDN, 1, [define if idnkit support is to be included.])
-+ STD_CINCLUDES="$STD_CINCLUDES -I$idn_path/include"
-+ if test "$idnlib" != no; then
-+ IDNLIBS="$idnlib $iconvlib"
-+ else
-+ IDNLIBS="-L$idn_path/lib -lidnkit $iconvlib"
-+ fi
-+ fi
-+ AC_SUBST(IDNLIBS)
-+
-+ AC_CHECK_HEADERS(locale.h)
-+ AC_CHECK_FUNCS(setlocale)
-+
-+ #
- # Substitutions
- #
- AC_SUBST(BIND9_TOP_BUILDDIR)
-Index: bin/dig/Makefile.in
-diff -c mdn/othersrc/bind9/bin/dig/Makefile.in:1.1.1.6 mdn/othersrc/bind9/bin/dig/Makefile.in:1.3
-*** bin/dig/Makefile.in Tue Nov 27 16:55:50 2001
---- bin/dig/Makefile.in Tue Mar 19 16:45:35 2002
-***************
-*** 36,42 ****
-
- DEPLIBS = ${DNSDEPLIBS} ${ISCDEPLIBS}
-
-! LIBS = ${DNSLIBS} ${ISCLIBS} @LIBS@
-
- SUBDIRS =
-
---- 36,42 ----
-
- DEPLIBS = ${DNSDEPLIBS} ${ISCDEPLIBS}
-
-! LIBS = ${DNSLIBS} ${ISCLIBS} @IDNLIBS@ @LIBS@
-
- SUBDIRS =
-
-Index: bin/dig/dig.1
-diff -c mdn/othersrc/bind9/bin/dig/dig.1:1.1.1.2 mdn/othersrc/bind9/bin/dig/dig.1:1.4
-*** bin/dig/dig.1 Wed May 22 17:14:53 2002
---- bin/dig/dig.1 Mon May 27 12:10:14 2002
-***************
-*** 349,354 ****
---- 349,365 ----
- \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 "IDN SUPPORT"
-+ .PP
-+ If \fBdig\fR has been built with IDN (internationalized
-+ domain name) 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 IDN support for some reason, defines
-+ the \fBIDN_DISABLE\fR environment variable.
-+ The IDN 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.docbook
-diff -c mdn/othersrc/bind9/bin/dig/dig.docbook:1.1.1.2 mdn/othersrc/bind9/bin/dig/dig.docbook:1.4
-*** bin/dig/dig.docbook Wed May 22 17:14:53 2002
---- bin/dig/dig.docbook Mon May 27 12:10:15 2002
-***************
-*** 523,528 ****
---- 523,543 ----
- </refsect1>
-
- <refsect1>
-+ <title>IDN SUPPORT</title>
-+ <para>
-+ If <command>dig</command> has been built with IDN (internationalized
-+ domain name) support, it can accept and display non-ASCII domain names.
-+ <command>dig</command> 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 IDN support for some reason, defines
-+ the <envar>IDN_DISABLE</envar> environment variable.
-+ The IDN support is disabled if the the variable is set when
-+ <command>dig</command> runs.
-+ </para>
-+ </refsect1>
-+
-+ <refsect1>
- <title>FILES</title>
- <para>
- <filename>/etc/resolv.conf</filename>
-Index: bin/dig/dighost.c
-diff -c mdn/othersrc/bind9/bin/dig/dighost.c:1.1.1.12 mdn/othersrc/bind9/bin/dig/dighost.c:1.32
-*** bin/dig/dighost.c Wed May 22 17:14:53 2002
---- bin/dig/dighost.c Mon May 27 12:10:15 2002
-***************
-*** 32,37 ****
---- 32,48 ----
- #include <string.h>
- #include <limits.h>
-
-+ #ifdef HAVE_LOCALE_H
-+ #include <locale.h>
-+ #endif
-+
-+ #ifdef WITH_IDN
-+ #include <idn/result.h>
-+ #include <idn/log.h>
-+ #include <idn/resconf.h>
-+ #include <idn/api.h>
-+ #endif
-+
- #include <dns/byaddr.h>
- #include <dns/fixedname.h>
- #include <dns/message.h>
-***************
-*** 130,135 ****
---- 141,158 ----
- isc_mutex_t lookup_lock;
- dig_lookup_t *current_lookup = NULL;
-
-+ #ifdef WITH_IDN
-+ static void initialize_idn(void);
-+ static isc_result_t output_filter(isc_buffer_t *buffer,
-+ unsigned int used_org,
-+ isc_boolean_t absolute);
-+ static idn_result_t append_textname(char *name, const char *origin,
-+ size_t namesize);
-+ static void idn_check_result(idn_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
-***************
-*** 648,653 ****
---- 671,680 ----
- ISC_LIST_APPEND(server_list, srv, link);
- }
-
-+ #ifdef WITH_IDN
-+ initialize_idn();
-+ #endif
-+
- if (keyfile[0] != 0)
- setup_file_key();
- else if (keysecret[0] != 0)
-***************
-*** 1168,1173 ****
---- 1195,1208 ----
- isc_buffer_t b;
- dns_compress_t cctx;
- char store[MXNAME];
-+ #ifdef WITH_IDN
-+ idn_result_t mr;
-+ char utf8_textname[MXNAME], utf8_origin[MXNAME], idn_textname[MXNAME];
-+ #endif
-+
-+ #ifdef WITH_IDN
-+ dns_name_settotextfilter(output_filter);
-+ #endif
-
- REQUIRE(lookup != NULL);
- INSIST(!free_now);
-***************
-*** 1196,1201 ****
---- 1231,1247 ----
- isc_buffer_init(&lookup->onamebuf, lookup->onamespace,
- sizeof(lookup->onamespace));
-
-+ #ifdef WITH_IDN
-+ /*
-+ * We cannot convert `textname' and `origin' separately.
-+ * `textname' doesn't contain TLD, but local mapping needs
-+ * TLD.
-+ */
-+ mr = idn_encodename(IDN_LOCALCONV | IDN_DELIMMAP, lookup->textname,
-+ utf8_textname, sizeof(utf8_textname));
-+ idn_check_result(mr, "convert textname to UTF-8");
-+ #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 ****
---- 1250,1290 ----
- * is TRUE or we got a domain line in the resolv.conf file.
- */
- /* XXX New search here? */
-+ #ifdef WITH_IDN
-+ 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_IDN
- if (lookup->origin != NULL) {
-+ mr = idn_encodename(IDN_LOCALCONV | IDN_DELIMMAP,
-+ lookup->origin->origin, utf8_origin,
-+ sizeof(utf8_origin));
-+ idn_check_result(mr, "convert origin to UTF-8");
-+ mr = append_textname(utf8_textname, utf8_origin,
-+ sizeof(utf8_textname));
-+ idn_check_result(mr, "append origin to textname");
-+ }
-+ mr = idn_encodename(IDN_LOCALMAP | IDN_NAMEPREP | IDN_ASCCHECK |
-+ IDN_IDNCONV | IDN_LENCHECK, utf8_textname,
-+ idn_textname, sizeof(idn_textname));
-+ idn_check_result(mr, "convert UTF-8 textname to IDN encoding");
-+ #endif
-+
-+ #ifdef WITH_IDN
-+ if (0) {
-+ #else
-+ if (lookup->origin != NULL) {
-+ #endif
- debug("trying origin %s", lookup->origin->origin);
- result = dns_message_gettempname(lookup->sendmsg,
- &lookup->oname);
-***************
-*** 1254,1259 ****
---- 1329,1343 ----
- if (lookup->trace && lookup->trace_root)
- dns_name_clone(dns_rootname, lookup->name);
- else {
-+ #ifdef WITH_IDN
-+ 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
- len = strlen(lookup->textname);
- isc_buffer_init(&b, lookup->textname, len);
- isc_buffer_add(&b, len);
-***************
-*** 1261,1266 ****
---- 1345,1351 ----
- dns_rootname,
- ISC_FALSE,
- &lookup->namebuf);
-+ #endif
- }
- if (result != ISC_R_SUCCESS) {
- dns_message_puttempname(lookup->sendmsg,
-***************
-*** 2591,2593 ****
---- 2676,2776 ----
- if (mctx != NULL)
- isc_mem_destroy(&mctx);
- }
-+
-+ #ifdef WITH_IDN
-+ static void
-+ initialize_idn(void) {
-+ idn_result_t r;
-+
-+ #ifdef HAVE_SETLOCALE
-+ /* Set locale */
-+ (void)setlocale(LC_ALL, "");
-+ #endif
-+ /* Create configuration context. */
-+ r = idn_nameinit(1);
-+ if (r != idn_success)
-+ fatal("idn api initialization failed: %s",
-+ idn_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 (idn_decodename(IDN_DECODE_APP, tmp1, tmp2, MAXDLEN) != idn_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 idn_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 idn_success;
-+
-+ /* Append dot and origin */
-+
-+ if (namelen + 1 + originlen >= namesize)
-+ return idn_buffer_overflow;
-+
-+ name[namelen++] = '.';
-+ (void)strcpy(name + namelen, origin);
-+ return idn_success;
-+ }
-+
-+ static void
-+ idn_check_result(idn_result_t r, const char *msg) {
-+ if (r != idn_success) {
-+ exitcode = 1;
-+ fatal("%s: %s", msg, idn_result_tostring(r));
-+ }
-+ }
-+
-+ #endif /* WITH_IDN */
-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.3
-*** bin/dig/host.1 Tue Nov 27 16:55:51 2001
---- bin/dig/host.1 Tue Mar 19 16:45:36 2002
-***************
-*** 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 "IDN SUPPORT"
-+ .PP
-+ If \fBhost\fR has been built with IDN (internationalized
-+ domain name) 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 IDN support for some reason, defines
-+ the \fBIDN_DISABLE\fR environment variable.
-+ The IDN 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.docbook
-diff -c mdn/othersrc/bind9/bin/dig/host.docbook:1.1.1.1 mdn/othersrc/bind9/bin/dig/host.docbook:1.3
-*** bin/dig/host.docbook Tue Nov 27 16:55:51 2001
---- bin/dig/host.docbook Tue Mar 19 16:45:36 2002
-***************
-*** 181,186 ****
---- 181,201 ----
- </refsect1>
-
- <refsect1>
-+ <title>IDN SUPPORT</title>
-+ <para>
-+ If <command>host</command> has been built with IDN (internationalized
-+ domain name) support, it can accept and display non-ASCII domain names.
-+ <command>host</command> 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 IDN support for some reason, defines
-+ the <envar>IDN_DISABLE</envar> environment variable.
-+ The IDN support is disabled if the the variable is set when
-+ <command>host</command> runs.
-+ </para>
-+ </refsect1>
-+
-+ <refsect1>
- <title>FILES</title>
- <para>
- <filename>/etc/resolv.conf</filename>
-Index: lib/dns/name.c
-diff -c mdn/othersrc/bind9/lib/dns/name.c:1.1.1.10 mdn/othersrc/bind9/lib/dns/name.c:1.14
-*** lib/dns/name.c Wed May 22 17:15:27 2002
---- lib/dns/name.c Mon May 27 12:10:15 2002
-***************
-*** 194,199 ****
---- 194,206 ----
- /* XXXDCL make const? */
- dns_name_t *dns_wildcardname = &wild;
-
-+ #ifdef WITH_IDN
-+ /*
-+ * 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_IDN
-+ 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_IDN
-+ 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_IDN
-+ 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.7 mdn/othersrc/bind9/lib/dns/include/dns/name.h:1.10
-*** lib/dns/include/dns/name.h Wed May 22 17:15:29 2002
---- lib/dns/include/dns/name.h Mon May 27 12:10:15 2002
-***************
-*** 219,224 ****
---- 219,235 ----
- */
- #define DNS_NAME_MAXWIRE 255
-
-+ #ifdef WITH_IDN
-+ /*
-+ * 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
- ***/
-***************
-*** 1244,1249 ****
---- 1255,1268 ----
- * 'size' > 0.
- *
- */
-+
-+ #ifdef WITH_IDN
-+ void
-+ dns_name_settotextfilter(dns_name_totextfilter_t proc);
-+ /*
-+ * Call 'proc' at the end of dns_name_totext.
-+ */
-+ #endif /* WITH_IDN */
-
- #define DNS_NAME_FORMATSIZE (DNS_NAME_MAXTEXT + 1)
- /*
+++ /dev/null
-IDN patch for bind-9.2.2
-========================
-
-
-This is a patch file for ISC BIND 9.2.2 to make it work with
-internationalized domain names. With this patch you'll get IDN-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.idnkit' to compile
-and install.
-
-
-Index: README.idnkit
-diff -c /dev/null mdn/othersrc/bind9/README.idnkit:1.3
-*** README.idnkit Tue Mar 11 08:55:20 2003
---- README.idnkit Mon Mar 10 09:47:41 2003
-***************
-*** 0 ****
---- 1,113 ----
-+
-+ BIND-9 IDN patch
-+
-+ Japan Network Information Center (JPNIC)
-+
-+
-+ * What is this patch for?
-+
-+ This patch adds internationalized domain name (IDN) support to BIND-9.
-+ You'll get internationalized version of dig/host/nslookup commands.
-+
-+ + internationalized 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 idnkit 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-idn' option to enable IDN support.
-+
-+ --with-idn[=IDN_PREFIX]
-+ To enable IDN support, you have to specify `--with-idn' option.
-+ The argument IDN_PREFIX is the install prefix of idnkit. If
-+ IDN_PREFIX is omitted, PREFIX (derived from `--prefix=PREFIX')
-+ is assumed.
-+
-+ --with-libiconv[=LIBICONV_PREFIX]
-+ Specify this option if idnkit 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-idnlib=IDN_LIBSPEC
-+ With this option, you can explicitly specify the argument(s)
-+ to `cc' or `ld' to link the idnkit's library, `libidnkit'. If
-+ this option is not specified, `-L${PREFIX}/lib -lidnkit' is
-+ assumed, where ${PREFIX} is the installation prefix specified
-+ with `--with-idn' option above. You may need to use this
-+ option to specify extra argments, for example,
-+ `--with-idnlib="-L/usr/local/lib -R/usr/local/lib -lidnkit"'.
-+
-+ 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.
-+
-+
-+ * Contact information
-+
-+ Please see http//www.nic.ad.jp/en/idn/ for the latest news
-+ about idnkit 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.2-patch,v 1.1 2003/06/04 00:27:32 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.12
-*** config.h.in Tue Nov 27 16:55:45 2001
---- config.h.in Tue Mar 19 16:45:35 2002
-***************
-*** 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 <dlfcn.h> header file. */
- #undef HAVE_DLFCN_H
-
-***************
-*** 150,155 ****
---- 153,161 ----
- /* Define if you have the <linux/capability.h> header file. */
- #undef HAVE_LINUX_CAPABILITY_H
-
-+ /* Define if you have the <locale.h> header file. */
-+ #undef HAVE_LOCALE_H
-+
- /* Define if you have the <sys/prctl.h> header file. */
- #undef HAVE_SYS_PRCTL_H
-
-***************
-*** 176,178 ****
---- 182,188 ----
-
- /* Define if you have the socket library (-lsocket). */
- #undef HAVE_LIBSOCKET
-+
-+ /* define if idnkit support is to be included. */
-+ #undef WITH_IDN
-+
-Index: configure
-diff -c mdn/othersrc/bind9/configure:1.1.1.10 mdn/othersrc/bind9/configure:1.16
-*** configure Wed Mar 5 17:14:55 2003
---- configure Thu Mar 6 20:10:05 2003
-***************
-*** 1007,1012 ****
---- 1007,1016 ----
- --with-gnu-ld assume the C compiler uses GNU ld default=no
- --with-pic try to use only PIC/non-PIC objects default=use both
- --with-kame=PATH use Kame IPv6 default path /usr/local/v6
-+ --with-idn=MPREFIX enable IDN support using idnkit default PREFIX
-+ --with-libiconv=IPREFIX GNU libiconv are in IPREFIX default PREFIX
-+ --with-iconv=LIBSPEC specify iconv library default -liconv
-+ --with-idnlib=ARG specify libidnkit
-
- Some influential environment variables:
- CC C compiler command
-***************
-*** 7371,7377 ****
- case $host in
- *-*-irix6*)
- # Find out which ABI we are using.
-! echo '#line 7374 "configure"' > conftest.$ac_ext
- if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
---- 7375,7381 ----
- case $host in
- *-*-irix6*)
- # Find out which ABI we are using.
-! echo '#line 7378 "configure"' > conftest.$ac_ext
- if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
-***************
-*** 7914,7920 ****
- save_CFLAGS="$CFLAGS"
- CFLAGS="$CFLAGS -o out/conftest2.$ac_objext"
- compiler_c_o=no
-! if { (eval echo configure:7917: \"$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
---- 7918,7924 ----
- save_CFLAGS="$CFLAGS"
- CFLAGS="$CFLAGS -o out/conftest2.$ac_objext"
- compiler_c_o=no
-! if { (eval echo configure:7921: \"$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
-***************
-*** 9599,9605 ****
- lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
- lt_status=$lt_dlunknown
- cat > conftest.$ac_ext <<EOF
-! #line 9602 "configure"
- #include "confdefs.h"
-
- #if HAVE_DLFCN_H
---- 9603,9609 ----
- lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
- lt_status=$lt_dlunknown
- cat > conftest.$ac_ext <<EOF
-! #line 9606 "configure"
- #include "confdefs.h"
-
- #if HAVE_DLFCN_H
-***************
-*** 9697,9703 ****
- lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
- lt_status=$lt_dlunknown
- cat > conftest.$ac_ext <<EOF
-! #line 9700 "configure"
- #include "confdefs.h"
-
- #if HAVE_DLFCN_H
---- 9701,9707 ----
- lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
- lt_status=$lt_dlunknown
- cat > conftest.$ac_ext <<EOF
-! #line 9704 "configure"
- #include "confdefs.h"
-
- #if HAVE_DLFCN_H
-***************
-*** 13265,13270 ****
---- 13269,13580 ----
-
-
- #
-+ # IDN support
-+ #
-+
-+ # Check whether --with-idn or --without-idn was given.
-+ if test "${with_idn+set}" = set; then
-+ withval="$with_idn"
-+ use_idn="$withval"
-+ else
-+ use_idn="no"
-+ fi;
-+ case "$use_idn" in
-+ yes)
-+ if test X$prefix = XNONE ; then
-+ idn_path=/usr/local
-+ else
-+ idn_path=$prefix
-+ fi
-+ ;;
-+ no)
-+ ;;
-+ *)
-+ idn_path="$use_idn"
-+ ;;
-+ 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-idnlib or --without-idnlib was given.
-+ if test "${with_idnlib+set}" = set; then
-+ withval="$with_idnlib"
-+ idnlib="$withval"
-+ else
-+ idnlib="no"
-+ fi;
-+ if test "$idnlib" = yes; then
-+ { { echo "$as_me:$LINENO: error: You must specify ARG for --with-idnlib." >&5
-+ echo "$as_me: error: You must specify ARG for --with-idnlib." >&2;}
-+ { (exit 1); exit 1; }; }
-+ fi
-+
-+ IDNLIBS=
-+ if test "$use_idn" != no; then
-+
-+ cat >>confdefs.h <<\_ACEOF
-+ #define WITH_IDN 1
-+ _ACEOF
-+
-+ STD_CINCLUDES="$STD_CINCLUDES -I$idn_path/include"
-+ if test "$idnlib" != no; then
-+ IDNLIBS="$idnlib $iconvlib"
-+ else
-+ IDNLIBS="-L$idn_path/lib -lidnkit $iconvlib"
-+ fi
-+ fi
-+
-+
-+
-+ for ac_header in locale.h
-+ do
-+ as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-+ if eval "test \"\${$as_ac_Header+set}\" = set"; then
-+ echo "$as_me:$LINENO: checking for $ac_header" >&5
-+ echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-+ if eval "test \"\${$as_ac_Header+set}\" = set"; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+ fi
-+ echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-+ echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-+ else
-+ # Is the header compilable?
-+ echo "$as_me:$LINENO: checking $ac_header usability" >&5
-+ echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
-+ cat >conftest.$ac_ext <<_ACEOF
-+ #line $LINENO "configure"
-+ #include "confdefs.h"
-+ $ac_includes_default
-+ #include <$ac_header>
-+ _ACEOF
-+ rm -f conftest.$ac_objext
-+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+ (eval $ac_compile) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); } &&
-+ { ac_try='test -s conftest.$ac_objext'
-+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+ (eval $ac_try) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); }; }; then
-+ ac_header_compiler=yes
-+ else
-+ echo "$as_me: failed program was:" >&5
-+ cat conftest.$ac_ext >&5
-+ ac_header_compiler=no
-+ fi
-+ rm -f conftest.$ac_objext conftest.$ac_ext
-+ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-+ echo "${ECHO_T}$ac_header_compiler" >&6
-+
-+ # Is the header present?
-+ echo "$as_me:$LINENO: checking $ac_header presence" >&5
-+ echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
-+ cat >conftest.$ac_ext <<_ACEOF
-+ #line $LINENO "configure"
-+ #include "confdefs.h"
-+ #include <$ac_header>
-+ _ACEOF
-+ if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-+ ac_status=$?
-+ egrep -v '^ *\+' conftest.er1 >conftest.err
-+ rm -f conftest.er1
-+ cat conftest.err >&5
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); } >/dev/null; then
-+ if test -s conftest.err; then
-+ ac_cpp_err=$ac_c_preproc_warn_flag
-+ else
-+ ac_cpp_err=
-+ fi
-+ else
-+ ac_cpp_err=yes
-+ fi
-+ if test -z "$ac_cpp_err"; then
-+ ac_header_preproc=yes
-+ else
-+ echo "$as_me: failed program was:" >&5
-+ cat conftest.$ac_ext >&5
-+ ac_header_preproc=no
-+ fi
-+ rm -f conftest.err conftest.$ac_ext
-+ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-+ echo "${ECHO_T}$ac_header_preproc" >&6
-+
-+ # So? What about this header?
-+ case $ac_header_compiler:$ac_header_preproc in
-+ yes:no )
-+ { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-+ echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
-+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-+ echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};;
-+ no:yes )
-+ { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-+ echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
-+ echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
-+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-+ echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};;
-+ esac
-+ echo "$as_me:$LINENO: checking for $ac_header" >&5
-+ echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-+ if eval "test \"\${$as_ac_Header+set}\" = set"; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+ else
-+ eval "$as_ac_Header=$ac_header_preproc"
-+ fi
-+ echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-+ echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-+
-+ fi
-+ if test `eval echo '${'$as_ac_Header'}'` = yes; then
-+ cat >>confdefs.h <<_ACEOF
-+ #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-+ _ACEOF
-+
-+ fi
-+
-+ done
-+
-+
-+ for ac_func in setlocale
-+ do
-+ as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-+ echo "$as_me:$LINENO: checking for $ac_func" >&5
-+ echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-+ if eval "test \"\${$as_ac_var+set}\" = set"; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+ else
-+ cat >conftest.$ac_ext <<_ACEOF
-+ #line $LINENO "configure"
-+ #include "confdefs.h"
-+ /* From autoconf 2.57 */
-+ /* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
-+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
-+ #define $ac_func innocuous_$ac_func
-+
-+ /* System header to define __stub macros and hopefully few prototypes,
-+ which can conflict with char $ac_func (); below.
-+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-+ <limits.h> exists even on freestanding compilers. */
-+
-+ #ifdef __STDC__
-+ # include <limits.h>
-+ #else
-+ # include <assert.h>
-+ #endif
-+
-+ #undef $ac_func
-+
-+ /* Override any gcc2 internal prototype to avoid an error. */
-+ #ifdef __cplusplus
-+ extern "C"
-+ {
-+ #endif
-+ /* 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 ();
-+ /* 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
-+ char (*f) () = $ac_func;
-+ #endif
-+ #ifdef __cplusplus
-+ }
-+ #endif
-+
-+ #ifdef F77_DUMMY_MAIN
-+ # ifdef __cplusplus
-+ extern "C"
-+ # endif
-+ int F77_DUMMY_MAIN() { return 1; }
-+ #endif
-+ int
-+ main ()
-+ {
-+ return f != $ac_func;
-+ ;
-+ return 0;
-+ }
-+ _ACEOF
-+ rm -f conftest.$ac_objext conftest$ac_exeext
-+ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+ (eval $ac_link) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); } &&
-+ { ac_try='test -s conftest$ac_exeext'
-+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+ (eval $ac_try) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); }; }; then
-+ eval "$as_ac_var=yes"
-+ else
-+ echo "$as_me: failed program was:" >&5
-+ cat conftest.$ac_ext >&5
-+ eval "$as_ac_var=no"
-+ fi
-+ rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-+ fi
-+ echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-+ echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-+ if test `eval echo '${'$as_ac_var'}'` = yes; then
-+ cat >>confdefs.h <<_ACEOF
-+ #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-+ _ACEOF
-+
-+ fi
-+ done
-+
-+
-+ #
- # Substitutions
- #
-
-***************
-*** 14061,14066 ****
---- 14371,14377 ----
- s,@PRINTSTYLE@,$PRINTSTYLE,;t t
- s,@XMLDCL@,$XMLDCL,;t t
- s,@DOCBOOK2MANSPEC@,$DOCBOOK2MANSPEC,;t t
-+ s,@IDNLIBS@,$IDNLIBS,;t t
- s,@BIND9_TOP_BUILDDIR@,$BIND9_TOP_BUILDDIR,;t t
- s,@BIND9_ISC_BUILDINCLUDE@,$BIND9_ISC_BUILDINCLUDE,;t t
- s,@BIND9_ISCCC_BUILDINCLUDE@,$BIND9_ISCCC_BUILDINCLUDE,;t t
-Index: configure.in
-diff -c mdn/othersrc/bind9/configure.in:1.1.1.10 mdn/othersrc/bind9/configure.in:1.16
-*** configure.in Wed Mar 5 17:14:56 2003
---- configure.in Wed Mar 5 17:37:08 2003
-***************
-*** 1681,1686 ****
---- 1681,1762 ----
- NOM_PATH_FILE(DOCBOOK2MANSPEC, docbook2X/docbook2man-spec.pl, $sgmltrees)
-
- #
-+ # IDN support
-+ #
-+ AC_ARG_WITH(idn,
-+ [ --with-idn[=MPREFIX] enable IDN support using idnkit [default PREFIX]],
-+ use_idn="$withval", use_idn="no")
-+ case "$use_idn" in
-+ yes)
-+ if test X$prefix = XNONE ; then
-+ idn_path=/usr/local
-+ else
-+ idn_path=$prefix
-+ fi
-+ ;;
-+ no)
-+ ;;
-+ *)
-+ idn_path="$use_idn"
-+ ;;
-+ 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(idnlib,
-+ [ --with-idnlib=ARG specify libidnkit],
-+ idnlib="$withval", idnlib="no")
-+ if test "$idnlib" = yes; then
-+ AC_MSG_ERROR([You must specify ARG for --with-idnlib.])
-+ fi
-+
-+ IDNLIBS=
-+ if test "$use_idn" != no; then
-+ AC_DEFINE(WITH_IDN, 1, [define if idnkit support is to be included.])
-+ STD_CINCLUDES="$STD_CINCLUDES -I$idn_path/include"
-+ if test "$idnlib" != no; then
-+ IDNLIBS="$idnlib $iconvlib"
-+ else
-+ IDNLIBS="-L$idn_path/lib -lidnkit $iconvlib"
-+ fi
-+ fi
-+ AC_SUBST(IDNLIBS)
-+
-+ AC_CHECK_HEADERS(locale.h)
-+ AC_CHECK_FUNCS(setlocale)
-+
-+ #
- # Substitutions
- #
- AC_SUBST(BIND9_TOP_BUILDDIR)
-Index: bin/dig/Makefile.in
-diff -c mdn/othersrc/bind9/bin/dig/Makefile.in:1.1.1.6 mdn/othersrc/bind9/bin/dig/Makefile.in:1.3
-*** bin/dig/Makefile.in Tue Nov 27 16:55:50 2001
---- bin/dig/Makefile.in Tue Mar 19 16:45:35 2002
-***************
-*** 36,42 ****
-
- DEPLIBS = ${DNSDEPLIBS} ${ISCDEPLIBS}
-
-! LIBS = ${DNSLIBS} ${ISCLIBS} @LIBS@
-
- SUBDIRS =
-
---- 36,42 ----
-
- DEPLIBS = ${DNSDEPLIBS} ${ISCDEPLIBS}
-
-! LIBS = ${DNSLIBS} ${ISCLIBS} @IDNLIBS@ @LIBS@
-
- SUBDIRS =
-
-Index: bin/dig/dig.1
-diff -c mdn/othersrc/bind9/bin/dig/dig.1:1.1.1.3 mdn/othersrc/bind9/bin/dig/dig.1:1.5
-*** bin/dig/dig.1 Wed Mar 5 17:14:57 2003
---- bin/dig/dig.1 Wed Mar 5 17:42:53 2003
-***************
-*** 349,354 ****
---- 349,365 ----
- \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 "IDN SUPPORT"
-+ .PP
-+ If \fBdig\fR has been built with IDN (internationalized
-+ domain name) 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 IDN support for some reason, defines
-+ the \fBIDN_DISABLE\fR environment variable.
-+ The IDN 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.docbook
-diff -c mdn/othersrc/bind9/bin/dig/dig.docbook:1.1.1.3 mdn/othersrc/bind9/bin/dig/dig.docbook:1.5
-*** bin/dig/dig.docbook Wed Mar 5 17:14:57 2003
---- bin/dig/dig.docbook Wed Mar 5 17:42:53 2003
-***************
-*** 523,528 ****
---- 523,543 ----
- </refsect1>
-
- <refsect1>
-+ <title>IDN SUPPORT</title>
-+ <para>
-+ If <command>dig</command> has been built with IDN (internationalized
-+ domain name) support, it can accept and display non-ASCII domain names.
-+ <command>dig</command> 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 IDN support for some reason, defines
-+ the <envar>IDN_DISABLE</envar> environment variable.
-+ The IDN support is disabled if the the variable is set when
-+ <command>dig</command> runs.
-+ </para>
-+ </refsect1>
-+
-+ <refsect1>
- <title>FILES</title>
- <para>
- <filename>/etc/resolv.conf</filename>
-Index: bin/dig/dighost.c
-diff -c mdn/othersrc/bind9/bin/dig/dighost.c:1.1.1.13 mdn/othersrc/bind9/bin/dig/dighost.c:1.33
-*** bin/dig/dighost.c Wed Mar 5 17:14:57 2003
---- bin/dig/dighost.c Wed Mar 5 17:42:53 2003
-***************
-*** 32,37 ****
---- 32,48 ----
- #include <string.h>
- #include <limits.h>
-
-+ #ifdef HAVE_LOCALE_H
-+ #include <locale.h>
-+ #endif
-+
-+ #ifdef WITH_IDN
-+ #include <idn/result.h>
-+ #include <idn/log.h>
-+ #include <idn/resconf.h>
-+ #include <idn/api.h>
-+ #endif
-+
- #include <dns/byaddr.h>
- #include <dns/fixedname.h>
- #include <dns/message.h>
-***************
-*** 130,135 ****
---- 141,158 ----
- isc_mutex_t lookup_lock;
- dig_lookup_t *current_lookup = NULL;
-
-+ #ifdef WITH_IDN
-+ static void initialize_idn(void);
-+ static isc_result_t output_filter(isc_buffer_t *buffer,
-+ unsigned int used_org,
-+ isc_boolean_t absolute);
-+ static idn_result_t append_textname(char *name, const char *origin,
-+ size_t namesize);
-+ static void idn_check_result(idn_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
-***************
-*** 648,653 ****
---- 671,680 ----
- ISC_LIST_APPEND(server_list, srv, link);
- }
-
-+ #ifdef WITH_IDN
-+ initialize_idn();
-+ #endif
-+
- if (keyfile[0] != 0)
- setup_file_key();
- else if (keysecret[0] != 0)
-***************
-*** 1168,1173 ****
---- 1195,1208 ----
- isc_buffer_t b;
- dns_compress_t cctx;
- char store[MXNAME];
-+ #ifdef WITH_IDN
-+ idn_result_t mr;
-+ char utf8_textname[MXNAME], utf8_origin[MXNAME], idn_textname[MXNAME];
-+ #endif
-+
-+ #ifdef WITH_IDN
-+ dns_name_settotextfilter(output_filter);
-+ #endif
-
- REQUIRE(lookup != NULL);
- INSIST(!free_now);
-***************
-*** 1196,1201 ****
---- 1231,1247 ----
- isc_buffer_init(&lookup->onamebuf, lookup->onamespace,
- sizeof(lookup->onamespace));
-
-+ #ifdef WITH_IDN
-+ /*
-+ * We cannot convert `textname' and `origin' separately.
-+ * `textname' doesn't contain TLD, but local mapping needs
-+ * TLD.
-+ */
-+ mr = idn_encodename(IDN_LOCALCONV | IDN_DELIMMAP, lookup->textname,
-+ utf8_textname, sizeof(utf8_textname));
-+ idn_check_result(mr, "convert textname to UTF-8");
-+ #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 ****
---- 1250,1290 ----
- * is TRUE or we got a domain line in the resolv.conf file.
- */
- /* XXX New search here? */
-+ #ifdef WITH_IDN
-+ 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_IDN
- if (lookup->origin != NULL) {
-+ mr = idn_encodename(IDN_LOCALCONV | IDN_DELIMMAP,
-+ lookup->origin->origin, utf8_origin,
-+ sizeof(utf8_origin));
-+ idn_check_result(mr, "convert origin to UTF-8");
-+ mr = append_textname(utf8_textname, utf8_origin,
-+ sizeof(utf8_textname));
-+ idn_check_result(mr, "append origin to textname");
-+ }
-+ mr = idn_encodename(IDN_LOCALMAP | IDN_NAMEPREP | IDN_ASCCHECK |
-+ IDN_IDNCONV | IDN_LENCHECK, utf8_textname,
-+ idn_textname, sizeof(idn_textname));
-+ idn_check_result(mr, "convert UTF-8 textname to IDN encoding");
-+ #endif
-+
-+ #ifdef WITH_IDN
-+ if (0) {
-+ #else
-+ if (lookup->origin != NULL) {
-+ #endif
- debug("trying origin %s", lookup->origin->origin);
- result = dns_message_gettempname(lookup->sendmsg,
- &lookup->oname);
-***************
-*** 1254,1259 ****
---- 1329,1343 ----
- if (lookup->trace && lookup->trace_root)
- dns_name_clone(dns_rootname, lookup->name);
- else {
-+ #ifdef WITH_IDN
-+ 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
- len = strlen(lookup->textname);
- isc_buffer_init(&b, lookup->textname, len);
- isc_buffer_add(&b, len);
-***************
-*** 1261,1266 ****
---- 1345,1351 ----
- dns_rootname,
- ISC_FALSE,
- &lookup->namebuf);
-+ #endif
- }
- if (result != ISC_R_SUCCESS) {
- dns_message_puttempname(lookup->sendmsg,
-***************
-*** 2663,2665 ****
---- 2748,2848 ----
- if (mctx != NULL)
- isc_mem_destroy(&mctx);
- }
-+
-+ #ifdef WITH_IDN
-+ static void
-+ initialize_idn(void) {
-+ idn_result_t r;
-+
-+ #ifdef HAVE_SETLOCALE
-+ /* Set locale */
-+ (void)setlocale(LC_ALL, "");
-+ #endif
-+ /* Create configuration context. */
-+ r = idn_nameinit(1);
-+ if (r != idn_success)
-+ fatal("idn api initialization failed: %s",
-+ idn_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 (idn_decodename(IDN_DECODE_APP, tmp1, tmp2, MAXDLEN) != idn_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 idn_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 idn_success;
-+
-+ /* Append dot and origin */
-+
-+ if (namelen + 1 + originlen >= namesize)
-+ return idn_buffer_overflow;
-+
-+ name[namelen++] = '.';
-+ (void)strcpy(name + namelen, origin);
-+ return idn_success;
-+ }
-+
-+ static void
-+ idn_check_result(idn_result_t r, const char *msg) {
-+ if (r != idn_success) {
-+ exitcode = 1;
-+ fatal("%s: %s", msg, idn_result_tostring(r));
-+ }
-+ }
-+
-+ #endif /* WITH_IDN */
-Index: bin/dig/host.1
-diff -c mdn/othersrc/bind9/bin/dig/host.1:1.1.1.2 mdn/othersrc/bind9/bin/dig/host.1:1.4
-*** bin/dig/host.1 Wed Mar 5 17:14:57 2003
---- bin/dig/host.1 Wed Mar 5 17:42:53 2003
-***************
-*** 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 "IDN SUPPORT"
-+ .PP
-+ If \fBhost\fR has been built with IDN (internationalized
-+ domain name) 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 IDN support for some reason, defines
-+ the \fBIDN_DISABLE\fR environment variable.
-+ The IDN 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.docbook
-diff -c mdn/othersrc/bind9/bin/dig/host.docbook:1.1.1.2 mdn/othersrc/bind9/bin/dig/host.docbook:1.4
-*** bin/dig/host.docbook Wed Mar 5 17:14:57 2003
---- bin/dig/host.docbook Wed Mar 5 17:42:53 2003
-***************
-*** 181,186 ****
---- 181,201 ----
- </refsect1>
-
- <refsect1>
-+ <title>IDN SUPPORT</title>
-+ <para>
-+ If <command>host</command> has been built with IDN (internationalized
-+ domain name) support, it can accept and display non-ASCII domain names.
-+ <command>host</command> 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 IDN support for some reason, defines
-+ the <envar>IDN_DISABLE</envar> environment variable.
-+ The IDN support is disabled if the the variable is set when
-+ <command>host</command> runs.
-+ </para>
-+ </refsect1>
-+
-+ <refsect1>
- <title>FILES</title>
- <para>
- <filename>/etc/resolv.conf</filename>
-Index: lib/dns/name.c
-diff -c mdn/othersrc/bind9/lib/dns/name.c:1.1.1.11 mdn/othersrc/bind9/lib/dns/name.c:1.15
-*** lib/dns/name.c Wed Mar 5 17:16:22 2003
---- lib/dns/name.c Wed Mar 5 17:49:58 2003
-***************
-*** 194,199 ****
---- 194,206 ----
- /* XXXDCL make const? */
- dns_name_t *dns_wildcardname = &wild;
-
-+ #ifdef WITH_IDN
-+ /*
-+ * 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);
-***************
-*** 1684,1689 ****
---- 1691,1699 ----
- unsigned int labels;
- isc_boolean_t saw_root = ISC_FALSE;
- char num[4];
-+ #ifdef WITH_IDN
-+ unsigned int oused = target->used;
-+ #endif
-
- /*
- * This function assumes the name is in proper uncompressed
-***************
-*** 1861,1866 ****
---- 1871,1880 ----
-
- isc_buffer_add(target, tlen - trem);
-
-+ #ifdef WITH_IDN
-+ if (totext_filter_proc != NULL)
-+ return ((*totext_filter_proc)(target, oused, saw_root));
-+ #endif
- return (ISC_R_SUCCESS);
- }
-
-***************
-*** 3325,3327 ****
---- 3339,3347 ----
- return (ISC_R_SUCCESS);
- }
-
-+ #ifdef WITH_IDN
-+ 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.7 mdn/othersrc/bind9/lib/dns/include/dns/name.h:1.10
-*** lib/dns/include/dns/name.h Wed May 22 17:15:29 2002
---- lib/dns/include/dns/name.h Mon May 27 12:10:15 2002
-***************
-*** 219,224 ****
---- 219,235 ----
- */
- #define DNS_NAME_MAXWIRE 255
-
-+ #ifdef WITH_IDN
-+ /*
-+ * 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
- ***/
-***************
-*** 1244,1249 ****
---- 1255,1268 ----
- * 'size' > 0.
- *
- */
-+
-+ #ifdef WITH_IDN
-+ void
-+ dns_name_settotextfilter(dns_name_totextfilter_t proc);
-+ /*
-+ * Call 'proc' at the end of dns_name_totext.
-+ */
-+ #endif /* WITH_IDN */
-
- #define DNS_NAME_FORMATSIZE (DNS_NAME_MAXTEXT + 1)
- /*
+++ /dev/null
-# $Id: Makefile.in,v 1.1 2003/06/04 00:27:05 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, 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) 2000-2002 Japan Network Information Center. All rights reserved."
-#
-# 4. The name of JPNIC may not 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.
-
-srcdir = @srcdir@
-VPATH = @srcdir@
-
-prefix = @prefix@
-exec_prefix = @exec_prefix@
-
-SUBDIRS = idnconv runidn
-
-SHELL = @SHELL@
-
-all: all-subdirs
-install: install-subdirs
-clean: clean-subdirs
-distclean: distclean-localdir distclean-subdirs
-test check: test-subdirs
-
-all-subdirs install-subdirs clean-subdirs distclean-subdirs test-subdirs:
- @target=`echo $@ | sed 's/-subdirs$$//'`; \
- for d in $(SUBDIRS); do \
- (cd $$d; $(MAKE) DESTDIR=$(DESTDIR) $$target); \
- done
-
-distclean-localdir:
- rm -f Makefile
+++ /dev/null
-# $Id: Makefile.in,v 1.1 2003/06/04 00:27:05 marka Exp $
-# Copyright (c) 2000, 2002 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) 2000-2002 Japan Network Information Center. All rights reserved."
-#
-# 4. The name of JPNIC may not 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.
-
-top_builddir = ../..
-
-srcdir = @srcdir@
-VPATH = @srcdir@
-
-prefix = @prefix@
-exec_prefix = @exec_prefix@
-
-bindir = @bindir@
-mandir = @mandir@
-man1dir = $(mandir)/man1
-
-CC = @CC@
-RANLIB = @RANLIB@
-INSTALL = @INSTALL@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_DATA = @INSTALL_DATA@
-MKINSTALLDIRS = @top_srcdir@/mkinstalldirs
-SHELL = @SHELL@
-LIBTOOL = @LIBTOOL@
-
-ICONVINC = @ICONVINC@
-ICONVLIB = @ICONVLIB@
-IDNLIB = ../../lib/libidnkit.la
-
-INCS = -I$(srcdir) -I$(srcdir)/../../include -I../../include $(ICONVINC)
-DEFS =
-
-CFLAGS = $(INCS) $(DEFS) @CPPFLAGS@ @CFLAGS@
-LDFLAGS = @LDFLAGS@
-
-SRCS = idnconv.c util.c selectiveencode.c
-OBJS = idnconv.o util.o selectiveencode.o
-
-@LITEONLY_TRUE@all:
-@LITEONLY_FALSE@all: idnconv idnslookup idnconv.1
-
-idnconv: $(OBJS) $(IDNLIB)
- $(LIBTOOL) --mode=link $(CC) $(LDFLAGS) -o $@ \
- $(OBJS) $(IDNLIB) $(ICONVLIB)
-
-idnslookup: $(srcdir)/idnslookup.in
- sed -e 's%[@]bindir[@]%$(bindir)%' $(srcdir)/idnslookup.in > idnslookup
- chmod 0755 idnslookup
-
-@LITEONLY_TRUE@install:
-@LITEONLY_FALSE@@COMPAT_TRUE@install: all install-nolite install-compat
-@LITEONLY_FALSE@@COMPAT_FALSE@install: all install-nolite
-
-install-nolite:
- $(MKINSTALLDIRS) $(DESTDIR)$(bindir)
- $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) idnconv \
- $(DESTDIR)$(bindir)/idnconv
- $(MKINSTALLDIRS) $(DESTDIR)$(man1dir)
- $(INSTALL_DATA) $(srcdir)/idnconv.1 $(DESTDIR)$(man1dir)/idnconv.1
-
-install-compat:
- src=$(DESTDIR)$(bindir)/idnconv; \
- dst=$(DESTDIR)$(bindir)/mdnconv; \
- rm -f $$dst; \
- ln $$src $$dst || cp $$src $$dst
- src=$(DESTDIR)$(man1dir)/idnconv.1; \
- dst=$(DESTDIR)$(man1dir)/mdnconv.1; \
- rm -f $$dst; \
- ln $$src $$dst || cp $$src $$dst
-
-clean:
- rm -f *.o idnconv idnslookup *.core core *~
- rm -fr .libs/
-
-distclean: clean
- rm -f Makefile
-
-test check:
+++ /dev/null
-.\" $Id: idnconv.1,v 1.1 2003/06/04 00:27:10 marka Exp $
-.\"
-.\" Copyright (c) 2000,2001,2002 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) 2000-2002 Japan Network Information Center. All rights reserved."
-.\"
-.\" 4. The name of JPNIC may not 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.
-.\"
-.TH IDNCONV 1 "Mar 3, 2001"
-.\"
-.SH NAME
-idnconv \- codeset converter for named.conf and zone master files
-.\"
-.SH SYNOPSIS
-\fBidnconv\fP [\fIoptions..\fP] [\fIfile\fP...]
-.\"
-.SH DESCRIPTION
-\fBidnconv\fR is a codeset converter for named configuration files
-and zone master files.
-\fBidnconv\fR performs codeset conversion specified either
-by the command-line arguments or by the configuration file,
-and writes the converted text to stdout.
-.PP
-If file name is specified, \fBidnconv\fR converts the contents of
-the file.
-Otherwise, \fBidnconv\fR converts \fIstdin\fR.
-.PP
-Since \fBidnconv\fR is specifically designed for converting
-internatinalized domain names, it may not be suitable as a general
-codeset converter.
-.\"
-.SH "OPERATION MODES"
-\fBidnconv\fR has two operation modes.
-.PP
-One is a mode to convert local-encoded domain names to IDN-encoded
-one. Usually this mode is used for preparing domain names to be
-listed in named configuration files or zone master files.
-In this mode, the following processes are performed in addition to
-the codeset (encoding) conversion.
-.RS 2
-.IP \- 2
-local mapping
-.IP \- 2
-standard domain name preperation (NAMEPREP)
-.RE
-.PP
-The other mode is a reverse conversion, from IDN-encoded domain name to
-local-encoded domain names.
-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 \fBidnconv\fR reads system's default configuration file
-(idn.conf) and performs conversion or name preparation according to
-the parameters specified in the file.
-You can override the setting in the configuration file by various
-command line options below.
-.TP 4
-\fB\-in\fP \fIin-code\fP, \fB\-i\fP \fIin-code\fP
-Specify the codeset name of the input text.
-Any of the following codeset names can be specified.
-.RS 4
-.IP "\(bu" 2
-Any codeset names which \fIiconv_open()\fP library function accepts
-.IP "\(bu" 2
-\f(CWPunycode\fR
-.IP "\(bu" 2
-\f(CWUTF-8\fR
-.IP "\(bu" 2
-Any alias names for the above, defined by the codeset alias file.
-.RE
-.IP "" 4
-If this option is not specified, the default codeset is determined
-from the locale in normal conversion mode.
-In reverse conversion mode, the default codeset is the IDN encoding
-specified by the configuration file (``idn-encoding'' entry).
-.TP 4
-\fB\-out\fP \fIout-code\fP, \fB\-o\fP \fIout-code\fP
-Specify the codeset name of the output text. \fIout-code\fP can be any
-codeset name that can be specified for \fB\-in\fR option.
-.IP "" 4
-If this option is not specified, the default is the IDN encoding
-specified by the configuration file (``idn-encoding'' entry) in
-normal conversion mode.
-In reverse conversion mode, the default codeset is determined from
-the locale.
-.TP 4
-\fB\-conf\fP \fIpath\fP, \fB\-c\fP \fIpath\fP
-Specify the pathname of idnkit configuration file (``idn.conf'').
-If not specified, system's default file is used, unless \-noconf
-option is specified.
-.TP 4
-\fB\-noconf\fP, \fB\-C\fP
-Specify that no configuration file is to be used.
-.TP 4
-\fB\-reverse\fP, \fB\-r\fP
-Specify reverse conversion mode.
-.br
-If this option is not specified, the normal conversion mode is used.
-.TP 4
-\fB\-nameprep\fR \fIversion\fR, \fB\-n\fR \fIversion\fR
-Specify the version of NAMEPREP.
-The following is a list of currently available versions.
-.RS 4
-.IP \f(CWRFC3491\fR 4
-Perform NAMEPREP according to the RFC3491
-``rfc-3491.txt''.
-.RE
-.TP 4
-\fB\-nonameprep\fR, \fB\-N\fR
-Specify to skip NAMEPREP process (or NAMEPREP verification process
-in the reverse conversion mode).
-This option implies -nounassigncheck and -nobidicheck.
-.TP 4
-\fB\-localmap\fR \fImap\fR
-Specify the name of local mapping rule.
-Currently, following maps are available.
-.RS 4
-.IP \f(CWRFC3491\fR 4
-Use the list of mappings specified by RFC3491.
-.IP \f(CWfilemap:\fR\fIpath\fR 4
-Use list of mappings specified by mapfile \fIpath\fR.
-See idn.conf(5) for the format of a mapfile.
-.RE
-.IP "" 4
-This option can be specified more than once.
-In that case, each mapping will be performed in the order of the
-specification.
-.TP 4
-\fB\-nounassigncheck\fR, \fB\-U\fR
-Skip unassigned codepoint check.
-.TP 4
-\fB\-nobidicheck\fR, \fB\-B\fR
-Skip bidi character check.
-.TP 4
-\fB\-nolengthcheck\fR
-Do not check label length of normal conversion result.
-This option is only meaningful in the normal conversion mode.
-.TP 4
-\fB\-noasciicheck\fR, \fB\-A\fR
-Do not check ASCII range characters.
-This option is only meaningful in the normal conversion mode.
-.TP 4
-\fB\-noroundtripcheck\fR
-Do not perform round trip check.
-This option is only meaningful in the reverse conversion mode.
-.TP 4
-\fB\-delimiter\fR \fIcodepoint\fP
-Specify the character to be mapped to domain name delimiter (period).
-This option can be specified more than once in order to specify multiple
-characters.
-.br
-This option is only meaningful in the normal conversion mode.
-.TP 4
-\fB\-whole\fP, \fB\-w\fP
-Perform local mapping, nameprep and conversion to output codeset for the entire
-input text. If this option is not specified, only non-ASCII characters
-and their surrounding texts will be processed.
-See ``NORAML CONVERSION MECHANISM'' and ``REVERSE CONVERSION MECHANISM''
-for details.
-.TP 4
-\fB\-alias\fP \fIpath\fP, \fB\-a\fP \fIpath\fP
-Specify a codeset alias file. It is a simple text file, where
-each line has a pair of alias name and real name separated by one
-or more white spaces like below:
-.nf
-.ft CW
-
- \fIalias-codeset-name\fP \fIreal-codeset-name\fP
-
-.ft R
-.fi
-Lines starting with ``#'' are treated as comments.
-.TP 4
-\fB\-flush\fP
-Force line-buffering mode.
-.TP 4
-\fB\-version\fP, \fB\-v\fP
-Print version information and quit.
-.\"
-.SH LOCAL CODESET
-idnconv guesses local codeset from locale and environment variables.
-See the ``LOCAL CODESET'' section in idn.conf(5) for more details.
-.\"
-.SH NORMAL CONVERSION MECHANISM
-\fBidnconv\fR performs conversion line by line.
-Here describes how \fBidnconv\fR does its job for each line.
-.\"
-.IP "1. read a line from input text" 4
-.IP "2. convert the line to UTF-8" 4
-\fBidnconv\fR converts the line from local encoding to UTF-8.
-.IP "3. find internationalized domain names" 4
-If the \-whole\ (or \-w) option is specified, the entire line is
-assumed as an internationalized domain name.
-Otherwise, \fBidnconv\fR recognizes any character sequences having
-the following properties in the line as internationalized domain names.
-.RS 4
-.IP "\(bu" 2
-containing at least one non-ASCII character, and
-.IP "\(bu" 2
-consisting of legal domain name characters (alphabets, digits, hypens),
-non-ASCII characters and period.
-.RE
-.IP "4. convert internationalized domain names to ACE" 4
-For each internationalized domain name found in the line,
-\fBidnconv\fR converts the name to ACE.
-The details about the conversion procedure is:
-.RS 4
-.IP "4.1. delimiter mapping" 4
-Substibute certain characters specified as domain name delimiter
-with period.
-.IP "4.2. local mapping" 4
-Perform local mapping.
-If the local mapping is specified by command line option \-localmap,
-the specified mapping rule is applied. Otherwise, find the mapping rule
-from the configuration file which matches to the TLD of the name,
-and perform mapping according to the matched rule.
-.br
-This step is skipped if the \-nolocalmap (or \-L) option is specified.
-.IP "4.3. NAMEPREP" 4
-Perform name preparation (NAMEPREP).
-Mapping, normalization, prohibited character checking, unassigned
-codepoint checking, bidirectional character checking are done in
-that order.
-If the prohibited character check, unassigned codepoint check, or
-bidi character check fails, the normal conversion procedure aborts.
-.br
-This step is skipped if the \-nonameprep (or \-N) option is specified.
-.IP "4.4. ASCII character checking" 4
-Checks ASCII range character in the domain name.
-the normal conversion procedure aborts, if the domain name has a label
-beginning or end with hyphen (U+002D) or it contains ASCII range character
-except for alphanumeric and hyphen,
-.br
-This step is skipped if the \-noasciicheck (or \-A) option is specified.
-.IP "4.5. ACE conversion" 4
-Convert the string to ACE.
-.IP "4.6. label length checking" 4
-The normal conversion procedure aborts, if the domain name has an empty
-label or too long label (64 characters or more).
-.br
-This step is skipped if the \-nolengthcheck option is specified.
-.RE
-.IP "5. output the result" 4
-.PP
-.\"
-.SH REVERSE CONVERSION MECHANISM
-This is like the normal conversion mechanism, but they are not symmetric.
-\fBidnconv\fR does its job for each line.
-.\"
-.IP "1. read a line from input text" 4
-.IP "2. convert the line to UTF-8" 4
-\fBidnconv\fR converts the line from local encoding to UTF-8.
-.IP "3. find internationalized domain names" 4
-If the \-whole\ (or \-w) option is specified, the entire line is
-assumed as an internationalized domain name.
-Otherwise, \fBidnconv\fR decodes any valid ASCII domain names
-including ACE names in the line.
-.IP "4. convert domain names to local encoding"
-Then, \fBidnconv\fR decodes the domain names.
-The decode procedure consists of the following steps.
-.RS 4
-.IP "4.1. Delimiter mapping" 4
-Substibute certain characters specified as domain name delimiter
-with period.
-.br
-.IP "4.2. NAMEPREP" 4
-Perform name preparation (NAMEPREP) for each label in the domain name.
-Mapping, normalization, prohibited character checking, unassigned
-codepoint checking, bidirectional character checking are done in
-that order.
-If the prohibited character check, unassigned codepoint check, or
-bidi character check fails, disqualified labels are restored to
-original input strings and further conversion on those labels are
-not performed.
-.br
-This step is skipped if the \-nonameprep (or \-N) option is specified.
-.IP "4.3. ACE conversion" 4
-Convert the string from ACE to UTF-8.
-.IP "4.4. Round trip checkning" 4
-For each label, perform the normal conversion and compare it with
-the result of the step 4.2.
-This check succeeds, if they are equivalent strings.
-In case of failure, disqualified labels are restored to original
-input strings and further conversion on those labels are not
-performed.
-.br
-This step is skipped if the \-noroundtripcheck option is specified.
-.IP "4.5. local encoding conversion" 4
-Convert the result of the step 4.3. from UTF-8 to local encoding.
-If a label in the domain name contains a character which cannot be
-represented in the local encoding, the label is restored to the
-original input string.
-.RE
-.IP "5. output the result" 4
-.PP
-.\"
-.SH FILE MANAGEMENT
-Maybe the best way to manage named.conf or zone master files that contains
-internationalized domain name is to keep them in your local codeset so that
-they can be edited with your favorite editor, and generate a version in
-the IDN encoding using \fBidnconv\fP.
-.PP
-`make' is a convenient tool for this purpose.
-Suppose the local codeset version has suffix `.lc', and its ACE version
-has suffix `.ace'. The following Makefile enables you to generate
-ACE version from local codeset version by just typing `make'.
-.RS 4
-.nf
-.ft CW
-
-\&.SUFFIXES: .lc .ace
-\&.lc.ace:
- idnconv -in $(LOCALCODE) -out $(IDNCODE) \\
- $(IDNCONVOPT) $< > $@
-
-LOCALCODE = EUC-JP
-IDNCODE = Punycode
-IDNCONVOPT =
-
-DESTFILES = db.zone1.ace db.zone2.ace
-
-all: $(DESTFILES)
-.ft
-.fi
-.RE
-.\"
-.SH SEE ALSO
-idn.conf(5),
-iconv(3)
-.\"
-.SH BUGS
-The automatic input-code selection depends on your system, and sometimes
-it cannot guess or guess wrong. It is better to explicitly specify it
-using \-in option.
+++ /dev/null
-#ifndef lint
-static char *rcsid = "$Id: idnconv.c,v 1.1 2003/06/04 00:27:07 marka Exp $";
-#endif
-
-/*
- * Copyright (c) 2000,2001,2002 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-/*
- * idnconv -- Codeset converter for named.conf and zone files
- */
-
-#include <config.h>
-
-#include <stdio.h>
-#include <stddef.h>
-#include <stdlib.h>
-#include <string.h>
-#include <errno.h>
-#ifdef HAVE_LOCALE_H
-#include <locale.h>
-#endif
-
-#include <idn/result.h>
-#include <idn/converter.h>
-#include <idn/normalizer.h>
-#include <idn/utf8.h>
-#include <idn/resconf.h>
-#include <idn/res.h>
-#include <idn/util.h>
-#include <idn/version.h>
-
-#include "util.h"
-
-#define MAX_DELIMITER 10
-#define MAX_LOCALMAPPER 10
-#define MAX_MAPPER 10
-#define MAX_NORMALIZER 10
-#define MAX_CHEKER 10
-
-#define FLAG_REVERSE 0x0001
-#define FLAG_DELIMMAP 0x0002
-#define FLAG_LOCALMAP 0x0004
-#define FLAG_MAP 0x0008
-#define FLAG_NORMALIZE 0x0010
-#define FLAG_PROHIBITCHECK 0x0020
-#define FLAG_UNASSIGNCHECK 0x0040
-#define FLAG_BIDICHECK 0x0080
-#define FLAG_ASCIICHECK 0x0100
-#define FLAG_LENGTHCHECK 0x0200
-#define FLAG_ROUNDTRIPCHECK 0x0400
-#define FLAG_SELECTIVE 0x0800
-
-#define FLAG_NAMEPREP \
- (FLAG_MAP|FLAG_NORMALIZE|FLAG_PROHIBITCHECK|FLAG_UNASSIGNCHECK|\
- FLAG_BIDICHECK)
-
-#define DEFAULT_FLAGS \
- (FLAG_LOCALMAP|FLAG_NAMEPREP|FLAG_ASCIICHECK|FLAG_LENGTHCHECK|\
- FLAG_ROUNDTRIPCHECK|FLAG_SELECTIVE|FLAG_DELIMMAP)
-
-int line_number; /* current input file line number */
-static int flush_every_line = 0; /* pretty obvious */
-
-static int encode_file(idn_resconf_t conf1, idn_resconf_t conf2,
- FILE *fp, int flags);
-static int decode_file(idn_resconf_t conf1, idn_resconf_t conf2,
- FILE *fp, int flags);
-static int trim_newline(idnconv_strbuf_t *buf);
-static idn_result_t convert_line(idnconv_strbuf_t *from,
- idnconv_strbuf_t *to,
- idn_resconf_t conf,
- idn_action_t actions, int flags);
-static void print_usage(char *cmd);
-static void print_version(void);
-static unsigned long get_ucs(const char *p);
-
-int
-main(int ac, char **av) {
- char *cmd = *av;
- char *cname;
- unsigned long delimiters[MAX_DELIMITER];
- char *localmappers[MAX_LOCALMAPPER];
- char *nameprep_version = NULL;
- int ndelimiters = 0;
- int nlocalmappers = 0;
- char *in_code = NULL;
- char *out_code = NULL;
- char *resconf_file = NULL;
- int no_resconf = 0;
- char *encoding_alias = NULL;
- int flags = DEFAULT_FLAGS;
- FILE *fp;
- idn_result_t r;
- idn_resconf_t resconf1, resconf2;
- idn_converter_t conv;
- int exit_value;
-
-#ifdef HAVE_SETLOCALE
- (void)setlocale(LC_ALL, "");
-#endif
-
- /*
- * If the command name begins with 'r', reverse mode is assumed.
- */
- if ((cname = strrchr(cmd, '/')) != NULL)
- cname++;
- else
- cname = cmd;
- if (cname[0] == 'r')
- flags |= FLAG_REVERSE;
-
- ac--;
- av++;
- while (ac > 0 && **av == '-') {
-
-#define OPT_MATCH(opt) (strcmp(*av, opt) == 0)
-#define MUST_HAVE_ARG if (ac < 2) print_usage(cmd)
-#define APPEND_LIST(array, size, item, what) \
- if (size >= (sizeof(array) / sizeof(array[0]))) { \
- errormsg("too many " what "\n"); \
- exit(1); \
- } \
- array[size++] = item; \
- ac--; av++
-
- if (OPT_MATCH("-in") || OPT_MATCH("-i")) {
- MUST_HAVE_ARG;
- in_code = av[1];
- ac--;
- av++;
- } else if (OPT_MATCH("-out") || OPT_MATCH("-o")) {
- MUST_HAVE_ARG;
- out_code = av[1];
- ac--;
- av++;
- } else if (OPT_MATCH("-conf") || OPT_MATCH("-c")) {
- MUST_HAVE_ARG;
- resconf_file = av[1];
- ac--;
- av++;
- } else if (OPT_MATCH("-nameprep") || OPT_MATCH("-n")) {
- MUST_HAVE_ARG;
- nameprep_version = av[1];
- ac--;
- av++;
- } else if (OPT_MATCH("-noconf") || OPT_MATCH("-C")) {
- no_resconf = 1;
- } else if (OPT_MATCH("-reverse") || OPT_MATCH("-r")) {
- flags |= FLAG_REVERSE;
- } else if (OPT_MATCH("-nolocalmap") || OPT_MATCH("-L")) {
- flags &= ~FLAG_LOCALMAP;
- } else if (OPT_MATCH("-nonameprep") || OPT_MATCH("-N")) {
- flags &= ~FLAG_NAMEPREP;
- } else if (OPT_MATCH("-unassigncheck") || OPT_MATCH("-u")) {
- flags |= FLAG_UNASSIGNCHECK;
- } else if (OPT_MATCH("-nounassigncheck") || OPT_MATCH("-U")) {
- flags &= ~FLAG_UNASSIGNCHECK;
- } else if (OPT_MATCH("-nobidicheck") || OPT_MATCH("-B")) {
- flags &= ~FLAG_BIDICHECK;
- } else if (OPT_MATCH("-noasciicheck") || OPT_MATCH("-A")) {
- flags &= ~FLAG_ASCIICHECK;
- } else if (OPT_MATCH("-nolengthcheck")) {
- flags &= ~FLAG_LENGTHCHECK;
- } else if (OPT_MATCH("-noroundtripcheck")) {
- flags &= ~FLAG_ROUNDTRIPCHECK;
- } else if (OPT_MATCH("-whole") || OPT_MATCH("-w")) {
- flags &= ~FLAG_SELECTIVE;
- } else if (OPT_MATCH("-localmap")) {
- MUST_HAVE_ARG;
- APPEND_LIST(localmappers, nlocalmappers, av[1],
- "local maps");
- } else if (OPT_MATCH("-delimiter")) {
- unsigned long v;
- MUST_HAVE_ARG;
- v = get_ucs(av[1]);
- APPEND_LIST(delimiters, ndelimiters, v,
- "delimiter maps");
- } else if (OPT_MATCH("-alias") || OPT_MATCH("-a")) {
- MUST_HAVE_ARG;
- encoding_alias = av[1];
- ac--;
- av++;
- } else if (OPT_MATCH("-flush")) {
- flush_every_line = 1;
- } else if (OPT_MATCH("-version") || OPT_MATCH("-v")) {
- print_version();
- } else {
- print_usage(cmd);
- }
-#undef OPT_MATCH
-#undef MUST_HAVE_ARG
-#undef APPEND_LIST
-
- ac--;
- av++;
- }
-
- if (ac > 1)
- print_usage(cmd);
-
- /* Initialize. */
- if ((r = idn_resconf_initialize()) != idn_success) {
- errormsg("error initializing library\n");
- return (1);
- }
-
- /*
- * Create resource contexts.
- * `resconf1' and `resconf2' are almost the same but local and
- * IDN encodings are reversed.
- */
- resconf1 = NULL;
- resconf2 = NULL;
- if (idn_resconf_create(&resconf1) != idn_success ||
- idn_resconf_create(&resconf2) != idn_success) {
- errormsg("error initializing configuration contexts\n");
- return (1);
- }
-
- /* Load configuration file. */
- if (no_resconf) {
- set_defaults(resconf1);
- set_defaults(resconf2);
- } else {
- load_conf_file(resconf1, resconf_file);
- load_conf_file(resconf2, resconf_file);
- }
-
- /* Set encoding alias file. */
- if (encoding_alias != NULL)
- set_encoding_alias(encoding_alias);
-
- /* Set input codeset. */
- if (flags & FLAG_REVERSE) {
- if (in_code == NULL) {
- conv = idn_resconf_getidnconverter(resconf1);
- if (conv == NULL) {
- errormsg("cannot get the IDN encoding.\n"
- "please specify an appropriate one "
- "with `-in' option.\n");
- exit(1);
- }
- idn_resconf_setlocalconverter(resconf2, conv);
- idn_converter_destroy(conv);
- } else {
- set_idncode(resconf1, in_code);
- set_localcode(resconf2, in_code);
- }
- } else {
- if (in_code == NULL) {
- conv = idn_resconf_getlocalconverter(resconf1);
- if (conv == NULL) {
- errormsg("cannot get the local encoding.\n"
- "please specify an appropriate one "
- "with `-in' option.\n");
- exit(1);
- }
- idn_resconf_setidnconverter(resconf2, conv);
- idn_converter_destroy(conv);
- } else {
- set_localcode(resconf1, in_code);
- set_idncode(resconf2, in_code);
- }
- }
-
- /* Set output codeset. */
- if (flags & FLAG_REVERSE) {
- if (out_code == NULL) {
- conv = idn_resconf_getlocalconverter(resconf1);
- if (conv == NULL) {
- errormsg("cannot get the local encoding.\n"
- "please specify an appropriate one "
- "with `-out' option.\n");
- exit(1);
- }
- idn_resconf_setidnconverter(resconf2, conv);
- idn_converter_destroy(conv);
- } else {
- set_localcode(resconf1, out_code);
- set_idncode(resconf2, out_code);
- }
- } else {
- if (out_code == NULL) {
- conv = idn_resconf_getidnconverter(resconf1);
- if (conv == NULL) {
- errormsg("cannot get the IDN encoding.\n"
- "please specify an appropriate one "
- "with `-out' option.\n");
- exit(1);
- }
- idn_resconf_setlocalconverter(resconf2, conv);
- idn_converter_destroy(conv);
- } else {
- set_idncode(resconf1, out_code);
- set_localcode(resconf2, out_code);
- }
- }
-
- /* Set delimiter map(s). */
- if (ndelimiters > 0) {
- set_delimitermapper(resconf1, delimiters, ndelimiters);
- set_delimitermapper(resconf2, delimiters, ndelimiters);
- }
-
- /* Set local map(s). */
- if (nlocalmappers > 0) {
- set_localmapper(resconf1, localmappers, nlocalmappers);
- set_localmapper(resconf2, localmappers, nlocalmappers);
- }
-
- /* Set NAMEPREP version. */
- if (nameprep_version != NULL) {
- set_nameprep(resconf1, nameprep_version);
- set_nameprep(resconf2, nameprep_version);
- }
-
- idn_res_enable(1);
-
- /* Open input file. */
- if (ac > 0) {
- if ((fp = fopen(av[0], "r")) == NULL) {
- errormsg("cannot open file %s: %s\n",
- av[0], strerror(errno));
- return (1);
- }
- } else {
- fp = stdin;
- }
-
- /* Do the conversion. */
- if (flags & FLAG_REVERSE)
- exit_value = decode_file(resconf1, resconf2, fp, flags);
- else
- exit_value = encode_file(resconf1, resconf2, fp, flags);
-
- idn_resconf_destroy(resconf1);
- idn_resconf_destroy(resconf2);
-
- return exit_value;
-}
-
-static int
-encode_file(idn_resconf_t conf1, idn_resconf_t conf2, FILE *fp, int flags) {
- idn_result_t r;
- idnconv_strbuf_t buf1, buf2;
- idn_action_t actions1, actions2;
- int nl_trimmed;
- int local_ace_hack;
- idn_converter_t conv;
-
- /*
- * See if the input codeset is an ACE.
- */
- conv = idn_resconf_getlocalconverter(conf1);
- if (conv != NULL && idn_converter_isasciicompatible(conv) &&
- (flags & FLAG_SELECTIVE))
- local_ace_hack = 1;
- else
- local_ace_hack = 0;
- if (conv != NULL)
- idn_converter_destroy(conv);
-
- if (local_ace_hack) {
- actions1 = IDN_IDNCONV;
- if (flags & FLAG_ROUNDTRIPCHECK)
- actions1 |= IDN_RTCHECK;
- } else {
- actions1 = IDN_LOCALCONV;
- }
-
- actions2 = IDN_IDNCONV;
- if (flags & FLAG_DELIMMAP)
- actions2 |= IDN_DELIMMAP;
- if (flags & FLAG_LOCALMAP)
- actions2 |= IDN_LOCALMAP;
- if (flags & FLAG_MAP)
- actions2 |= IDN_MAP;
- if (flags & FLAG_NORMALIZE)
- actions2 |= IDN_NORMALIZE;
- if (flags & FLAG_PROHIBITCHECK)
- actions2 |= IDN_PROHCHECK;
- if (flags & FLAG_UNASSIGNCHECK)
- actions2 |= IDN_UNASCHECK;
- if (flags & FLAG_BIDICHECK)
- actions2 |= IDN_BIDICHECK;
- if (flags & FLAG_ASCIICHECK)
- actions2 |= IDN_ASCCHECK;
- if (flags & FLAG_LENGTHCHECK)
- actions2 |= IDN_LENCHECK;
-
- strbuf_init(&buf1);
- strbuf_init(&buf2);
- line_number = 1;
- while (strbuf_getline(&buf1, fp) != NULL) {
- /*
- * Trim newline at the end. This is needed for
- * those ascii-comatible encodings such as UTF-5 or RACE
- * not to try converting newlines, which will result
- * in `invalid encoding' error.
- */
- nl_trimmed = trim_newline(&buf1);
-
- /*
- * Convert input line to UTF-8.
- */
- if (local_ace_hack)
- r = convert_line(&buf1, &buf2, conf2, actions1,
- FLAG_REVERSE|FLAG_SELECTIVE);
- else
- r = convert_line(&buf1, &buf2, conf1, actions1,
- 0);
-
- if (r != idn_success) {
- errormsg("conversion failed at line %d: %s\n",
- line_number,
- idn_result_tostring(r));
- goto error;
- }
- if (!idn_utf8_isvalidstring(strbuf_get(&buf2))) {
- errormsg("conversion to utf-8 failed at line %d\n",
- line_number);
- goto error;
- }
-
- /*
- * Perform local mapping and NAMEPREP, and convert to
- * the output codeset.
- */
- r = convert_line(&buf2, &buf1, conf1, actions2,
- flags & FLAG_SELECTIVE);
-
- if (r != idn_success) {
- errormsg("error in nameprep or output conversion "
- "at line %d: %s\n",
- line_number, idn_result_tostring(r));
- goto error;
- }
-
- fputs(strbuf_get(&buf1), stdout);
- if (nl_trimmed)
- putc('\n', stdout);
-
- if (flush_every_line)
- fflush(stdout);
-
- line_number++;
- }
-
- strbuf_reset(&buf1);
- strbuf_reset(&buf2);
- return (0);
-
- error:
- strbuf_reset(&buf1);
- strbuf_reset(&buf2);
- return (1);
-}
-
-static int
-decode_file(idn_resconf_t conf1, idn_resconf_t conf2, FILE *fp, int flags) {
- idn_result_t r;
- idnconv_strbuf_t buf1, buf2;
- idn_action_t actions1, actions2;
- int nl_trimmed;
- int local_ace_hack, idn_ace_hack;
- idn_converter_t conv;
-
- /*
- * See if the input codeset is an ACE.
- */
- conv = idn_resconf_getidnconverter(conf1);
- if (conv != NULL && idn_converter_isasciicompatible(conv) &&
- (flags & FLAG_SELECTIVE))
- idn_ace_hack = 1;
- else
- idn_ace_hack = 0;
- if (conv != NULL)
- idn_converter_destroy(conv);
-
- conv = idn_resconf_getlocalconverter(conf1);
- if (conv != NULL && idn_converter_isasciicompatible(conv) &&
- (flags & FLAG_SELECTIVE))
- local_ace_hack = 1;
- else
- local_ace_hack = 0;
- if (conv != NULL)
- idn_converter_destroy(conv);
-
- actions1 = IDN_IDNCONV;
-
- if (local_ace_hack) {
- actions2 = IDN_IDNCONV;
- if (flags & FLAG_MAP)
- actions2 |= IDN_MAP;
- if (flags & FLAG_NORMALIZE)
- actions2 |= IDN_NORMALIZE;
- if (flags & FLAG_PROHIBITCHECK)
- actions2 |= IDN_PROHCHECK;
- if (flags & FLAG_UNASSIGNCHECK)
- actions2 |= IDN_UNASCHECK;
- if (flags & FLAG_BIDICHECK)
- actions2 |= IDN_BIDICHECK;
- if (flags & FLAG_ASCIICHECK)
- actions2 |= IDN_ASCCHECK;
- if (flags & FLAG_LENGTHCHECK)
- actions2 |= IDN_LENCHECK;
- } else {
- actions2 = IDN_LOCALCONV;
- }
-
- if (flags & FLAG_DELIMMAP)
- actions1 |= IDN_DELIMMAP;
- if (flags & FLAG_MAP)
- actions1 |= IDN_MAP;
- if (flags & FLAG_NORMALIZE)
- actions1 |= IDN_NORMALIZE;
- if (flags & FLAG_NORMALIZE)
- actions1 |= IDN_NORMALIZE;
- if (flags & FLAG_PROHIBITCHECK)
- actions1 |= IDN_PROHCHECK;
- if (flags & FLAG_UNASSIGNCHECK)
- actions1 |= IDN_UNASCHECK;
- if (flags & FLAG_BIDICHECK)
- actions1 |= IDN_BIDICHECK;
- if (flags & FLAG_ASCIICHECK)
- actions1 |= IDN_ASCCHECK;
- if (flags & FLAG_ROUNDTRIPCHECK)
- actions1 |= IDN_RTCHECK;
-
- strbuf_init(&buf1);
- strbuf_init(&buf2);
- line_number = 1;
- while (strbuf_getline(&buf1, fp) != NULL) {
- /*
- * Trim newline at the end. This is needed for
- * those ascii-comatible encodings such as UTF-5 or RACE
- * not to try converting newlines, which will result
- * in `invalid encoding' error.
- */
- nl_trimmed = trim_newline(&buf1);
-
- /*
- * Treat input line as the string encoded in local
- * encoding and convert it to UTF-8 encoded string.
- */
- if (local_ace_hack) {
- if (strbuf_copy(&buf2, strbuf_get(&buf1)) == NULL)
- r = idn_nomemory;
- else
- r = idn_success;
- } else {
- r = convert_line(&buf1, &buf2, conf1, IDN_LOCALCONV,
- 0);
- }
- if (r != idn_success) {
- errormsg("conversion failed at line %d: %s\n",
- line_number, idn_result_tostring(r));
- goto error;
- }
-
- /*
- * Convert internationalized domain names in the line.
- */
- if (idn_ace_hack) {
- r = convert_line(&buf2, &buf1, conf1, actions1,
- FLAG_REVERSE|FLAG_SELECTIVE);
- } else {
- r = convert_line(&buf2, &buf1, conf1, actions1,
- FLAG_REVERSE);
- }
- if (r != idn_success) {
- errormsg("conversion failed at line %d: %s\n",
- line_number,
- idn_result_tostring(r));
- goto error;
- }
- if (!idn_utf8_isvalidstring(strbuf_get(&buf1))) {
- errormsg("conversion to utf-8 failed at line %d\n",
- line_number);
- goto error;
- }
-
- /*
- * Perform round trip check and convert to the output
- * codeset.
- */
- if (local_ace_hack) {
- r = convert_line(&buf1, &buf2, conf2, actions2,
- FLAG_SELECTIVE);
- } else {
- r = convert_line(&buf1, &buf2, conf1, actions2,
- FLAG_REVERSE);
- }
-
- if (r != idn_success) {
- errormsg("error in nameprep or output conversion "
- "at line %d: %s\n",
- line_number, idn_result_tostring(r));
- goto error;
- }
-
- fputs(strbuf_get(&buf2), stdout);
- if (nl_trimmed)
- putc('\n', stdout);
-
- if (flush_every_line)
- fflush(stdout);
-
- line_number++;
- }
- strbuf_reset(&buf1);
- strbuf_reset(&buf2);
- return (0);
-
- error:
- strbuf_reset(&buf1);
- strbuf_reset(&buf2);
- return (1);
-}
-
-static int
-trim_newline(idnconv_strbuf_t *buf) {
- /*
- * If the string in BUF ends with a newline, trim it and
- * return 1. Otherwise, just return 0 without modifying BUF.
- */
- char *s = strbuf_get(buf);
- size_t len = strlen(s);
-
- if (s[len - 1] == '\n') {
- s[len - 1] = '\0';
- return (1);
- }
-
- return (0);
-}
-
-static idn_result_t
-convert_line(idnconv_strbuf_t *from, idnconv_strbuf_t *to,
- idn_resconf_t conf, idn_action_t actions, int flags)
-{
- idn_result_t r = idn_success;
- char *from_str = strbuf_get(from);
-
- for (;;) {
- char *to_str = strbuf_get(to);
- size_t to_size = strbuf_size(to);
-
- switch (flags & (FLAG_REVERSE|FLAG_SELECTIVE)) {
- case 0:
- r = idn_res_encodename(conf, actions, from_str,
- to_str, to_size);
- break;
- case FLAG_REVERSE:
- r = idn_res_decodename(conf, actions, from_str,
- to_str, to_size);
- break;
- case FLAG_SELECTIVE:
- r = selective_encode(conf, actions, from_str,
- to_str, to_size);
- break;
- case FLAG_REVERSE|FLAG_SELECTIVE:
- r = selective_decode(conf, actions, from_str,
- to_str, to_size);
- break;
- }
- if (r == idn_buffer_overflow) {
- /*
- * Conversion is not successful because
- * the size of the target buffer is not enough.
- * Double the size and retry.
- */
- if (strbuf_double(to) == NULL) {
- /* oops. allocation failed. */
- return (idn_nomemory);
- }
- } else {
- break;
- }
- }
- return (r);
-}
-
-static char *options[] = {
- "-in INPUT-CODESET : specifies input codeset name.",
- "-i INPUT-CODESET : synonym for -in",
- "-out OUTPUT-CODESET : specifies output codeset name.",
- "-o OUTPUT-CODESET : synonym for -out",
- "-conf CONF-FILE : specifies idnkit configuration file.",
- "-c CONF-FILE : synonym for -conf",
- "-noconf : do not load idnkit configuration file.",
- "-C : synonym for -noconf",
- "-reverse : specifies reverse conversion.",
- " (i.e. IDN encoding to local encoding)",
- "-r : synonym for -reverse",
- "-nameprep VERSION : specifies version name of NAMEPREP.",
- "-n VERSION : synonym for -nameprep",
- "-nonameprep : do not perform NAMEPREP.",
- "-N : synonym for -nonameprep",
- "-localmap MAPPING : specifies local mapping.",
- "-nolocalmap : do not perform local mapping.",
- "-L : synonym for -nolocalmap",
- "-nounassigncheck : do not perform unassigned codepoint check.",
- "-U : synonym for -nounassigncheck",
- "-nobidicheck : do not perform bidirectional text check.",
- "-B : synonym for -nobidicheck",
- "-nolengthcheck : do not check label length.",
- "-noasciicheck : do not check ASCII range characters.",
- "-A : synonym for -noasciicheck",
- "-noroundtripcheck : do not perform round trip check.",
- "-delimiter U+XXXX : specifies local delimiter code point.",
- "-alias alias-file : specifies codeset alias file.",
- "-a : synonym for -alias",
- "-flush : line-buffering mode.",
- "-whole : convert the whole region instead of",
- " regions containing non-ascii characters.",
- "-w : synonym for -whole",
- "-version : print version number, then exit.",
- "-v : synonym for -version",
- "",
- " The following options can be specified multiple times",
- " -localmap, -delimiter",
- NULL,
-};
-
-static void
-print_version() {
- fprintf(stderr, "idnconv (idnkit) version: %s\n"
- "library version: %s\n",
- IDNKIT_VERSION,
- idn_version_getstring());
- exit(0);
-}
-
-static void
-print_usage(char *cmd) {
- int i;
-
- fprintf(stderr, "Usage: %s [options..] [file]\n", cmd);
-
- for (i = 0; options[i] != NULL; i++)
- fprintf(stderr, "\t%s\n", options[i]);
-
- exit(1);
-}
-
-static unsigned long
-get_ucs(const char *p) {
- unsigned long v;
- char *end;
-
- /* Skip optional 'U+' */
- if (strncmp(p, "U+", 2) == 0)
- p += 2;
-
- v = strtoul(p, &end, 16);
- if (*end != '\0') {
- fprintf(stderr, "invalid UCS code point \"%s\"\n", p);
- exit(1);
- }
-
- return v;
-}
+++ /dev/null
-#! /bin/sh
-# $Id: idnslookup.in,v 1.1 2003/06/04 00:27:10 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, 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) 2000-2002 Japan Network Information Center. All rights reserved."
-#
-# 4. The name of JPNIC may not 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.
-
-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 `idnconv' command exists.
-#
-IDNCONV=${IDNCONV-"@bindir@/idnconv"}
-if [ ! -x "$IDNCONV" ] ; then
- echo "$0: idnconv not found" 1>&2
- exit 1
-fi
-
-#
-# Convert domain name to IDN encoding.
-#
-IDN_DOMAIN_NAME="`echo $LOCAL_DOMAIN_NAME | $IDNCONV -w`" || exit 1
-
-#
-# Invoke nslookup.
-#
-$NSLOOKUP $IDN_DOMAIN_NAME $NAME_SERVER < /dev/null || exit 1
-
-exit 0
+++ /dev/null
-# $Id: make.wnt,v 1.1 2003/06/04 00:27:06 marka Exp $
-# Makefile for idnconv, manually configured for WIN-NT (VC5.0)
-#
-# Copyright (c) 2000,2002 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) 2000-2002 Japan Network Information Center. All rights reserved."
-#
-# 4. The name of JPNIC may not 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.
-
-!include <ntwin32.mak>
-
-INCDIR = ..\..\include
-ICONVDIR = ..\..\win
-IDNLIBDIR = ..\..\lib
-LIBS = $(IDNLIBDIR)\idnkit.lib $(ICONVDIR)\iconv.lib
-SYSLIBS = $(conlibsdll)
-
-SRCS = idnconv.c util.c selectiveencode.c
-OBJS = idnconv.obj util.obj selectiveencode.obj
-
-TARGET = idnconv.exe
-
-all: $(TARGET)
-
-idnconv.exe: $(OBJS) $(LIBS)
- $(link) $(conflags) /out:idnconv.exe $(OBJS) $(LIBS) $(SYSLIBS)
-
-install:
-
-clean:
- -del *.exe *.obj *.lib core *.core *~
-
-idnconv.obj: idnconv.c
- $(cc) $(cflags) $(cvarsdll) -I$(INCDIR) $*.c
-util.obj: util.c
- $(cc) $(cflags) $(cvarsdll) -I$(INCDIR) $*.c
-selectiveencode.obj: selectiveencode.c
- $(cc) $(cflags) $(cvarsdll) -I$(INCDIR) $*.c
+++ /dev/null
-#ifndef lint
-static char *rcsid = "$Id: selectiveencode.c,v 1.1 2003/06/04 00:27:07 marka Exp $";
-#endif
-
-/*
- * Copyright (c) 2000,2002 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-#include <config.h>
-
-#include <stddef.h>
-
-#include <idn/assert.h>
-#include <idn/logmacro.h>
-#include <idn/result.h>
-#include <idn/utf8.h>
-#include <idn/debug.h>
-
-#include "selectiveencode.h"
-
-static int is_domain_delimiter(char c);
-static char *find_nonascii(const char *s);
-
-idn_result_t
-idn_selectiveencode_findregion(const char *s,
- char **startp, char **endp)
-{
- char *non_ascii;
- char *start, *end;
-
- assert(s != NULL && startp != NULL && endp != NULL);
-
- TRACE(("idn_selectiveencode_findregion(s=\"%s\")\n",
- idn__debug_xstring(s, 20)));
-
- /*
- * Scan the specified string looking for non-ascii character.
- */
- if ((non_ascii = find_nonascii(s)) == NULL)
- return (idn_notfound);
-
- /*
- * Non-ascii character found.
- * Determine the region to encode.
- */
-
- /*
- * First, we scan backwards to find the beginning of the region
- * that should be converted.
- */
- start = non_ascii;
- while (start > s) {
- char *prev = idn_utf8_findfirstbyte(start - 1, s);
- if (is_domain_delimiter(*prev))
- break; /* Found */
- start = prev;
- }
- *startp = start;
-
- /*
- * Next we scan forwards looking for the end of the region.
- */
- end = non_ascii + idn_utf8_mblen(non_ascii);
- while (!is_domain_delimiter(*end))
- end += idn_utf8_mblen(end);
- *endp = end;
-
- return (idn_success);
-}
-
-static int
-is_domain_delimiter(char c) {
- return ((unsigned char)c < 0x80 &&
- !('A' <= c && c <= 'Z') &&
- !('a' <= c && c <= 'z') &&
- !('0' <= c && c <= '9') &&
- c != '-' && c != '.');
-}
-
-static char *
-find_nonascii(const char *s) {
- while (*s != '\0' && (unsigned char)*s < 0x80)
- s++;
- if (*s == '\0')
- return (NULL);
- else
- return ((char *)s);
-}
+++ /dev/null
-/* $Id: selectiveencode.h,v 1.2 2009/09/01 03:31:33 jinmei Exp $ */
-/*
- * Copyright (c) 2000,2002 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-#ifndef IDN_SELECTIVEENCODE_H
-#define IDN_SELECTIVEENCODE_H 1
-
-/*
- * Find where to convert.
- *
- * Find a substring for which IDN domain name codeset conversion is necessary.
- */
-
-#include <idn/result.h>
-
-/*
- * Scan the given string 's' (in UTF-8 encoding) looking for a substring
- * made of
- * + at least one non-ascii character and
- * + zero or more legitimate domain-name characters (i.e. ascii alphabets,
- * digits and hyphens) and periods.
- *
- * Returns:
- * idn_success -- ok, found.
- * idn_notfound -- not found.
- */
-extern idn_result_t
-idn_selectiveencode_findregion(const char *s, char **startp, char **endp);
-
-#endif /* IDN_SELECTIVEENCODE_H */
+++ /dev/null
-#ifndef lint
-static char *rcsid = "$Id: util.c,v 1.1 2003/06/04 00:27:08 marka Exp $";
-#endif
-
-/*
- * Copyright (c) 2000,2002 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-#include <config.h>
-
-#include <stdio.h>
-#include <stddef.h>
-#include <stdlib.h>
-#include <stdarg.h>
-#include <string.h>
-#include <ctype.h>
-#include <errno.h>
-
-#include <idn/resconf.h>
-#include <idn/converter.h>
-#include <idn/res.h>
-#include <idn/utf8.h>
-
-#include "util.h"
-#include "selectiveencode.h"
-
-extern int line_number;
-
-idn_result_t
-selective_encode(idn_resconf_t conf, idn_action_t actions,
- char *from, char *to, int tolen)
-{
- for (;;) {
- int len;
- char *region_start, *region_end;
- idn_result_t r;
- char save;
-
- /*
- * Find the region that needs conversion.
- */
- r = idn_selectiveencode_findregion(from, ®ion_start,
- ®ion_end);
- if (r == idn_notfound) {
- /*
- * Not found. Just copy the whole thing.
- */
- if (tolen <= strlen(from))
- return (idn_buffer_overflow);
- (void)strcpy(to, from);
- return (idn_success);
- } else if (r != idn_success) {
- /* This should not happen.. */
- errormsg("internal error at line %d: %s\n",
- line_number, idn_result_tostring(r));
- return (r);
- }
-
- /*
- * We have found a region to convert.
- * First, copy the prefix part verbatim.
- */
- len = region_start - from;
- if (tolen < len) {
- errormsg("internal buffer overflow at line %d\n",
- line_number);
- return (idn_buffer_overflow);
- }
- (void)memcpy(to, from, len);
- to += len;
- tolen -= len;
-
- /*
- * Terminate the region with NUL.
- */
- save = *region_end;
- *region_end = '\0';
-
- /*
- * Encode the region.
- */
- r = idn_res_encodename(conf, actions, region_start, to, tolen);
-
- /*
- * Restore character.
- */
- *region_end = save;
-
- if (r != idn_success)
- return (r);
-
- len = strlen(to);
- to += len;
- tolen -= len;
-
- from = region_end;
- }
-}
-
-idn_result_t
-selective_decode(idn_resconf_t conf, idn_action_t actions,
- char *from, char *to, int tolen)
-{
- char *domain_name;
- char *ignored_chunk;
- char save;
- int len;
- idn_result_t r;
-
- /*
- * While `*from' points to a character in a string which may be
- * a domain name, `domain_name' refers to the beginning of the
- * domain name.
- */
- domain_name = NULL;
-
- /*
- * We ignore chunks matching to the regular expression:
- * [\-\.][0-9A-Za-z\-\.]*
- *
- * While `*from' points to a character in such a chunk,
- * `ignored_chunk' refers to the beginning of the chunk.
- */
- ignored_chunk = NULL;
-
- for (;;) {
- if (*from == '-') {
- /*
- * We don't recognize `.-' as a part of domain name.
- */
- if (domain_name != NULL) {
- if (*(from - 1) == '.') {
- ignored_chunk = domain_name;
- domain_name = NULL;
- }
- } else if (ignored_chunk == NULL) {
- ignored_chunk = from;
- }
-
- } else if (*from == '.') {
- /*
- * We don't recognize `-.' nor `..' as a part of
- * domain name.
- */
- if (domain_name != NULL) {
- if (*(from - 1) == '-' || *(from - 1) == '.') {
- ignored_chunk = domain_name;
- domain_name = NULL;
- }
- } else if (ignored_chunk == NULL) {
- ignored_chunk = from;
- }
-
- } else if (('a' <= *from && *from <= 'z') ||
- ('A' <= *from && *from <= 'Z') ||
- ('0' <= *from && *from <= '9')) {
- if (ignored_chunk == NULL && domain_name == NULL)
- domain_name = from;
-
- } else {
- if (ignored_chunk != NULL) {
- /*
- * `from' reaches the end of the ignored chunk.
- * Copy the chunk to `to'.
- */
- len = from - ignored_chunk;
- if (tolen < len)
- return (idn_buffer_overflow);
- (void)memcpy(to, ignored_chunk, len);
- to += len;
- tolen -= len;
-
- } else if (domain_name != NULL) {
- /*
- * `from' reaches the end of the domain name.
- * Decode the domain name, and copy the result
- * to `to'.
- */
- save = *from;
- *from = '\0';
- r = idn_res_decodename(conf, actions,
- domain_name, to, tolen);
- *from = save;
-
- if (r == idn_success) {
- len = strlen(to);
- } else if (r == idn_invalid_encoding) {
- len = from - domain_name;
- if (tolen < len)
- return (idn_buffer_overflow);
- (void)memcpy(to, domain_name, len);
- } else {
- return (r);
- }
- to += len;
- tolen -= len;
- }
-
- /*
- * Copy a character `*from' to `to'.
- */
- if (tolen < 1)
- return (idn_buffer_overflow);
- *to = *from;
- to++;
- tolen--;
-
- domain_name = NULL;
- ignored_chunk = NULL;
-
- if (*from == '\0')
- break;
- }
-
- from++;
- }
-
- return (idn_success);
-}
-
-void
-set_defaults(idn_resconf_t conf) {
- idn_result_t r;
-
- if ((r = idn_resconf_setdefaults(conf)) != idn_success) {
- errormsg("error setting default configuration: %s\n",
- idn_result_tostring(r));
- exit(1);
- }
-}
-
-void
-load_conf_file(idn_resconf_t conf, const char *file) {
- idn_result_t r;
-
- if ((r = idn_resconf_loadfile(conf, file)) != idn_success) {
- errormsg("error reading configuration file: %s\n",
- idn_result_tostring(r));
- exit(1);
- }
-}
-
-void
-set_encoding_alias(const char *encoding_alias) {
- idn_result_t r;
-
- if ((r = idn_converter_resetalias()) != idn_success) {
- errormsg("cannot reset alias information: %s\n",
- idn_result_tostring(r));
- exit(1);
- }
-
- if ((r = idn_converter_aliasfile(encoding_alias)) != idn_success) {
- errormsg("cannot read alias file %s: %s\n",
- encoding_alias, idn_result_tostring(r));
- exit(1);
- }
-}
-
-void
-set_localcode(idn_resconf_t conf, const char *code) {
- idn_result_t r;
-
- r = idn_resconf_setlocalconvertername(conf, code,
- IDN_CONVERTER_RTCHECK);
- if (r != idn_success) {
- errormsg("cannot create converter for codeset %s: %s\n",
- code, idn_result_tostring(r));
- exit(1);
- }
-}
-
-void
-set_idncode(idn_resconf_t conf, const char *code) {
- idn_result_t r;
-
- r = idn_resconf_setidnconvertername(conf, code,
- IDN_CONVERTER_RTCHECK);
- if (r != idn_success) {
- errormsg("cannot create converter for codeset %s: %s\n",
- code, idn_result_tostring(r));
- exit(1);
- }
-}
-
-void
-set_delimitermapper(idn_resconf_t conf, unsigned long *delimiters,
- int ndelimiters) {
- idn_result_t r;
-
- r = idn_resconf_addalldelimitermapucs(conf, delimiters, ndelimiters);
- if (r != idn_success) {
- errormsg("cannot add delimiter: %s\n",
- idn_result_tostring(r));
- exit(1);
- }
-}
-
-void
-set_localmapper(idn_resconf_t conf, char **mappers, int nmappers) {
- idn_result_t r;
-
- /* Add mapping. */
- r = idn_resconf_addalllocalmapselectornames(conf,
- IDN_MAPSELECTOR_DEFAULTTLD,
- (const char **)mappers,
- nmappers);
- if (r != idn_success) {
- errormsg("cannot add local map: %s\n",
- idn_result_tostring(r));
- exit(1);
- }
-}
-
-void
-set_nameprep(idn_resconf_t conf, char *version) {
- idn_result_t r;
-
- r = idn_resconf_setnameprepversion(conf, version);
- if (r != idn_success) {
- errormsg("error setting nameprep %s: %s\n",
- version, idn_result_tostring(r));
- exit(1);
- }
-}
-
-void
-set_mapper(idn_resconf_t conf, char **mappers, int nmappers) {
- idn_result_t r;
-
- /* Configure mapper. */
- r = idn_resconf_addallmappernames(conf, (const char **)mappers,
- nmappers);
- if (r != idn_success) {
- errormsg("cannot add nameprep map: %s\n",
- idn_result_tostring(r));
- exit(1);
- }
-}
-
-void
-set_normalizer(idn_resconf_t conf, char **normalizers, int nnormalizer) {
- idn_result_t r;
-
- r = idn_resconf_addallnormalizernames(conf,
- (const char **)normalizers,
- nnormalizer);
- if (r != idn_success) {
- errormsg("cannot add normalizer: %s\n",
- idn_result_tostring(r));
- exit(1);
- }
-}
-
-void
-set_prohibit_checkers(idn_resconf_t conf, char **prohibits, int nprohibits) {
- idn_result_t r;
-
- r = idn_resconf_addallprohibitcheckernames(conf,
- (const char **)prohibits,
- nprohibits);
- if (r != idn_success) {
- errormsg("cannot add prohibit checker: %s\n",
- idn_result_tostring(r));
- exit(1);
- }
-}
-
-void
-set_unassigned_checkers(idn_resconf_t conf, char **unassigns, int nunassigns) {
- idn_result_t r;
-
- r = idn_resconf_addallunassignedcheckernames(conf,
- (const char **)unassigns,
- nunassigns);
- if (r != idn_success) {
- errormsg("cannot add unassigned checker: %s\n",
- idn_result_tostring(r));
- exit(1);
- }
-}
-
-void
-errormsg(const char *fmt, ...) {
- va_list args;
-
- va_start(args, fmt);
- vfprintf(stderr, fmt, args);
- va_end(args);
-}
-
-
-/*
- * Dynamic Stirng Buffer Utility
- */
-
-void
-strbuf_init(idnconv_strbuf_t *buf) {
- /*
- * Initialize the given string buffer.
- * Caller must allocate the structure (idnconv_strbuf_t)
- * as an automatic variable or by malloc().
- */
- buf->str = buf->local_buf;
- buf->str[0] = '\0';
- buf->size = sizeof(buf->local_buf);
-}
-
-void
-strbuf_reset(idnconv_strbuf_t *buf) {
- /*
- * Reset the given string buffer.
- * Free memory allocated by this utility, and
- * re-initialize.
- */
- if (buf->str != NULL && buf->str != buf->local_buf) {
- free(buf->str);
- }
- strbuf_init(buf);
-}
-
-char *
-strbuf_get(idnconv_strbuf_t *buf) {
- /*
- * Get the pointer of the buffer.
- */
- return (buf->str);
-}
-
-size_t
-strbuf_size(idnconv_strbuf_t *buf) {
- /*
- * Get the allocated size of the buffer.
- */
- return (buf->size);
-}
-
-char *
-strbuf_copy(idnconv_strbuf_t *buf, const char *str) {
- /*
- * Copy STR to BUF.
- */
- size_t len = strlen(str);
-
- if (strbuf_alloc(buf, len + 1) == NULL)
- return (NULL);
- strcpy(buf->str, str);
- return (buf->str);
-}
-
-char *
-strbuf_append(idnconv_strbuf_t *buf, const char *str) {
- /*
- * Append STR to the end of BUF.
- */
- size_t len1 = strlen(buf->str);
- size_t len2 = strlen(str);
- char *p;
-#define MARGIN 50
-
- p = strbuf_alloc(buf, len1 + len2 + 1 + MARGIN);
- if (p != NULL)
- strcpy(buf->str + len1, str);
- return (p);
-}
-
-char *
-strbuf_alloc(idnconv_strbuf_t *buf, size_t size) {
- /*
- * Reallocate the buffer of BUF if needed
- * so that BUF can hold SIZE bytes of data at least.
- */
- char *p;
-
- if (buf->size >= size)
- return (buf->str);
- if (buf->str == buf->local_buf) {
- if ((p = malloc(size)) == NULL)
- return (NULL);
- memcpy(p, buf->local_buf, sizeof(buf->local_buf));
- } else {
- if ((p = realloc(buf->str, size)) == NULL)
- return (NULL);
- }
- buf->str = p;
- buf->size = size;
- return (buf->str);
-}
-
-char *
-strbuf_double(idnconv_strbuf_t *buf) {
- /*
- * Double the size of the buffer of BUF.
- */
- return (strbuf_alloc(buf, buf->size * 2));
-}
-
-char *
-strbuf_getline(idnconv_strbuf_t *buf, FILE *fp) {
- /*
- * Read a line from FP.
- */
- char s[256];
-
- buf->str[0] = '\0';
- while (fgets(s, sizeof(s), fp) != NULL) {
- if (strbuf_append(buf, s) == NULL)
- return (NULL);
- if (strlen(s) < sizeof(s) - 1 || s[sizeof(s) - 2] == '\n')
- return (buf->str);
- }
- if (buf->str[0] != '\0')
- return (buf->str);
- return (NULL);
-}
+++ /dev/null
-/* $Id: util.h,v 1.1 2003/06/04 00:27:09 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-#ifndef IDN_IDNCONV_UTIL_H
-#define IDN_IDNCONV_UTIL_H 1
-
-#include <idn/res.h>
-
-#define IDNCONV_LOCALBUF_SIZE 512
-
-typedef struct {
- char *str;
- size_t size;
- char local_buf[IDNCONV_LOCALBUF_SIZE];
-} idnconv_strbuf_t;
-
-extern idn_result_t selective_encode(idn_resconf_t conf,
- idn_action_t actions, char *from,
- char *to, int tolen);
-extern idn_result_t selective_decode(idn_resconf_t conf,
- idn_action_t actions, char *from,
- char *to, int tolen);
-extern void set_defaults(idn_resconf_t conf);
-extern void load_conf_file(idn_resconf_t conf, const char *file);
-extern void set_encoding_alias(const char *encoding_alias);
-extern void set_localcode(idn_resconf_t conf, const char *code);
-extern void set_idncode(idn_resconf_t conf, const char *code);
-extern void set_delimitermapper(idn_resconf_t conf,
- unsigned long *delimiters,
- int ndelimiters);
-extern void set_localmapper(idn_resconf_t conf,
- char **mappers, int nmappers);
-extern void set_nameprep(idn_resconf_t conf, char *version);
-extern void set_mapper(idn_resconf_t conf,
- char **mappers, int nmappers);
-extern void set_normalizer(idn_resconf_t conf,
- char **normalizer, int nnormalizer);
-extern void set_prohibit_checkers(idn_resconf_t conf,
- char **prohibits,
- int nprohibits);
-extern void set_unassigned_checkers(idn_resconf_t conf,
- char **unassigns,
- int nunassigns);
-extern void errormsg(const char *fmt, ...);
-extern void strbuf_init(idnconv_strbuf_t *buf);
-extern void strbuf_reset(idnconv_strbuf_t *buf);
-extern char *strbuf_get(idnconv_strbuf_t *buf);
-extern size_t strbuf_size(idnconv_strbuf_t *buf);
-extern char *strbuf_copy(idnconv_strbuf_t *buf, const char *str);
-extern char *strbuf_append(idnconv_strbuf_t *buf, const char *str);
-extern char *strbuf_alloc(idnconv_strbuf_t *buf, size_t size);
-extern char *strbuf_double(idnconv_strbuf_t *buf);
-extern char *strbuf_getline(idnconv_strbuf_t *buf, FILE *fp);
-
-#endif /* IDN_IDNCONV_UTIL_H */
+++ /dev/null
-# $Id: make.wnt,v 1.1 2003/06/04 00:27:05 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, 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) 2000-2002 Japan Network Information Center. All rights reserved."
-#
-# 4. The name of JPNIC may not 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.
-
-all : force
- cd idnconv
- $(MAKE) -f make.wnt
- cd ..
-
-install : all
- cd idnconv
- $(MAKE) -f make.wnt install
- cd ..
-
-clean : force
- cd idnconv
- $(MAKE) -f make.wnt clean
- cd ..
-
-force:
+++ /dev/null
-%define prefix /usr
-%define sysconfdir /etc
-%define version 1.0
-
-# official/beta release:
-#define release 1
-#define distrel %{version}
-
-# release candidate:
-%define release rc1
-%define distrel %{version}-%{release}
-
-%define serial 2002051501
-
-%define name idnkit
-%define distsrc %{name}-%{distrel}-src
-
-Name: %{name}
-Version: %{version}
-Release: %{release}
-Copyright: distributable
-Group: System Environment
-Source: %{distsrc}.tar.gz
-BuildRoot: /var/tmp/%{name}-root
-Serial: %{serial}
-Summary: Internationalized Domain Name kit (idnkit/JPNIC)
-Vendor: JPNIC
-Packager: Japan Network Information Center
-
-%description
-idnkit is a kit for handling Internationalized Domain Name.
-
-%package devel
-Group: Development/Libraries
-Summary: The development files for idnkit
-
-%description devel
-The header files and libraries (libidnkit.a and libidnkitlite.a)
-to develop applications that use the libraries.
-
-%prep
-%setup -n %{distsrc}
-
-%build
-if [ -f /usr/lib/libiconv.a -o -f /usr/lib/libiconv.so ]
-then
- if [ -f /lib/libc-2.0* ]
- then
- ICONV="--with-iconv=yes"
- fi
-fi
-
-CFLAGS="$RPM_OPT_FLAGS" ./configure \
- --prefix=%{prefix} --sysconfdir=%{sysconfdir} \
- --enable-runidn \
- $ICONV
-make
-
-%install
-rm -fr $RPM_BUILD_ROOT
-make DESTDIR=$RPM_BUILD_ROOT install
-mv $RPM_BUILD_ROOT/etc/idn.conf.sample $RPM_BUILD_ROOT/etc/idn.conf
-mv $RPM_BUILD_ROOT/etc/idnalias.conf.sample $RPM_BUILD_ROOT/etc/idnalias.conf
-
-# devel kit
-#install -c lib/libidnkit.a $RPM_BUILD_ROOT/usr/lib
-#cp -r include/idn $RPM_BUILD_ROOT/usr/include
-
-# docs
-mkdir rpm_docs
-(cp NEWS INSTALL INSTALL.ja DISTFILES README.ja README LICENSE.txt \
- ChangeLog rpm_docs)
-cp -r patch rpm_docs
-
-%clean
-rm -fr $RPM_BUILD_ROOT
-
-%files
-%defattr(-, root, root)
-%{prefix}/bin/idnconv
-%{prefix}/bin/runidn
-%{prefix}/lib/libidnkit.so.*
-%{prefix}/lib/libidnkitlite.so.*
-%{prefix}/lib/libidnkitres.so.*
-%{prefix}/share/idnkit/*
-%config %{sysconfdir}/idn.conf
-%config %{sysconfdir}/idnalias.conf
-%attr(0644, root, root) %config(noreplace)
-%attr(0644, root, man) %{prefix}/man/man1/*
-%attr(0644, root, man) %{prefix}/man/man3/*
-%attr(0644, root, man) %{prefix}/man/man5/*
-%doc rpm_docs/*
-
-%files devel
-%defattr(-, root, root)
-%{prefix}/lib/libidnkit.a
-%{prefix}/lib/libidnkit.la
-%{prefix}/lib/libidnkit.so
-%{prefix}/lib/libidnkitlite.a
-%{prefix}/lib/libidnkitlite.la
-%{prefix}/lib/libidnkitlite.so
-%{prefix}/lib/libidnkitres.a
-%{prefix}/lib/libidnkitres.la
-%{prefix}/lib/libidnkitres.so
-%{prefix}/include/idn/*
-
-%changelog
-* Web May 15 2002 Motoyuki Kasahara <m-kasahr@sra.co.jp>
-- 1.0beta2, experimental.
-
-* Mon May 28 2001 MANABE Takashi <manabe@dsl.gr.jp>
-- include runmdn, libmdnresolv
-
-* Mon Apr 4 2001 Motoyuki Kasahara <m-kasahr@sra.co.jp>
-- 2.1 release
-
-* Mon Apr 4 2001 Motoyuki Kasahara <m-kasahr@sra.co.jp>
-- 2.0.1 release
-
-* Mon Apr 2 2001 MANABE Takashi <manabe@dsl.gr.jp>
-- 2.0 release
-
-* Fri Mar 3 2001 MANABE Takashi <manabe@dsl.gr.jp>
-- 1.3 release
-
-* Mon Dec 6 2000 MANABE Takashi <manabe@dsl.gr.jp>
-- add brace/lace functions to libmdnresolv(mdnkit-1.2-runmdn.patch)
-- include /var/dnsproxy
-- change files section for compressed man pages
-
-* Mon Nov 27 2000 Makoto Ishisone <ishisone@sra.co.jp>
-- 1.2 release
-
-* Thu Nov 2 2000 MANABE Takashi <manabe@dsl.gr.jp>
-- 1.1 release
-
-* Fri Oct 27 2000 MANABE Takashi <manabe@dsl.gr.jp>
-- dnsproxy.patch1
-- move libmdnresolv.{la,so} from mdnkit-devel to mdnkit package
-
-* Wed Oct 18 2000 MANABE Takashi <manabe@dsl.gr.jp>
-- 1.0 release
+++ /dev/null
-# $Id: Makefile.in,v 1.1 2003/06/04 00:27:11 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, 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) 2000-2002 Japan Network Information Center. All rights reserved."
-#
-# 4. The name of JPNIC may not 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.
-
-LIB_CURRENT = 1
-LIB_REVISION = 1
-LIB_AGE = 0
-
-.SUFFIXES:
-.SUFFIXES: .c .lo
-
-top_builddir = ../..
-subdir = tools/runidn
-
-srcdir = @srcdir@
-VPATH = @srcdir@
-
-prefix = @prefix@
-exec_prefix = @exec_prefix@
-
-bindir = @bindir@
-libdir = @libdir@
-mandir = @mandir@
-man1dir = $(mandir)/man1
-
-CC = @CC@
-INSTALL = @INSTALL@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_DATA = @INSTALL_DATA@
-MKINSTALLDIRS = @top_srcdir@/mkinstalldirs
-SHELL = @SHELL@
-LIBTOOL = @LIBTOOL@
-
-ICONVINC = @ICONVINC@
-ICONVLIB = @ICONVLIB@
-
-INCS = -I$(srcdir) -I$(srcdir)/../../include -I../../include $(ICONVINC)
-DEFS =
-
-CFLAGS = $(INCS) $(DEFS) @CPPFLAGS@ @CFLAGS@
-LDFLAGS = @LDFLAGS@
-
-LIB = libidnkitres
-OBJS = rtresolver.lo stub.lo $(IDNOBJS)
-SCRIPT = runidn
-LIBDL = @LIBDL@
-
-IDNDIR = ../../lib
-IDNOBJS = \
- $(IDNDIR)/aliaslist.lo \
- $(IDNDIR)/api.lo \
- $(IDNDIR)/checker.lo \
- $(IDNDIR)/converter.lo \
- $(IDNDIR)/debug.lo \
- $(IDNDIR)/delimitermap.lo \
- $(IDNDIR)/filechecker.lo \
- $(IDNDIR)/filemapper.lo \
- $(IDNDIR)/localencoding.lo \
- $(IDNDIR)/log.lo \
- $(IDNDIR)/mapper.lo \
- $(IDNDIR)/mapselector.lo \
- $(IDNDIR)/nameprep.lo \
- $(IDNDIR)/normalizer.lo \
- $(IDNDIR)/punycode.lo \
- $(IDNDIR)/race.lo \
- $(IDNDIR)/res.lo \
- $(IDNDIR)/resconf.lo \
- $(IDNDIR)/result.lo \
- $(IDNDIR)/strhash.lo \
- $(IDNDIR)/ucsmap.lo \
- $(IDNDIR)/ucsset.lo \
- $(IDNDIR)/unicode.lo \
- $(IDNDIR)/unormalize.lo \
- $(IDNDIR)/ucs4.lo \
- $(IDNDIR)/utf8.lo \
- $(IDNDIR)/util.lo \
- $(IDNDIR)/version.lo
-
-.c.lo:
- $(LIBTOOL) --mode=compile $(CC) $(CFLAGS) -c $<
-
-@RUNIDN_TRUE@all: $(LIB).la runidn
-@RUNIDN_FALSE@all:
-
-rtresolver.lo: $(srcdir)/resolver.c
- $(LIBTOOL) --mode=compile $(CC) $(CFLAGS) -DFOR_RUNIDN -o $@ \
- -c $(srcdir)/resolver.c
-
-$(LIB).la: $(OBJS)
- $(LIBTOOL) --mode=link $(LD) $(LDFLAGS) -o $@ \
- -version-info $(LIB_CURRENT):$(LIB_REVISION):$(LIB_AGE) \
- -module -rpath $(libdir) $(OBJS) $(LIBDL)
-
-runidn: $(srcdir)/runidn.in
- cd $(top_builddir) && \
- CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= CONFIG_LINKS= \
- $(SHELL) ./config.status
-
-@RUNIDN_TRUE@@COMPAT_TRUE@install: all install-runidn install-compat
-@RUNIDN_TRUE@@COMPAT_FALSE@install: all install-runidn
-@RUNIDN_FALSE@install:
-
-install-runidn:
- $(MKINSTALLDIRS) $(DESTDIR)$(libdir)
- $(LIBTOOL) --mode=install $(INSTALL_DATA) $(LIB).la \
- $(DESTDIR)$(libdir)/$(LIB).la
- $(MKINSTALLDIRS) $(DESTDIR)$(bindir)
- $(INSTALL_SCRIPT) $(SCRIPT) $(DESTDIR)$(bindir)
- $(MKINSTALLDIRS) $(DESTDIR)$(man1dir)
- $(INSTALL_DATA) $(srcdir)/runidn.1 $(DESTDIR)$(man1dir)/runidn.1
-
-install-compat:
- src=$(DESTDIR)$(bindir)/runidn; \
- dst=$(DESTDIR)$(bindir)/runmdn; \
- rm -f $$dst; \
- ln $$src $$dst || cp $$src $$dst
- src=$(DESTDIR)$(man1dir)/runidn.1; \
- dst=$(DESTDIR)$(man1dir)/runmdn.1; \
- rm -f $$dst; \
- ln $$src $$dst || cp $$src $$dst
-
-clean:
- rm -f *.lo *.la *.o
- rm -fr .libs/
-
-distclean: clean
- rm -f runidn Makefile
-
-test check:
+++ /dev/null
-#ifndef lint
-static char *rcsid = "$Id: resolver.c,v 1.1 2003/06/04 00:27:12 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-#include <config.h>
-
-#include <stdio.h>
-#include <stddef.h>
-#include <stdarg.h>
-#include <stdlib.h>
-#include <string.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <netdb.h>
-#include <errno.h>
-
-#include <idn/api.h>
-#include <idn/log.h>
-#include <idn/logmacro.h>
-#include <idn/debug.h>
-
-#ifdef FOR_RUNIDN
-/*
- * This file is specially compiled for runidn.
- * runidn replaces existing resolver functions dynamically with ones
- * with IDN processing (encoding conversion and normalization).
- * So entry names must be same as the system's one.
- */
-#include "stub.h"
-
-#define ENTRY(name) name
-#define REAL(name) idn_stub_ ## name
-#else
-/*
- * For normal use. All the entry names are prefixed with "idn_resolver_".
- * <idn/resolver.h> has bunch of #defines to substitute the standard
- * name resolver functions with ones provided here.
- */
-#include "resolver.h"
-#undef gethostbyname
-#undef gethostbyname2
-#undef gethostbyaddr
-#undef gethostbyname_r
-#undef gethostbyname2_r
-#undef gethostbyaddr_r
-#undef getipnodebyname
-#undef getipnodebyaddr
-#undef getaddrinfo
-#undef getnameinfo
-
-#define ENTRY(name) idn_resolver_ ## name
-#define REAL(name) name
-#endif
-
-#define IDN_NAME_SIZE 512
-
-#define IDN_HOSTBUF_SIZE 2048
-typedef union {
- char *dummy_for_alignment;
- char data[IDN_HOSTBUF_SIZE];
-} hostbuf_t;
-
-typedef struct obj_lock {
- void *key;
- struct obj_lock *next;
-} obj_lock_t;
-
-#define OBJLOCKHASH_SIZE 127
-static obj_lock_t *obj_lock_hash[OBJLOCKHASH_SIZE];
-
-/*
- * This variable is to prevent IDN processing occuring more than once for
- * a single name resolution. This will happen if some resolver function
- * is implemented using another function (e.g. gethostbyname() implemented
- * using gethostbyname2()).
- * No, using the static variable is not a correct thing to do for a multi-
- * threading environment, but I don't think of a better solution..
- */
-static int idn_isprocessing = 0;
-
-static int obj_hash(void *key);
-static int obj_islocked(void *key);
-static void obj_lock(void *key);
-static void obj_unlock(void *key);
-static struct hostent *copy_decode_hostent_static(struct hostent *hp,
- struct hostent *newhp,
- char *buf, size_t buflen,
- int *errp);
-static char *decode_name_dynamic(const char *name);
-static struct hostent *copy_decode_hostent_dynamic(struct hostent *hp,
- int *errp);
-static void free_copied_hostent(struct hostent *hp);
-#ifdef HAVE_GETADDRINFO
-static struct addrinfo *copy_decode_addrinfo_dynamic(struct addrinfo *aip);
-#endif
-#ifdef HAVE_FREEADDRINFO
-static void free_copied_addrinfo(struct addrinfo *aip);
-#endif
-
-/*
- * Object locking facility.
- */
-
-static int
-obj_hash(void *key) {
- /*
- * Hash function for obj_*.
- * 'key' is supposed to be an address.
- */
- unsigned long v = (unsigned long)key;
-
- return ((v >> 3) % OBJLOCKHASH_SIZE);
-}
-
-static int
-obj_islocked(void *key)
-{
- /*
- * Check if the object specified by 'key' is locked.
- * Return 1 if so, 0 otherwise.
- */
- int h = obj_hash(key);
- obj_lock_t *olp = obj_lock_hash[h];
-
- while (olp != NULL) {
- if (olp->key == key)
- return (1);
- olp = olp->next;
- }
- return (0);
-}
-
-static void
-obj_lock(void *key)
-{
- /*
- * Lock an object specified by 'key'.
- */
- int h = obj_hash(key);
- obj_lock_t *olp;
-
- olp = malloc(sizeof(obj_lock_t));
- if (olp != NULL) {
- olp->key = key;
- olp->next = obj_lock_hash[h];
- obj_lock_hash[h] = olp;
- }
-}
-
-static void
-obj_unlock(void *key)
-{
- /*
- * Unlock an object specified by 'key'.
- */
- int h = obj_hash(key);
- obj_lock_t *olp, *olp0;
-
- olp = obj_lock_hash[h];
- olp0 = NULL;
- while (olp != NULL) {
- if (olp->key == key) {
- if (olp0 == NULL)
- obj_lock_hash[h] = olp->next;
- else
- olp0->next = olp->next;
- free(olp);
- return;
- }
- olp0 = olp;
- olp = olp->next;
- }
-}
-
-static struct hostent *
-copy_decode_hostent_static(struct hostent *hp, struct hostent *newhp,
- char *buf, size_t buflen, int *errp)
-{
- /*
- * Copy "struct hostent" data referenced by 'hp' to 'newhp'.
- * It's a deep-copy, meaning all the data referenced by 'hp' are
- * also copied. They are copied into 'buf', whose length is 'buflen'.
- * The domain names ('hp->h_name' and 'hp->h_aliases') are
- * decoded from ACE to the local encoding before they are copied.
- * If 'buf' is too small to hold all the data, NULL will be
- * returned and '*errp' is set to NO_RECOVERY.
- */
- int naliases = 0;
- int naddrs = 0;
-
- if (hp == NULL)
- return (NULL);
-
- *newhp = *hp;
-
- if (hp->h_aliases != NULL) {
- /*
- * Allocate aliase table in 'buf'.
- */
- size_t sz;
-
- while (hp->h_aliases[naliases] != NULL)
- naliases++;
-
- newhp->h_aliases = (char **)buf;
- sz = sizeof(char *) * (naliases + 1);
-
- if (buflen < sz)
- goto overflow;
-
- buf += sz;
- buflen -= sz;
- }
-
- if (hp->h_addr_list != NULL) {
- /*
- * Allocate address table in 'buf'.
- */
- size_t sz;
- int i;
-
- while (hp->h_addr_list[naddrs] != NULL)
- naddrs++;
-
- newhp->h_addr_list = (char **)buf;
- sz = sizeof(char *) * (naddrs + 1);
-
- if (buflen < sz)
- goto overflow;
-
- buf += sz;
- buflen -= sz;
-
- /*
- * Copy the addresses.
- */
- sz = hp->h_length * naddrs;
- if (buflen < sz)
- goto overflow;
-
- for (i = 0; i < naddrs; i++) {
- newhp->h_addr_list[i] = buf;
- memcpy(buf, hp->h_addr_list[i], hp->h_length);
- buf += hp->h_length;
- }
- newhp->h_addr_list[naddrs] = NULL;
-
- buf += sz;
- buflen -= sz;
- }
-
- if (hp->h_name != NULL) {
- /*
- * Decode the name in h_name.
- */
- idn_result_t r;
- size_t slen;
-
- idn_enable(1);
- idn_nameinit(1);
- r = idn_decodename(IDN_DECODE_APP, hp->h_name,
- buf, buflen);
- switch (r) {
- case idn_success:
- newhp->h_name = buf;
- break;
- default:
- /* Copy hp->h_name verbatim. */
- if (strlen(hp->h_name) + 1 <= buflen) {
- newhp->h_name = buf;
- strcpy(buf, hp->h_name);
- break;
- }
- /* falllthrough */
- case idn_buffer_overflow:
- goto overflow;
- }
-
- slen = strlen(buf) + 1;
- buf += slen;
- buflen -= slen;
- }
-
- if (hp->h_aliases != NULL) {
- /*
- * Decode the names in h_aliases.
- */
- char **aliases = hp->h_aliases;
- char **newaliases = newhp->h_aliases;
- int i;
-
- for (i = 0; i < naliases; i++) {
- idn_result_t r;
- size_t slen;
-
- idn_enable(1);
- idn_nameinit(1);
- r = idn_decodename(IDN_DECODE_APP, aliases[i],
- buf, buflen);
-
- switch (r) {
- case idn_success:
- newaliases[i] = buf;
- break;
- default:
- /* Copy hp->h_name verbatim. */
- if (strlen(aliases[i]) + 1 <= buflen) {
- newaliases[i] = buf;
- strcpy(buf, aliases[i]);
- break;
- }
- /* falllthrough */
- case idn_buffer_overflow:
- goto overflow;
- }
-
- slen = strlen(buf) + 1;
- buf += slen;
- buflen -= slen;
- }
- newaliases[naliases] = NULL;
- }
-
- return (newhp);
-
- overflow:
- *errp = NO_RECOVERY;
- return (NULL);
-}
-
-static char *
-decode_name_dynamic(const char *name) {
- idn_result_t r;
- char buf[IDN_NAME_SIZE];
- char *s;
-
- idn_enable(1);
- idn_nameinit(1);
- r = idn_decodename(IDN_DECODE_APP, name, buf, sizeof(buf));
- if (r == idn_success) {
- name = buf;
- }
- s = malloc(strlen(name) + 1);
- if (s == NULL)
- return (NULL);
- else
- return (strcpy(s, name));
-}
-
-static struct hostent *
-copy_decode_hostent_dynamic(struct hostent *hp, int *errp) {
- /*
- * Make a deep-copy of the data referenced by 'hp', and return
- * a pointer to the copied data.
- * All the data are dynamically allocated using malloc().
- * The domain names ('hp->h_name' and 'hp->h_aliases') are
- * decoded from ACE to the local encoding before they are copied.
- * If malloc() fails, NULL will be returned and '*errp' is set to
- * NO_RECOVERY.
- */
- struct hostent *newhp;
- char **pp;
- size_t alloc_size;
- int naliases = 0;
- int naddrs = 0;
- int i;
-
- if (hp == NULL)
- return (NULL);
-
- if (hp->h_aliases != NULL) {
- while (hp->h_aliases[naliases] != NULL)
- naliases++;
- }
-
- if (hp->h_addr_list != NULL) {
- while (hp->h_addr_list[naddrs] != NULL)
- naddrs++;
- }
-
- alloc_size = sizeof(struct hostent) +
- sizeof(char *) * (naliases + 1) +
- sizeof(char *) * (naddrs + 1) +
- hp->h_length * naddrs;
-
- if ((newhp = malloc(alloc_size)) == NULL) {
- return (hp);
- }
-
- memset(newhp, 0, alloc_size);
-
- pp = (char **)(newhp + 1);
-
- if (hp->h_name != NULL) {
- newhp->h_name = decode_name_dynamic(hp->h_name);
- if (newhp->h_name == NULL)
- goto alloc_fail;
- }
-
- newhp->h_addrtype = hp->h_addrtype;
- newhp->h_length = hp->h_length;
-
- if (hp->h_aliases != NULL) {
- newhp->h_aliases = pp;
- for (i = 0; i < naliases; i++) {
- newhp->h_aliases[i] =
- decode_name_dynamic(hp->h_aliases[i]);
- if (newhp->h_aliases[i] == NULL)
- goto alloc_fail;
- }
- newhp->h_aliases[naliases] = NULL;
- pp += naliases + 1;
- }
-
- if (hp->h_addr_list != NULL) {
- char *p;
-
- newhp->h_addr_list = pp;
- pp += naddrs + 1;
- p = (char *)pp;
-
- for (i = 0; i < naddrs; i++) {
- newhp->h_addr_list[i] = p;
- memcpy(p, hp->h_addr_list[i], hp->h_length);
- p += hp->h_length;
- }
- newhp->h_addr_list[naddrs] = NULL;
- }
-
- return (newhp);
-
- alloc_fail:
- free_copied_hostent(hp);
- *errp = NO_RECOVERY;
- return (NULL);
-}
-
-static void
-free_copied_hostent(struct hostent *hp) {
- /*
- * Free all the memory allocated by copy_decode_hostent_dynamic().
- */
- if (hp->h_name != NULL)
- free(hp->h_name);
- if (hp->h_aliases != NULL) {
- char **pp = hp->h_aliases;
- while (*pp != NULL)
- free(*pp++);
- }
- free(hp);
-}
-
-#ifdef HAVE_GETNAMEINFO
-static struct addrinfo *
-copy_decode_addrinfo_dynamic(struct addrinfo *aip) {
- struct addrinfo *newaip;
-
- if (aip == NULL)
- return (NULL);
-
- newaip = malloc(sizeof(struct addrinfo) + aip->ai_addrlen);
- if (newaip == NULL)
- return (NULL);
-
- *newaip = *aip;
- newaip->ai_addr = (struct sockaddr *)(newaip + 1);
- memcpy(newaip->ai_addr, aip->ai_addr, aip->ai_addrlen);
-
- if (newaip->ai_canonname != NULL)
- newaip->ai_canonname = decode_name_dynamic(aip->ai_canonname);
-
- newaip->ai_next = copy_decode_addrinfo_dynamic(aip->ai_next);
- return (newaip);
-}
-#endif
-
-#ifdef HAVE_FREEADDRINFO
-static void
-free_copied_addrinfo(struct addrinfo *aip) {
- while (aip != NULL) {
- struct addrinfo *next = aip->ai_next;
-
- if (aip->ai_canonname != NULL)
- free(aip->ai_canonname);
- free(aip);
- aip = next;
- }
-}
-#endif
-
-#ifdef HAVE_GETHOSTBYNAME
-struct hostent *
-ENTRY(gethostbyname)(const char *name) {
- static hostbuf_t buf;
- static struct hostent he;
- idn_result_t r;
- struct hostent *hp;
-
- if (idn_isprocessing)
- return (REAL(gethostbyname)(name));
-
- TRACE(("gethostbyname(name=%s)\n", idn__debug_xstring(name, 60)));
-
- idn_isprocessing = 1;
- idn_enable(1);
- idn_nameinit(1);
- r = idn_encodename(IDN_ENCODE_APP, name, buf.data, sizeof(buf));
- if (r == idn_success)
- name = buf.data;
-
- hp = copy_decode_hostent_static(REAL(gethostbyname)(name),
- &he, buf.data, sizeof(buf),
- &h_errno);
- idn_isprocessing = 0;
- return (hp);
-}
-#endif
-
-#ifdef HAVE_GETHOSTBYNAME2
-struct hostent *
-ENTRY(gethostbyname2)(const char *name, int af) {
- static hostbuf_t buf;
- static struct hostent he;
- idn_result_t r;
- struct hostent *hp;
-
- if (idn_isprocessing)
- return (REAL(gethostbyname2)(name, af));
-
- TRACE(("gethostbyname2(name=%s)\n", idn__debug_xstring(name, 60), af));
-
- idn_isprocessing = 1;
- idn_enable(1);
- idn_nameinit(1);
- r = idn_encodename(IDN_ENCODE_APP, name, buf.data, sizeof(buf));
- if (r == idn_success)
- name = buf.data;
-
- hp = copy_decode_hostent_static(REAL(gethostbyname2)(name, af),
- &he, buf.data, sizeof(buf),
- &h_errno);
- idn_isprocessing = 0;
- return (hp);
-}
-#endif
-
-#ifdef HAVE_GETHOSTBYADDR
-struct hostent *
-ENTRY(gethostbyaddr)(GHBA_ADDR_T addr, GHBA_ADDRLEN_T len, int type) {
- static hostbuf_t buf;
- static struct hostent he;
- struct hostent *hp;
-
- if (idn_isprocessing)
- return (REAL(gethostbyaddr)(addr, len, type));
-
- TRACE(("gethostbyaddr()\n"));
-
- idn_isprocessing = 1;
- hp = copy_decode_hostent_static(REAL(gethostbyaddr)(addr, len, type),
- &he, buf.data, sizeof(buf),
- &h_errno);
- idn_isprocessing = 0;
- return (hp);
-}
-#endif
-
-#ifdef GETHOST_R_GLIBC_FLAVOR
-
-#ifdef HAVE_GETHOSTBYNAME_R
-int
-ENTRY(gethostbyname_r)(const char *name, struct hostent *result,
- char *buffer, size_t buflen,
- struct hostent **rp, int *errp)
-{
- char namebuf[IDN_NAME_SIZE];
- char *data;
- size_t datalen;
- idn_result_t r;
- struct hostent he;
- hostbuf_t buf;
- int n;
-
- if (idn_isprocessing)
- return (REAL(gethostbyname_r)(name, result, buffer,
- buflen, rp, errp));
-
- TRACE(("gethostbyname_r(name=%s,buflen=%d)\n",
- idn__debug_xstring(name, 60), buflen));
-
- if (buflen <= sizeof(buf)) {
- data = buf.data;
- datalen = sizeof(buf);
- } else {
- data = malloc(buflen);
- datalen = buflen;
- if (data == NULL) {
- *errp = NO_RECOVERY;
- return (ENOMEM);
- }
- }
-
- idn_isprocessing = 1;
- idn_enable(1);
- idn_nameinit(1);
- r = idn_encodename(IDN_ENCODE_APP, name, namebuf, sizeof(namebuf));
- if (r == idn_success)
- name = namebuf;
-
- *errp = 0;
- n = REAL(gethostbyname_r)(name, &he, data, datalen, rp, errp);
-
- if (n == 0 && *rp != NULL)
- *rp = copy_decode_hostent_static(*rp, result, buffer, buflen,
- errp);
- idn_isprocessing = 0;
-
- if (data != buf.data)
- free(data);
-
- if (*errp != 0)
- n = EINVAL; /* XXX */
-
- return (n);
-}
-#endif
-
-#ifdef HAVE_GETHOSTBYNAME2_R
-int
-ENTRY(gethostbyname2_r)(const char *name, int af, struct hostent *result,
- char *buffer, size_t buflen,
- struct hostent **rp, int *errp)
-{
- char namebuf[IDN_NAME_SIZE];
- char *data;
- size_t datalen;
- idn_result_t r;
- struct hostent he;
- hostbuf_t buf;
- int n;
-
- if (idn_isprocessing)
- return (REAL(gethostbyname2_r)(name, af, result, buffer,
- buflen, rp, errp));
-
- TRACE(("gethostbyname2_r(name=%s,buflen=%d)\n",
- idn__debug_xstring(name, 60), buflen));
-
- if (buflen <= sizeof(buf)) {
- data = buf.data;
- datalen = sizeof(buf);
- } else {
- data = malloc(buflen);
- datalen = buflen;
- if (data == NULL) {
- *errp = NO_RECOVERY;
- return (ENOMEM);
- }
- }
-
- idn_isprocessing = 1;
- idn_enable(1);
- idn_nameinit(1);
- r = idn_encodename(IDN_ENCODE_APP, name, namebuf, sizeof(namebuf));
- if (r == idn_success)
- name = namebuf;
-
- n = REAL(gethostbyname2_r)(name, af, &he, data, datalen, rp, errp);
-
- if (n == 0 && *rp != NULL)
- *rp = copy_decode_hostent_static(*rp, result, buffer, buflen,
- errp);
- idn_isprocessing = 0;
-
- if (data != buf.data)
- free(data);
-
- if (*errp != 0)
- n = EINVAL; /* XXX */
-
- return (n);
-}
-#endif
-
-#ifdef HAVE_GETHOSTBYADDR_R
-int
-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)
-{
- char *data;
- size_t datalen;
- struct hostent he;
- hostbuf_t buf;
- int n;
-
- if (idn_isprocessing) {
- return (REAL(gethostbyaddr_r)(addr, len, type, result,
- buffer, buflen, rp, errp));
- }
-
- TRACE(("gethostbyaddr_r(buflen=%d)\n", buflen));
-
- if (buflen <= sizeof(buf)) {
- data = buf.data;
- datalen = sizeof(buf);
- } else {
- data = malloc(buflen);
- datalen = buflen;
- if (data == NULL) {
- *errp = NO_RECOVERY;
- return (ENOMEM);
- }
- }
-
- idn_isprocessing = 1;
- n = REAL(gethostbyaddr_r)(addr, len, type, &he,
- data, datalen, rp, errp);
-
- if (n == 0 && *rp != NULL)
- *rp = copy_decode_hostent_static(*rp, result, buffer, buflen,
- errp);
- idn_isprocessing = 0;
-
- if (data != buf.data)
- free(data);
-
- if (*errp != 0)
- n = EINVAL; /* XXX */
-
- return (0);
-}
-#endif
-
-#else /* GETHOST_R_GLIBC_FLAVOR */
-
-#ifdef HAVE_GETHOSTBYNAME_R
-struct hostent *
-ENTRY(gethostbyname_r)(const char *name, struct hostent *result,
- char *buffer, int buflen, int *errp)
-{
- char namebuf[IDN_NAME_SIZE];
- char *data;
- size_t datalen;
- idn_result_t r;
- struct hostent *hp, he;
- hostbuf_t buf;
-
- if (idn_isprocessing)
- return (REAL(gethostbyname_r)(name, result, buffer,
- buflen, errp));
-
- TRACE(("gethostbyname_r(name=%s,buflen=%d)\n",
- idn__debug_xstring(name, 60), buflen));
-
- if (buflen <= sizeof(buf)) {
- data = buf.data;
- datalen = sizeof(buf);
- } else {
- data = malloc(buflen);
- datalen = buflen;
- if (data == NULL) {
- *errp = NO_RECOVERY;
- return (NULL);
- }
- }
-
- idn_isprocessing = 1;
- idn_enable(1);
- idn_nameinit(1);
- r = idn_encodename(IDN_ENCODE_APP, name, namebuf, sizeof(namebuf));
- if (r == idn_success)
- name = namebuf;
-
- hp = REAL(gethostbyname_r)(name, &he, data, datalen, errp);
-
- if (hp != NULL)
- hp = copy_decode_hostent_static(hp, result, buffer, buflen,
- errp);
- idn_isprocessing = 0;
-
- if (data != buf.data)
- free(data);
-
- return (hp);
-}
-#endif
-
-#ifdef HAVE_GETHOSTBYADDR_R
-struct hostent *
-ENTRY(gethostbyaddr_r)(GHBA_ADDR_T addr, GHBA_ADDRLEN_T len, int type,
- struct hostent *result,
- char *buffer, int buflen, int *errp)
-{
- char *data;
- size_t datalen;
- struct hostent *hp, he;
- hostbuf_t buf;
-
- if (idn_isprocessing) {
- return (REAL(gethostbyaddr_r)(addr, len, type, result,
- buffer, buflen, errp));
- }
-
- TRACE(("gethostbyaddr_r(buflen=%d)\n", buflen));
-
- if (buflen <= sizeof(buf)) {
- data = buf.data;
- datalen = sizeof(buf);
- } else {
- data = malloc(buflen);
- datalen = buflen;
- if (data == NULL) {
- *errp = NO_RECOVERY;
- return (NULL);
- }
- }
-
- idn_isprocessing = 1;
- hp = REAL(gethostbyaddr_r)(addr, len, type, &he, data, datalen, errp);
-
- if (hp != NULL)
- hp = copy_decode_hostent_static(hp, result, buffer, buflen,
- errp);
- idn_isprocessing = 0;
-
- if (data != buf.data)
- free(data);
-
- return (hp);
-}
-#endif
-
-#endif /* GETHOST_R_GLIBC_FLAVOR */
-
-#ifdef HAVE_GETIPNODEBYNAME
-struct hostent *
-ENTRY(getipnodebyname)(const char *name, int af, int flags, int *errp) {
- char namebuf[IDN_NAME_SIZE];
- idn_result_t r;
- struct hostent *hp;
-
- if (idn_isprocessing)
- return (REAL(getipnodebyname)(name, af, flags, errp));
-
- TRACE(("getipnodebyname(name=%s)\n", idn__debug_xstring(name, 60), af));
-
- idn_isprocessing = 1;
- idn_enable(1);
- idn_nameinit(1);
- r = idn_encodename(IDN_ENCODE_APP, name, namebuf, sizeof(namebuf));
- if (r == idn_success)
- name = namebuf;
-
- hp = REAL(getipnodebyname)(name, af, flags, errp);
- if (hp != NULL) {
- struct hostent *newhp = copy_decode_hostent_dynamic(hp, errp);
- if (newhp != hp) {
- REAL(freehostent)(hp);
- obj_lock(newhp);
- hp = newhp;
- }
- }
- idn_isprocessing = 0;
- return (hp);
-}
-#endif
-
-#ifdef HAVE_GETIPNODEBYADDR
-struct hostent *
-ENTRY(getipnodebyaddr)(const void *src, size_t len, int af, int *errp) {
- struct hostent *hp;
-
- if (idn_isprocessing)
- return (REAL(getipnodebyaddr)(src, len, af, errp));
-
- TRACE(("getipnodebyaddr()\n"));
-
- idn_isprocessing = 1;
- hp = REAL(getipnodebyaddr)(src, len, af, errp);
- if (hp != NULL) {
- struct hostent *newhp = copy_decode_hostent_dynamic(hp, errp);
- if (newhp != hp) {
- REAL(freehostent)(hp);
- obj_lock(newhp);
- hp = newhp;
- }
- }
- idn_isprocessing = 0;
- return (hp);
-}
-#endif
-
-#ifdef HAVE_FREEHOSTENT
-void
-ENTRY(freehostent)(struct hostent *hp) {
- TRACE(("freehostent(hp=%p)\n", (void *)hp));
-
- if (obj_islocked(hp)) {
- /*
- * We allocated the data.
- */
- obj_unlock(hp);
- free_copied_hostent(hp);
- } else {
- /*
- * It was allocated the original getipnodeby*().
- */
- REAL(freehostent)(hp);
- }
-}
-#endif
-
-#ifdef HAVE_GETADDRINFO
-int
-ENTRY(getaddrinfo)(const char *nodename, const char *servname,
- const struct addrinfo *hints, struct addrinfo **res)
-{
- char namebuf[IDN_NAME_SIZE];
- idn_result_t r;
- struct addrinfo *aip;
- int err;
-
- if (nodename == NULL || idn_isprocessing)
- return (REAL(getaddrinfo)(nodename, servname, hints, res));
-
- TRACE(("getaddrinfo(nodename=%s)\n", idn__debug_xstring(nodename, 60)));
-
- idn_isprocessing = 1;
- idn_enable(1);
- idn_nameinit(1);
- r = idn_encodename(IDN_ENCODE_APP, nodename,
- namebuf, sizeof(namebuf));
- if (r == idn_success)
- nodename = namebuf;
-
- err = REAL(getaddrinfo)(nodename, servname, hints, &aip);
- if (err == 0 && aip != NULL) {
- *res = copy_decode_addrinfo_dynamic(aip);
- if (*res == NULL)
- err = EAI_FAIL;
- else
- obj_lock(*res);
- if (aip != NULL)
- REAL(freeaddrinfo)(aip);
- }
- idn_isprocessing = 0;
- return (err);
-}
-#endif
-
-#ifdef HAVE_FREEADDRINFO
-void
-ENTRY(freeaddrinfo)(struct addrinfo *aip) {
- TRACE(("freeaddrinfo(aip=%p)\n", (void *)aip));
-
- if (obj_islocked(aip)) {
- /*
- * We allocated the data.
- */
- obj_unlock(aip);
- free_copied_addrinfo(aip);
- } else {
- /*
- * It was allocated the original getaddrinfo().
- */
- REAL(freeaddrinfo)(aip);
- }
-}
-#endif
-
-#ifdef HAVE_GETNAMEINFO
-int
-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[IDN_NAME_SIZE];
- size_t namelen = sizeof(name);
- int code;
- idn_result_t r;
-
- if (host == NULL || hostlen == 0 || idn_isprocessing) {
- return (REAL(getnameinfo)(sa, salen, host, hostlen,
- serv, servlen, flags));
- }
-
- TRACE(("getnameinfo(hostlen=%u)\n", hostlen));
-
- idn_isprocessing = 1;
- code = REAL(getnameinfo)(sa, salen, name, namelen,
- serv, servlen, flags);
- if (code == 0 && name[0] != '\0') {
- idn_enable(1);
- idn_nameinit(1);
- r = idn_decodename(IDN_DECODE_APP, name, host, hostlen);
- switch (r) {
- case idn_success:
- code = 0;
- break;
- case idn_buffer_overflow:
- case idn_nomemory:
- code = EAI_MEMORY;
- break;
- default:
- code = EAI_FAIL;
- break;
- }
- }
- idn_isprocessing = 0;
- return (code);
-}
-#endif
+++ /dev/null
-/* $Id: resolver.h,v 1.1 2003/06/04 00:27:13 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-#ifndef RESOLVER_H
-#define RESOLVER_H 1
-
-#undef gethostbyname
-#define gethostbyname idn_resolver_gethostbyname
-#undef gethostbyname2
-#define gethostbyname2 idn_resolver_gethostbyname2
-#undef gethostbyname_r
-#define gethostbyname_r idn_resolver_gethostbyname_r
-#undef gethostbyaddr
-#define gethostbyaddr idn_resolver_gethostbyaddr
-#undef gethostbyaddr
-#define gethostbyaddr_r idn_resolver_gethostbyaddr_r
-#undef getipnodebyname
-#define getipnodebyname idn_resolver_getipnodebyname
-#undef getipnodebyaddr
-#define getipnodebyaddr idn_resolver_getipnodebyaddr
-#undef freehostent
-#define freehostent idn_resolver_freehostent
-#undef getaddrinfo
-#define getaddrinfo idn_resolver_getaddrinfo
-#undef freeaddrinfo
-#define freeaddrinfo idn_resolver_freeaddrinfo
-#undef getnameinfo
-#define getnameinfo idn_resolver_getnameinfo
-
-#endif /* RESOLVER_H */
+++ /dev/null
-.\" $Id: runidn.1,v 1.1 2003/06/04 00:27:14 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) 2000-2002 Japan Network Information Center. All rights reserved."
-.\"
-.\" 4. The name of JPNIC may not 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.
-.\"
-.TH RUNIDN 1 "April 6, 2001"
-.\"
-.SH NAME
-runidn \- A script to allow applications to use internationalized domain names.
-.\"
-.SH SYNOPSIS
-\fBrunidn\fP [\fB-e\fP \fIlocal-codeset\fP] \fIprogram-name\fP [\fIargs..\fP]
-.\"
-.SH DESCRIPTION
-\fBrunidn\fP enables applications to use internationalized domain names
-without recompilation.
-Just add ``runidn'' before the application-name, and the application
-can handle non-ASCII domain names. For example, you can do:
-.PP
-.RS 4
-.nf
-\f(CW% runidn telnet \fInon-ASCII-hostname\fR
-.fi
-.RE
-.PP
-Before using runidn, you should set up properties related to
-internationalized DNS by configuring idnkit's configuration file
-\fBidn.conf\fP.
-See idn.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, \fBrunidn\fR guesses the codeset
-from the current locale.
-See the ``NOTE'' section for more details about local codeset.
-.\"
-.SH IMPLEMENTATION
-\fBrunidn\fR is a small shell script that sets up an environment variable
-called ``LD_PRELOAD'', so that an application dynamically links a shared
-library ``libidnkitres'' before any other shared libraries.
-.PP
-The library ``libidnkitres'' provides a special version of resolver
-functions which implement features for handling internationalized
-domain names.
-\fBrunidn\fR replaces the following functions with the special version:
-.PP
-.RS 4
-.nf
-.ft CW
-gethostbyname
-gethostbyname2
-gethostbyaddr
-gethostbyname_r
-gethostbyname2_r
-gethostbyaddr_r
-getipnodebyname
-getipnodebyaddr
-freehostent
-getaddrinfo
-freeaddrinfo
-getnameinfo
-.ft R
-.fi
-.RE
-.PP
-By overriding them in the standard libraries with the special version
-provided by ``libidnkitres'',
-\fBrunidn\fR enables applications to use internationalized domain names.
-.RS 4
-.IP \(bu 2
-These API functions accept non-ASCII domain names encoded
-in the local codeset that the application is using.
-Also the result from these APIs may contain non-ASCII domain names.
-.IP \(bu 2
-The normalization and codeset conversion between application's local
-codeset and the codeset used in DNS protocol data are handled
-automatically, so users/applications need not worry about them.
-.RE
-.PP
-Properties of internationalized DNS (such as the normalization or
-the codeset used on DNS protocol data) can be configured with the
-idnkit's configuration file (\fBidn.conf\fR).
-See idn.conf(5) for details.
-.\"
-.SH NOTE
-Unless \fB\-e\fP option is specified, \fBrunidn\fR tries to guess
-the application's local codeset from the application's current 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
-environment variable ``IDN_LOCAL_CODESET''.
-See the section ``LOCAL CODESET'' in idn.conf(5) for details.
-.PP
-The idea of using ``LD_PRELOAD'' to replace some functions in the standard
-library was taken from ``runsocks'' script distributed as part of SOCKS5
-reference implementation.
-.SH BUGS
-There are many cases where \fBrunidn\fR does not work.
-.PP
-Your system must support ``LD_PRELOAD'' mechanism in the first place.
-.PP
-Due to security reasons, ``LD_PRELOAD'' mechanism is disabled for
-setuid programs in any sane systems.
-So \fBrunidn\fR does not work for setuid programs such as ping or rsh.
-.PP
-If your application uses a function other than the ones runidn supports for
-name resolution, you lose.
-.SH "SEE ALSO"
-idn.conf(5), runsocks(1)
+++ /dev/null
-#! /bin/sh
-# $Id: runidn.in,v 1.1 2003/06/04 00:27:14 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, 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) 2000-2002 Japan Network Information Center. All rights reserved."
-#
-# 4. The name of JPNIC may not 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.
-
-# 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
- IDN_LOCAL_CODESET="$2"
- export IDN_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
-
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-libdir=`echo @libdir@`
-if test ! -f $libdir/libidnkitres.la; then
- cat <<EOF 1>&2
-Have you installed idnkit? I cannot find libidnkitres.la.
-EOF
- exit 1
-fi
-eval `grep '^dlname' $libdir/libidnkitres.la`
-if test "$dlname" = ""; then
- cat <<EOF 1>&2
-Sorry, runidn won't work because libidnkitres is not dynamically loadable.
-EOF
- exit 1
-fi
-preload=$preload$libdir/$dlname
-
-# Set @PRELOAD_VAR@.
-if [ X$@PRELOAD_VAR@ = X ]; then
- @PRELOAD_VAR@="$preload@PRELOAD_LAST@"
-else
- @PRELOAD_VAR@="$preload@PRELOAD_SEP@$@PRELOAD_VAR@@PRELOAD_LAST@"
-fi
-export @PRELOAD_VAR@
-
-# Shoot.
-exec "$@"
+++ /dev/null
-#ifndef lint
-static char *rcsid = "$Id: stub.c,v 1.1 2003/06/04 00:27:13 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-#include <config.h>
-
-#include <stdarg.h>
-#include <stdlib.h>
-#include <string.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <netdb.h>
-#include <errno.h>
-#ifdef HAVE_DLFCN_H
-#include <dlfcn.h>
-#endif
-
-#include <idn/logmacro.h>
-#include <idn/debug.h>
-
-#include "stub.h"
-
-#ifndef RTLD_NEXT
-typedef struct {
- const char *name;
- void *handle;
-} shared_obj_t;
-
-static shared_obj_t shobj[] = {
-#ifdef SOPATH_LIBC
- { SOPATH_LIBC },
-#endif
-#ifdef SOPATH_LIBNSL
- { SOPATH_LIBNSL },
-#endif
- { NULL },
-};
-#endif
-
-static void *shared_obj_findsym(void *handle, const char *name);
-static void *shared_obj_findsymx(void *handle, const char *name);
-static void *get_func_addr(const char *name);
-
-#ifndef RTLD_NEXT
-static void *
-shared_obj_open(const char *path) {
-#ifdef HAVE_DLOPEN
- return (dlopen(path, RTLD_LAZY));
-#endif
- FATAL(("stub: no way to load shared object file\n"));
- return (NULL);
-}
-#endif
-
-static void *
-shared_obj_findsym(void *handle, const char *name) {
- char namebuf[100];
- void *addr;
- static int need_leading_underscore = -1;
-
- /* Prepend underscore. */
- namebuf[0] = '_';
- (void)strcpy(namebuf + 1, name);
- name = namebuf;
-
- if (need_leading_underscore < 0) {
- /* First try without one. */
- if ((addr = shared_obj_findsymx(handle, name + 1)) != NULL) {
- need_leading_underscore = 0;
- return (addr);
- }
- /* Then try with one. */
- if ((addr = shared_obj_findsymx(handle, name)) != NULL) {
- need_leading_underscore = 1;
- return (addr);
- }
- } else if (need_leading_underscore) {
- return (shared_obj_findsymx(handle, name));
- } else {
- return (shared_obj_findsymx(handle, name + 1));
- }
- return (NULL);
-}
-
-static void *
-shared_obj_findsymx(void *handle, const char *name) {
-#ifdef HAVE_DLSYM
- return (dlsym(handle, name));
-#endif
- /* logging */
- FATAL(("stub: no way to get symbol address\n"));
- return (NULL);
-}
-
-static void *
-get_func_addr(const char *name) {
-#ifdef RTLD_NEXT
- void *addr = shared_obj_findsym(RTLD_NEXT, name);
-
- if (addr != NULL) {
- TRACE(("stub: %s found in the subsequent objects\n", name));
- return (addr);
- }
-#else
- int i;
-
- for (i = 0; shobj[i].name != NULL; i++) {
- if (shobj[i].handle == NULL) {
- TRACE(("stub: loading %s\n", shobj[i].name));
- shobj[i].handle = shared_obj_open(shobj[i].name);
- }
- if (shobj[i].handle != NULL) {
- void *addr = shared_obj_findsym(shobj[i].handle, name);
- if (addr != NULL) {
- TRACE(("stub: %s found in %s\n",
- name, shobj[i].name));
- return (addr);
- }
- }
- }
-#endif
- TRACE(("stub: %s not found\n", name));
- return (NULL);
-}
-
-#ifdef HAVE_GETHOSTBYNAME
-struct hostent *
-idn_stub_gethostbyname(const char *name) {
- static struct hostent *(*fp)(const char *name);
-
- if (fp == NULL)
- fp = get_func_addr("gethostbyname");
- if (fp != NULL)
- return ((*fp)(name));
- return (NULL);
-}
-#endif
-
-#ifdef HAVE_GETHOSTBYNAME2
-struct hostent *
-idn_stub_gethostbyname2(const char *name, int af) {
- static struct hostent *(*fp)(const char *name, int af);
-
- if (fp == NULL)
- fp = get_func_addr("gethostbyname2");
- if (fp != NULL)
- return ((*fp)(name, af));
- return (NULL);
-}
-#endif
-
-#ifdef HAVE_GETHOSTBYADDR
-struct hostent *
-idn_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)
- fp = get_func_addr("gethostbyaddr");
- if (fp != NULL)
- return ((*fp)(addr, len, type));
- return (NULL);
-}
-#endif
-
-#ifdef GETHOST_R_GLIBC_FLAVOR
-
-#ifdef HAVE_GETHOSTBYNAME_R
-int
-idn_stub_gethostbyname_r(const char *name, struct hostent *result,
- char *buffer, size_t buflen,
- struct hostent **rp, int *errp)
-{
- static int (*fp)(const char *name, struct hostent *result,
- char *buffer, size_t buflen,
- struct hostent **rp, int *errp);
-
- if (fp == NULL)
- fp = get_func_addr("gethostbyname_r");
- if (fp != NULL)
- return ((*fp)(name, result, buffer, buflen, rp, errp));
- return (ENOENT); /* ??? */
-}
-#endif
-
-#ifdef HAVE_GETHOSTBYNAME2_R
-int
-idn_stub_gethostbyname2_r(const char *name, int af, struct hostent *result,
- char *buffer, size_t buflen,
- struct hostent **rp, int *errp)
-{
- static int (*fp)(const char *name, int af, struct hostent *result,
- char *buffer, size_t buflen,
- struct hostent **rp, int *errp);
-
- if (fp == NULL)
- fp = get_func_addr("gethostbyname2_r");
- if (fp != NULL)
- return ((*fp)(name, af, result, buffer, buflen, rp, errp));
- return (ENOENT); /* ??? */
-}
-#endif
-
-#ifdef HAVE_GETHOSTBYADDR_R
-int
-idn_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)(GHBA_ADDR_T addr, GHBA_ADDRLEN_T len, int type,
- struct hostent *result, char *buffer,
- size_t buflen, struct hostent **rp, int *errp);
-
- if (fp == NULL)
- fp = get_func_addr("gethostbyaddr_r");
- if (fp != NULL)
- return ((*fp)(addr, len, type, result,
- buffer, buflen, rp, errp));
- return (ENOENT); /* ??? */
-}
-#endif
-
-#else /* GETHOST_R_GLIBC_FLAVOR */
-
-#ifdef HAVE_GETHOSTBYNAME_R
-struct hostent *
-idn_stub_gethostbyname_r(const char *name, struct hostent *result,
- char *buffer, int buflen, int *errp)
-{
- static struct hostent *(*fp)(const char *name, struct hostent *result,
- char *buffer, int buflen, int *errp);
-
- if (fp == NULL)
- fp = get_func_addr("gethostbyname_r");
- if (fp != NULL)
- return ((*fp)(name, result, buffer, buflen, errp));
- return (NULL);
-}
-#endif
-
-#ifdef HAVE_GETHOSTBYADDR_R
-struct hostent *
-idn_stub_gethostbyaddr_r(GHBA_ADDR_T addr, int len, int type,
- struct hostent *result, char *buffer,
- int buflen, int *errp)
-{
- static struct hostent *(*fp)(GHBA_ADDR_T addr, int len, int type,
- struct hostent *result, char *buffer,
- int buflen, int *errp);
-
- if (fp == NULL)
- fp = get_func_addr("gethostbyaddr_r");
- if (fp != NULL)
- return ((*fp)(addr, len, type, result, buffer, buflen, errp));
- return (NULL);
-}
-#endif
-
-#endif /* GETHOST_R_GLIBC_FLAVOR */
-
-#ifdef HAVE_GETIPNODEBYNAME
-struct hostent *
-idn_stub_getipnodebyname(const char *name, int af, int flags, int *errp) {
- static struct hostent *(*fp)(const char *name, int af, int flags,
- int *errp);
-
- if (fp == NULL)
- fp = get_func_addr("getipnodebyname");
- if (fp != NULL)
- return ((*fp)(name, af, flags, errp));
- return (NULL);
-}
-#endif
-
-#ifdef HAVE_GETIPNODEBYADDR
-struct hostent *
-idn_stub_getipnodebyaddr(const void *src, size_t len, int af, int *errp) {
- static struct hostent *(*fp)(const void *src, size_t len, int af,
- int *errp);
-
- if (fp == NULL)
- fp = get_func_addr("getipnodebyaddr");
- if (fp != NULL)
- return ((*fp)(src, len, af, errp));
- return (NULL);
-}
-#endif
-
-#ifdef HAVE_FREEHOSTENT
-void
-idn_stub_freehostent(struct hostent *hp) {
- static void (*fp)(struct hostent *hp);
-
- if (fp == NULL)
- fp = get_func_addr("freehostent");
- if (fp != NULL)
- (*fp)(hp);
-}
-#endif
-
-#ifdef HAVE_GETADDRINFO
-int
-idn_stub_getaddrinfo(const char *nodename, const char *servname,
- const struct addrinfo *hints, struct addrinfo **res)
-{
- static int (*fp)(const char *nodename, const char *servname,
- const struct addrinfo *hints, struct addrinfo **res);
-
- if (fp == NULL)
- fp = get_func_addr("getaddrinfo");
- if (fp != NULL)
- return ((*fp)(nodename, servname, hints, res));
- return (EAI_FAIL);
-}
-#endif
-
-#ifdef HAVE_FREEADDRINFO
-void
-idn_stub_freeaddrinfo(struct addrinfo *aip) {
- static void (*fp)(struct addrinfo *aip);
-
- if (fp == NULL)
- fp = get_func_addr("freeaddrinfo");
- if (fp != NULL)
- (*fp)(aip);
-}
-#endif
-
-#ifdef HAVE_GETNAMEINFO
-int
-idn_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");
- if (fp != NULL)
- return ((*fp)(sa, salen, host, hostlen, serv, servlen, flags));
- return (EAI_FAIL);
-}
-#endif
+++ /dev/null
-/* $Id: stub.h,v 1.1 2003/06/04 00:27:13 marka Exp $ */
-
-#ifndef STUB_H
-#define STUB_H
-
-#ifdef HAVE_GETHOSTBYNAME
-extern struct hostent *
-idn_stub_gethostbyname(const char *name);
-#endif
-
-#ifdef GETHOST_R_GLIBC_FLAVOR
-#ifdef HAVE_GETHOSTBYNAME_R
-extern int
-idn_stub_gethostbyname_r(const char *name, struct hostent *result,
- char *buffer, size_t buflen,
- struct hostent **rp, int *errp);
-#endif
-#else /* GETHOST_R_GLIBC_FLAVOR */
-#ifdef HAVE_GETHOSTBYNAME_R
-extern struct hostent *
-idn_stub_gethostbyname_r(const char *name, struct hostent *result,
- char *buffer, int buflen, int *errp);
-#endif
-#endif /* GETHOST_R_GLIBC_FLAVOR */
-
-#ifdef HAVE_GETHOSTBYNAME2
-extern struct hostent *
-idn_stub_gethostbyname2(const char *name, int af);
-#endif
-
-#ifdef GETHOST_R_GLIBC_FLAVOR
-#ifdef HAVE_GETHOSTBYNAME2_R
-extern int
-idn_stub_gethostbyname2_r(const char *name, int af, struct hostent *result,
- char *buffer, size_t buflen,
- struct hostent **rp, int *errp);
-#endif
-#endif /* GETHOST_R_GLIBC_FLAVOR */
-
-#ifdef HAVE_GETHOSTBYADDR
-extern struct hostent *
-idn_stub_gethostbyaddr(GHBA_ADDR_T addr, GHBA_ADDRLEN_T len, int type);
-#endif
-
-#ifdef GETHOST_R_GLIBC_FLAVOR
-#ifdef HAVE_GETHOSTBYADDR_R
-extern int
-idn_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 *
-idn_stub_gethostbyaddr_r(GHBA_ADDR_T addr, GHBA_ADDRLEN_T len, int type,
- struct hostent *result, char *buffer,
- int buflen, int *errp);
-#endif
-#endif /* GETHOST_R_GLIBC_FLAVOR */
-
-#ifdef HAVE_GETIPNODEBYNAME
-extern struct hostent *
-idn_stub_getipnodebyname(const char *name, int af, int flags, int *errp);
-#endif
-
-#ifdef HAVE_GETIPNODEBYADDR
-extern struct hostent *
-idn_stub_getipnodebyaddr(const void *src, size_t len, int af, int *errp);
-#endif
-
-#ifdef HAVE_FREEHOSTENT
-extern void
-idn_stub_freehostent(struct hostent *hp);
-#endif
-
-#ifdef HAVE_GETADDRINFO
-extern int
-idn_stub_getaddrinfo(const char *nodename, const char *servname,
- const struct addrinfo *hints, struct addrinfo **res);
-#endif
-
-#ifdef HAVE_FREEADDRINFO
-extern void
-idn_stub_freeaddrinfo(struct addrinfo *aip);
-#endif
-
-#ifdef HAVE_GETNAMEINFO
-extern int
-idn_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 */
+++ /dev/null
-# $Id: Makefile,v 1.1 2003/06/04 00:27:52 marka Exp $
-
-PERL = /usr/local/bin/perl -w
-
-V301_NORM_DIR = data/unicode-3.0.0
-V310_NORM_DIR = data/unicode-3.1.0
-V320_NORM_DIR = data/unicode-3.2.0
-NORM_GENERATOR = ./generate_normalize_data.pl
-
-NAMEPREP_DIR = data/nameprep
-NAMEPREP_FILES = \
- $(NAMEPREP_DIR)/nameprep.rfc3491.map \
- $(NAMEPREP_DIR)/nameprep.rfc3491.prohibited \
- $(NAMEPREP_DIR)/nameprep.rfc3491.unassigned \
- $(NAMEPREP_DIR)/nameprep.rfc3491.bidi
-NAMEPREP_GENERATOR = ./generate_nameprep_data.pl
-NAMEPREP_VERSIONS = rfc3491
-
-all: normalize nameprep
-
-normalize: ../lib/unicodedata_320.c
-
-nameprep: ../lib/nameprepdata.c
-
-../lib/unicodedata_301.c: $(NORM_GENERATOR)
- -rm -f $@.tmp
- $(PERL) $(NORM_GENERATOR) -prefix v301_ -dir $(V301_NORM_DIR) \
- > $@.tmp && mv $@.tmp $@
-
-../lib/unicodedata_310.c: $(NORM_GENERATOR)
- -rm -f $@.tmp
- $(PERL) $(NORM_GENERATOR) -prefix v310_ -dir $(V310_NORM_DIR) \
- > $@.tmp && mv $@.tmp $@
-
-../lib/unicodedata_320.c: $(NORM_GENERATOR)
- -rm -f $@.tmp
- $(PERL) $(NORM_GENERATOR) -prefix v320_ -dir $(V320_NORM_DIR) \
- > $@.tmp && mv $@.tmp $@
-
-../lib/nameprepdata.c: $(NAMEPREP_GENERATOR) $(NAMEPREP_FILES)
- -rm -f $@.tmp
- $(PERL) $(NAMEPREP_GENERATOR) -dir $(NAMEPREP_DIR) \
- $(NAMEPREP_VERSIONS) > $@.tmp && mv $@.tmp $@
+++ /dev/null
-# $Id: SparseMap.pm,v 1.1 2003/06/04 00:27:53 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) 2000-2002 Japan Network Information Center. All rights reserved."
-#
-# 4. The name of JPNIC may not 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.
-#
-
-package SparseMap;
-
-use strict;
-use Carp;
-
-my $debug = 0;
-
-sub new {
- # common options are:
- # BITS => [8, 7, 6], # 3-level map, 2nd level bits=7, 3rd = 6.
- # MAX => 0x110000 # actually, max + 1.
- my $class = shift;
- my $self = {@_};
-
- croak "BITS unspecified" unless exists $self->{BITS};
- croak "BITS is not an array reference"
- unless ref($self->{BITS}) eq 'ARRAY';
- croak "MAX unspecified" unless exists $self->{MAX};
-
- $self->{MAXLV} = @{$self->{BITS}} - 1;
- $self->{FIXED} = 0;
-
- my $lv0size = (indices($self, $self->{MAX} - 1))[0] + 1;
-
- my @map = (undef) x $lv0size;
- $self->{MAP} = \@map;
-
- bless $self, $class;
-}
-
-sub add1 {
- my ($self, $n, $val) = @_;
-
- croak "Already fixed" if $self->{FIXED};
- carp("data ($n) out of range"), return if $n >= $self->{MAX};
-
- my @index = $self->indices($n);
- my $r = $self->{MAP};
- my $maxlv = $self->{MAXLV};
- my $idx;
- my $lv;
-
- for ($lv = 0; $lv < $maxlv - 1; $lv++) {
- $idx = $index[$lv];
- $r->[$idx] = $self->create_imap($lv + 1, undef)
- unless defined $r->[$idx];
- $r = $r->[$idx];
- }
- $idx = $index[$lv];
- $r->[$idx] = $self->create_dmap() unless defined $r->[$idx];
- $self->add_to_dmap($r->[$idx], $index[$maxlv], $val);
-}
-
-sub fix {
- my $self = shift;
- my $map = $self->{MAP};
- my $maxlv = $self->{MAXLV};
- my @tmp;
- my @zero;
-
- carp "Already fixed" if $self->{FIXED};
- $self->collapse_tree();
- $self->fill_default();
- $self->{FIXED} = 1;
-}
-
-sub indices {
- my $self = shift;
- my $v = shift;
- my @bits = @{$self->{BITS}};
- my @idx;
-
- print "indices($v,", join(',', @bits), ") = " if $debug;
- for (my $i = @bits - 1; $i >= 0; $i--) {
- my $bit = $bits[$i];
- unshift @idx, $v & ((1 << $bit) - 1);
- $v = $v >> $bit;
- }
- print "(", join(',', @idx), ")\n" if $debug;
- @idx;
-}
-
-sub get {
- my $self = shift;
- my $v = shift;
- my $map = $self->{MAP};
- my @index = $self->indices($v);
-
- croak "Not yet fixed" unless $self->{FIXED};
-
- my $lastidx = pop @index;
- foreach my $idx (@index) {
- return $map->{DEFAULT} unless defined $map->[$idx];
- $map = $map->[$idx];
- }
- $map->[$lastidx];
-}
-
-sub indirectmap {
- my $self = shift;
-
- croak "Not yet fixed" unless $self->{FIXED};
-
- my @maps = $self->collect_maps();
- my $maxlv = $self->{MAXLV};
- my @bits = @{$self->{BITS}};
-
- my @indirect = ();
- for (my $lv = 0; $lv < $maxlv; $lv++) {
- my $offset;
- my $chunksz;
- my $mapsz = @{$maps[$lv]->[0]};
- if ($lv < $maxlv - 1) {
- # indirect map
- $offset = @indirect + @{$maps[$lv]} * @{$maps[$lv]->[0]};
- $chunksz = (1 << $bits[$lv + 1]);
- } else {
- # direct map
- $offset = 0;
- $chunksz = 1;
- }
- my $nextmaps = $maps[$lv + 1];
- foreach my $mapref (@{$maps[$lv]}) {
- croak "mapsize inconsistent ", scalar(@$mapref),
- " should be ", $mapsz, " (lv $lv)\n" if @$mapref != $mapsz;
- foreach my $m (@$mapref) {
- my $idx;
- for ($idx = 0; $idx < @$nextmaps; $idx++) {
- last if $nextmaps->[$idx] == $m;
- }
- croak "internal error: map corrupted" if $idx >= @$nextmaps;
- push @indirect, $offset + $chunksz * $idx;
- }
- }
- }
- @indirect;
-}
-
-sub cprog_imap {
- my $self = shift;
- my %opt = @_;
- my $name = $opt{NAME} || 'map';
- my @indirect = $self->indirectmap();
- my $prog;
- my $i;
- my ($idtype, $idcol, $idwid);
-
- my $max = 0;
- $max < $_ and $max = $_ foreach @indirect;
-
- if ($max < 256) {
- $idtype = 'char';
- $idcol = 8;
- $idwid = 3;
- } elsif ($max < 65536) {
- $idtype = 'short';
- $idcol = 8;
- $idwid = 5;
- } else {
- $idtype = 'long';
- $idcol = 4;
- $idwid = 10;
- }
- $prog = "static const unsigned $idtype ${name}_imap[] = {\n";
- $i = 0;
- foreach my $v (@indirect) {
- if ($i % $idcol == 0) {
- $prog .= "\n" if $i != 0;
- $prog .= "\t";
- }
- $prog .= sprintf "%${idwid}d, ", $v;
- $i++;
- }
- $prog .= "\n};\n";
- $prog;
-}
-
-sub cprog {
- my $self = shift;
- $self->cprog_imap(@_) . "\n" . $self->cprog_dmap(@_);
-}
-
-sub stat {
- my $self = shift;
- my @maps = $self->collect_maps();
- my $elsize = $self->{ELSIZE};
- my $i;
- my $total = 0;
- my @lines;
-
- for ($i = 0; $i < $self->{MAXLV}; $i++) {
- my $nmaps = @{$maps[$i]};
- my $mapsz = @{$maps[$i]->[0]};
- push @lines, "level $i: $nmaps maps (size $mapsz) ";
- push @lines, "[", $nmaps * $mapsz * $elsize, "]" if $elsize;
- push @lines, "\n";
- }
- my $ndmaps = @{$maps[$i]};
- push @lines, "level $i: $ndmaps dmaps";
- my $r = $maps[$i]->[0];
- if (ref($r) eq 'ARRAY') {
- push @lines, " (size ", scalar(@$r), ")";
- }
- push @lines, "\n";
- join '', @lines;
-}
-
-sub collapse_tree {
- my $self = shift;
- my @tmp;
-
- $self->_collapse_tree_rec($self->{MAP}, 0, \@tmp);
-}
-
-sub _collapse_tree_rec {
- my ($self, $r, $lv, $refs) = @_;
- my $ref = $refs->[$lv];
- my $maxlv = $self->{MAXLV};
- my $found;
-
- return $r unless defined $r;
-
- $ref = $refs->[$lv] = [] unless defined $ref;
-
- if ($lv == $maxlv) {
- $found = $self->find_dmap($ref, $r);
- } else {
- for (my $i = 0; $i < @$r; $i++) {
- $r->[$i] = $self->_collapse_tree_rec($r->[$i], $lv + 1, $refs);
- }
- $found = $self->find_imap($ref, $r);
- }
- unless ($found) {
- $found = $r;
- push @$ref, $found;
- }
- return $found;
-}
-
-sub fill_default {
- my $self = shift;
- my $maxlv = $self->{MAXLV};
- my $bits = $self->{BITS};
- my @zeros;
-
- $zeros[$maxlv] = $self->create_dmap();
- for (my $lv = $maxlv - 1; $lv >= 0; $lv--) {
- my $r = $zeros[$lv + 1];
- $zeros[$lv] = $self->create_imap($lv, $r);
- }
- _fill_default_rec($self->{MAP}, 0, $maxlv, \@zeros);
-}
-
-sub _fill_default_rec {
- my ($r, $lv, $maxlv, $zeros) = @_;
-
- return if $lv == $maxlv;
- for (my $i = 0; $i < @$r; $i++) {
- if (defined($r->[$i])) {
- _fill_default_rec($r->[$i], $lv + 1, $maxlv, $zeros);
- } else {
- $r->[$i] = $zeros->[$lv + 1];
- }
- }
-}
-
-sub create_imap {
- my ($self, $lv, $v) = @_;
- my @map;
- @map = ($v) x (1 << $self->{BITS}->[$lv]);
- \@map;
-}
-
-sub find_imap {
- my ($self, $maps, $map) = @_;
- my $i;
-
- foreach my $el (@$maps) {
- next unless @$el == @$map;
- for ($i = 0; $i < @$el; $i++) {
- last unless ($el->[$i] || 0) == ($map->[$i] || 0);
- }
- return $el if $i >= @$el;
- }
- undef;
-}
-
-sub collect_maps {
- my $self = shift;
- my @maps;
- _collect_maps_rec($self->{MAP}, 0, $self->{MAXLV}, \@maps);
- @maps;
-}
-
-sub _collect_maps_rec {
- my ($r, $lv, $maxlv, $maps) = @_;
- my $mapref = $maps->[$lv];
-
- return unless defined $r;
- foreach my $ref (@{$mapref}) {
- return if $ref == $r;
- }
- push @{$maps->[$lv]}, $r;
- if ($lv < $maxlv) {
- _collect_maps_rec($_, $lv + 1, $maxlv, $maps) foreach @{$r};
- }
-}
-
-sub add {confess "Subclass responsibility";}
-sub create_dmap {confess "Subclass responsibility";}
-sub add_to_dmap {confess "Subclass responsibility";}
-sub find_dmap {confess "Subclass responsibility";}
-sub cprog_dmap {confess "Subclass responsibility";}
-
-1;
-
-package SparseMap::Bit;
-
-use strict;
-use vars qw(@ISA);
-use Carp;
-#use SparseMap;
-
-@ISA = qw(SparseMap);
-
-sub new {
- my $class = shift;
- my $self = $class->SUPER::new(@_);
- $self->{DEFAULT} = 0;
- bless $self, $class;
-}
-
-sub add {
- my $self = shift;
-
- $self->add1($_, undef) foreach @_;
-}
-
-sub create_dmap {
- my $self = shift;
- my $bmbits = $self->{BITS}->[-1];
-
- my $s = "\0" x (1 << ($bmbits - 3));
- \$s;
-}
-
-sub add_to_dmap {
- my ($self, $map, $idx, $val) = @_;
- vec($$map, $idx, 1) = 1;
-}
-
-sub find_dmap {
- my ($self, $ref, $r) = @_;
- foreach my $map (@$ref) {
- return $map if $$map eq $$r;
- }
- return undef;
-}
-
-sub cprog_dmap {
- my $self = shift;
- my %opt = @_;
- my $name = $opt{NAME} || 'map';
- my @maps = $self->collect_maps();
- my @bitmap = @{$maps[-1]};
- my $prog;
- my $bmsize = 1 << ($self->{BITS}->[-1] - 3);
-
- $prog = <<"END";
-static const struct {
- unsigned char bm[$bmsize];
-} ${name}_bitmap[] = {
-END
-
- foreach my $bm (@bitmap) {
- my $i = 0;
- $prog .= "\t{{\n";
- foreach my $v (unpack 'C*', $$bm) {
- if ($i % 16 == 0) {
- $prog .= "\n" if $i != 0;
- $prog .= "\t";
- }
- $prog .= sprintf "%3d,", $v;
- $i++;
- }
- $prog .= "\n\t}},\n";
- }
- $prog .= "};\n";
- $prog;
-}
-
-1;
-
-package SparseMap::Int;
-
-use strict;
-use vars qw(@ISA);
-use Carp;
-#use SparseMap;
-
-@ISA = qw(SparseMap);
-
-sub new {
- my $class = shift;
- my $self = $class->SUPER::new(@_);
- $self->{DEFAULT} = 0 unless exists $self->{DEFAULT};
- bless $self, $class;
-}
-
-sub add {
- my $self = shift;
- while (@_ > 0) {
- my $n = shift;
- my $val = shift;
- $self->add1($n, $val);
- }
-}
-
-sub create_dmap {
- my $self = shift;
- my $tblbits = $self->{BITS}->[-1];
- my $default = $self->{DEFAULT};
-
- my @tbl = ($default) x (1 << $tblbits);
- \@tbl;
-}
-
-sub add_to_dmap {
- my ($self, $map, $idx, $val) = @_;
- $map->[$idx] = $val;
-}
-
-sub find_dmap {
- my ($self, $ref, $r) = @_;
- foreach my $map (@$ref) {
- if (@$map == @$r) {
- my $i;
- for ($i = 0; $i < @$map; $i++) {
- last if $map->[$i] != $r->[$i];
- }
- return $map if $i == @$map;
- }
- }
- return undef;
-}
-
-sub cprog_dmap {
- my $self = shift;
- my %opt = @_;
- my $name = $opt{NAME} || 'map';
- my @maps = $self->collect_maps();
- my @table = @{$maps[-1]};
- my $prog;
- my $i;
- my ($idtype, $idcol, $idwid);
- my $tblsize = 1 << $self->{BITS}->[-1];
-
- my ($min, $max);
- foreach my $a (@table) {
- foreach my $v (@$a) {
- $min = $v if !defined($min) or $min > $v;
- $max = $v if !defined($max) or $max < $v;
- }
- }
- if (exists $opt{MAPTYPE}) {
- $idtype = $opt{MAPTYPE};
- } else {
- my $u = $min < 0 ? '' : 'unsigned ';
- my $absmax = abs($max);
- $absmax = abs($min) if abs($min) > $absmax;
-
- if ($absmax < 256) {
- $idtype = "${u}char";
- } elsif ($absmax < 65536) {
- $idtype = "${u}short";
- } else {
- $idtype = "${u}long";
- }
- }
-
- $idwid = decimalwidth($max);
- $idwid = decimalwidth($min) if decimalwidth($min) > $idwid;
-
- $prog = <<"END";
-static const struct {
- $idtype tbl[$tblsize];
-} ${name}_table[] = {
-END
-
- foreach my $a (@table) {
- my $i = 0;
- my $col = 0;
- $prog .= "\t{{\n\t";
- foreach my $v (@$a) {
- my $s = sprintf "%${idwid}d, ", $v;
- $col += length($s);
- if ($col > 70) {
- $prog .= "\n\t";
- $col = length($s);
- }
- $prog .= $s;
- }
- $prog .= "\n\t}},\n";
- }
- $prog .= "};\n";
- $prog;
-}
-
-sub decimalwidth {
- my $n = shift;
- my $neg = 0;
- my $w;
-
- if ($n < 0) {
- $neg = 1;
- $n = -$n;
- }
- if ($n < 100) {
- $w = 2;
- } elsif ($n < 10000) {
- $w = 4;
- } elsif ($n < 1000000) {
- $w = 6;
- } elsif ($n < 100000000) {
- $w = 8;
- } else {
- $w = 10;
- }
- $w + $neg;
-}
-
-1;
+++ /dev/null
-# $Id: UCD.pm,v 1.1 2003/06/04 00:27:53 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) 2000-2002 Japan Network Information Center. All rights reserved."
-#
-# 4. The name of JPNIC may not 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.
-#
-
-package UCD;
-
-#
-# UCD.pm -- parser for Unicode Character Database files.
-#
-# This file is an aggregation of the following modules, each of which
-# provides a parser for a specific data file of UCD.
-# UCD::UnicodeData -- for UnicodeData.txt
-# UCD::CaseFolding -- for CaseFolding.txt
-# UCD::SpecialCasing -- for SpecialCasing.txt
-# UCD::CompositionExclusions -- for CompositionExclusions-1.txt
-#
-# Each module provides two subroutines:
-#
-# $line = getline(\*HANDLE);
-# reads next non-comment line from HANDLE, and returns it.
-# undef will be returned upon EOF.
-#
-# %fields = parse($line);
-# parses a line and extract fields, and returns a list of
-# field name and its value, suitable for assignment to a hash.
-#
-
-package UCD::UnicodeData;
-
-use strict;
-use Carp;
-
-sub getline {
- my $fh = shift;
- my $s = <$fh>;
- $s =~ s/\r?\n$// if $s;
- $s;
-}
-
-sub parseline {
- my $s = shift;
-
- my @f = split /;/, $s, -1;
- return (CODE => hex($f[0]),
- NAME => $f[1],
- CATEGORY => $f[2],
- CLASS => $f[3]+0,
- BIDI => $f[4],
- DECOMP => dcmap($f[5]),
- DECIMAL => dvalue($f[6]),
- DIGIT => dvalue($f[7]),
- NUMERIC => dvalue($f[8]),
- MIRRORED => $f[9] eq 'Y',
- NAME10 => $f[10],
- COMMENT => $f[11],
- UPPER => ucode($f[12]),
- LOWER => ucode($f[13]),
- TITLE => ucode($f[14]));
-}
-
-sub dcmap {
- my $v = shift;
- return undef if $v eq '';
- $v =~ /^(?:(<[^>]+>)\s*)?(\S.*)/
- or croak "invalid decomposition mapping \"$v\"";
- my $tag = $1 || '';
- [$tag, map {hex($_)} split(' ', $2)];
-}
-
-sub ucode {
- my $v = shift;
- return undef if $v eq '';
- hex($v);
-}
-
-sub dvalue {
- my $v = shift;
- return undef if $v eq '';
- $v;
-}
-
-package UCD::CaseFolding;
-
-use strict;
-
-sub getline {
- my $fh = shift;
- while (defined(my $s = <$fh>)) {
- next if $s =~ /^\#/;
- next if $s =~ /^\s*$/;
- $s =~ s/\r?\n$//;
- return $s;
- }
- undef;
-}
-
-sub parseline {
- my $s = shift;
- my @f = split /;\s*/, $s, -1;
- return (CODE => hex($f[0]),
- TYPE => $f[1],
- MAP => [map(hex, split ' ', $f[2])],
- );
-}
-
-package UCD::SpecialCasing;
-
-use strict;
-
-sub getline {
- my $fh = shift;
- while (defined(my $s = <$fh>)) {
- next if $s =~ /^\#/;
- next if $s =~ /^\s*$/;
- $s =~ s/\r?\n$//;
- return $s;
- }
- undef;
-}
-
-sub parseline {
- my $s = shift;
-
- my @f = split /;\s*/, $s, -1;
- my $cond = (@f > 5) ? $f[4] : undef;
- return (CODE => hex($f[0]),
- LOWER => [map(hex, split ' ', $f[1])],
- TITLE => [map(hex, split ' ', $f[2])],
- UPPER => [map(hex, split ' ', $f[3])],
- CONDITION => $cond);
-}
-
-package UCD::CompositionExclusions;
-
-use strict;
-
-sub getline {
- my $fh = shift;
- while (defined(my $s = <$fh>)) {
- next if $s =~ /^\#/;
- next if $s =~ /^\s*$/;
- $s =~ s/\r?\n$//;
- return $s;
- }
- undef;
-}
-
-sub parseline {
- my $s = shift;
- m/^[0-9A-Fa-f]+/;
- return (CODE => hex($&));
-}
-
-1;
+++ /dev/null
-#! /usr/local/bin/perl -w
-# $Id: generate_nameprep_data.pl,v 1.1 2003/06/04 00:27:54 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) 2000-2002 Japan Network Information Center. All rights reserved."
-#
-# 4. The name of JPNIC may not 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.
-#
-
-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 2003/06/04 00:27:54 marka Exp $') =~ s/\$([^\$]+)\$/\$-$1-\$/;
-
-my @map_bits = (9, 7, 5);
-my @proh_bits = (7, 7, 7);
-my @unas_bits = (7, 7, 7);
-my @bidi_bits = (9, 7, 5);
-
-my @bidi_types = ('OTHERS', 'R_AL', 'L');
-
-my $dir = '.';
-my @versions = ();
-
-GetOptions('dir=s', \$dir) or die usage();
-@versions = @ARGV;
-
-print_header();
-
-bits_definition("MAP", @map_bits);
-bits_definition("PROH", @proh_bits);
-bits_definition("UNAS", @unas_bits);
-bits_definition("BIDI", @bidi_bits);
-
-generate_data($_) foreach @ARGV;
-
-sub usage {
- die "Usage: $0 [-dir dir] version..\n";
-}
-
-sub generate_data {
- my $version = shift;
- generate_mapdata($version, "$dir/nameprep.$version.map");
- generate_prohibiteddata($version, "$dir/nameprep.$version.prohibited");
- generate_unassigneddata($version, "$dir/nameprep.$version.unassigned");
- generate_bididata($version, "$dir/nameprep.$version.bidi");
-}
-
-#
-# Generate mapping data.
-#
-sub generate_mapdata {
- my $version = shift;
- my $file = shift;
-
- my $map = SparseMap::Int->new(BITS => [@map_bits],
- MAX => 0x110000,
- MAPALL => 1,
- DEFAULT => 0);
- open FILE, $file or die "cannot open $file: $!\n";
-
- my $mapbuf = "\0"; # dummy
- my %maphash = ();
- while (<FILE>) {
- if ($. == 1 and /^%\s*SAME-AS\s+(\S+)/) {
- my $same_as = $1;
- if (grep {$_ eq $same_as} @versions > 0) {
- generate_map_ref($version, $same_as);
- close FILE;
- return;
- }
- next;
- }
- next if /^\#/;
- next if /^\s*$/;
- register_map($map, \$mapbuf, \%maphash, $_);
- }
- close FILE;
- generate_map($version, $map, \$mapbuf);
-}
-
-#
-# Generate prohibited character data.
-#
-sub generate_prohibiteddata {
- my $version = shift;
- my $file = shift;
-
- my $proh = SparseMap::Bit->new(BITS => [@proh_bits],
- MAX => 0x110000);
- open FILE, $file or die "cannot open $file: $!\n";
- while (<FILE>) {
- if ($. == 1 and /^%\s*SAME-AS\s+(\S+)/) {
- my $same_as = $1;
- if (grep {$_ eq $same_as} @versions > 0) {
- generate_prohibited_ref($version, $same_as);
- close FILE;
- return;
- }
- next;
- }
- next if /^\#/;
- next if /^\s*$/;
- register_prohibited($proh, $_);
- }
- close FILE;
- generate_prohibited($version, $proh);
-}
-
-#
-# Generate unassigned codepoint data.
-#
-sub generate_unassigneddata {
- my $version = shift;
- my $file = shift;
-
- my $unas = SparseMap::Bit->new(BITS => [@unas_bits],
- MAX => 0x110000);
- open FILE, $file or die "cannot open $file: $!\n";
- while (<FILE>) {
- if ($. == 1 and /^%\s*SAME-AS\s+(\S+)/) {
- my $same_as = $1;
- if (grep {$_ eq $same_as} @versions > 0) {
- generate_unassigned_ref($version, $same_as);
- close FILE;
- return;
- }
- next;
- }
- next if /^\#/;
- next if /^\s*$/;
- register_unassigned($unas, $_);
- }
- close FILE;
- generate_unassigned($version, $unas);
-}
-
-#
-# Generate data of bidi "R" or "AL" characters.
-#
-sub generate_bididata {
- my $version = shift;
- my $file = shift;
-
- my $bidi = SparseMap::Int->new(BITS => [@bidi_bits],
- MAX => 0x110000);
- open FILE, $file or die "cannot open $file: $!\n";
-
- my $type = 0;
- while (<FILE>) {
- if ($. == 1 and /^%\s*SAME-AS\s+(\S+)/) {
- my $same_as = $1;
- if (grep {$_ eq $same_as} @versions > 0) {
- generate_unassigned_ref($version, $same_as);
- close FILE;
- return;
- }
- next;
- }
- if (/^%\s*BIDI_TYPE\s+(\S+)$/) {
- my $i = 0;
- for ($i = 0; $i < @bidi_types; $i++) {
- if ($1 eq $bidi_types[$i]) {
- $type = $i;
- last;
- }
- }
- die "unrecognized line: $_" if ($i >= @bidi_types);
- next;
- }
- next if /^\#/;
- next if /^\s*$/;
- register_bidi($bidi, $type, $_);
- }
- close FILE;
-
- generate_bidi($version, $bidi);
-}
-
-sub print_header {
- print <<"END";
-/* \$Id\$ */
-/* $myid */
-/*
- * Do not edit this file!
- * This file is generated from NAMEPREP specification.
- */
-
-END
-}
-
-sub bits_definition {
- my $name = shift;
- my @bits = @_;
- my $i = 0;
-
- foreach my $n (@bits) {
- print "#define ${name}_BITS_$i\t$n\n";
- $i++;
- }
- print "\n";
-}
-
-sub register_map {
- my ($map, $bufref, $hashref, $line) = @_;
-
- my ($from, $to) = split /;/, $line;
- my @fcode = map {hex($_)} split ' ', $from;
- my @tcode = map {hex($_)} split ' ', $to;
-
- my $ucs4 = pack('V*', @tcode);
- $ucs4 =~ s/\000+$//;
-
- my $offset;
- if (exists $hashref->{$ucs4}) {
- $offset = $hashref->{$ucs4};
- } else {
- $offset = length $$bufref;
- $$bufref .= pack('C', length($ucs4)) . $ucs4;
- $hashref->{$ucs4} = $offset;
- }
-
- die "unrecognized line: $line" if @fcode != 1;
- $map->add($fcode[0], $offset);
-}
-
-sub generate_map {
- my ($version, $map, $bufref) = @_;
-
- $map->fix();
-
- print $map->cprog(NAME => "nameprep_${version}_map");
- print "\nstatic const unsigned char nameprep_${version}_map_data[] = \{\n";
- print_uchararray($$bufref);
- print "};\n\n";
-}
-
-sub generate_map_ref {
- my ($version, $refversion) = @_;
- print <<"END";
-#define nameprep_${version}_map_imap nameprep_${refversion}_map_imap
-#define nameprep_${version}_map_table nameprep_${refversion}_map_table
-#define nameprep_${version}_map_data nameprep_${refversion}_map_data
-
-END
-}
-
-sub print_uchararray {
- my @chars = unpack 'C*', $_[0];
- my $i = 0;
- foreach my $v (@chars) {
- if ($i % 12 == 0) {
- print "\n" if $i != 0;
- print "\t";
- }
- printf "%3d, ", $v;
- $i++;
- }
- print "\n";
-}
-
-sub register_prohibited {
- my $proh = shift;
- register_bitmap($proh, @_);
-}
-
-sub register_unassigned {
- my $unas = shift;
- register_bitmap($unas, @_);
-}
-
-sub register_bidi {
- my $bidi = shift;
- my $type = shift;
- register_intmap($bidi, $type, @_);
-}
-
-sub generate_prohibited {
- my ($version, $proh) = @_;
- generate_bitmap($proh, "nameprep_${version}_prohibited");
- print "\n";
-}
-
-sub generate_prohibited_ref {
- my ($version, $refversion) = @_;
- print <<"END";
-#define nameprep_${version}_prohibited_imap nameprep_${refversion}_prohibited_imap
-#define nameprep_${version}_prohibited_bitmap nameprep_${refversion}_prohibited_bitmap
-
-END
-}
-
-sub generate_unassigned {
- my ($version, $unas) = @_;
- generate_bitmap($unas, "nameprep_${version}_unassigned");
- print "\n";
-}
-
-sub generate_unassigned_ref {
- my ($version, $refversion) = @_;
- print <<"END";
-#define nameprep_${version}_unassigned_imap nameprep_${refversion}_unassigned_imap
-#define nameprep_${version}_unassigned_bitmap nameprep_${refversion}_unassigned_bitmap
-
-END
-}
-
-sub generate_bidi {
- my ($version, $bidi) = @_;
-
- $bidi->fix();
-
- print $bidi->cprog(NAME => "nameprep_${version}_bidi");
- print "\n";
- print "static const unsigned char nameprep_${version}_bidi_data[] = \{\n";
-
- foreach my $type (@bidi_types) {
- printf "\tidn_biditype_%s, \n", lc($type);
- }
- print "};\n\n";
-}
-
-sub generate_bidi_ref {
- my ($version, $refversion) = @_;
- print <<"END";
-#define nameprep_${version}_bidi_imap nameprep_${refversion}_bidi_imap
-#define nameprep_${version}_bidi_table nameprep_${refversion}_bidi_table
-
-END
-}
-
-sub register_bitmap {
- my $map = shift;
- my $line = shift;
-
- /^([0-9A-Fa-f]+)(?:-([0-9A-Fa-f]+))?/ or die "unrecognized line: $line";
- my $start = hex($1);
- my $end = defined($2) ? hex($2) : undef;
- if (defined $end) {
- $map->add($start .. $end);
- } else {
- $map->add($start);
- }
-}
-
-sub register_intmap {
- my $map = shift;
- my $value = shift;
- my $line = shift;
-
- /^([0-9A-Fa-f]+)(?:-([0-9A-Fa-f]+))?/ or die "unrecognized line: $line";
- my $start = hex($1);
- my $end = defined($2) ? hex($2) : $start;
- for (my $i = $start; $i <= $end; $i++) {
- $map->add($i, $value);
- }
-}
-
-sub generate_bitmap {
- my $map = shift;
- my $name = shift;
- $map->fix();
- #$map->stat();
- print $map->cprog(NAME => $name);
-}
+++ /dev/null
-#! /usr/local/bin/perl -w
-# $Id: generate_normalize_data.pl,v 1.1 2003/06/04 00:27:55 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) 2000-2002 Japan Network Information Center. All rights reserved."
-#
-# 4. The name of JPNIC may not 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.
-#
-
-#
-# Generate lib/unicodedata.c from UnicodeData.txt,
-# CompositionExclusions-1.txt, SpecialCasing.txt and CaseFolding.txt,
-# all of them available from ftp://ftp.unicode.org/Public/UNIDATA/.
-#
-
-use strict;
-use lib qw(.);
-
-use Getopt::Long;
-use UCD;
-use SparseMap;
-
-use constant UCS_MAX => 0x110000;
-use constant END_BIT => 0x80000000;
-
-my $DECOMP_COMPAT_BIT = 0x8000;
-
-my $CASEMAP_FINAL_BIT = 0x1;
-my $CASEMAP_NONFINAL_BIT = 0x2;
-my $CASEMAP_LAST_BIT = 0x10;
-
-my $LETTER_BIT = 1;
-my $NSPMARK_BIT = 2;
-
-(my $myid = '$Id: generate_normalize_data.pl,v 1.1 2003/06/04 00:27:55 marka Exp $') =~ s/\$([^\$]+)\$/\$-$1-\$/;
-
-my @default_bits = (9, 7, 5);
-#my @default_bits = (7, 7, 7);
-my @canon_class_bits = @default_bits;
-my @decomp_bits = @default_bits;
-my @comp_bits = @default_bits;
-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.txt';
-my $specialcasefile = 'SpecialCasing.txt';
-my $casefoldingfile = 'CaseFolding.txt';
-my $verbose;
-
-GetOptions('dir|d=s' => \$dir,
- 'unicodedata|u=s' => \$unicodedatafile,
- 'exclude|e=s' => \$exclusionfile,
- 'specialcase|s=s' => \$specialcasefile,
- 'casefold|c=s' => \$casefoldingfile,
- 'prefix|p=s' => \$prefix,
- 'verbose|v' => \$verbose,
-) or usage();
-
-foreach my $r (\$unicodedatafile, \$exclusionfile,
- \$specialcasefile, \$casefoldingfile) {
- $$r = "$dir/$$r" unless $$r =~ m|^/|;
-}
-
-my %exclusions;
-my %lower_special;
-my %upper_special;
-
-my @decomp_data;
-my @comp_data;
-my @toupper_data;
-my @tolower_data;
-my @folding_data;
-
-#
-# Create Mapping/Bitmap objects.
-#
-
-# canonical class
-my $canon_class = SparseMap::Int->new(BITS => [@canon_class_bits],
- MAX => UCS_MAX,
- MAPALL => 1,
- DEFAULT => 0);
-
-# canonical/compatibility decomposition
-my $decomp = SparseMap::Int->new(BITS => [@decomp_bits],
- MAX => UCS_MAX,
- MAPALL => 1,
- DEFAULT => 0);
-
-# canonical composition
-my $comp = SparseMap::Int->new(BITS => [@comp_bits],
- MAX => UCS_MAX,
- MAPALL => 1,
- DEFAULT => 0);
-
-# uppercase/lowercase
-my $upper = SparseMap::Int->new(BITS => [@casemap_bits],
- MAX => UCS_MAX,
- MAPALL => 1,
- DEFAULT => 0);
-my $lower = SparseMap::Int->new(BITS => [@casemap_bits],
- MAX => UCS_MAX,
- MAPALL => 1,
- DEFAULT => 0);
-
-# final/nonfinal context
-my $casemap_ctx = SparseMap::Int->new(BITS => [@casemap_ctx_bits],
- MAX => UCS_MAX,
- MAPALL => 1,
- DEFAULT => 0);
-
-# casefolding
-my $folding = SparseMap::Int->new(BITS => [@folding_bits],
- MAX => UCS_MAX,
- MAPALL => 1,
- DEFAULT => 0);
-
-#
-# Read datafiles.
-#
-
-read_exclusion_file();
-read_specialcasing_file();
-read_unicodedata_file();
-read_casefolding_file();
-
-print_header();
-print_canon_class();
-print_composition();
-print_decomposition();
-print_casemap();
-print_casemap_context();
-print_casefolding();
-
-exit;
-
-sub usage {
- print STDERR <<"END";
-Usage: $0 [options..]
- options:
- -d DIR directory where Unicode Character Data files resides [./]
- -u FILE name of the UnicodeData file [UnicodeData.txt]
- -e FILE name of the CompositionExclusion file [CompositionExclusions-1.txt]
- -s FILE name of the SpecialCasing file [SpecialCasing.txt]
- -c FILE name of the CaseFolding file [CaseFolding.txt]
-END
- exit 1;
-}
-
-#
-# read_exclusion_file -- read CompositionExclusions-1.txt.
-#
-sub read_exclusion_file {
- open EXCLUDE, $exclusionfile or die "cannot open $exclusionfile: $!\n";
- while ($_ = UCD::CompositionExclusions::getline(\*EXCLUDE)) {
- my %data = UCD::CompositionExclusions::parseline($_);
- $exclusions{$data{CODE}} = 1;
- }
- close EXCLUDE;
-}
-
-#
-# read_specialcasing_file -- read SpecialCasing.txt
-#
-sub read_specialcasing_file {
- open SPCASE, $specialcasefile or die "cannot open $specialcasefile: $!\n";
- while ($_ = UCD::SpecialCasing::getline(\*SPCASE)) {
- my %data = UCD::SpecialCasing::parseline($_);
- my $code = $data{CODE};
- my $lower = $data{LOWER};
- my $upper = $data{UPPER};
- my $cond = $data{CONDITION} || '';
-
- next unless $cond eq '' or $cond =~ /^(NON_)?FINAL/;
-
- if (defined $cond && (@$lower > 1 || $lower->[0] != $code)
- or @$lower > 1 or $lower->[0] != $code) {
- $lower_special{$code} = [$lower, $cond];
- }
- if (defined $cond && (@$upper > 1 || $upper->[0] != $code)
- or @$upper > 1 or $upper->[0] != $code) {
- $upper_special{$code} = [$upper, $cond];
- }
- }
- close SPCASE;
-}
-
-#
-# read_unicodedata_file -- read UnicodeData.txt
-#
-sub read_unicodedata_file {
- open UCD, $unicodedatafile or die "cannot open $unicodedatafile: $!\n";
-
- @decomp_data = (0);
- @toupper_data = (0);
- @tolower_data = (0);
-
- my @comp_cand; # canonical composition candidates
- my %nonstarter;
-
- while ($_ = UCD::UnicodeData::getline(\*UCD)) {
- my %data = UCD::UnicodeData::parseline($_);
- my $code = $data{CODE};
-
- # combining class
- if ($data{CLASS} > 0) {
- $nonstarter{$code} = 1;
- $canon_class->add($code, $data{CLASS});
- }
-
- # uppercasing
- if (exists $upper_special{$code} or defined $data{UPPER}) {
- my $offset = @toupper_data;
- my @casedata;
-
- $upper->add($code, $offset);
- if (exists $upper_special{$code}) {
- push @casedata, $upper_special{$code};
- }
- if (defined $data{UPPER}) {
- push @casedata, $data{UPPER};
- }
- push @toupper_data, casemap_data(@casedata);
- }
-
- # lowercasing
- if (exists $lower_special{$code} or defined $data{LOWER}) {
- my $offset = @tolower_data;
- my @casedata;
-
- $lower->add($code, $offset);
- if (exists $lower_special{$code}) {
- push @casedata, $lower_special{$code};
- }
- if (defined $data{LOWER}) {
- push @casedata, $data{LOWER};
- }
- push @tolower_data, casemap_data(@casedata);
- }
-
- # composition/decomposition
- if ($data{DECOMP}) {
- my ($tag, @decomp) = @{$data{DECOMP}};
- my $offset = @decomp_data;
-
- # composition
- if ($tag eq '' and @decomp > 1 and not exists $exclusions{$code}) {
- # canonical composition candidate
- push @comp_cand, [$code, @decomp];
- }
-
- # decomposition
- if ($tag ne '') {
- # compatibility decomposition
- $offset |= $DECOMP_COMPAT_BIT;
- }
- $decomp->add($code, $offset);
- push @decomp_data, @decomp;
- $decomp_data[-1] |= END_BIT;
-
- }
-
- # final/nonfinal context
- if ($data{CATEGORY} =~ /L[ult]/) {
- $casemap_ctx->add($code, $LETTER_BIT);
- } elsif ($data{CATEGORY} eq 'Mn') {
- $casemap_ctx->add($code, $NSPMARK_BIT);
- }
- }
- close UCD;
-
- # Eliminate composition candidates whose decomposition starts with
- # a non-starter.
- @comp_cand = grep {not exists $nonstarter{$_->[1]}} @comp_cand;
-
- @comp_data = ([0, 0, 0]);
- my $last_code = -1;
- my $last_offset = @comp_data;
- for my $r (sort {$a->[1] <=> $b->[1] || $a->[2] <=> $b->[2]} @comp_cand) {
- if ($r->[1] != $last_code) {
- $comp->add($last_code,
- ($last_offset | ((@comp_data - $last_offset)<<16)))
- unless $last_code == -1;
- $last_code = $r->[1];
- $last_offset = @comp_data;
- }
- push @comp_data, $r;
- }
- $comp->add($last_code,
- ($last_offset | ((@comp_data - $last_offset)<<16)));
-}
-
-sub casemap_data {
- my @data = @_;
- my @result = ();
- while (@data > 0) {
- my $r = shift @data;
- my $flag = 0;
- if (ref $r) {
- if ($r->[1] eq 'FINAL') {
- $flag |= $CASEMAP_FINAL_BIT;
- } elsif ($r->[1] eq 'NON_FINAL') {
- $flag |= $CASEMAP_NONFINAL_BIT;
- } elsif ($r->[1] ne '') {
- die "unknown condition \"", $r->[1], "\"\n";
- }
- }
- $flag |= $CASEMAP_LAST_BIT if @data == 0;
- push @result, $flag;
- push @result, (ref $r) ? @{$r->[0]} : $r;
- $result[-1] |= END_BIT;
- }
- @result;
-}
-
-#
-# read_casefolding_file -- read CaseFolding.txt
-#
-sub read_casefolding_file {
- open FOLD, $casefoldingfile or die "cannto open $casefoldingfile: $!\n";
-
- # dummy.
- @folding_data = (0);
-
- while ($_ = UCD::CaseFolding::getline(\*FOLD)) {
- my %data = UCD::CaseFolding::parseline($_);
-
- $folding->add($data{CODE}, scalar(@folding_data));
- push @folding_data, @{$data{MAP}};
- $folding_data[-1] |= END_BIT;
- }
- close FOLD;
-}
-
-sub print_header {
- print <<"END";
-/* \$Id\$ */
-/* $myid */
-/*
- * Do not edit this file!
- * This file is generated from UnicodeData.txt, CompositionExclusions-1.txt,
- * SpecialCasing.txt and CaseFolding.txt.
- */
-
-END
-}
-
-#
-# print_canon_class -- generate data for canonical class
-#
-sub print_canon_class {
- $canon_class->fix();
- print STDERR "** cannon_class\n", $canon_class->stat() if $verbose;
-
- print <<"END";
-
-/*
- * Canonical Class
- */
-
-END
- print_bits("CANON_CLASS", @canon_class_bits);
- print "\n";
- print $canon_class->cprog(NAME => "${prefix}canon_class");
-}
-
-#
-# print_composition -- generate data for canonical composition
-#
-sub print_composition {
- $comp->fix();
- print STDERR "** composition\n", $comp->stat() if $verbose;
-
- print <<"END";
-
-/*
- * Canonical Composition
- */
-
-END
- print_bits("CANON_COMPOSE", @comp_bits);
- print "\n";
- print $comp->cprog(NAME => "${prefix}compose");
- print <<"END";
-
-static const struct composition ${prefix}compose_seq[] = {
-END
- my $i = 0;
- foreach my $r (@comp_data) {
- if ($i % 2 == 0) {
- print "\n" if $i != 0;
- print "\t";
- }
- printf "{ 0x%08x, 0x%08x }, ", $r->[2], $r->[0];
- $i++;
- }
- print "\n};\n\n";
-}
-
-#
-# print_decomposition -- generate data for canonical/compatibility
-# decomposition
-#
-sub print_decomposition {
- $decomp->fix();
- print STDERR "** decomposition\n", $decomp->stat() if $verbose;
-
- print <<"END";
-
-/*
- * Canonical/Compatibility Decomposition
- */
-
-END
- print_bits("DECOMP", @decomp_bits);
- print "#define DECOMP_COMPAT\t$DECOMP_COMPAT_BIT\n\n";
-
- print $decomp->cprog(NAME => "${prefix}decompose");
-
- print "static const unsigned long ${prefix}decompose_seq[] = {\n";
- print_ulseq(@decomp_data);
- print "};\n\n";
-}
-
-#
-# print_casemap -- generate data for case mapping
-#
-sub print_casemap {
- $upper->fix();
- $lower->fix();
- print STDERR "** upper mapping\n", $upper->stat() if $verbose;
- print STDERR "** lower mapping\n", $lower->stat() if $verbose;
-
- print <<"END";
-
-/*
- * Lowercase <-> Uppercase mapping
- */
-
-/*
- * Flags for special case mapping.
- */
-#define CMF_FINAL $CASEMAP_FINAL_BIT
-#define CMF_NONFINAL $CASEMAP_NONFINAL_BIT
-#define CMF_LAST $CASEMAP_LAST_BIT
-#define CMF_CTXDEP (CMF_FINAL|CMF_NONFINAL)
-
-END
- print_bits("CASEMAP", @casemap_bits);
- print "\n";
- print $upper->cprog(NAME => "${prefix}toupper");
- print $lower->cprog(NAME => "${prefix}tolower");
-
- print "static const unsigned long ${prefix}toupper_seq[] = {\n";
- print_ulseq(@toupper_data);
- print "};\n\n";
-
- print "static const unsigned long ${prefix}tolower_seq[] = {\n";
- print_ulseq(@tolower_data);
- print "};\n\n";
-}
-
-#
-# print_casefolding -- generate data for case folding
-#
-sub print_casefolding {
- $folding->fix();
- print STDERR "** case folding\n", $folding->stat() if $verbose;
-
- print <<"END";
-
-/*
- * Case Folding
- */
-
-END
- print_bits("CASE_FOLDING", @folding_bits);
- print "\n";
- print $folding->cprog(NAME => "${prefix}case_folding");
-
- print "static const unsigned long ${prefix}case_folding_seq[] = {\n";
- print_ulseq(@folding_data);
- print "};\n\n";
-}
-
-#
-# print_casemap_context -- gerarate data for determining context
-# (final/non-final)
-#
-sub print_casemap_context {
- $casemap_ctx->fix();
- print STDERR "** casemap context\n", $casemap_ctx->stat() if $verbose;
-
- print <<"END";
-
-/*
- * Cased characters and non-spacing marks (for casemap context)
- */
-
-END
-
- print_bits("CASEMAP_CTX", @casemap_ctx_bits);
- print <<"END";
-
-#define CTX_CASED $LETTER_BIT
-#define CTX_NSM $NSPMARK_BIT
-
-END
- print $casemap_ctx->cprog(NAME => "${prefix}casemap_ctx");
-}
-
-sub sprint_composition_hash {
- my $i = 0;
- my $s = '';
- foreach my $r (@_) {
- if ($i % 2 == 0) {
- $s .= "\n" if $i != 0;
- $s .= "\t";
- }
- $s .= sprintf "{0x%04x, 0x%04x, 0x%04x}, ", @{$r};
- $i++;
- }
- $s;
-}
-
-sub print_bits {
- my $prefix = shift;
- my $i = 0;
- foreach my $bit (@_) {
- print "#define ${prefix}_BITS_$i\t$bit\n";
- $i++;
- }
-}
-
-sub print_ulseq {
- my $i = 0;
- foreach my $v (@_) {
- if ($i % 4 == 0) {
- print "\n" if $i != 0;
- print "\t";
- }
- printf "0x%08x, ", $v;
- $i++;
- }
- print "\n";
-}
+++ /dev/null
-To build idnkit for Windows, follow the instruction below.
-
-To build Windows version, you need `iconv' library. A LGPL
-implemenation is available from the following place.
-
- http://www.gnu.org/software/libiconv/
-
-Follow the instructions described in README.woe32 file which can be
-found in the distribution, and you'll get a DLL vesion of `libiconv'.
-Copy the DLL (iconv.dll), the header (iconv.h) and the import library
-(iconv.lib) here.
-
-Then go to the top directory and run the following command.
-
- nmake -f make.wnt
-
-; $Id: README.WIN,v 1.1 2003/06/04 00:27:32 marka Exp $
+++ /dev/null
-
- idn wrapper - Client Side IDN Conversion Software for Windows
-
- Copyright (c) 2000,2001,2002 Japan Network Information Center.
- All rights reserved.
-
- *** NOTICE ******************************************************
- If you have installed mDN Wrapper (former version of idn wrapper)
- on your system, you should unwrap all the programs before
- installing idn wrapper.
- *****************************************************************
-
-
-1. Introduction
-
- For supporting internationalized domain names, each client
- application should convert domain names (their encodings) to that
- DNS server accepts. This requires applications to handle
- internationalized domain names in its core, and it is the vendor's
- responsibility to make their programs IDN-compatible.
-
- Although there are ongoing efforts in IETF to standardize IDN
- framework (architecture, encoding etc.) and several RFCs are
- expected to be published soon as the result, not many applications
- support IDN to this date.
-
- So, there are needs for some helper application which makes legacy
- applications IDN-aware. `runidn' in idnkit is one of such
- solutions for Unix-like operating systems, and this software, `idn
- wrapper' is the one for Windows.
-
- On windows, name resolving request is passed to WINSOCK DLL. idn
- wrapper replaces WINSOCK DLL with the one that can handle IDN,
- which makes legacy windows applications compatible with IDN.
-
-2. Architecture
-
-2.1. Wrapper DLL
-
- Wrapper DLL resides between application and original DLL. It
- intercept application's calls to original DLL, and preforms some
- additional processing on those calls.
-
- +------------+ Call +------------+ Call +------------+
- | |------->| |------->| |
- |Application | |Wrapper DLL | |Original DLL|
- | |<-------| |<-------| |
- +------------+ Return +------------+ Return +------------+
- additional
- processing
- here
-
- DLL call from apllication is passed to wrapper DLL. Wrapper DLL
- then performs some additional processing on that call, and then
- calls original DLL. Also, result from original DLL will once passed
- to wrapper DLL and wrapper does additional process on that result,
- and finally result will passed to the application.
-
- idn wrapper provides wrapper DLLs for WINSOCK,
-
- WSOCK32.DLL WINSOCK V1.1
- WS2_32.DLL WINSOCK V2.0
-
- to resolve multi-lingual domain names.
-
-2.2. Wrapping APIs
-
- idn wrapper performs additional processing on name resolving APIs in
- WINSOCK, listed below.
-
- both WINSOCK 1.1, WINSOCK 2.0
-
- gethostbyaddr
- gethostbyname
- WSAAsyncGetHostByAddr
- WSAAsyncGetHostByName
-
- only in WINSOCK 2.0
-
- getaddrinfo
- freeaddrinfo
- getnameinfo
- WSALookupServiceBeginA
- WSALookupServiceNextA
- WSALookupServiceEnd
-
- Some applications do not use these APIs to resolve domain names.
- `nslookup' is one of those programs. `nslookup' builds and parse DNS
- messages internally and does not use WINSOCK's name resolver APIs.
- idn wrapper cannot make those programs IDN-aware.
-
- NOTE:
- WINSOCK 2.0 also contains WIDE-CHARACTER based name resolution
- APIs,
-
- WSALookupServiceBeginW
- WSALookupServiceNextW
-
- idn wrapper does not wrap these APIs. These APIs are used in
- Microsoft's own internationalization framework. It is dangerous
- to convert to another internationalization framework.
-
-2.3. Other APIs in WINSOCK
-
- For other APIs in WINSOCK, idn wrapper does nothing, only calls
- original DLL's entries.
-
- idn wrapper copies original WINSOCK DLLs with renaming
- as below, and forward requests to them.
-
- wsock32.dll -> wsock32o.dll
- ws2_32.dll -> ws2_32o.dll
-
- Wrappper DLL will be installed with original DLL names. So after
- installation of idn wrapper, WINSOCK DLLs should be
-
- wsock32.dll idn wrapper for WINSOCK V1.1
- ws2_32.dll idn wrapper for WINSOCK V2.0
- wsock32o.dll Original WINSOCK V1.1 DLL
- ws2_32o.dll Original WINSOCK V2.0 DLL
-
-2.4. Asynchronous API
-
- Domain name conversion take place on
-
- request to DNS
-
- convert from local encoding to DNS compatible encoding
-
- response from DNS
-
- convert from DNS encoding to local encoding
-
- For synchronous APIs, local to DNS conversion is done before calling
- original API, and after return from original API, name should be
- converted from DNS encoding to local encoding.
-
- But WINSOCK having some asynchronous APIs, such as
-
- WSAAsyncGetHostByAddr
- WSAAsyncGetHostByName
-
- In these APIs, completion is notified with windows message. To
- perform DNS to local conversion, wrapper should hook target window
- procedure to capture those completion messages.
-
- So, if asynchronous API was called, idn wrapper set hook to target
- window procedure (passed with API parameter). If hook found
- notify message (also given with API parameter), then convert
- resulting name (in DNS encoding) to local encoding.
-
-2.5. Installing Wrapper DLLs
-
- WINSOCK DLLs are placed at Windows's system directory. To wrap
- WINSOCK DLLs, one could do following sequence at system directory.
-
- + Rename Original WINSOCK DLLs
-
- ren wsock32.dll wsock32o.dll
- ren ws2_32.dll ws2_32o.dll
-
- + Install (copy in) Wrapper DLLs
-
- copy somewhere\wsock32.dll wsock32.dll
- copy somewhere\ws2_32.dll ws2_32.dll
- copy another DLLs also
-
- However, replacing DLLs in Window's system directory is very
- dangerous:
-
- a) If you re-install idn wrapper again, original WINSOCK DLLs
- may be lost.
-
- b) Some application or service pack will replace WINSOCK DLLs. It
- may corrupt WINSOCK environment.
-
- If these happen, at least networking does not work, and worse,
- Windows never startup again.
-
- So, idn wrapper usually does not wrap in the system directory, but wrap in
- each indivisual application's directory.
-
- In Windows, DLL will be searched in the following places:
-
- Application's Load Directory
- %SystemRoot%\System32
- %SystemRoot%
- Directories in PATH
-
- and loaded & linked first found one. So if installed wrapper DLLs is
- found on application's load directory, the application's call to
- WINSOCK will wrapped.
-
- But some applications or DLLs are binded to specific DLL, they do
- not rely on above DLL's search path. For those applcaitons or DLLs,
- idn wrapper (in standard installation) cannot wrap them.
-
- NOTE: Netscape is one of those program. It cannot be wrapped if
- installed to applications directory. Also WINSOCK DLLs are
- also binded to related DLLs in system directory. On the
- other hand, Internet Explore or Window Media Player relys on
- standard DLL search path, and well wrapped with idn wrapper.
-
-2.6. At which point conversion applied
-
- If windows supporting WINSOCK 2.0, there are DLLs one for 1.1 and
- another for 2.0, and call to WINSOCK 1.1 will redirected to 2.0 DLL.
-
- +------------+ Call +------------+ Call +------------+
- | |------->| |------->| |
- |Application | |WINSOCK 1.1 | |WINSOCK 2.0 |
- | |<-------| |<-------| |
- +------------+ Return +------------+ Return +------------+
-
- In this case, calls to 1.1 and 2.0 are both passed to 2.0 DLL. So
- conversion will done in WINSOCK 2.0 DLL side.
-
- If windows only supports WINSOCK 1.1, there's 1.1 DLL only.
-
- +------------+ Call +------------+
- | |------->| |
- |Application | |WINSOCK 1.1 |
- | |<-------| |
- +------------+ Return +------------+
-
- In this case, conversion must done in 1.1 DLL.
-
- If idn wrapper was installed on system directory, DLLs will work as
- described above. But if wrapper was installed on application's
- directory, call/return sequence changes. Original WINSOCK 1.1 DLL
- in windows seems binded to specific WINSOCK 2.0 DLL, placed at
- window's system diretory. So call from WINSOCK 1.1 to WINSOCK 2.0
- will passed to original DLL (in system directory) and never passed
- to wrapper DLL in application's directory. So in this case, both
- 1.1 and 2.0 DLLs should coonvert domain name encodings.
-
- These DLL binding is not documented. It may be change on OS
- versions or DLL versions. So, mDn wrapper determines place of
- conversion on registry value. With this registry value, idn
- wrappper absolb OS/DLL variations.
-
- Registry values for idn wrapper will placed under
-
- HKEY_LOCAL_MACHINE\SOFTWARE\JPNIC\IDN
- HKEY_CURRENT_USER\SOFTWARE\JPNIC\IDN
-
- Place of conversion is determined with registry value "Where",
-
- Registry Value "Where" REG_DWORD
-
- 0 both on WINSOCK 1.1 and WINSOCK 2.0
- 1 if WINSOCK 2.0 exist, only in WINSOCK 2.0
- otherwise, convert on WINSOCK 1.1
- 2 only in WINSOCK 1.1
- 3 only in WINSOCK 2.0
-
- If you install idn wrapper into application's directory, use "0".
- If you install idn wrapper into system directory, use "1". If there
- are no "Where" value, idn wrapper uses "0" as default, it is suited
- to installation into application's directory (default installation).
-
-2.7. Converting From/To
-
- Wrapper DLL convert resolving domain name encoded with local code to
- DNS server's encoding. Also, wrapper DLL convert resulting name (
- encoded with DNS's encoding) back to local encoding.
-
- There are several proposals for DNS encodings to handle multi-lingual
- domain names. Wrapper DLL should be configured to convert to one of
- those encodings. This DNS side encoding will specified with
- registry. When installing idn wrapper, this registry will set to
- some (yet undefined) DNS encoding.
-
- Registry values for idn wrapper will placed under
-
- HKEY_LOCAL_MACHINE\SOFTWARE\JPNIC\IDN
- HKEY_CURRENT_USER\SOFTWARE\JPNIC\IDN
-
- DNS encoding name will given with registry value (REG_SZ) of "Encoding",
- this name must be one of encoding names which 'libmdn' recognize.
-
- Registry Value "Encoding" REG_SZ
-
- Encoding name of DNS server accepts.
-
- Local encodings (Windows Apllication Encodings) is generally
- acquired from process's code page. 'iconv' library, used for idn
- wrapper, generally accepts MS's codepage names.
-
- Some windows apllication encode domain name with some specific multi-
- lingual encoding. For example, if you configured IE to use UTF-8,
- then domain names are encoded with UTF-8. UTF-8 is one of proposed
- DNS encoding, but DNS server may expect another encoding.
-
- For those cases, idn wrapper accept program specific encoding as
- local encoding. These program specific local encoding should be
- marked in registry.
-
- Program specific registry setting will placed under
-
- HKEY_LOCAL_MACHINE\SOFTWARE\JPNIC\IDN\PerProg
- HKEY_CURRENT_USER\SOFTWARE\JPNIC\IDN\PerProg
-
- using program name (executable file name) as key. For example,
- setting specific to Internet Explore, it executable name is
- "IEXPLORE", will plcaed at
-
- HKEY_LOCAL_MACHINE\SOFTWARE\JPNIC\IDN\PerProg\IEXPLORE
-
- Local encoding name will specified with registry value (REG_SZ) of
- "Encoding". This name must be one of encoding names which '
- recognize.libmdn'
-
- Registry Value "Encoding" REG_SZ
-
- Encoding name of application program encodes, if it is not
- system's default encoding.
-
-3. Setup and Configuration
-
- idn wrapper wraps WINSOCK DLL by placing wrapper (fake) DLLs in
- the application's directory. For the installation, idn wrapper
- comes with a setup program and a configuration program.
-
- NOTE: You can also install idn wrapper DLLs in the Windows
- system directory. But this installation is very dangerous
- and may cause severe problems in your system.
- You should try it at your own risk.
-
-3.1. Setup Program
-
- To install idn wrapper, run "setup.exe". Setup program will do:
-
- Installing Files
-
- Copy idn wrapper files (DLL, Program EXE, etc) into diretory
-
- "\Program Files\JPNIC\idn wrapper"
-
- This directory may be changed on setup sequence.
-
- Setting registry entries
-
- Setup program will create keys and values under registry:
-
- "HKEY_LOCAL_MACHINES\Software\JPNIC\IDN"
-
- InstallDir REG_SZ "<installation directory>"
- Pathname of the idn wrapper's installation directory.
- The installer makes copies of the original WINSOCK DLLs
- in that directory, which is referenced by the idn wrapper's
- fake DLLs.
-
- ConfFile REG_SZ "<installation directory>\idn.conf"
- Name of the idnkit's configuration file, which defines
- various parameter regarding multilingual domain name
- handling. See the contents of the file for details.
- This value can be changed with the Configuration Program
- or the registry editor.
-
- LogFile REG_SZ "<installation directory>\idn_wrapper.log"
- Name of the idn wrapper's log file.
- This value can be changed with the Configuration Program
- or the registry editor.
-
- LogLevel DWORD -1
- Logging level. Default is -1, which indicates no logging
- is made. This value can be changed with the Configuration
- Program or the registry editor.
-
- PerProg KEY
-
- Under this key, idn wrapper set program specific values. idn
- wrapper uses program's executable name as key, and put
- values under that key.
-
- PerProg\<progname>\Where REG_DWORD Encoding Position
- PerProg\>progname>\Encoding REG_SZ Local Encoding Name
-
- Configuration program set local encpoding name. "Where"
- value is usually not required in standard installation. If
- you installed idn wrapper in system directory, chanage
- "Where" values to fit your environment.
-
- Creating ICON
-
- Setup program will create program icon for idn wrapper's
- configuration program, and put it into "Start Menu". You can
- start configuration program with it.
-
-3.2. Configuration Program
-
- Configuration program is a tool for wrap specific program, or unwrap
- programs. If you start "Configuration Program", you'll get window
- like this.
-
- +---+-------------------------------------------------+---+---+---+
- | | idn wrapper - Configuration | _ | O | X |
- +---+-------------------------------------------------+---+---+---+
- | idn wrapper Configuration Program version X.X |
- +-----------------------------------------------------------------+
- | Wrapped Program +---------+ |
- | +---------------------------------------------+---+ | Wrap.. | |
- | | | A | +---------+ |
- | | +---+ +---------+ |
- | | | | | Unwrap..| |
- | | | | +---------+ |
- | | | | +---------+ |
- | | | | |UnwrapAll| |
- | | | | +---------+ |
- | | | | +---------+ |
- | | | | |RewrapAll| |
- | | | | +---------+ |
- | | | | +---------+ |
- | | | | | Log.. | |
- | | | | +---------+ |
- | | | | +---------+ |
- | | +---+ |Advanced.| |
- | | | V | +---------+ |
- | +---+-------------------------------------+---+---+ +---------+ |
- | | < | | > | | Exit | |
- | +---+-------------------------------------+---+ +---------+ |
- +-----------------------------------------------------------------+
-
- Listbox contains list of current wrapped programs. Initially it is
- empty.
-
- To wrap a program, press button "wrap". You'll get following dialog.
-
- +---+-------------------------------------------------+---+---+---+
- | | idn wrapper - Wrap Executable | _ | O | X |
- +---+-------------------------------------------------+---+---+---+
- | +----------------------------------------+ +--------+ |
- | Program: | | |Browse..| |
- | +----------------------------------------+ +--------+ |
- | +----------+ |
- | Encoding: | | o Default o UTF-8 |
- | +----------+ |
- | [] Force local DLL reference |
- +-----------------------------------------------------------------+
- | +--------+ +--------+ |
- | | Wrap | | Cancel | |
- | +--------+ +--------+ |
- +-----------------------------------------------------------------+
-
- First, enter program (executable name with full path) or browse
- wrapping exectable from file browser. Then set local encoding of
- that program. Usually use "Default" as local encoding. If target
- program uses internationalized encoding, then specify "UFT-8".
-
- The "Force local DLL reference" button controls the DLL search
- order of the program to be wrapped (Windows95 does not have this
- capability, hence this button does not appear). If it is checked,
- DLLs in the local directory (the directory which the executable
- file is in) are always preferred, even if the executable specifies
- otherwise. If you have problem with wrapping, checking this
- button may solve the problem, but it is also possible that it
- causes other problem.
-
- Finally, put "wrap" button to wrap specified program with given
- encoding. Wrapped program will be listed in listbox of the first
- window.
-
- When you install a new version of idn wrapper, you have to re-wrap
- your programs in order to update DLLs used for wrapping. "Rewrap
- all" button is provided for this purpose. Just press the button,
- and all the currently wrapped programs will be re-wrapped.
-
- To unwrap a program, press button "unwrap". You'll get following
- confirmating dialog.
-
- +---+-------------------------------------------------+---+---+---+
- | | idn wrapper - Unwrap Executable | _ | O | X |
- +---+-------------------------------------------------+---+---+---+
- | +---------------------------------------------------+ |
- | Program: | | |
- | +---------------------------------------------------+ |
- +-----------------------------------------------------------------+
- | +--------+ +--------+ |
- | | Unwrap | | Cancel | |
- | +--------+ +--------+ |
- +-----------------------------------------------------------------+
-
- If you unwrap a program, the program will be vanished from listbox
- of the first window.
-
- Also "Unwrap all" button is provided to unwrap all the programs
- that are currently wrapped.
-
- To configure logging, press button "log". You'll get the following
- dialog.
-
- +---+-------------------------------------------------+---+---+---+
- | | idn wrapper - Log Configuration | _ | O | X |
- +---+-------------------------------------------------+---+---+---+
- | Log Level: o None o Fatal o Error o Warning o Info o Trace |
- | |
- | +------------------------------------+ +---------+ |
- | Log File:| | | Browse..| |
- | +------------------------------------+ +---------+ |
- | +------+ +--------+ |
- |Log Operation: | View | | Delete | |
- | +------+ +--------+ |
- +-----------------------------------------------------------------+
- | +--------+ +--------+ |
- | | OK | | Cancel | |
- | +--------+ +--------+ |
- +-----------------------------------------------------------------+
-
- Logging level can be selected from the followings.
- None no logging at all
- Fatal only records fatal errors
- Error also records non-fatal errors
- Warning also records warning mssages
- Info also records informational messages
- Trace also records trace information
- Note that these levels are for log output from IDN library (idnkit.dll).
- idn wrapper itself supports only off (None) and on (the rest).
-
- Pathname of the log file can also be specified with this dialog.
-
- You can view the current log file contents by pressing "View" button,
- or delete it by "Delete" button.
-
- Note that log level and log file configuration doesn't affect already
- running processes.
-
- Press "advanced" button to invoke the advanced configuration dialog.
- This dialog is for advanced users and enables customization for
- some basic parameters which normal users need not change, since
- appropriate defaults are provided.
-
- +---+-------------------------------------------------+---+---+---+
- | | idn wrapper - Advanced Configuration | _ | O | X |
- +---+-------------------------------------------------+---+---+---+
- | IDN Wrapping Mode |
- | o Wrap both WINSOCK 1.1 and WINSOCK 2.0 |
- | o Wrap only WINSOCK 1.1 |
- | o Wrap only WINSOCK 2.0 |
- | o Wrap only WINSOCK 2.0 if it exists. |
- | Otherwise wrap only WINSOCK 1.1 |
- +-----------------------------------------------------------------+
- | IDN Configuration |
- | +--------------------------------+ +----------+ |
- | Config File: | | | Browse.. | |
- | +--------------------------------+ +----------+ |
- | +------+ |
- | | Edit | |
- | +------+ |
- +-----------------------------------------------------------------+
- | +--------+ +--------+ |
- | | OK | | Cancel | |
- | +--------+ +--------+ |
- +-----------------------------------------------------------------+
-
- With the dialog users can do the following configuration.
-
- Wrapping Mode
- Customize wrapping mode. Normally the default item should be
- appropriate. Changing it to other item may help when you
- have problems.
-
- IDN Configuration
- Set the configuration file for multilingual domain name handling.
- By pressing "Edit" button, you can edit then contents of the file.
-
-4. Limitations
-
-4.1. DLL Versions
-
- Wrapper DLL is tightly coupled with specific DLL version, because
- it must export all the entries including un-documented ones.
- If WINSOCK DLL version changed, idn wrapper may not work correctly.
-
- Current idn wrapper is tested on
-
- Win2000 (WINSOCK 1.1 + 2.0)
- WinME (WINSOCK 1.1 + 2.0)
-
- But there are no assuarance for future versions of Windows.
-
-4.2. DNS, WINS, LMHOSTS
-
- There are three name resolving methods in windows, DNS, WINS and
- LMHOSTS. Using idn wrapper, domain name conversion will performed
- on all of thoses methods. It may cause some trouble if windows
- using WINS or LMHOSTS. We recommend use DNS oly if you want to use
- idn wrapper.
-
-4.3. Converting Names other than Domain Name
-
- In WINSOCK 2.0, there are generic name resolution APIs are
- introduced.
-
- WSALookupServiceBeginA
- WSALookupServiceNextA
- WSALookupServiceEnd
-
- They are use mainly domain name conversion now, but not limited to
- resolving domain name. idn wrapper hooks this API and convert
- given name anyway. This causes some trouble if conversion name is
- not domain name.
-
-4.4. Applications don't use these APIa
-
- Some applications don't use these APIs to resolving domain names.
- For example, 'nslookup' issue DNS request locally. For these
- applications, idn wrapper does not work.
-
-4.5. Applications bound to specific WINSOCK DLL
-
- Some applications are bound to specific DLL, not relying on
- standard DLL search path. Netscape Communicator seems to be one of
- such programs. idn wrapper in standard installation cannot wrap
- such programs.
-
- If you want to wrap those programs, you may use installation into
- system directory. But this installation is very dangerous, for
- it is possible that your system cannot boot again.
-
-5. Registry Setting - Summary
-
-5.1. Priority of Setting
-
- Settings of idn wrapper is placed on registry
-
- Software\JPNIC\IDN
-
- under HKEY_LOCAL_MACHINE or HKEY_CURRENT_USER. idn wrapper first
- read HKEY_LOCAL_MACHINE, and if HKEY_CURRENT_USER exist, overwrite
- with this one. Usually set HKEY_LOCAL_MACHINE only. But if you
- need per user setting, then set HKEY_CURRENT_USER.
-
- Note that the configuration program reads/writes only
- HKEY_LOCAL_MACHINE.
-
-5.2. Registry Key
-
- There's common settings and per program settings.
-
-_Common Settings
-
- Software\JPNIC\IDN\InstallDir Installation directory
- Software\JPNIC\IDN\Where Where to convert encoding
- 0: both WINSOCK 1.1 and WINSOCK 2.0
- 1: if WINSOCK 2.0 exist, convert at 2.0 DLL
- if WINSOCK 1.1 only, convert at 1.1 DLL
- 2: only in WINSOCK1.1
- 3: only in WINSOCK2.0
- Software\JPNIC\IDN\ConfFile idnkit Configuration File
- Software\JPNIC\IDN\LogFile Log File
- Software\JPNIC\IDN\LogLevel Log Level
-
-_Per Program Settings
-
- Converting position and program's local encoding may be set per
- program bases.
-
- Software\JPNIC\IDN\PerProg\<name>\Where
- Software\JPNIC\IDN\PerProg\<name>\Encoding
-
- If not specified, the following values are assumed.
-
- Where 0 (both 1.1 DLL and 2.0 DLL)
- Encoding [process's code page]
+++ /dev/null
-
- idn wrapper - Windows \82É\82¨\82¯\82é\83N\83\89\83C\83A\83\93\83g\91¤\82Å\82Ì IDN \95Ï\8a·\83\\83t\83g\83E\83F\83A
-
- Copyright (c) 2000,2001,2002 Japan Network Information Center.
- All rights reserved.
-
- *** \92\8d\88Ó **********************************************************
- \82à\82µ\82à\82·\82Å\82É mDN Wrapper (idn wrapper \82Ì\91O\90g) \82ª\83C\83\93\83X\83g\81[\83\8b\82³\82ê\82Ä
- \82¢\82é\83}\83V\83\93\82É idn wrapper \82ð\83C\83\93\83X\83g\81[\83\8b\82·\82é\8fê\8d\87\82É\82Í\81A\83C\83\93\83X\83g\81[\83\8b\91O
- \82É\81A\83\89\83b\83v\82³\82ê\82Ä\82¢\82é\82·\82×\82Ä\82Ì\83v\83\8d\83O\83\89\83\80\82ð\83A\83\93\83\89\83b\83v\82µ\82Ä\82\82¾\82³\82¢\81B
- *******************************************************************
-
-
-1. \82Í\82¶\82ß\82É
-
- Windows \82Å\8d\91\8dÛ\89»\83h\83\81\83C\83\93\96¼\82ð\88µ\82¦\82é\82æ\82¤\82É\82·\82é\82½\82ß\82É\82Í\81AWindows \8fã\82Ì
- \83N\83\89\83C\83A\83\93\83g\83A\83v\83\8a\83P\81[\83V\83\87\83\93\82É\82¨\82¢\82Ä\81A\89ð\8c\88\82µ\82æ\82¤\82Æ\82·\82é\96¼\91O\82Ì\83G\83\93\83R\81[
- \83f\83B\83\93\83O\82ð\81ADNS \83T\81[\83o\82ª\8eó\95t\82¯\82é\8c`\8e®\82Ì\82à\82Ì\82É\95Ï\8a·\82·\82é\95K\97v\82ª\82 \82è\82Ü\82·\81B
- \82±\82ê\82Í\81AWindows \8fã\82Ì\83A\83v\83\8a\83P\81[\83V\83\87\83\93\82ª\81A\82«\82¿\82ñ\82Æ\8d\91\8dÛ\89»\83h\83\81\83C\83\93\96¼\82ð
- \88µ\82¦\82é\82æ\82¤\82É\82È\82Á\82Ä\82¢\82È\82¯\82ê\82Î\82È\82ç\82È\82¢\81A\82Æ\82¢\82¤\82±\82Æ\82Å\82 \82è\81A\96{\97\88\82Í\82»\82ê
- \82¼\82ê\82Ì\83v\83\8d\83O\83\89\83\80\82Ì\8dì\90¬\8eÒ\82ª\8ds\82È\82¤\82×\82«\82±\82Æ\82Å\82·\81B
-
- \8c»\8dÝ IETF \82É\82Ä\8d\91\8dÛ\89»\83h\83\81\83C\83\93\96¼\82Ì\83t\83\8c\81[\83\80\83\8f\81[\83N\82ð\95W\8f\80\89»\82·\82é\93w\97Í\82ª\91±
- \82¯\82ç\82ê\82Ä\82¨\82è\81A\82»\82Ì\8c\8b\89Ê\82Æ\82µ\82Ä\88ê\98A\82Ì RFC \82ª\82à\82¤\82·\82®\94\8ds\82³\82ê\82é\82±\82Æ\82É
- \82È\82Á\82Ä\82¢\82Ü\82·\82ª\81A\82»\82ê\82Å\82à\8d\91\8dÛ\89»\83h\83\81\83C\83\93\96¼\82É\91Î\89\9e\82µ\82½\83A\83v\83\8a\83P\81[\83V\83\87\83\93
- \82Í\82Ü\82¾\82Ü\82¾\8f\82È\82¢\82Ì\82ª\8c»\8fó\82Å\82·\81B
-
- \82»\82±\82Å\81A\8aù\91¶\82Ì\83A\83v\83\8a\83P\81[\83V\83\87\83\93\82ð\8d\91\8dÛ\89»\83h\83\81\83C\83\93\96¼\82É\91Î\89\9e\82³\82¹\82é\82½\82ß\82Ì
- \83w\83\8b\83p\81[\83A\83v\83\8a\83P\81[\83V\83\87\83\93\82ª\95K\97v\82É\82È\82è\82Ü\82·\81Bidnkit \82É\8aÜ\82Ü\82ê\82é runidn
- \83R\83}\83\93\83h\82Í Unix \8cn\82Ì OS \82Å\82Ì\88ê\82Â\82Ì\89ð\8c\88\8dô\82Å\82·\82µ\81AWindows \82É\91Î\82·\82é\89ð
- \8c\88\8dô\82Æ\82µ\82Ä\82Í\82±\82±\82Å\90à\96¾\82·\82é idn wrapper \82ª\82 \82è\82Ü\82·\81B
-
- Windows \82É\82¨\82¢\82Ä\81A\91½\82\82Ì\8fê\8d\87\81A\83h\83\81\83C\83\93\96¼\89ð\8c\88\82Ì\97v\8b\81\82ÍWINSOCK DLL \82É
- \93n\82³\82ê\82Ü\82·\81B\82»\82±\82Å\81AWINSOCK DLL \82ð\8d\91\8dÛ\89»\83h\83\81\83C\83\93\96¼\91Î\89\9e\82Ì\82à\82Ì\82É\92u\82«
- \8a·\82¦\82Ä\82â\82ê\82Î\81A\8aù\91¶\82Ì\83v\83\8d\83O\83\89\83\80\82©\82ç\82Å\82à\8d\91\8dÛ\89»\83h\83\81\83C\83\93\96¼\82ð\8eg\82¤\82±\82Æ\82ª
- \82Å\82«\82é\82æ\82¤\82É\82È\82è\82Ü\82·\81B
-
-2. \8eÀ\8c»\95û\96@
-
-2.1. \83\89\83b\83p\81[DLL
-
- \83\89\83b\83p\81[DLL \82Í\81A\83A\83v\83\8a\83P\81[\83V\83\87\83\93\82Æ\8c³\82ÌDLL \82Æ\82Ì\8aÔ\82É\8a\84\82è\8d\9e\82ñ\82Å\81A\83A\83v\83\8a
- \83P\81[\83V\83\87\83\93\82©\82ç\82ÌDLL \82Ì\8cÄ\82Ñ\8fo\82µ\82ð\89¡\8eæ\82è\82µ\82Ä\81A\96{\97\88\82ÌDLL \82Æ\82Í\88Ù\82È\82Á\82½\8f\88
- \97\9d\82ð\82³\82¹\82é\82à\82Ì\82Å\82·\81B
-
- +------------+ Call +------------+ Call +------------+
- | |------->| |------->| |
- |Application | |Wrapper DLL | |Original DLL|
- | |<-------| |<-------| |
- +------------+ Return +------------+ Return +------------+
- additional
- processing
- here
-
- \83A\83v\83\8a\83P\81[\83V\83\87\83\93\82©\82ç\82ÌDLL \82Ì\8cÄ\82Ñ\8fo\82µ\82Í\83\89\83b\83p\81[ DLL\82É\93n\82³\82ê\82Ü\82·\81B\83\89\83b
- \83p\81[ DLL\82Í\82»\82±\82Å\81A\95t\89Á\93I\82È\8f\88\97\9d\82ð\8ds\82È\82Á\82Ä\81A\8c³\82ÌDLL \82Ì\83G\83\93\83g\83\8a\82ð\8cÄ\82Ñ\8fo
- \82µ\82Ü\82·\81B\82Ü\82½\81A\8c³\82ÌDLL \82Ì\8f\88\97\9d\8c\8b\89Ê\82Í\88ê\92U\83\89\83b\83p\81[ DLL\82É\95Ô\82³\82ê\81A\82±\82±\82Å\82à
- \95t\89Á\93I\82È\8f\88\97\9d\82ð\8ds\82È\82Á\82Ä\81A\8dÅ\8fI\93I\82È\8c\8b\89Ê\82ª\83A\83v\83\8a\83P\81[\83V\83\87\83\93\82É\95Ô\82³\82ê\82é\82±\82Æ
- \82É\82È\82è\82Ü\82·\81B
-
- idn wrapper \82Å\82Í\81AWINSOCK DLL\82Ì
-
- WSOCK32.DLL WINSOCK V1.1
- WS2_32.DLL WINSOCK V2.0
-
- \82É\91Î\82·\82é\83\89\83b\83p\81[DLL \82ð\92ñ\8b\9f\82µ\82Ä\81A\8d\91\8dÛ\89»\83h\83\81\83C\83\93\96¼\82Ì\96¼\91O\89ð\8c\88\82ª\82Å\82«\82é\82æ
- \82¤\82É\82µ\82Ü\82·\81B16\83r\83b\83g\94Å\82ÌWINSOCK (WINSOCK.DLL) \82Í\91Î\8fÛ\8aO\82Å\82·\81B
-
-2.2. \8f\88\97\9d\91Î\8fÛ\82ÌAPI
-
- idn wrapper \82ÍWINSOCK \82Ì\96¼\91O\89ð\8c\88\82É\8aÖ\98A\82µ\82½API \82É\82Â\82¢\82Ä\82Ì\82Ý\95t\89Á\93I\82È\8f\88
- \97\9d\82ð\8ds\82È\82¢\82Ü\82·\81B\8f\88\97\9d\82Ì\91Î\8fÛ\82Æ\82È\82éWINSOCK API\82Í\88È\89º\82Ì\82à\82Ì\82Å\82·\81B
-
- WINSOCK 1.1, WINSOCK 2.0 \82Ì\97¼\95û\82É\82 \82é\82à\82Ì
-
- gethostbyaddr
- gethostbyname
- WSAAsyncGetHostByAddr
- WSAAsyncGetHostByName
-
- WINSOCK 2.0 \82¾\82¯\82É\82 \82é\82à\82Ì
-
- WSALookupServiceBeginA
- WSALookupServiceNextA
- WSALookupServiceEnd
-
- \83A\83v\83\8a\83P\81[\83V\83\87\83\93\82É\82æ\82Á\82Ä\82Í\81A\82±\82ê\82ç\82ÌAPI \82ð\8eg\82í\82È\82¢\82Å\93Æ\8e©\82É\83h\83\81\83C\83\93\96¼
- \82Ì\89ð\8c\88\82ð\8ds\82È\82¤\82à\82Ì\82à\82 \82è\82Ü\82·\81B\97á\82¦\82Î\81Anslookup\82Í\81A\82±\82ê\82ç\82ÌAPI \82ð\8eg\82í
- \82È\82¢\82Å\81A\93à\95\94\82Å\93Æ\8e©\82ÉDNS \83\8a\83N\83G\83X\83g\82Ì\90¶\90¬\81A\89ð\8eß\82ð\8ds\82È\82Á\82Ä\82¢\82Ü\82·\81B\93\96\91R
- \82Ì\82±\82Æ\82È\82ª\82ç\81A\82±\82ê\82ç\82Ì\83A\83v\83\8a\83P\81[\83V\83\87\83\93\82É\82Â\82¢\82Ä\82Í\81Aidn wrapper \82Å\82Í\91½
- \8c¾\8cê\89»\91Î\89\9e\82³\82¹\82é\82±\82Æ\82Í\82Å\82«\82Ü\82¹\82ñ\81B
-
- \92\8d\81FWINSOCK 2.0 \82É\82Í\81AWIDE CHARACTER \83x\81[\83X\82Ì\96¼\91O\89ð\8c\88\82ÌAPI \82Æ\82µ\82Ä
-
- WSALookupServiceBeginW
- WSALookupServiceNextW
-
- \82à\82 \82è\82Ü\82·\82ª\81A\82±\82ê\82ç\82É\82Â\82¢\82Ä\82Í\83\89\83b\83v\82µ\82Ü\82¹\82ñ\81B\82±\82ê\82ç\82ÌAPI \82Í\83}
- \83C\83N\83\8d\83\\83t\83g\8ed\97l\82É\82æ\82é\8d\91\8dÛ\89»\82É\91Î\89\9e\82µ\82½\82à\82Ì\82Å\82·\82©\82ç\81A\82»\82Ì\83t\83\8c\81[
- \83\80\83\8f\81[\83N\8fã\82Å\8eg\82¤\82×\82«\82à\82Ì\82Å\82·\81B\82±\82ê\82ç\82É\82Â\82¢\82Ä\82Í\91¼\82Ì\91½\8c¾\8cê\89»\83t\83\8c\81[
- \83\80\83\8f\81[\83N\82É\95Ï\8a·\82µ\82Ä\82µ\82Ü\82¤\82Ì\82Í\8aë\8c¯\82Å\82Í\82È\82¢\82Æ\94»\92f\82µ\82Ü\82µ\82½\81B
-
-2.3. \8f\88\97\9d\91Î\8fÛ\8aO\82ÌAPI
-
- \8fã\8bL\88È\8aO\82ÌWINSOCK API \82É\82Â\82¢\82Ä\82Í\81Aidn wrapper \82Í\82È\82É\82à\82µ\82È\82¢\82Å\81A\8c³\82Ì
- WINSOCK API \82ð\8cÄ\82Ñ\8fo\82µ\82Ü\82·\81B
-
- idn wrapper \82Å\82Í\81A\8c³\82ÌWINSOCK DLL \82ð\96¼\91O\82ð\95Ï\82¦\82Ä\83R\83s\81[\82µ\81A\82»\82ê\82ð
- \8cÄ\82Ñ\8fo\82·\82æ\82¤\82É\8dì\82ç\82ê\82Ä\82¢\82Ü\82·\81B
-
- wsock32.dll -> wsock32o.dll
- ws2_32.dll -> ws2_32o.dll
-
- \83\89\83b\83p\81[DLL \82Í\8c³\82ÌWINSOCK DLL \82Æ\93¯\82¶\96¼\91O\82Å\8dì\90¬\82³\82ê\82Ü\82·\81B\8f]\82Á\82Äidn
- wrapper \82ª\83C\83\93\83X\83g\81[\83\8b\82³\82ê\82½\8fó\91Ô\82Å\82Í\81A
-
- wsock32.dll idn wrapper for WINSOCK V1.1
- ws2_32.dll idn wrapper for WINSOCK V2.0
- wsock32o.dll Original WINSOCK V1.1 DLL
- ws2_32o.dll Original WINSOCK V2.0 DLL
-
- \82Æ\82È\82è\82Ü\82·\81B
-
-2.4. \94ñ\93¯\8aú API
-
- \83h\83\81\83C\83\93\96¼\82Ì\95Ï\8a·\82Í\81A\88È\89º\82Ì\83^\83C\83~\83\93\83O\82Å\8ds\82È\82í\82ê\82é\95K\97v\82ª\82 \82è\82Ü\82·\81B
-
- DNS \82Ö\82Ì\83\8a\83N\83G\83X\83g\8e\9e
-
- \83\8d\81[\83J\83\8b\83G\83\93\83R\81[\83f\83B\83\93\83O -> DNS \83G\83\93\83R\81[\83f\83B\83\93\83O
-
- DNS \82©\82ç\82Ì\89\9e\93\9a\8eó\90M\8e\9e
-
- DNS \83G\83\93\83R\81[\83f\83B\83\93\83O -> \83\8d\81[\83J\83\8b\83G\83\93\83R\81[\83f\83B\83\93\83O
-
- \93¯\8aúAPI \82É\82¨\82¢\82Ä\82Í\81A\83\8d\81[\83J\83\8b\83G\83\93\83R\81[\83f\83B\83\93\83O\82©\82çDNS \83G\83\93\83R\81[\83f\83B\83\93\83O
- \82Ö\82Ì\95Ï\8a·\82Í\81A\8c³\82ÌAPI \82ð\8cÄ\82Ñ\8fo\82·\91O\82É\8ds\82í\82ê\81ADNS \83G\83\93\83R\81[\83f\83B\83\93\83O\82©\82ç\83\8d\81[
- \83J\83\8b\83G\83\93\83R\81[\83f\83B\83\93\83O\82Ö\82Ì\95Ï\8a·\82Í\81A\8c³\82ÌAPI \82©\82ç\95\9c\8bA\82µ\82Ä\82«\82½\82Æ\82±\82ë\82Å\8ds\82È
- \82í\82ê\82Ü\82·\81B
-
- \82µ\82©\82µ\81AWINSOCK \82Ì\88È\89º\82ÌAPI \82Í\94ñ\93¯\8aúAPI \82Å\81ADNS \82©\82ç\82Ì\89\9e\93\9a\8eó\90M\91O\82É\95\9c
- \8bA\82µ\82Ä\82µ\82Ü\82¢\82Ü\82·\81B
-
- WSAAsyncGetHostByAddr
- WSAAsyncGetHostByName
-
- \82±\82ê\82ç\82ÌAPI \82É\82¨\82¢\82Ä\82Í\81A\96¼\91O\89ð\8c\88\82Ì\8a®\97¹\82Í\81AWindows \82Ö\82Ì\83\81\83b\83Z\81[\83W\82É\82æ\82Á
- \82Ä\92Ê\92m\82³\82ê\82Ü\82·\81B\82±\82Ì\82½\82ß\81ADNS \83G\83\93\83R\81[\83f\83B\83\93\83O\82©\82ç\83\8d\81[\83J\83\8b\83G\83\93\83R\81[\83f\83B\83\93
- \83O\82Ö\82Ì\95Ï\8a·\82ð\8ds\82È\82¤\82É\82Í\81A\83\89\83b\83p\81[\82Í\92Ê\92m\90æ\82Ì\83E\83B\83\93\83h\83E\83v\83\8d\83V\83W\83\83\82Ì\83\81\83b
- \83Z\81[\83W\83L\83\85\81[\82ð\83t\83b\83N\82µ\82Ä\81A\82±\82Ì\8a®\97¹\83\81\83b\83Z\81[\83W\82ð\95ß\8al\82·\82é\95K\97v\82ª\82 \82è\82Ü\82·\81B
-
- \82»\82±\82Å\81A\94ñ\93¯\8aúAPI \82ª\8cÄ\82Ñ\8fo\82³\82ê\82½\8fê\8d\87\82É\82Í\81Aidn wrapper \82Í\81A\92Ê\92m\90æ\82Ì\83E\83B\83\93
- \83h\83E\83v\83\8d\83V\83W\83\83\81i\82±\82ê\82ÍAPI \82Ì\83p\83\89\83\81\83^\82Å\8ew\8e¦\82³\82ê\82Ü\82·\81j\82É\83t\83b\83N\82ð\90Ý\92è\82µ
- \82Ü\82·\81B\83t\83b\83N\82ª\8a®\97¹\83\81\83b\83Z\81[\83W\81i\82±\82ê\82àAPI \82Ì\83p\83\89\83\81\83^\82Å\8ew\8e¦\82³\82ê\82Ü\82·\81j\82ð
- \8c\9f\8fo\82µ\82½\82È\82ç\81A\83t\83b\83N\82Í\8c\8b\89Ê\82Ì\8ai\94[\97Ì\88æ\81i\82±\82ê\82àAPI \82Ì\83p\83\89\83\81\83^\82Å\8ew\8e¦\82³\82ê
- \82Ä\82¢\82Ü\82·\81j\82Ì\83h\83\81\83C\83\93\96¼\82ð\81ADNS \91¤\82Ì\83G\83\93\83R\81[\83f\83B\83\93\83O\82©\82ç\83\8d\81[\83J\83\8b\83G\83\93\83R\81[
- \83f\83B\83\93\83O\82É\95Ï\8a·\82·\82é\82à\82Ì\82Æ\82µ\82Ü\82·\81B
-
-2.5. Wrapper DLL \82Ì\83C\83\93\83X\83g\81[\83\8b
-
- WINSOCK DLL \82ÍWindows \82Ì\83V\83X\83e\83\80\83f\83B\83\8c\83N\83g\83\8a\82É\92u\82©\82ê\82Ä\82¢\82Ü\82·\81B
- WINSOCK \82ð\8am\8eÀ\82É\83\89\83b\83v\82·\82é\82É\82Í\81A\83V\83X\83e\83\80\83f\83B\83\8c\83N\83g\83\8a\82É\82¨\82¢\82Ä
-
- \83I\83\8a\83W\83i\83\8bWINSOCK DLL \82Ì\96¼\91O\82Ì\95Ï\8dX
-
- ren wsock32.dll wsock32o.dll
- ren ws2_32.dll ws2_32o.dll
-
- \83\89\83b\83p\81[DLL \82Ì\93±\93ü
-
- copy somewhere\wsock32.dll wsock32.dll
- copy somewhere\ws2_32.dll ws2_32.dll
- copy another DLLs also
-
- \82ð\8ds\82È\82¤\95K\97v\82ª\82 \82è\82Ü\82·\81B
-
- \82µ\82©\82µ\81A\83V\83X\83e\83\80\83f\83B\83\8c\83N\83g\83\8a\82Å\82±\82Ì\82æ\82¤\82ÈDLL \82Ì\92u\82«\8a·\82¦\82ð\8ds\82È\82¤\82Ì\82Í\91å
- \95Ï\8aë\8c¯\82È\91\80\8dì\82É\82È\82è\82Ü\82·\81B
-
- a) DLL \82ð\93ü\82ê\91Ö\82¦\82½\8fó\91Ô\82Å\81A\82à\82¤\82¢\82¿\82Ç\93¯\82¶\91\80\8dì\82ð\8ds\82È\82¤\82Æ\81A\83I\83\8a\83W\83i\83\8b
- \82ÌWINSOCK DLL \82ª\8e¸\82í\82ê\82Ä\82µ\82Ü\82¤\82±\82Æ\82É\82È\82è\82Ü\82·\81B
-
- b) \83T\81[\83r\83X\83p\83b\83N\82â\83A\83v\83\8a\83P\81[\83V\83\87\83\93\82È\82Ç\82Å\81AWINSOCK DLL \82ð\8dÄ\93±\93ü\82·\82é
- \82à\82Ì\82ª\82 \82è\82Ü\82·\82ª\81A\82±\82ê\82É\82æ\82Á\82Ä\82àWINSOCK \82ª\97\98\97p\95s\94\\82É\82È\82é\82±\82Æ\82ª\82
- \82è\82Ü\82·\81B
-
- \82±\82Ì\82æ\82¤\82È\8fó\91Ô\82É\82È\82é\82Æ\81A\83l\83b\83g\83\8f\81[\83N\8b@\94\\82ª\91S\82\8eg\82¦\82È\82\82È\82Á\82½\82è\81A\8dÅ\88«
- \82ÍWindows \82Ì\8bN\93®\82·\82ç\8fo\97\88\82È\82\82È\82é\89Â\94\\90«\82ª\82 \82è\82Ü\82·\81B
-
- \82»\82±\82Å\81Aidn wrapper \82Å\82Í\81A\8fã\82Ì\82æ\82¤\82È\83V\83X\83e\83\80\83\8c\83x\83\8b\82Ì\83\89\83b\83v\82Å\82Í\82È\82\81A
- \83A\83v\83\8a\83P\81[\83V\83\87\83\93\82É\91Î\82·\82é\83\89\83b\83v\82ð\8aî\96{\8b@\94\\82Æ\82µ\82Ä\92ñ\8b\9f\82·\82é\82à\82Ì\82Æ\82µ\82Ü\82·\81B
-
- Windows \82É\82¨\82¢\82Ä\81ADLL \82Í\81A\8aî\96{\93I\82É\82Í
-
- \83A\83v\83\8a\83P\81[\83V\83\87\83\93\82Ì\83\8d\81[\83h\83f\83B\83\8c\83N\83g\83\8a
- %SystemRoot%\System32
- %SystemRoot%
- PATH \82Å\8ew\8e¦\82³\82ê\82é\83f\83B\83\8c\83N\83g\83\8a
-
- \82Ì\8f\87\8f\98\82Å\8c\9f\8dõ\82³\82ê\82Ä\81A\8dÅ\8f\89\82É\8c©\82Â\82©\82Á\82½\82à\82Ì\82ª\83\8d\81[\83h\82³\82ê\82Ü\82·\81B\82Å\82·\82©\82ç\81A
- \88ê\94Ê\93I\82É\82Í\81ADLL \82ð\83A\83v\83\8a\83P\81[\83V\83\87\83\93\82Ì\83\8d\81[\83h\83f\83B\83\8c\83N\83g\83\8a\82É\83C\83\93\83X\83g\81[\83\8b
- \82·\82ê\82Î\81A\82»\82Ì\83A\83v\83\8a\83P\81[\83V\83\87\83\93\82©\82ç\82ÌWINSOCK \82Ì\8cÄ\82Ñ\8fo\82µ\82ð\83\89\83b\83v\82·\82é\82±\82Æ
- \82ª\82Å\82«\82Ü\82·\81B
-
- \82½\82¾\82µ\81A\82¢\82\82Â\82©\82Ì\83A\83v\83\8a\83P\81[\83V\83\87\83\93\81ADLL \82Å\82Í\81A\8c\9f\8dõ\83p\83X\82ð\8co\97R\82¹\82¸\82É\93Á
- \92è\82ÌDLL \82ð\83\8a\83\93\83N\82·\82é\82æ\82¤\82É\82È\82Á\82Ä\82¢\82é\82à\82Ì\82ª\82 \82è\82Ü\82·\81B\82±\82Ì\82æ\82¤\82È\8d\\90¬\82Ì
- \83A\83v\83\8a\83P\81[\83V\83\87\83\93\81ADLL \82ª\8eg\82í\82ê\82½\8fê\8d\87\82É\82Í idn wrapper\82Å\82Í\91Î\8f\88\82·\82é\82±\82Æ
- \82Í\82Å\82«\82Ü\82¹\82ñ\81B
-
- \92\8d\81FNetscape\82Í\93Á\92èDLL \82É\83o\83C\83\93\83h\82³\82ê\82Ä\82¢\82é\82æ\82¤\82Å\81A\83A\83v\83\8a\83P\81[\83V\83\87\83\93\83f\83B
- \83\8c\83N\83g\83\8a\82Ö\82Ì\83C\83\93\83X\83g\81[\83\8b\82Å\82Í\83\89\83b\83v\82Å\82«\82Ü\82¹\82ñ\81BWINSOCK DLL \8e©\91Ì\82à
- \83V\83X\83e\83\80\83f\83B\83\8c\83N\83g\83\8a\82Ì\8aÖ\98ADLL \82É\83o\83C\83\93\83h\82³\82ê\82Ä\82¢\82é\82æ\82¤\82Å\82·\81B\88ê\95û\81A
- Internet Explore\82âWindows Media Player\82Í\95W\8f\80\82Ì\83T\81[\83`\83p\83X\82É\8f]\82Á\82Ä
- \82¢\82é\82Ì\82Å\81A\83\89\83b\83v\82·\82é\82±\82Æ\82ª\82Å\82«\82Ü\82·\81B
-
-2.6. \83G\83\93\83R\81[\83f\83B\83\93\83O\82Ì\95Ï\8a·\88Ê\92u
-
- WINSOCK 2.0 \82ð\83T\83|\81[\83g\82µ\82Ä\82¢\82éWindows \82É\82Í\81AWINSOCK \82Ì1.1 \82Æ2.0 \82Ì\82»
- \82ê\82¼\82ê\82É\91Î\89\9e\82·\82éDLL \82ª\82 \82è\81AWINSOCK 1.1 \82ÌAPI \82Ì\8cÄ\82Ñ\8fo\82µ\82Í2.0 \82Ì\93¯\82¶
- \83G\83\93\83g\83\8a\82É\83\8a\83_\83C\83\8c\83N\83g\82³\82ê\82é\82æ\82¤\82É\82È\82Á\82Ä\82¢\82Ü\82·\81B
-
- +------------+ Call +------------+ Call +------------+
- | |------->| |------->| |
- |Application | |WINSOCK 1.1 | |WINSOCK 2.0 |
- | |<-------| |<-------| |
- +------------+ Return +------------+ Return +------------+
-
- \82±\82Ì\8fê\8d\87\82É\82Í1.1 \82É\91Î\82·\82é\8cÄ\82Ñ\8fo\82µ\82à2.0 \82É\91Î\82·\82é\8cÄ\82Ñ\8fo\82µ\82à\81A\82Æ\82à\82ÉV2.0
- \97p\82ÌDLL \82É\93n\82³\82ê\82é\82Ì\82Å\81A2.0\97p\82Ì\83\89\83b\83p\81[DLL \91¤\82¾\82¯\82Å\83G\83\93\83R\81[\83f\83B\83\93\83O\82Ì
- \95Ï\8a·\82ð\8ds\82È\82¤\82æ\82¤\82É\82·\82é\82×\82«\82Å\82µ\82å\82¤\81B
-
- \88ê\95û\81AWINSOCK 1.1 \82µ\82©\83T\83|\81[\83g\82µ\82Ä\82¢\82È\82¢\8fê\8d\87(Win95)\82É\82Í\81A1.1 \82É\91Î\89\9e\82µ
- \82½DLL \82µ\82©\82 \82è\82Ü\82¹\82ñ\81B
-
- +------------+ Call +------------+
- | |------->| |
- |Application | |WINSOCK 1.1 |
- | |<-------| |
- +------------+ Return +------------+
-
- \82±\82Ì\8fê\8d\87\82É\82Í\95K\91R\93I\82É1.1 \97p\82Ì\83\89\83b\83p\81[DLL \82Å\83G\83\93\83R\81[\83f\83B\83\93\83O\82ð\95Ï\8a·\82µ\82È
- \82¯\82ê\82Î\82È\82è\82Ü\82¹\82ñ\81B
-
- idn Wrapepr \82ªwindows \82Ì\83V\83X\83e\83\80\83f\83B\83\8c\83N\83g\83\8a\82É\83C\83\93\83X\83g\81[\83\8b\82³\82ê\82½\8fê\8d\87
- \82É\82Í\81A\8fã\82Ì\92Ê\82è\82É\93®\8dì\82·\82é\82Ì\82Å\81A
-
- WINSOCK 2.0 \82 \82è 2.0 \83\89\83b\83p\81[\82Å\95Ï\8a·
- WINSOCK 1.1 \82Ì\82Ý 1.1 \83\89\83b\83p\81[\82Å\95Ï\8a·
-
- \82·\82é\95K\97v\82ª\82 \82è\82Ü\82·\81B
-
- \82µ\82©\82µ\81A\83A\83v\83\8a\83P\81[\83V\83\87\83\93\83f\83B\83\8c\83N\83g\83\8a\82É\83C\83\93\83X\83g\81[\83\8b\82³\82ê\82½\8fê\8d\87\82É\82Í\93®\8dì
- \82ª\95Ï\82í\82Á\82Ä\82«\82Ü\82·\81BWindows \95t\91®\82Ì WINSOCK 1.1 DLL\82Í\81A\83V\83X\83e\83\80\83f\83B\83\8c\83N
- \83g\83\8a\82ÌWINSOCK 2.0 \82É\83o\83C\83\93\83h\82³\82ê\82Ä\82¢\82é\82½\82ß\81A\83A\83v\83\8a\83P\81[\83V\83\87\83\93\83f\83B\83\8c\83N
- \83g\83\8a\91¤\82ÌWINSOCK 2.0 \83\89\83b\83p\81[DLL \82É\82Í\83\8a\83_\83C\83\8c\83N\83g\82³\82ê\82Ä\82«\82Ü\82¹\82ñ\81B\82±\82Ì
- \82½\82ß\81A\83A\83v\83\8a\83P\81[\83V\83\87\83\93\83f\83B\83\8c\83N\83g\83\8a\82Ö\82Ì\83C\83\93\83X\83g\81[\83\8b\82É\82¨\82¢\82Ä\82Í\81A1.1DLL\81A
- 2.0DLL\82Ì\97¼\95û\82Å\83G\83\93\83R\81[\83f\83B\83\93\83O\82ð\95Ï\8a·\82·\82é\95K\97v\82ª\82 \82è\82Ü\82·\81B
-
- \82±\82Ì\82æ\82¤\82ÈDLL \8aÔ\82Ì\83o\83C\83\93\83f\83B\83\93\83O\82Í\83h\83L\83\85\83\81\83\93\83g\82³\82ê\82Ä\82¢\82Ü\82¹\82ñ\82Ì\82Å\81A\8aÂ
- \8b«\81A\83o\81[\83W\83\87\83\93\82É\82æ\82Á\82Ä\82Í\88Ù\82È\82Á\82½\93®\8dì\82ð\82·\82é\82©\82à\92m\82ê\82Ü\82¹\82ñ\81B\82»\82±\82Åidn
- wrapper \82Å\82Í\81A\83\8c\83W\83X\83g\83\8a\92l\82É\82æ\82Á\82Ä\81A\83\89\83b\83p\81[DLL \82Ì\82Ç\82±\82Å\95Ï\8a·\82ð\8ds\82È\82¤
- \82©\82ð\8c\88\92è\82·\82é\82æ\82¤\82É\82µ\82Ä\81A\83C\83\93\83X\83g\81[\83\8b\90æ\82É\82æ\82é\8d·\88Ù\81A\82 \82é\82¢\82Í\83o\81[\83W\83\87\83\93
- \82É\82æ\82é\8d·\88Ù\82ð\8bz\8eû\82·\82é\82æ\82¤\82É\82µ\82Ü\82·\81B
-
- idn wrapper \97p\82Ì\83\8c\83W\83X\83g\83\8a\90Ý\92è\82Í
-
- HKEY_LOCAL_MACHINE\SOFTWARE\JPNIC\IDN
- HKEY_CURRENT_USER\SOFTWARE\JPNIC\IDN
-
- \88È\89º\82É\94z\92u\82³\82ê\82Ü\82·\81B\83G\83\93\83R\81[\83f\83B\83\93\83O\95Ï\8a·\82ð\8ds\82È\82¤\88Ê\92u\82É\82Â\82¢\82Ä\82Í\81A\82±\82Ì
- \92¼\89º\82Ì\83\8c\83W\83X\83g\83\8a\92l Where\81iREG_DWORD\81j \82É\82æ\82Á\82Ä\8c\88\92è\82µ\82Ü\82·\81B\97L\8cø\82È\92l\82Í\81A
-
- \83\8c\83W\83X\83g\83\8a Where (REG_DWORD)
-
- 0 WINSOCK 1.1\81AWINSOCK 2.0 \82Ì\97¼\95û\82Å\95Ï\8a·\82·\82é
- 1 WINSOCK 2.0 \82ª\82 \82ê\82Î\81AWINSOCK 2.0\82¾\82¯\82Å\95Ï\8a·\82·\82é
- WINSOCK 1.1 \82¾\82¯\82Ì\8fê\8d\87\82É\82Í WINSOCK 1.1 \82Å\95Ï\8a·\82·\82é
- 2 WINSOCK 1.1 \82¾\82¯\82Å\95Ï\8a·\82·\82é
- 3 WINSOCK 2.0 \82¾\82¯\82Å\95Ï\8a·\82·\82é
-
- \82Ì\82S\92Ê\82è\82Å\82·\81B\83A\83v\83\8a\83P\81[\83V\83\87\83\93\83f\83B\83\8c\83N\83g\83\8a\82É\83C\83\93\83X\83g\81[\83\8b\82·\82é\8fê\8d\87\82É\82Í
- \81u\82O\81v\82ð\81A\83V\83X\83e\83\80\83f\83B\83\8c\83N\83g\83\8a\82É\83C\83\93\83X\83g\81[\83\8b\82·\82é\8fê\8d\87\82É\82Í\81u\82P\81v\82ð\90Ý\92è
- \82·\82é\95K\97v\82ª\82 \82è\82Ü\82·\81B\83\8c\83W\83X\83g\83\8a\92l\82ª\91¶\8dÝ\82µ\82È\82¢\8fê\8d\87\82É\82Í\81u\82O\81v\82ð\91z\92è\82µ\82Ü
- \82·\81B\82±\82ê\82Í\83A\83v\83\8a\83P\81[\83V\83\87\83\93\83f\83B\83\8c\83N\83g\83\8a\82Ö\82Ì\83C\83\93\83X\83g\81[\83\8b\82ð\95W\8f\80\82Æ\82µ\82½\82à
- \82Ì\82Å\82·\81B
-
-2.7. \95Ï\8a·\8c³/\90æ\82Ì\83G\83\93\83N\83R\81[\83f\83B\83\93\83O
-
- \83\89\83b\83p\81[DLL \82Å\82Í\81A\89ð\8c\88\82µ\82æ\82¤\82Æ\82·\82é\83h\83\81\83C\83\93\96¼\82ð\81A\83}\83V\83\93\82Ì\83\8d\81[\83J\83\8b\83G\83\93
- \83R\81[\83f\83B\83\93\83O\82©\82çDNS \83T\81[\83o\82Ì\83G\83\93\83R\81[\83f\83B\83\93\83O\82É\95Ï\8a·\82µ\81A\82Ü\82½\81ADNS \82ª\95Ô
- \82µ\82Ä\82«\82½\83h\83\81\83C\83\93\96¼(DNS \83T\81[\83o\82Ì\83G\83\93\83R\81[\83f\83B\83\93\83O)\82ð\83}\83V\83\93\82Ì\83\8d\81[\83J\83\8b\83G\83\93
- \83R\81[\83f\83B\83\93\83O\82É\96ß\82µ\82Ü\82·\81B
-
- \8c»\8dÝ\81ADNS \91¤\82Ì\8d\91\8dÛ\89»\83G\83\93\83R\81[\83f\83B\83\93\83O\82É\82Â\82¢\82Ä\82Í\81A\82¢\82\82Â\82à\82Ì\95û\8e®\82ª\92ñ
- \88Ä\82³\82ê\82Ä\82¢\82Ü\82·\81B\83\89\83b\83p\81[DLL \82Í\82»\82ê\82ç\82ÌDNS \91¤\83G\83\93\83R\81[\83f\83B\83\93\83O\82Ì\82Ç\82ê\82©
- \82Ð\82Æ\82Â\82É\95Ï\8a·\82·\82é\82æ\82¤\82É\8d\\90¬\82³\82ê\82Ü\82·\81B\82±\82ÌDNS \91¤\83G\83\93\83R\81[\83f\83B\83\93\83O\82Í\83\8c\83W
- \83X\83g\83\8a\82Å\8ew\8e¦\82³\82ê\82Ü\82·\81B\82±\82Ì\83\8c\83W\83X\83g\83\8a\82É\82Í\81Aidn wrapper \82Ì\83C\83\93\83X\83g\81[\83\8b
- \8e\9e\82É\81i\8c»\8e\9e\93_\82Å\82Í\96¢\92è\82Ì\81j\83f\83t\83H\83\8b\83g\83G\83\93\83R\81[\83f\83B\83\93\83O\82ª\90Ý\92è\82³\82ê\82Ü\82·\81B\93\96
- \91R\81A\82±\82Ì\83\8c\83W\83X\83g\83\8a\82Í\81A\8cã\82Å\91¼\82Ì\82à\82Ì\82É\95Ï\8dX\82·\82é\82±\82Æ\82à\82Å\82«\82Ü\82·\81B
-
- idn wrapper \97p\82Ì\83\8c\83W\83X\83g\83\8a\90Ý\92è\82Í
-
- HKEY_LOCAL_MACHINE\SOFTWARE\JPNIC\IDN
- HKEY_CURRENT_USER\SOFTWARE\JPNIC\IDN
-
- \88È\89º\82É\94z\92u\82³\82ê\82Ü\82·\81BDNS \91¤\82Ì\83G\83\93\83R\81[\83f\83B\83\93\83O\82Í\83\8c\83W\83X\83g\83\8a\92l Encoding
- \81iREG_SZ\81j\82Å\8ew\8e¦\82³\82ê\82Ü\82·\81B\82±\82Ì\83G\83\93\83R\81[\83f\83B\83\93\83O\96¼\82Í\81Alibmdn\82Å\94F\8e¯\82³\82ê
- \82é\82à\82Ì\82Å\82È\82¯\82ê\82Î\82È\82è\82Ü\82¹\82ñ\81B
-
- \83\8c\83W\83X\83g\83\8a Encoding (REG_SZ)
- DNS \83T\81[\83o\91¤\82Ì\83G\83\93\83R\81[\83f\83B\83\93\83O\96¼\82ð\90Ý\92è\82µ\82Ü\82·
-
- \88ê\95û\81A\83A\83v\83\8a\83P\81[\83V\83\87\83\93\82ª\8eg\97p\82µ\82Ä\82¢\82é\83\8d\81[\83J\83\8b\83G\83\93\83R\81[\83f\83B\83\93\83O\82Í\81A\92Ê\8fí
- \82Í\83v\83\8d\83Z\83X\82Ì\83R\81[\83h\83y\81[\83W\82©\82ç\8b\81\82ß\82Ü\82·\81B\83\89\83b\83p\81[DLL \82ª\8eg\97p\82·\82é 'iconv'
- \83\89\83C\83u\83\89\83\8a\82Í\81Awindows \82Ì\83R\81[\83h\83y\81[\83W\96¼\82ð\83G\83\93\83R\81[\83f\83B\83\93\83O\96¼\82Æ\82µ\82Ä\8eó\95t
- \82¯\82é\82±\82Æ\82ª\82Å\82«\82é\82Ì\82Å\81A\83R\81[\83h\83y\81[\83W\96¼\82ð\82»\82Ì\82Ü\82Ü\83\8d\81[\83J\83\8b\83G\83\93\83R\81[\83f\83B\83\93
- \83O\96¼\82Æ\82µ\82Ä\8eg\97p\82µ\82Ü\82·\81B
-
- \82µ\82©\82µ\81A\83A\83v\83\8a\83P\81[\83V\83\87\83\93\82É\82æ\82Á\82Ä\82Í\81A\93Á\92è\82Ì\8d\91\8dÛ\89»\83G\83\93\83R\81[\83f\83B\83\93\83O\82Å
- \83h\83\81\83C\83\93\96¼\82ð\83G\83\93\83R\81[\83f\83B\83\93\83O\82µ\82Ä\82µ\82Ü\82¤\82à\82Ì\82à\82 \82è\82Ü\82·\81B\97á\82¦\82Î\81AIE\82Å\82Í
- \83h\83\81\83C\83\93\96¼\82ðUTF-8 \82Å\95\\8bL\82·\82é\82æ\82¤\82É\8ew\8e¦\82·\82é\82±\82Æ\82ª\82Å\82«\82é\82æ\82¤\82É\82È\82Á\82Ä\82¢
- \82Ü\82·\81BUTF-8 \82É\82æ\82é\83G\83\93\83R\81[\83f\83B\83\93\83O\82Í\81A\92ñ\88Ä\82³\82ê\82Ä\82¢\82é\8d\91\8dÛ\89»\95û\8e®\82Ì\82Ð
- \82Æ\82Â\82Å\82·\82ª\81A\8d\91\8dÛ\89»\82³\82ê\82½DNS \83T\81[\83o\82Í\91¼\82Ì\83G\83\93\83R\81[\83f\83B\83\93\83O\82µ\82©\8eó\95t\82¯
- \82È\82¢\82©\82à\92m\82ê\82Ü\82¹\82ñ\81B
-
- \82±\82Ì\82æ\82¤\82È\8fó\8bµ\82É\91Î\8f\88\82·\82é\82½\82ß\81Aidn \83\89\83b\83p\81[\82Í\81A\83\8d\81[\83J\83\8b\83G\83\93\83R\81[\83f\83B\83\93
- \83O\82Æ\82µ\82Ä\83v\83\8d\83O\83\89\83\80\93Á\97L\82Ì\83G\83\93\83R\81[\83f\83B\83\93\83O\82à\8eó\95t\82¯\82é\82±\82Æ\82ª\82Å\82«\82é\82æ\82¤\82É
- \82µ\82Ü\82·\81B\82±\82Ì\82æ\82¤\82È\83v\83\8d\83O\83\89\83\80\93Á\97L\82Ì\83\8d\81[\83J\83\8b\83G\83\93\83R\81[\83f\83B\83\93\83O\82Í\83\8c\83W\83X\83g
- \83\8a\8bL\8dÚ\82³\82ê\82é\82à\82Ì\82Æ\82µ\82Ü\82·\81B
-
- idn wrapper \97p\82Ì\83v\83\8d\83O\83\89\83\80\93Á\97L\82Ì\83\8c\83W\83X\83g\83\8a\90Ý\92è\82Í
-
- HKEY_LOCAL_MACHINE\SOFTWARE\JPNIC\IDN\PerProg
- HKEY_CURRENT_USER\SOFTWARE\JPNIC\IDN\PerProg
-
- \88È\89º\82É\81A\83v\83\8d\83O\83\89\83\80\96¼\81i\8eÀ\8ds\83\82\83W\83\85\81[\83\8b\83t\83@\83C\83\8b\96¼\81j\82ð\83L\81[\82Æ\82µ\82Ä\94z\92u\82³\82ê
- \82Ü\82·\81B\97á\82¦\82Î\81AInternet Explore \82Ì\8fê\8d\87\82É\82Í\81A\8eÀ\8ds\83\82\83W\83\85\81[\83\8b\96¼\82Ì
- IEXPLORE\82ð\83L\81[\82Æ\82µ\82Ä
-
- HKEY_LOCAL_MACHINE\SOFTWARE\JPNIC\IDN\PerProg\IEXPLORE
-
- \88È\89º\82É\92u\82©\82ê\82Ü\82·\81B\83\8d\81[\83J\83\8b\83G\83\93\83R\81[\83f\83B\83\93\83O\96¼\82Í\81A\83\8c\83W\83X\83g\83\8a\92l
- Encoding \81iREG_SZ\81j\82Å\8ew\8e¦\82µ\82Ü\82·\81B\82±\82ê\82àlibmdn\82Å\94F\8e¯\82³\82ê\82é\82à\82Ì\82Å\82È\82¯\82ê
- \82Î\82È\82è\82Ü\82¹\82ñ\81B
-
- \83\8c\83W\83X\83g\83\8a Encoding (REG_SZ)
-
- \83A\83v\83\8a\83P\81[\83V\83\87\83\93\83v\83\8d\83O\83\89\83\80\93Á\97L\82Ì\83G\83\93\83R\81[\83f\83B\83\93\83O\96¼\81i\83f\83t\83H\83\8b
- \83g\82Ì\83G\83\93\83R\81[\83f\83B\83\93\83O\88È\8aO\82ð\95K\97v\82Æ\82·\82é\8fê\8d\87\81j\82ð\8ew\92è\82µ\82Ü\82·\81B
-
-3.\83Z\83b\83g\83A\83b\83v\82Æ\83R\83\93\83t\83B\83M\83\85\83\8c\81[\83V\83\87\83\93
-
- idn wrapper \82Í\81A\8aî\96{\83C\83\93\83X\83g\83\8c\81[\83V\83\87\83\93\82Æ\82µ\82Ä\81A\83A\83v\83\8a\83P\81[\83V\83\87\83\93\83f\83B\83\8c
- \83N\83g\83\8a\82ÅWINSOCK \82ð\83\89\83b\83v\82µ\82Ü\82·\81B\82±\82ê\82É\8d\87\82í\82¹\82Ä\81A\83Z\83b\83g\83A\83b\83v\83v\83\8d\83O\83\89
- \83\80\82Æ\83R\83\93\83t\83B\83M\83\85\83\8c\81[\83V\83\87\83\93\83v\83\8d\83O\83\89\83\80\82Æ\82ð\92ñ\8b\9f\82µ\82Ü\82·\81B
-
- \92\8d\81F\83V\83X\83e\83\80\83f\83B\83\8c\83N\83g\83\8a\82Å\82Ì\83\89\83b\83v\82à\89Â\94\\82Å\82·\82ª\81A\82±\82ê\82Í\8aë\8c¯\82È\90Ý\92è\82Å\82·
- \82Ì\82Å\81A\95W\8f\80\83C\83\93\83X\83g\83\8c\81[\83V\83\87\83\93\82Æ\82µ\82Ä\82Í\92ñ\8b\9f\82µ\82Ü\82¹\82ñ\81B\83V\83X\83e\83\80\83f\83B\83\8c
- \83N\83g\83\8a\82Ö\82Ì\83C\83\93\83X\83g\81[\83\8b\82ð\8ds\82È\82¤\8fê\8d\87\82É\82Í\81A\8e©\8cÈ\90Ó\94C\82Å\82â\82Á\82Ä\82\82¾\82³\82¢\81B
-
-3.1.\83Z\83b\83g\83A\83b\83v\83v\83\8d\83O\83\89\83\80
-
- idn wrapper \82ð\83C\83\93\83X\83g\81[\83\8b\82·\82é\82É\82Í"setup.exe" \82ð\8eÀ\8ds\82µ\82Ü\82·\81B\83Z\83b\83g\83A\83b
- \83v\83v\83\8d\83O\83\89\83\80\82Í\88È\89º\82Ì\8f\88\97\9d\82ð\8eÀ\8ds\82µ\82Ü\82·\81B
-
- \83t\83@\83C\83\8b\82Ì\83C\83\93\83X\83g\81[\83\8b
-
- \83f\83B\83\8c\83N\83g\83\8a\81u\Program Files\JPNIC\idn wrapper\81v \81i \83Z\83b\83g\83A\83b\83v
- \8e\9e\93_\82Å\95Ï\8dX\89Â\94\\81j\88È\89º\82É\81Aidn wrapper \82ð\8d\\90¬\82·\82é\83t\83@\83C\83\8b\82ð\83R\83s\81[\82µ
- \82Ü\82·\81B
-
- \83\8c\83W\83X\83g\83\8a\82Ì\90Ý\92è
-
- HKEY_LOCAL_MACHINE\Software\JPNIC\IDN \88È\89º\82É\95K\97v\82È\83\8c\83W\83X\83g\83\8a\83L\81[\81A
- \83\8c\83W\83X\83g\83\8a\92l\82ð\8dì\90¬\81A\90Ý\92è\82µ\82Ü\82·\81B
-
- InstallDir REG_SZ "<\83C\83\93\83X\83g\81[\83\8b\83f\83B\83\8c\83N\83g\83\8a>"
- idn wrapper \82Ì\83C\83\93\83X\83g\81[\83\8b\83f\83B\83\8c\83N\83g\83\8a\82Ì\83p\83X\96¼\82Å\82·\81B\83Z\83b\83g
- \83A\83b\83v\83v\83\8d\83O\83\89\83\80\82Í\82±\82Ì\83f\83B\83\8c\83N\83g\83\8a\82É\83I\83\8a\83W\83i\83\8b\82ÌWINSOCK
- DLL \82Ì\83R\83s\81[\82ð\8dì\90¬\82µ\82Ü\82·\81Bidn wrapper \82Ì\83\89\83b\83p\81[ DLL \82Í\8eÀ
- \8ds\8e\9e\82É\82±\82Ì DLL \82ð\8eQ\8fÆ\82µ\82Ü\82·\81B
-
- ConfFile REG_SZ "<\83C\83\93\83X\83g\81[\83\8b\83f\83B\83\8c\83N\83g\83\8a>\idn.conf"
- idn wrapper \82ª\8d\91\8dÛ\89»\83h\83\81\83C\83\93\96¼\82Ì\95Ï\8a·\8f\88\97\9d\82É\8eg\97p\82µ\82Ä\82¢\82é
- idnkit \82Ì\83R\83\93\83t\83B\83M\83\85\83\8c\81[\83V\83\87\83\93\83t\83@\83C\83\8b\82Ì\96¼\91O\82Å\82·\81B\82±\82Ì\83t\83@
- \83C\83\8b\82Í\8d\91\8dÛ\89»\83h\83\81\83C\83\93\96¼\82Ì\8f\88\97\9d\82É\95K\97v\82È\8ae\8eí\82Ì\83p\83\89\83\81\81[\83^\82ð\90Ý\92è
- \82·\82é\82½\82ß\82Ì\82à\82Ì\82Å\82·\81B\8fÚ\82µ\82\82Í\83t\83@\83C\83\8b\82Ì\93à\97e\82ð\82²\97\97\82\82¾\82³\82¢\81B
- \82±\82Ì\92l\82Í\8cã\8fq\82·\82é\83R\83\93\83t\83B\83M\83\85\83\8c\81[\83V\83\87\83\93\83v\83\8d\83O\83\89\83\80\82Å\95Ï\8dX\82·\82é
- \82±\82Æ\82ª\82Å\82«\82Ü\82·\81B
-
- LogFile REG_SZ "<\83C\83\93\83X\83g\81[\83\8b\83f\83B\83\8c\83N\83g\83\8a>\idn_wrapper.log"
- idn wrapper \82Ì\83\8d\83O\83t\83@\83C\83\8b\82Ì\96¼\91O\82Å\82·\81B\82±\82Ì\92l\82à\83R\83\93\83t\83B\83M\83\85
- \83\8c\81[\83V\83\87\83\93\83v\83\8d\83O\83\89\83\80\82Å\95Ï\8dX\82·\82é\82±\82Æ\82ª\82Å\82«\82Ü\82·\81B
-
- LogLevel DWORD -1
- \83\8d\83O\83\8c\83x\83\8b\82Ì\8ew\92è\82Å\82·\81B\83f\83t\83H\83\8b\83g\82Í -1 \82Å\81A\82±\82ê\82Í\91S\82\83\8d\83O\82ð
- \8fo\97Í\82µ\82È\82¢\82Æ\82¢\82¤\88Ó\96¡\82Å\82·\81B\82±\82Ì\92l\82à\83R\83\93\83t\83B\83M\83\85\83\8c\81[\83V\83\87\83\93\83v
- \83\8d\83O\83\89\83\80\82Å\95Ï\8dX\82·\82é\82±\82Æ\82ª\82Å\82«\82Ü\82·\81B
-
- PerProg \83L\81[
-
- \83v\83\8d\83O\83\89\83\80\96\88\82Ì\90Ý\92è\92l\82ð\8ai\94[\82·\82é\82½\82ß\82Ì\83L\81[\82Å\82·\81B\82±\82Ì\89º\82É\81A\83v\83\8d
- \83O\83\89\83\80\82Ì\8eÀ\8ds\83\82\83W\83\85\81[\83\8b\96¼\82ð\83L\81[\82Æ\82µ\82Ä\83v\83\8d\83O\83\89\83\80\8cÂ\95Ê\82Ì\90Ý\92è\82ª\8bL
- \98^\82³\82ê\82Ü\82·\81B\90Ý\92è\82³\82ê\82é\8fî\95ñ\82Í\88È\89º\82Ì\93ñ\82Â\82Å\82·\81B
-
- PerProg\<progname>\Where REG_DWORD \95Ï\8a·\88Ê\92u
- PerProg\<progname>\Encoding REG_SZ \83G\83\93\83R\81[\83f\83B\83\93\83O\96¼
-
- \83G\83\93\83R\81[\83f\83B\83\93\83O\96¼\82Í\92Ê\8fí\83R\83\93\83t\83B\83M\83\85\83\8c\81[\83V\83\87\83\93\83v\83\8d\83O\83\89\83\80\82É\82æ\82Á
- \82Ä\90Ý\92è\82³\82ê\82Ü\82·\81B\95Ï\8a·\88Ê\92u\82Í\81A\95W\8f\80\83C\83\93\83X\83g\81[\83\8b\82Å\82Í\95s\97v\82Å\82·\81B\83V
- \83X\83e\83\80\83f\83B\83\8c\83N\83g\83\8a\82Ö\82Ì\83C\83\93\83X\83g\81[\83\8b\82ð\8ds\82È\82Á\82½\8fê\8d\87\82É\82Í\81A\83\8c\83W\83X
- \83g\83\8a\83G\83f\83B\83^\82Å\8aÂ\8b«\82É\8d\87\82í\82¹\82Ä\90Ý\92è\82·\82é\95K\97v\82ª\82 \82è\82Ü\82·\81B
-
- \83A\83C\83R\83\93\82Ì\8dì\90¬
-
- \83R\83\93\83t\83B\83M\83\85\83\8c\81[\83V\83\87\83\93\83v\83\8d\83O\83\89\83\80\82Ì\83A\83C\83R\83\93\82ð\8dì\90¬\82µ\81A\83X\83^\81[\83g\83\81\83j\83\85\81[
- \82É\93o\98^\82µ\82Ü\82·\81B\82±\82ê\82É\82æ\82Á\82Ä\83R\83\93\83t\83B\83M\83\85\83\8c\81[\83V\83\87\83\93\83v\83\8d\83O\83\89\83\80\82ð\8bN\93®
- \82·\82é\82±\82Æ\82ª\82Å\82«\82Ü\82·\81B
-
- \83A\83\93\83C\83\93\83X\83g\81[\83\8b\82·\82é\82É\82Í\81A\83R\83\93\83g\83\8d\81[\83\8b\83p\83l\83\8b\82Ì\81u\83A\83v\83\8a\83P\81[\83V\83\87\83\93\82Ì\92Ç
- \89Á\82Æ\8dí\8f\9c\81v\82Å\81A\81uidn wrapper\81v \82ð\91I\91ð\82µ\82Ä\8dí\8f\9c\81i\81u\92Ç\89Á\82Æ\8dí\8f\9c\81v\83{\83^\83\93\81j
- \82µ\82Ü\82·\81B
-
-3.2.\83R\83\93\83t\83B\83M\83\85\83\8c\81[\83V\83\87\83\93\83v\83\8d\83O\83\89\83\80
-
- \83R\83\93\83t\83B\83M\83\85\83\8c\81[\83V\83\87\83\93\83v\83\8d\83O\83\89\83\80\82Í\81A\83A\83v\83\8a\83P\81[\83V\83\87\83\93\82ð\93Á\92è\82µ\82Ä\83\89\83b\83v
- \82µ\82½\82è\81A\83A\83v\83\8a\83P\81[\83V\83\87\83\93\82Ì\83\89\83b\83v\82ð\89ð\8f\9c\82·\82é\82½\82ß\82Ì\83c\81[\83\8b\82Å\82·\81B
-
- \8bN\93®\82·\82é\82Æ\88È\89º\82Ì\82æ\82¤\82È\89æ\96Ê\82ª\95\\8e¦\82³\82ê\82Ü\82·\81B
-
- \84¡\84\9f\84¦\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84¦\84\9f\84¦\84\9f\84¦\84\9f\84¢
- \84 \81@\84 idn wrapper - Configuration \84 \81Q\84 \81 \84 \81~\84
- \84¥\84\9f\84¨\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84¨\84\9f\84¨\84\9f\84¨\84\9f\84§
- \84 idn wrapper Configuration Program version X.X \84
- \84¥\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84§
- \84 Wrapped Program \84¡\84\9f\84\9f\84\9f\84\9f\84\9f\84¢\84
- \84 \84¡\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84¦\84\9f\84¢\84 Wrap.. \84 \84
- \84 \84 \84 \81È\84 \84¤\84\9f\84\9f\84\9f\84\9f\84\9f\84£\84
- \84 \84 \84¥\84\9f\84§\84¡\84\9f\84\9f\84\9f\84\9f\84\9f\84¢\84
- \84 \84 \84 \84 \84 Unwrap.. \84 \84
- \84 \84 \84 \84 \84¤\84\9f\84\9f\84\9f\84\9f\84\9f\84£\84
- \84 \84 \84 \84 \84¡\84\9f\84\9f\84\9f\84\9f\84\9f\84¢\84
- \84 \84 \84 \84 \84 UnwrapAll.\84 \84
- \84 \84 \84 \84 \84¤\84\9f\84\9f\84\9f\84\9f\84\9f\84£\84
- \84 \84 \84 \84 \84¡\84\9f\84\9f\84\9f\84\9f\84\9f\84¢\84
- \84 \84 \84 \84 \84 RewrapAll.\84 \84
- \84 \84 \84 \84 \84¤\84\9f\84\9f\84\9f\84\9f\84\9f\84£\84
- \84 \84 \84 \84 \84¡\84\9f\84\9f\84\9f\84\9f\84\9f\84¢\84
- \84 \84 \84 \84 \84 Log.. \84 \84
- \84 \84 \84 \84 \84¤\84\9f\84\9f\84\9f\84\9f\84\9f\84£\84
- \84 \84 \84 \84 \84¡\84\9f\84\9f\84\9f\84\9f\84\9f\84¢\84
- \84 \84 \84¥\84\9f\84§\84 Advanced..\84 \84
- \84 \84 \84 \81É\84 \84¤\84\9f\84\9f\84\9f\84\9f\84\9f\84£\84
- \84 \84¥\84\9f\84¦\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84¦\84\9f\84©\84\9f\84£\84¡\84\9f\84\9f\84\9f\84\9f\84\9f\84¢\84
- \84 \84 \81q\84 \84 \81r\84 \84 Exit \84 \84
- \84 \84¤\84\9f\84¨\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84¨\84\9f\84£ \84¤\84\9f\84\9f\84\9f\84\9f\84\9f\84£\84
- \84¤\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84£
-
- \83\8a\83X\83g\83{\83b\83N\83X\82É\82Í\81A\82»\82Ì\8e\9e\93_\82Å\83\89\83b\83v\82³\82ê\82Ä\82¢\82é\83v\83\8d\83O\83\89\83\80\82ª\95\\8e¦\82³\82ê\82Ü
- \82·\81B\8dÅ\8f\89\82É\8eÀ\8ds\82µ\82½\8fê\8d\87\82É\82Í\8bó\82É\82È\82Á\82Ä\82¢\82Ü\82·\81B
-
- \83v\83\8d\83O\83\89\83\80\82ð\83\89\83b\83v\82·\82é\82É\82Í\81A"wrap"\83{\83^\83\93\82ð\89\9f\82µ\82Ü\82·\81B"wrap"\83{\83^\83\93\82ð\89\9f
- \82·\82Æ\88È\89º\82Ì\82æ\82¤\82È\83_\83C\83A\83\8d\83O\82ª\95\\8e¦\82³\82ê\82Ü\82·\81B
-
- \84¡\84\9f\84¦\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84¦\84\9f\84¦\84\9f\84¦\84\9f\84¢
- \84 \81@\84 idn wrapper - Wrap Executable \84 \81Q\84 \81 \84 \81~\84
- \84¥\84\9f\84¨\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84¨\84\9f\84¨\84\9f\84¨\84\9f\84§
- \84 \84¡\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84¢\84¡\84\9f\84\9f\84\9f\84\9f\84¢\84
- \84 Program: \84 \84 \84 Browse..\84 \84
- \84 \84¤\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84£\84¤\84\9f\84\9f\84\9f\84\9f\84£\84
- \84 \84¡\84\9f\84\9f\84\9f\84¢ \84
- \84 Encoding: \84 \84 \81\9bDefault \81\9bUTF-8 \84
- \84 \84¤\84\9f\84\9f\84\9f\84£ \84
- \84 \81 Force local DLL reference \84
- \84¥\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84§
- \84 \84¡\84\9f\84\9f\84\9f\84\9f\84¢\84¡\84\9f\84\9f\84\9f\84\9f\84¢\84
- \84 \84 wrap \84 \84 cancel \84 \84
- \84 \84¤\84\9f\84\9f\84\9f\84\9f\84£\84¤\84\9f\84\9f\84\9f\84\9f\84£\84
- \84¤\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84£
-
- \8dÅ\8f\89\82É\81A\83\89\83b\83v\82·\82é\83v\83\8d\83O\83\89\83\80\82Ì\8eÀ\8ds\83t\83@\83C\83\8b\96¼\82ð\90Ý\92è\82µ\82Ü\82·\81B\92¼\90Ú\93ü\97Í
- \82·\82é\82©\81A\83u\83\89\83E\83Y\83{\83^\83\93\82Å\83t\83@\83C\83\8b\82ð\92T\82µ\82Ä\82\82¾\82³\82¢\81B\8e\9f\82É\82»\82Ì\83v\83\8d\83O\83\89
- \83\80\82Ì\83\8d\81[\83J\83\8b\83G\83\93\83R\81[\83f\83B\83\93\83O\82ð\8ew\92è\82µ\82Ü\82·\81B\92Ê\8fí\82Í\81uDefault\81v \82Å\82©\82Ü
- \82¢\82Ü\82¹\82ñ\81B\83v\83\8d\83O\83\89\83\80\82ª\8d\91\8dÛ\89»\83G\83\93\83R\81[\83f\83B\83\93\83O\82É\8f]\82Á\82Ä\82¢\82é\8fê\8d\87\82É\82Ì\82Ý
- \81uUTF-8\81v \82ð\8ew\8e¦\82µ\82Ü\82·\81B
-
- \81uForce local DLL reference\81v\83{\83^\83\93\82É\82æ\82è\81A\83\89\83b\83v\82·\82é\83v\83\8d\83O\83\89\83\80\82Ì
- DLL \82Ì\92T\8dõ\8f\87\8f\98\82ð\95Ï\8dX\82·\82é\82±\82Æ\82ª\82Å\82«\82Ü\82· (\82½\82¾\82µ Windows95 \82É\82Í\82±\82Ì
- \8b@\94\\82ª\82È\82¢\82½\82ß\81A\82±\82Ì\83{\83^\83\93\82à\95\\8e¦\82³\82ê\82Ü\82¹\82ñ)\81B\82±\82Ì\83{\83^\83\93\82ð\83`\83F\83b\83N
- \82·\82é\82Æ\81A\82½\82Æ\82¦\83v\83\8d\83O\83\89\83\80\82ª\95Ê\82Ì\8fê\8f\8a\82Ì DLL \82ð\8ew\92è\82µ\82Ä\82¢\82Ä\82à\81A\8fí\82É\8eÀ
- \8ds\83t\83@\83C\83\8b\82ª\82 \82é\83f\83B\83\8c\83N\83g\83\8a\82Ì DLL \82ª\97D\90æ\82³\82ê\82é\82æ\82¤\82É\82È\82è\82Ü\82·\81B\82à
- \82µ\83v\83\8d\83O\83\89\83\80\82ª\82¤\82Ü\82\83\89\83b\83v\82Å\82«\82È\82¢\8fê\8d\87\82É\82Í\81A\82±\82Ì\83{\83^\83\93\82ð\83`\83F\83b\83N\82·
- \82é\82Æ\82¤\82Ü\82\82¢\82\82©\82à\82µ\82ê\82Ü\82¹\82ñ\81B\82½\82¾\82µ\93¯\8e\9e\82É\91¼\82Ì\96â\91è\82ª\94\90¶\82·\82é\89Â\94\\90«
- \82à\82 \82è\82Ü\82·\81B
-
- \8dÅ\8cã\82É\81uwrap\81v\83{\83^\83\93\82ð\89\9f\82¹\82Î\81A\83v\83\8d\83O\83\89\83\80\82ª\81A\8ew\92è\82³\82ê\82½\83G\83\93\83R\81[\83f\83B
- \83\93\83O\82Å\83\89\83b\83v\82³\82ê\82Ü\82·\81B\83\89\83b\83v\82³\82ê\82½\83v\83\8d\83O\83\89\83\80\82Í\81A\8dÅ\8f\89\82Ì\83E\83B\83\93\83h\83E\82Ì
- \83\8a\83X\83g\83{\83b\83N\83X\82É\94½\89f\82³\82ê\82Ü\82·\81B
-
- idn wrapper \82ð\83o\81[\83W\83\87\83\93\83A\83b\83v\82µ\82½\8fê\8d\87\82É\82Í\81A\83\89\83b\83v\97p\82Ì DLL \82ð\83A\83b\83v
- \83f\81[\83g\82·\82é\82½\82ß\82É\81A\83v\83\8d\83O\83\89\83\80\82ð\8dÄ\83\89\83b\83v\82·\82é\95K\97v\82ª\82 \82è\82Ü\82·\81B\82±\82Ì\82½\82ß\82É\81A
- \8c»\8dÝ\83\89\83b\83v\82³\82ê\82Ä\82¢\82é\83v\83\8d\83O\83\89\83\80\82É\91Î\82µ\82Ä\8dÄ\93x\83\89\83b\83v\82ð\8ds\82¤\82½\82ß\82Ì\81urewrap
- all\81v\83{\83^\83\93\82ª\97p\88Ó\82³\82ê\82Ä\82¢\82Ü\82·\81B
-
- \83v\83\8d\83O\83\89\83\80\82É\91Î\82·\82é\83\89\83b\83v\82ð\89ð\8f\9c\82·\82é\82É\82Í\81A\83\8a\83X\83g\83{\83b\83N\83X\82Å\89ð\8f\9c\82·\82é\83v\83\8d
- \83O\83\89\83\80\82ð\91I\91ð\82µ\82Ä\81A\81uunwrap\81v\83{\83^\83\93\82ð\89\9f\82µ\82Ü\82·\81B\88È\89º\82Ì\8am\94F\97p\82Ì\83_\83C\83A\83\8d
- \83O\82ª\95\\8e¦\82³\82ê\82Ü\82·\82Ì\82Å\81A\8aÔ\88á\82¢\82ª\82È\82¯\82ê\82Î\81uunwrap\81v\83{\83^\83\93\82ð\89\9f\82µ\82Ä\82\82¾\82³
- \82¢\81B
-
- \84¡\84\9f\84¦\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84¦\84\9f\84¦\84\9f\84¦\84\9f\84¢
- \84 \81@\84 idn wrapper - Unwrap Executable \84 \81Q\84 \81 \84 \81~\84
- \84¥\84\9f\84¨\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84¨\84\9f\84¨\84\9f\84¨\84\9f\84§
- \84 \84¡\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84¢\84
- \84 Program: \84 \84 \84
- \84 \84¤\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84£\84
- \84¥\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84§
- \84 \84¡\84\9f\84\9f\84\9f\84\9f\84¢\84¡\84\9f\84\9f\84\9f\84\9f\84¢\84
- \84 \84 Unwrap \84 \84 Cancel \84 \84
- \84 \84¤\84\9f\84\9f\84\9f\84\9f\84£\84¤\84\9f\84\9f\84\9f\84\9f\84£\84
- \84¤\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84£
-
- \83\89\83b\83v\82ª\89ð\8f\9c\82³\82ê\82é\82Æ\81A\82»\82Ì\83v\83\8d\83O\83\89\83\80\82Í\8dÅ\8f\89\82Ì\83E\83B\83\93\83h\83E\82Ì\83\8a\83X\83g\83{\83b\83N
- \83X\82©\82ç\82à\8dí\8f\9c\82³\82ê\82Ü\82·\81B
-
- \83v\83\8d\83O\83\89\83\80\82É\91Î\82µ\82Ä\8c»\8dÝ\90Ý\92è\82³\82ê\82Ä\82¢\82é\83\89\83b\83v\82ð\82·\82×\82Ä\89ð\8f\9c\82·\82é\82½\82ß\82Ì
- \81uunwrap all\81v\83{\83^\83\93\82à\97p\88Ó\82³\82ê\82Ä\82¢\82Ü\82·\81B
-
- \83\8d\83O\82Ì\90Ý\92è\82ð\8ds\82¤\82É\82Í\81A"log" \83{\83^\83\93\82ð\89\9f\82µ\82Ü\82·\81B\8e\9f\82Ì\82æ\82¤\82È\83_\83C\83A\83\8d\83O\82ª
- \95\\8e¦\82³\82ê\82Ü\82·\81B
-
- \84¡\84\9f\84¦\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84¦\84\9f\84¦\84\9f\84¦\84\9f\84¢
- \84 \81@\84 idn wrapper - Log Configuration \84 \81Q\84 \81 \84 \81~\84
- \84¥\84\9f\84¨\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84¨\84\9f\84¨\84\9f\84¨\84\9f\84§
- \84 Log Level: \81\9bNone \81\9bFatal \81\9bError \81\9bWarning \81\9bInfo \81\9bTrace \84
- \84 \84¡\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84¢\84¡\84\9f\84\9f\84\9f\84\9f\84¢\84
- \84 Log File:\84 \84 \84 Browse..\84 \84
- \84 \84¤\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84£\84¤\84\9f\84\9f\84\9f\84\9f\84£\84
- \84 \84¡\84\9f\84\9f\84\9f\84¢ \84¡\84\9f\84\9f\84\9f\84¢ \84
- \84 Log Operation:\84 View \84 \84 Delete\84 \84
- \84 \84¤\84\9f\84\9f\84\9f\84£ \84¤\84\9f\84\9f\84\9f\84£ \84
- \84¥\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84§
- \84 \84¡\84\9f\84\9f\84\9f\84\9f\84¢\84¡\84\9f\84\9f\84\9f\84\9f\84¢\84
- \84 \84 OK \84 \84 Cancel \84 \84
- \84 \84¤\84\9f\84\9f\84\9f\84\9f\84£\84¤\84\9f\84\9f\84\9f\84\9f\84£\84
- \84¤\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84£
-
- \83\8d\83O\83\8c\83x\83\8b\82Í\8e\9f\82Ì\92\86\82©\82ç\91I\91ð\82·\82é\82±\82Æ\82ª\82Å\82«\82Ü\82·\81B
- None \83\8d\83O\82ð\8fo\97Í\82µ\82È\82¢
- Fatal \92v\96½\93I\83G\83\89\81[\82Ì\82Ý\8bL\98^\82·\82é
- Error \92v\96½\93I\82Å\82È\82¢\83G\83\89\81[\82à\8bL\98^\82·\82é
- Warning \8cx\8d\90\83\81\83b\83Z\81[\83W\82à\8bL\98^\82·\82é
- Info \82»\82Ì\91¼\82Ì\8fî\95ñ\82à\8bL\98^\82·\82é
- Trace \83g\83\8c\81[\83X\8fo\97Í\82à\8bL\98^\82·\82é
- \82±\82±\82É\82 \82°\82½\83\8d\83O\83\8c\83x\83\8b\82Ì\90Ý\92è\82Í\81AIDN \83\89\83C\83u\83\89\83\8a (idnkit.dll) \82ª\8fo\97Í\82·\82é
- \83\8d\83O\82É\91Î\82µ\82Ä\82Ì\82Ý\97L\8cø\82Å\82·\81Bidn wrapper \8e©\90g\82ª\8fo\97Í\82·\82é\83\8d\83O\82Í ON/OFF
- \82µ\82©\82Å\82«\82Ü\82¹\82ñ\81BNone \82ð\8ew\92è\82·\82é\82Æ OFF \82É\81A\82»\82ê\88È\8aO\82Ì\83\8c\83x\83\8b\82ð\8ew\92è\82·\82é\82Æ
- ON \82É\82È\82è\82Ü\82·\81B
-
- \82±\82Ì\83_\83C\83A\83\8d\83O\82ð\97p\82¢\82Ä\81A\83\8d\83O\83t\83@\83C\83\8b\82Ì\83p\83X\96¼\82ð\8ew\92è\82·\82é\82±\82Æ\82à\82Å\82«\82Ü\82·\81B
-
- \82Ü\82½\81A\83\8d\83O\83t\83@\83C\83\8b\82Ì\93à\97e\82ð\95\\8e¦\82³\82¹\82½\82è\81A\83\8d\83O\83t\83@\83C\83\8b\82ð\8dí\8f\9c\82·\82é\82±\82Æ\82à
- \89Â\94\\82Å\82·\81B
-
- \83\8d\83O\83\8c\83x\83\8b\82â\83\8d\83O\83t\83@\83C\83\8b\82Ì\90Ý\92è\82Í\81A\90Ý\92è\8e\9e\82É\82·\82Å\82É\93®\8dì\82µ\82Ä\82¢\82é\83v\83\8d\83Z\83X
- \82É\82Í\89e\8b¿\82ð\97^\82¦\82È\82¢\82±\82Æ\82É\8bC\82ð\82Â\82¯\82Ä\82\82¾\82³\82¢\81B
-
- "advanced" \83{\83^\83\93\82ð\89\9f\82·\82Æ\81uadvanced configuration\81v\97p\82Ì\83_\83C\83A\83\8d\83O
- \82ª\95\\8e¦\82³\82ê\82Ü\82·\81B\82±\82Ì\83_\83C\83A\83\8d\83O\82Í\8fã\8b\89\83\86\81[\83U\82Ì\82½\82ß\82Ì\82à\82Ì\82Å\81A\93K\90Ø\82È\83f
- \83t\83H\83\8b\83g\82ª\90Ý\92è\82³\82ê\82Ä\82¢\82é\82½\82ß\82É\92Ê\8fí\83\86\81[\83U\82ª\95Ï\8dX\82·\82é\95K\97v\82Ì\82È\82¢\82æ\82¤\82È
- \8aî\96{\93I\82È\83p\83\89\83\81\81[\83^\82ð\95Ï\8dX\82·\82é\82±\82Æ\82ª\82Å\82«\82Ü\82·\81B
-
- \84¡\84\9f\84¦\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84¦\84\9f\84¦\84\9f\84¦\84\9f\84¢
- \84 \81@\84 idn wrapper - Advanced Configuration \84 \81Q\84 \81 \84 \81~\84
- \84¥\84\9f\84¨\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84¨\84\9f\84¨\84\9f\84¨\84\9f\84§
- \84 IDN Wrapping Mode \84
- \84 \81\9bWrap both WINSOCK 1.1 and WINSOCK 2.0 \84
- \84 \81\9bWrap only WINSOCK 1.1 \84
- \84 \81\9bWrap only WINSOCK 2.0 \84
- \84 \81\9bWrap only WINSOCK 2.0 if it exists. \84
- \84 Otherwise wrap only WINSOCK 1.1 \84
- \84¥\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84§
- \84 IDN Configuration \84
- \84 \84¡\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84¢\84¡\84\9f\84\9f\84\9f\84\9f\84¢\84
- \84 Log File:\84 \84 \84 Browse..\84 \84
- \84 \84¤\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84£\84¤\84\9f\84\9f\84\9f\84\9f\84£\84
- \84 \84¡\84\9f\84\9f\84\9f\84¢ \84
- \84 \84 Edit \84 \84
- \84 \84¤\84\9f\84\9f\84\9f\84£ \84
- \84¥\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84§
- \84 \84¡\84\9f\84\9f\84\9f\84\9f\84¢\84¡\84\9f\84\9f\84\9f\84\9f\84¢\84
- \84 \84 OK \84 \84 Cancel \84 \84
- \84 \84¤\84\9f\84\9f\84\9f\84\9f\84£\84¤\84\9f\84\9f\84\9f\84\9f\84£\84
- \84¤\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84\9f\84£
-
- \82±\82Ì\83_\83C\83A\83\8d\83O\82ð\8eg\97p\82µ\82Ä\81A\8e\9f\82Ì3\8eí\97Þ\82Ì\90Ý\92è\82ð\8ds\82¤\82±\82Æ\82ª\82Å\82«\82Ü\82·\81B
-
- Wrapping Mode
- \83\89\83b\83v\95û\96@\82ð\90Ý\92è\82µ\82Ü\82·\81B\92Ê\8fí\82Í\83f\83t\83H\83\8b\83g\82Å\90Ý\92è\82³\82ê\82Ä\82¢\82é\8d\80\96Ú\82ð
- \91I\91ð\82µ\82Ä\82¨\82¯\82Î\82æ\82¢\82Í\82¸\82Å\82·\82ª\81A\96â\91è\82ª\8bN\82Á\82½\82Æ\82«\82É\82Í\95Ê\82Ì\8d\80\96Ú\82É\82·
- \82é\82Æ\93®\82\82æ\82¤\82É\82È\82é\82©\82à\82µ\82ê\82Ü\82¹\82ñ\81B
-
- IDN Configuration
- \83R\83\93\83t\83B\83M\83\85\83\8c\81[\83V\83\87\83\93\83t\83@\83C\83\8b\96¼\82ð\8ew\92è\82µ\82Ü\82·\81B\82Ü\82½ "Edit" \83{\83^
- \83\93\82ð\89\9f\82·\82±\82Æ\82É\82æ\82è\81A\83t\83@\83C\83\8b\82Ì\93à\97e\82ð\95Ò\8fW\82·\82é\82±\82Æ\82à\89Â\94\\82Å\82·\81B
-
-4. \90§\8cÀ\8e\96\8d\80
-
-4.1. DLL \83o\81[\83W\83\87\83\93
-
- \83\89\83b\83p\81[DLL \82Í\81A\8c³\82ÌWINSOCK \82ÌDLL \82Ì\83o\81[\83W\83\87\83\93\82É\8b\82\88Ë\91¶\82µ\82Ü\82·\81B\82±\82ê
- \82Í\81A\94ñ\8cö\8aJ\82Ì\83G\83\93\83g\83\8a\82à\8aÜ\82ß\82Ä\82·\82×\82Ä\82Ì\83G\83\93\83g\83\8a\82ð\92ñ\8b\9f\82·\82é\95K\97v\82ª\82 \82é\82½\82ß
- \82Å\82·\81B\82±\82Ì\82½\82ßWINSOCK DLL \82Ì\83o\81[\83W\83\87\83\93\82ª\95Ï\82í\82é\82Æ\81Aidn wrapper \82ª\93®\8dì
- \82µ\82È\82\82È\82é\89Â\94\\90«\82ª\82 \82è\82Ü\82·\81B
-
- \8d¡\89ñ\8dì\90¬\82³\82ê\82½idn wrapper \82Í\81A
-
- Win2000 (WINSOCK 1.1 + 2.0)
- WinME (WINSOCK 1.1 + 2.0)
-
- \82Å\93®\8dì\82ð\8am\94F\82µ\82Ä\82¢\82Ü\82·\81B\82½\82¾\81A\8f«\97\88\82É\82í\82½\82Á\82Ä\93®\8dì\82·\82é\95Û\8fØ\82Í\82 \82è\82Ü\82¹\82ñ\81B
-
-4.2. DNS, WINS, LMHOSTS
-
- Windows \82Å\82Í\81ADNS \82¾\82¯\82Å\82Í\82È\82\81AWINS\82âLMHOSTS \82É\82æ\82Á\82Ä\82à\83h\83\81\83C\83\93\96¼\81A
- \83z\83X\83g\96¼\82Ì\89ð\8c\88\82ª\8ds\82È\82í\82ê\82Ü\82·\81Bidn wrapper \82ð\8eg\82Á\82½\8fê\8d\87\82É\82Í\81A\83h\83\81\83C\83\93
- \96¼\82Ì\95Ï\8a·\82ª\81A\82±\82ê\82ç\82Ì\95û\8e®\82Ö\82Ì\83f\83B\83X\83p\83b\83`\82ð\8ds\82È\82¤\8fê\8f\8a\82æ\82è\82à\8fã\88Ê\91w\82Å\8ds
- \82È\82í\82ê\82é\82Ì\82Å\81A\82±\82ê\82ç\82Ì\82·\82×\82Ä\82Ì\95û\8e®\82É\82Â\82¢\82Ä\81A\83h\83\81\83C\83\93\96¼\81A\83z\83X\83g\96¼\82Ì\95Ï
- \8a·\82ª\8ds\82È\82í\82ê\82é\82±\82Æ\82É\82È\82è\82Ü\82·\81B\82±\82Ì\82½\82ß\81AWindows \82ª\81AWINS\82âLMHOSTS \82ð
- \8eg\82Á\82Ä\82¢\82é\8fê\8d\87\82É\82Í\81A\97\\8aú\82µ\82È\82¢\96â\91è\82ª\94\90¶\82·\82é\89Â\94\\90«\82ª\82 \82è\82Ü\82·\81B\82±\82ê\82É
- \82Â\82¢\82Ä\82Í\81Aidn wrapper \82ð\8eg\82¤\8fê\8d\87\82É\82Í\81A\96¼\91O\89ð\8c\88\82ÉDNS \82¾\82¯\82ð\8eg\97p\82·\82é\82±
- \82Æ\82ð\82¨\8a©\82ß\82µ\82Ü\82·\81B
-
-3.3. \83h\83\81\83C\83\93\96¼\88È\8aO\82Ì\96¼\91O\82Ì\89ð\8c\88
-
- WINSOCK 2.0 \82Ì\96¼\91O\89ð\8c\88API
-
- WSALookupServiceBeginA
- WSALookupServiceNextA
- WSALookupServiceEnd
-
- \82Í\81A\83h\83\81\83C\83\93\96¼\88È\8aO\82Å\82à\8eg\97p\82Å\82«\82é\81A\94Ä\97p\82Ì\96¼\91O\89ð\8c\88\97p\82ÌAPI \82Æ\82µ\82Ä\92è\8b`\82³
- \82ê\82Ä\82¢\82Ü\82·\81B\8c»\8e\9e\93_\82Å\82Í\81A\82±\82ê\82ç\82Í\82à\82Á\82Ï\82ç\83h\83\81\83C\83\93\96¼\82Ì\89ð\8c\88\82Å\8eg\97p\82³\82ê\82Ä
- \82¢\82Ü\82·\82ª\81A\91¼\82Ì\96¼\91O(\97á\82¦\82Î\83T\81[\83r\83X\96¼)\82Ì\89ð\8c\88\82É\82à\8eg\97p\82Å\82«\82é\82±\82Æ\82É\82È\82Á\82Ä
- \82¢\82Ü\82·\81B
-
- idn wrapper \82Í\81A\96¼\91O\82Ì\91Î\8fÛ\82Ì\94@\89½\82É\82©\82©\82í\82ç\82¸\81A\96¼\91O\82Ì\83G\83\93\83R\81[\83f\83B\83\93\83O
- \82ð\95Ï\8a·\82µ\82Ä\82µ\82Ü\82¤\82Ì\82Å\81A\82±\82ê\82ç\82ÌAPI \82ª\81A\83h\83\81\83C\83\93\96¼\88È\8aO\82Ì\89ð\8c\88\82É\8eg\82í\82ê\82Ä
- \82¢\82é\8fê\8d\87\82É\82Í\81A\96â\91è\82ð\88ø\82«\8bN\82±\82·\89Â\94\\90«\82ª\82 \82è\82Ü\82·\81B
-
-4.4. \96¼\91O\89ð\8c\88API \82ð\8eg\82í\82È\82¢\83v\83\8d\83O\83\89\83\80
-
- \83A\83v\83\8a\83P\81[\83V\83\87\83\93\82É\82æ\82Á\82Ä\82Í\81A\83h\83\81\83C\83\93\96¼\82Ì\89ð\8c\88\82É\82±\82ê\82ç\82ÌAPI \82ð\8eg\97p\82µ\82È
- \82¢\82à\82Ì\82à\82 \82è\82Ü\82·\81B\97á\82¦\82Î\81A'nslookup'\82Í\81A\82±\82ê\82ç\82ÌAPI \82ð\8eg\97p\82µ\82È\82¢\82Å\81A
- \92¼\90ÚDNS \83T\81[\83o\82Æ\92Ê\90M\82µ\82Ä\82µ\82Ü\82¢\82Ü\82·\81B\82±\82Ì\82æ\82¤\82È\83A\83v\83\8a\83P\81[\83V\83\87\83\93\82É\82Â\82¢
- \82Ä\82Í\81Aidn wrapper \82Í\96ð\82É\97§\82¿\82Ü\82¹\82ñ\81B
-
-4.5. \93Á\92èWINSOCK DLL \82É\83o\83C\83\93\83h\82³\82ê\82½\83A\83v\83\8a\83P\81[\83V\83\87\83\93
-
- \83A\83v\83\8a\83P\81[\83V\83\87\83\93\82É\82æ\82Á\82Ä\82Í\81A\95W\8f\80\82ÌDLL \83T\81[\83`\83p\83X\82É\8f]\82í\82È\82¢\82Å\81A\93Á\92è\82Ì
- \83p\83X\82ÌDLL \82É\83o\83C\83\93\83h\82³\82ê\82Ä\82¢\82é\82à\82Ì\82ª\82 \82è\82Ü\82·\81B\82æ\82\8eg\82í\82ê\82é\83v\83\8d\83O\83\89\83\80
- \82Ì\92\86\82Å\82Í\81ANetscape Communicator \82ª\82»\82¤\82È\82Á\82Ä\82¢\82Ü\82·\81B\82±\82Ì\82æ\82¤\82È\83v\83\8d\83O
- \83\89\83\80\82É\82Â\82¢\82Ä\82Í\81A\95W\8f\80\82Ì\83C\83\93\83X\83g\81[\83\8b\81^\83R\83\93\83t\83B\83M\83\85\83\8c\81[\83V\83\87\83\93\82Å\82Í\83\89\83b\83v
- \82·\82é\82±\82Æ\82Í\82Å\82«\82Ü\82¹\82ñ\81B
-
- \82±\82Ì\82æ\82¤\82È\83v\83\8d\83O\83\89\83\80\82É\82Â\82¢\82Ä\81A\82Ç\82¤\82µ\82Ä\82à\83\89\83b\83v\82·\82é\95K\97v\82ª\82 \82é\82È\82ç\81A\83V
- \83X\83e\83\80\83f\83B\83\8c\83N\83g\83\8a\82Ö\82Ì\83C\83\93\83X\83g\81[\83\8b\82ð\8ds\82È\82¤\82±\82Æ\82ª\82Å\82«\82Ü\82·\81B\82½\82¾\82µ\81A\82±
- \82Ì\83C\83\93\83X\83g\81[\83\8b\82Í\91å\95Ï\8aë\8c¯\82Å\81A\8fê\8d\87\82É\82æ\82Á\82Ä\82Í\83V\83X\83e\83\80\82ð\8dÄ\8bN\93®\95s\94\\82É\82µ\82Ä
- \82µ\82Ü\82¤\89Â\94\\90«\82à\82 \82è\82Ü\82·\81B
-
-5. \83\8c\83W\83X\83g\83\8a\90Ý\92è - \82Ü\82Æ\82ß
-
-5.1. \83\8c\83W\83X\83g\83\8a\82Ì\97D\90æ\8f\87\88Ê
-
- idn wrapper \82Ì\90Ý\92è\8fî\95ñ\82Í\81AHKEY_LOCAL_MACHINE\81AHKEY_CURRENT_USER\82Ì
-
- Software\JPNIC\IDN
-
- \88È\89º\82É\8ai\94[\82³\82ê\82Ü\82·\81Bidn wrapper\82Í\8dÅ\8f\89\82ÉHKEY_LOCAL_MACHINE\82Ì\90Ý\92è\82ð\93Ç
- \82Ý\8d\9e\82Ý\81AHKEY_CURRENT_USER\91¤\82É\82à\90Ý\92è\82ª\82 \82ê\82Î\81A\82±\82ê\82Å\8fã\8f\91\82«\82µ\82Ü\82·\81B\92Ê
- \8fí\82Í\81AHKEY_LOCAL_MACHINE \91¤\82¾\82¯\82ð\90Ý\92è\82µ\82Ü\82·\81B\83\86\81[\83U\8cÂ\95Ê\82É\88Ù\82È\82Á\82½\90Ý
- \92è\82ð\8eg\82¢\82½\82¢\8fê\8d\87\82Ì\82Ý\81AHKEY_CURRENT_USER\82ð\90Ý\92è\82·\82é\82æ\82¤\82É\82µ\82Ä\82\82¾\82³\82¢\81B
-
- \82È\82¨\81A\83R\83\93\83t\83B\83M\83\85\83\8c\81[\83V\83\87\83\93\83v\83\8d\83O\83\89\83\80\82Í HKEY_LOCAL_MACHINE \82Ì\90Ý\92è
- \82¾\82¯\82ð\93Ç\82Ý\8f\91\82«\82·\82é\82æ\82¤\82É\82È\82Á\82Ä\82¢\82Ü\82·\81B
-
-4.2. \83\8c\83W\83X\83g\83\8a\83L\81[
-
- \91S\91Ì\82Ì\8b¤\92Ê\82Ì\90Ý\92è\82Æ\81A\83v\83\8d\83O\83\89\83\80\8cÂ\95Ê\90Ý\92è\82Æ\82ª\82 \82è\82Ü\82·\81B
-
-\81Q\8b¤\92Ê\92è\8b`
-
- Software\JPNIC\IDN\InstallDir \83C\83\93\83X\83g\81[\83\8b\83f\83B\83\8c\83N\83g\83\8a
- Software\JPNIC\IDN\Where \95Ï\8a·\88Ê\92u
- 0:WINSOCK1.1 WINSOCK2.0\82Ì\97¼\95û\82Å
- 1:WINSOCK2.0 \82ª\82 \82ê\82Î\82»\82¿\82ç\82Å
- 2:WINSOCK1.1 \82¾\82¯\82Å
- 3:WINSOCK2.0 \82¾\82¯\82Å
- Software\JPNIC\IDN\ConfFile idnkit \82Ì\90Ý\92è\83t\83@\83C\83\8b
- Software\JPNIC\IDN\LogLevel \83\8d\83O\83\8c\83x\83\8b
- Software\JPNIC\IDN\LogFile \83\8d\83O\83t\83@\83C\83\8b
-
-\81Q\83v\83\8d\83O\83\89\83\80\8cÂ\95Ê\90Ý\92è
-
- \95Ï\8a·\88Ê\92u\81A\82¨\82æ\82Ñ\83v\83\8d\83O\83\89\83\80\91¤\82Ì\83G\83\93\83R\81[\83f\83B\83\93\83O\82Í\83v\83\8d\83O\83\89\83\80\96\88\82É\93Á\92è\82·
- \82é\82±\82Æ\82à\82Å\82«\82Ü\82·\81B\82±\82ê\82ç\82Í\81A\88È\89º\82Ì\83L\81[\83n\83C\83u\82Ì\89º\82É\81A\83v\83\8d\83O\83\89\83\80\96¼\82ð\83L\81[
- \82Æ\82·\82é\92l\82Å\90Ý\92è\82µ\82Ü\82·\81B
-
- Software\JPNIC\IDN\PerProg\<name>\Where
- Software\JPNIC\IDN\PerProg\<name>\Encoding
-
- \8ew\92è\82³\82ê\82Ä\82¢\82È\82¢\8fê\8d\87\82É\82Í\81A
-
- Where 0 1.1\81A2.0 \82Ì\97¼\95û\82Å\95Ï\8a·
- Encoding \83v\83\8d\83Z\83X\82Ì\83R\81[\83h\83y\81[\83W
-
- \82Æ\82Ý\82È\82µ\82Ü\82·\81B
-
+++ /dev/null
-/*
- * checkdll.c - Winsock DLL/IDN processing status
- */
-
-/*
- * Copyright (c) 2000,2002 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-#include <windows.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include "wrapcommon.h"
-
-static int winsock_idx; /* index of winsock_info[] */
-
-static struct winsock_type {
- char *version; /* winsock version */
- char *name; /* wrapper DLL name */
- char *original_name; /* original DLL name */
-} winsock_info[] = {
-#define IDN_IDX_WS11 0
- { "1.1", "WSOCK32", "WSOCK32O" },
-#define IDN_IDX_WS20 1
- { "2.0", "WS2_32", "WS2_32O" },
- { NULL, NULL, NULL },
-};
-
-static HINSTANCE load_original_dll(void);
-static BOOL check_idn_processing(void);
-static BOOL check_dll(const char *name);
-
-BOOL
-idnWinsockVersion(const char *version) {
- int i;
- for (i = 0; winsock_info[i].version != NULL; i++) {
- if (strcmp(winsock_info[i].version, version) == 0) {
- winsock_idx = i;
- idnLogPrintf(idn_log_level_trace,
- "idnWinsockVersion: version %s\n",
- version);
- return (TRUE);
- }
- }
- idnLogPrintf(idn_log_level_fatal,
- "idnWinsockVersion: unknown winsock version %s\n",
- version);
- return (FALSE);
-}
-
-HINSTANCE
-idnWinsockHandle(void) {
- static HINSTANCE dll_handle = NULL;
- static int initialized = 0;
-
- if (!initialized) {
- /* Get the handle of the original winsock DLL */
- idnLogPrintf(idn_log_level_trace,
- "idnWinsockHandle: loading original DLL..\n");
- dll_handle = load_original_dll();
- }
- initialized = 1;
- return (dll_handle);
-}
-
-idn_resconf_t
-idnGetContext(void) {
- static int initialized = 0;
- static idn_resconf_t ctx = NULL;
-
- if (!initialized) {
- /*
- * Check whether IDN processing should be done
- * in this wrapper DLL.
- */
- idnLogPrintf(idn_log_level_trace,
- "idnGetContext: checking IDN status..\n");
- if (check_idn_processing()) {
- /* Initialize idnkit */
- ctx = idnConvInit();
- idnLogPrintf(idn_log_level_info,
- "Processing context: %08x\n", ctx);
- } else {
- idnLogPrintf(idn_log_level_info,
- "NOT process IDN here\n");
- ctx = NULL;
- }
- initialized = 1;
- }
-
- return (ctx);
-}
-
-static HINSTANCE
-load_original_dll(void) {
- /*
- * Load Original DLL
- */
- char dllpath[MAX_PATH];
- const char *dll_name = winsock_info[winsock_idx].original_name;
- HINSTANCE handle;
-
- /*
- * Get idn wrapper's install directory, where the copies of
- * the original winsock DLLs are saved.
- */
- dllpath[0] = '\0';
- if (idnGetInstallDir(dllpath, sizeof(dllpath)) != TRUE) {
- idnLogPrintf(idn_log_level_fatal,
- "idnWinsockHandle: cannot find idn wrapper's "
- "install directory\n");
- abort();
- return (NULL); /* for lint */
- }
- /* Strip the trailing backslash. */
- if (dllpath[0] != '\0' &&
- dllpath[strlen(dllpath) - 1] == '\\') {
- dllpath[strlen(dllpath) - 1] = '\0';
- }
- /* Is the pathname is insanely long? */
- if (strlen(dllpath) + strlen(dll_name) + 1 + 4 >= sizeof(dllpath)) {
- idnLogPrintf(idn_log_level_fatal,
- "idnWinsockHandle: idn wrapper's install path is "
- "too long to be true\n");
- abort();
- return (NULL); /* for lint */
- }
- /* Append the DLL name to form a full pathname of the DLL. */
- strcat(dllpath, "\\");
- strcat(dllpath, dll_name);
- strcat(dllpath, ".DLL");
-
- idnLogPrintf(idn_log_level_trace,
- "idnWinsockHandle: loading original winsock DLL (%s)\n",
- dllpath);
- if ((handle = LoadLibrary(dllpath)) == NULL) {
- idnLogPrintf(idn_log_level_fatal,
- "idnWinsockHandle: no DLL %-.100s\n", dllpath);
- abort();
- return (NULL); /* font lint */
- }
- return (handle);
-}
-
-static BOOL
-check_idn_processing(void) {
- int where = idnEncodeWhere();
- BOOL here = FALSE;
-
- idnLogPrintf(idn_log_level_trace,
- "idnGetContext: Winsock%s, where=%d\n",
- winsock_info[winsock_idx].version, where);
-
- switch (winsock_idx) {
- case IDN_IDX_WS11:
- switch (where) {
- case IDN_ENCODE_ALWAYS:
- case IDN_ENCODE_ONLY11:
- return (TRUE);
- case IDN_ENCODE_CHECK:
- if (!check_dll(winsock_info[winsock_idx].name)) {
- return (TRUE);
- }
- break;
- }
- break;
- case IDN_IDX_WS20:
- switch (where) {
- case IDN_ENCODE_ALWAYS:
- case IDN_ENCODE_ONLY20:
- case IDN_ENCODE_CHECK:
- return (TRUE);
- break;
- }
- break;
- }
- return (FALSE);
-}
-
-static BOOL
-check_dll(const char *name) {
- HINSTANCE hdll = NULL;
-
-#if 1
- hdll = LoadLibrary(name);
-#else
- /*
- * Just check the existence of the named DLL, without taking
- * the trouble of calling DllMain.
- */
- hdll = LoadLibraryEx(name, NULL, LOAD_LIBRARY_AS_DATAFILE);
-#endif
- if (hdll == NULL) {
- idnLogPrintf(idn_log_level_trace,
- "idnGetContext: DLL %s does not exist\n");
- return (FALSE);
- } else {
- idnLogPrintf(idn_log_level_trace,
- "idnGetContext: DLL %s exists\n");
- FreeLibrary(hdll);
- return (TRUE);
- }
-}
+++ /dev/null
-/*
- * convert.c - convert domain name
- */
-
-/*
- * Copyright (c) 2000,2002 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-#include <windows.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "wrapcommon.h"
-
-/*
- * prepare/dispose conversion context
- */
-
-void
-idnConvDone(idn_resconf_t ctx)
-{
- if (ctx != NULL) {
- idnLogReset();
- idn_resconf_destroy(ctx);
- }
-}
-
-idn_resconf_t
-idnConvInit(void)
-{
- char encoding[256];
- idn_resconf_t ctx;
- idn_result_t r;
-
- idnLogReset();
-
- idnLogPrintf(idn_log_level_info, "idnkit version: %-.20s\n",
- idn_version_getstring());
-
- /*
- * Initialize.
- */
- if ((r = idn_resconf_initialize()) != idn_success) {
- idnPrintf("idnConvInit: cannot initialize idn library: %s\n",
- idn_result_tostring(r));
- return NULL;
- }
- if ((r = idn_resconf_create(&ctx)) != idn_success) {
- idnPrintf("idnConvInit: cannot create context: %s\n",
- idn_result_tostring(r));
- return NULL;
- }
- /*
- * load configuration file.
- */
- if ((r = idn_resconf_loadfile(ctx, NULL)) != idn_success) {
- idnPrintf("idnConvInit: cannot read configuration file: %s\n",
- idn_result_tostring(r));
- if ((r = idn_resconf_setdefaults(ctx)) != idn_success) {
- idnPrintf("idnConvInit: setting default configuration"
- " failed: %s\n",
- idn_result_tostring(r));
- idnConvDone(ctx);
- return (NULL);
- }
- idnPrintf("idnConvInit: using default configuration\n");
- }
- /*
- * Set local codeset.
- */
- if (idnGetPrgEncoding(encoding, sizeof(encoding)) == TRUE) {
- idnPrintf("Encoding PRG <%-.100s>\n", encoding);
- r = idn_resconf_setlocalconvertername(ctx, encoding,
- IDN_CONVERTER_RTCHECK);
- if (r != idn_success) {
- idnPrintf("idnConvInit: invalid local codeset "
- "\"%-.100s\": %s\n",
- encoding, idn_result_tostring(r));
- idnConvDone(ctx);
- return NULL;
- }
- }
- return ctx;
-}
-
-/*
- * idnConvReq - convert domain name in a DNS request
- *
- * convert local encoding to DNS encoding
- */
-
-BOOL
-idnConvReq(idn_resconf_t ctx, const char FAR *from, char FAR *to, size_t tolen)
-{
- idn_result_t r;
-
- idnLogReset();
-
- idnLogPrintf(idn_log_level_trace, "idnConvReq(from=%-.100s)\n", from);
- if (ctx == NULL) {
- idnLogPrintf(idn_log_level_trace, "idnConvReq: ctx is NULL\n");
- if (strlen(from) >= tolen)
- return FALSE;
- strcpy(to, from);
- return TRUE;
- }
-
- r = idn_res_encodename(ctx, IDN_ENCODE_APP, from, to, tolen);
-
- if (r == idn_success) {
- return TRUE;
- } else {
- return FALSE;
- }
-}
-
-/*
- * idnConvRsp - convert domain name in a DNS response
- *
- * convert DNS encoding to local encoding
- */
-
-BOOL
-idnConvRsp(idn_resconf_t ctx, const char FAR *from, char FAR *to, size_t tolen)
-{
- idnLogReset();
-
- idnLogPrintf(idn_log_level_trace, "idnConvRsp(from=%-.100s)\n", from);
- if (ctx == NULL) {
- if (strlen(from) >= tolen)
- return FALSE;
- strcpy(to, from);
- return TRUE;
- } else if (idn_res_decodename(ctx, IDN_DECODE_APP,
- from, to, tolen) == idn_success) {
- return TRUE;
- } else {
- return FALSE;
- }
-}
+++ /dev/null
-/*
- * dump.c - dump data
- */
-
-/*
- * 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, 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-#include <windows.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "wrapcommon.h"
-
-char *
-dumpAddr(const char FAR *addr, int len, char *buff, size_t size) {
- int i;
- char *p;
-
- buff[0] = '\0';
- for (i = 0, p = buff; i < len; i++) {
- char digits[8];
-
- sprintf(digits, "%d", (addr[i] & 0xff));
- if (i + 1 < len) {
- strcat(digits, ".");
- }
- if (strlen(digits) >= size) {
- break;
- }
- strcpy(p, digits);
- p += strlen(digits);
- size -= strlen(digits);
- }
- return (buff);
-}
-
-char *
-dumpHost(const struct hostent FAR *hp, char *buff, size_t size) {
- char *p = buff;
-
- p[0] = '\0';
- if (strlen(hp->h_name) + 1 < size) {
- sprintf(p, "%s ", hp->h_name);
- p += strlen(p);
- size -= strlen(p);
- }
- dumpAddr(hp->h_addr_list[0], hp->h_length, p, size);
- return (buff);
-}
-
-char *
-dumpName(const char *name, char *buff, size_t size) {
- const char *sp;
- char *dp;
-
- for (sp = name, dp = buff; *sp != '\0'; sp++) {
- if (*sp >= 0x21 && *sp <= 0x7e) {
- if (size < 2) {
- break;
- }
- *dp++ = *sp;
- size--;
- } else {
- if (size < 5) {
- break;
- }
- dp[0] = '\\';
- dp[1] = 'x';
- sprintf(dp + 2, "%02x", *sp & 0xff);
- dp += 4;
- size -= 4;
- }
- }
- *dp = '\0';
-
- return (buff);
-}
-
+++ /dev/null
-/*
- * encoding.c - get DNS/Local encodings
- *
- * Software\JPNIC\IDN\Where
- * \LogFile
- * \LogLevel
- * \InstallDir
- * \PerProg\<name>\Where
- * \PerProg\<name>\Encoding
- */
-
-/*
- * Copyright (c) 2000,2001,2002 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-#include <windows.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <ctype.h>
-
-#include "wrapcommon.h"
-
-#define IDN_GLOBAL 1
-#define IDN_PERPROG 2
-#define IDN_CURUSER 4
-
-/*
- * Registry of Encodings
- */
-
-#define IDNKEY_WRAPPER "Software\\JPNIC\\IDN"
-#define IDNKEY_PERPROG "Software\\JPNIC\\IDN\\PerProg"
-#define IDNVAL_WHERE "Where"
-#define IDNVAL_ENCODE "Encoding"
-#define IDNVAL_LOGLVL "LogLevel"
-#define IDNVAL_LOGFILE "LogFile"
-#define IDNVAL_INSDIR "InstallDir"
-
-static int GetRegistry(HKEY top, const char *key, const char *name,
- DWORD type, void *param, DWORD length);
-static char *GetPerProgKey(char *buf, size_t len);
-static int GetFromRegistry(const char *name, int where, DWORD type,
- void *param, DWORD length);
-static int GetIntFromRegistry(const char *name, int defvalue, int where);
-static BOOL GetStringFromRegistry(const char *name, char *result,
- size_t length, int where);
-
-static int
-GetRegistry(HKEY top, const char *key, const char *name, DWORD type,
- void *param, DWORD length)
-{
- LONG stat;
- HKEY hk;
- DWORD realtype;
-
- stat = RegOpenKeyEx(top, key, 0, KEY_READ, &hk);
- if (stat != ERROR_SUCCESS) {
- return 0;
- }
-
- stat = RegQueryValueEx(hk, (LPCTSTR)name, NULL,
- &realtype, (LPBYTE)param, &length);
-
- RegCloseKey(hk);
-
- if (stat != ERROR_SUCCESS || realtype != type)
- return 0;
-
- return 1;
-}
-
-static char *
-GetPerProgKey(char *buf, size_t len)
-{
- char exename[256];
- char prgname[256];
- char *p, *last;
-
- GetModuleFileName(NULL, exename, 256);
-
- for (p = exename, last = NULL; *p != '\0'; p++) {
- if (*p == '/' || *p == '\\') {
- last = p;
- }
- }
- strcpy(prgname, (last == NULL) ? exename : (last + 1));
- if ((p = strrchr(prgname, '.')) != NULL) {
- *p = '\0';
- }
-
- if (strlen(IDNKEY_PERPROG) + 1 + strlen(prgname) >= len) {
- return (NULL);
- }
- sprintf(buf, "%s\\%s", IDNKEY_PERPROG, prgname);
- return buf;
-}
-
-static int
-GetFromRegistry(const char *name, int where, DWORD type,
- void *param, DWORD length)
-{
- if (where & IDN_PERPROG) {
- /*
- * First, try program specific setting.
- */
- char keyname[256];
-
- /*
- * Try HKEY_CURRENT_USER and HKEY_LOCAL_MACHINE.
- */
- if (GetPerProgKey(keyname, sizeof(keyname)) != NULL) {
- if (((where & IDN_CURUSER) &&
- GetRegistry(HKEY_CURRENT_USER, keyname, name,
- type, param, length)) ||
- GetRegistry(HKEY_LOCAL_MACHINE, keyname, name,
- type, param, length)) {
- return (1);
- }
- }
- }
-
- if (where & IDN_GLOBAL) {
- /*
- * Try global setting.
- */
- if (((where & IDN_CURUSER) &&
- GetRegistry(HKEY_CURRENT_USER, IDNKEY_WRAPPER, name,
- type, param, length)) ||
- GetRegistry(HKEY_LOCAL_MACHINE, IDNKEY_WRAPPER, name,
- type, param, length)) {
- return (1);
- }
- }
-
- /*
- * Not found.
- */
- return (0);
-}
-
-static int
-GetIntFromRegistry(const char *name, int defvalue, int where)
-{
- DWORD param;
-
- if (GetFromRegistry(name, where, REG_DWORD, ¶m, sizeof(param))) {
- return ((int)param);
- }
- return (defvalue);
-}
-
-static BOOL
-GetStringFromRegistry(const char *name, char *result, size_t length, int where)
-{
- if (GetFromRegistry(name, where, REG_SZ, result, (DWORD)length)) {
- return (TRUE);
- }
- return (FALSE);
-}
-
-/*
- * idnEncodeWhere - which module should convert domain name
- */
-int
-idnEncodeWhere(void)
-{
- int v = GetIntFromRegistry(IDNVAL_WHERE, IDN_ENCODE_ALWAYS,
- IDN_GLOBAL|IDN_PERPROG|IDN_CURUSER);
-
- idnLogPrintf(idn_log_level_trace, "idnEncodeWhere: %d\n", v);
- return (v);
-}
-
-/*
- * idnGetLogFile - refer to log file
- */
-BOOL
-idnGetLogFile(char *file, size_t len)
-{
- BOOL v = GetStringFromRegistry(IDNVAL_LOGFILE, file, len,
- IDN_GLOBAL|IDN_CURUSER);
-
- idnLogPrintf(idn_log_level_trace, "idnGetLogFile: %-.100s\n",
- (v == TRUE) ? file : "<none>");
- return (v);
-}
-
-/*
- * idnGetPrgEncoding - refer to Program's Local Encoding
- *
- * use program name as registry key
- */
-BOOL
-idnGetPrgEncoding(char *enc, size_t len)
-{
- if (GetStringFromRegistry(IDNVAL_ENCODE, enc, len,
- IDN_PERPROG|IDN_CURUSER) != TRUE ||
- enc[0] == '\0') {
- sprintf(enc, "CP%d", GetACP());
- }
- idnLogPrintf(idn_log_level_trace,
- "idnGetPrgEncoding: %-.30s\n", enc);
- return (TRUE);
-}
-
-/*
- * idnGetLogLevel
- */
-int
-idnGetLogLevel(void)
-{
- int v = GetIntFromRegistry(IDNVAL_LOGLVL, 0,
- IDN_GLOBAL|IDN_CURUSER);
-
- idnLogPrintf(idn_log_level_trace, "idnGetLogLevel: %d\n", v);
- return (v);
-}
-
-/*
- * idnGetInstallDir - get idn wrapper install directory
- */
-BOOL
-idnGetInstallDir(char *dir, size_t len)
-{
- /* No need to look at HKEY_CURRENT_USER */
- BOOL v = GetStringFromRegistry(IDNVAL_INSDIR, dir, len, IDN_GLOBAL);
-
- idnLogPrintf(idn_log_level_trace, "idnGetInstallDir: %-.100s\n",
- (v == TRUE) ? dir : "<none>");
- return (v);
-}
+++ /dev/null
-/*
- * hook.c - Hooking Asynchronous Completion
- */
-
-/*
- * Copyright (c) 2000,2002 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-#include <windows.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "wrapcommon.h"
-
-/*
- * Hook Managements
- */
-
-static HHOOK hookHandle = NULL ;
-
-typedef struct _HOOK *HOOKPTR;
-
-typedef struct _HOOK {
- HOOKPTR prev;
- HOOKPTR next;
- idn_resconf_t ctx;
- HWND hWnd;
- u_int wMsg;
- char FAR *pBuf;
-} HOOKREC;
-
-static HOOKREC hookList = { 0 } ;
-
-static void
-hookListInit(void) {
- if (hookList.prev == NULL || hookList.next == NULL) {
- hookList.prev = &hookList;
- hookList.next = &hookList;
- }
-}
-
-static HOOKPTR
-hookListSearch(HWND hWnd, u_int wMsg) {
- HOOKPTR hp;
-
- for (hp = hookList.next ; hp != &hookList ; hp = hp->next) {
- if (hp->hWnd == hWnd && hp->wMsg == wMsg) {
- return (hp);
- }
- }
- return (NULL);
-}
-
-static BOOL
-hookListAppend(HWND hWnd, u_int wMsg, char FAR *buf, idn_resconf_t ctx) {
- HOOKPTR hp, prev, next;
-
- if ((hp = (HOOKPTR)malloc(sizeof(HOOKREC))) == NULL) {
- idnPrintf("cannot create hook record\n");
- return (FALSE);
- }
- memset(hp, 0, sizeof(*hp));
-
- hp->ctx = ctx;
- hp->hWnd = hWnd;
- hp->wMsg = wMsg;
- hp->pBuf = buf;
-
- prev = hookList.prev;
- next = prev->next;
- prev->next = hp;
- next->prev = hp;
- hp->next = next;
- hp->prev = prev;
-
- return (TRUE);
-}
-
-static void
-hookListDelete(HOOKPTR hp)
-{
- HOOKPTR prev, next;
-
- prev = hp->prev;
- next = hp->next;
- prev->next = next;
- next->prev = prev;
-
- free(hp);
-}
-
-static void
-hookListDone(void)
-{
- HOOKPTR hp;
-
- while ((hp = hookList.next) != &hookList) {
- hookListDelete(hp);
- }
-}
-
-/*
- * idnHookInit - initialize Hook Management
- */
-void
-idnHookInit(void) {
- hookListInit();
-}
-
-/*
- * idnHookDone - finalize Hook Management
- */
-void
-idnHookDone(void) {
- if (hookHandle != NULL) {
- UnhookWindowsHookEx(hookHandle);
- hookHandle = NULL;
- }
- hookListDone();
-}
-
-/*
- * hookProc - hookprocedure, used as WH_GETMESSAGE hook
- */
-LRESULT CALLBACK
-hookProc(int nCode, WPARAM wParam, LPARAM lParam) {
- MSG *pMsg;
- HOOKPTR pHook;
- struct hostent *pHost;
- char nbuff[256];
- char hbuff[256];
-
- if (nCode < 0) {
- return (CallNextHookEx(hookHandle, nCode, wParam, lParam));
- } else if (nCode != HC_ACTION) {
- return (0);
- }
- if ((pMsg = (MSG *)lParam) == NULL) {
- return (0);
- }
- if ((pHook = hookListSearch(pMsg->hwnd, pMsg->message)) == NULL) {
- return (0);
- }
-
- /*
- * Convert the Host Name
- */
- pHost = (struct hostent *)pHook->pBuf;
- idnPrintf("AsyncComplete Resulting <%s>\n",
- dumpName(pHost->h_name, hbuff, sizeof(hbuff)));
- if (idnConvRsp(pHook->ctx, pHost->h_name,
- nbuff, sizeof(nbuff)) == TRUE) {
- idnPrintf("AsyncComplete Converted <%s>\n",
- dumpName(nbuff, hbuff, sizeof(hbuff)));
- strcpy(pHost->h_name, nbuff);
- }
-
- /*
- * Delete target
- */
- hookListDelete(pHook);
-
- return (0);
-}
-
-/*
- * idnHook - hook async. completion message
- */
-BOOL
-idnHook(HWND hWnd, u_int wMsg, char FAR *buf, idn_resconf_t ctx)
-{
- if (hookHandle == NULL) {
- hookHandle = SetWindowsHookEx(WH_GETMESSAGE, hookProc,
- NULL, GetCurrentThreadId());
- }
- if (hookHandle == NULL) {
- idnPrintf("idnHook: cannot set hook\n");
- return (FALSE);
- }
- if (hookListAppend(hWnd, wMsg, buf, ctx) != TRUE) {
- return (FALSE);
- }
- return (TRUE);
-}
+++ /dev/null
-#
-# Makefile for WinSock Wrapper (common part)
-#
-
-# 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, 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) 2000-2002 Japan Network Information Center. All rights reserved."
-#
-# 4. The name of JPNIC may not 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.
-
-!include <win32.mak>
-
-SYSLIBS = $(libcdll) kernel32.lib advapi32.lib user32.lib
-
-#
-# Files to use
-#
-
-HDRS = wrapcommon.h
-SRCS = printf.c dump.c checkdll.c encoding.c convert.c hook.c
-OBJS = printf.obj dump.obj checkdll.obj encoding.obj convert.obj hook.obj
-LIBS = ..\..\lib\idnkit.lib ..\..\win\iconv.lib
-
-cflags = $(cflags) -I..\..\include
-
-#
-# Targets to Build
-#
-
-TARGETS = wrapcommon.lib
-
-all : $(TARGETS)
-
-wrapcommon.lib : $(OBJS)
- -del wrapcommon.lib
- lib /out:wrapcommon.lib $(OBJS)
-
-install :
-
-clean : force
- -del *.obj
- -del *.lib
- -del *.exp
-
-#
-# Dependencies
-#
-
-printf.obj : printf.c $(HDRS)
- $(cc) $(cflags) $(cvarsdll) -DDEBUG $*.c
-
-dump.obj : dump.c $(HDRS)
- $(cc) $(cflags) $(cvarsdll) -DDEBUG $*.c
-
-checkdll.obj : checkdll.c $(HDRS)
- $(cc) $(cflags) $(cvarsdll) -DDEBUG $*.c
-
-encoding.obj : encoding.c $(HDRS)
- $(cc) $(cflags) $(cvarsdll) -DDEBUG $*.c
-
-convert.obj : convert.c $(HDRS)
- $(cc) $(cflags) $(cvarsdll) -DDEBUG $*.c
-
-hook.obj : hook.c $(HDRS)
- $(cc) $(cflags) $(cvarsdll) -DDEBUG $*.c
-
-force :
-
+++ /dev/null
-/*
- * printf.c - printf like debug print function
- */
-
-/*
- * Copyright (c) 2000,2002 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-#include <windows.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <process.h>
-
-#include "wrapcommon.h"
-
-/*
- * Debug Tracer for DLL
- */
-
-static char logfile_name[256];
-static int log_level = -1;
-static char log_header[30];
-
-void
-idnPrintf(char *fmt, ...) {
- va_list arg_ptr;
- FILE *fp;
- char msg[512];
-
- if (log_level < 0 || logfile_name[0] == '\0')
- return;
-
- va_start(arg_ptr, fmt);
- vsprintf(msg, fmt, arg_ptr);
- va_end(arg_ptr);
-
- if ((fp = fopen(logfile_name, "a")) != NULL) {
- fputs(log_header, fp);
- fputs(msg, fp);
- fclose(fp);
- }
-}
-
-void
-idnLogPrintf(int level, char *fmt, ...) {
- va_list arg_ptr;
- FILE *fp;
- char msg[512];
-
- if (level > log_level || logfile_name[0] == '\0')
- return;
-
- va_start(arg_ptr, fmt);
- vsprintf(msg, fmt, arg_ptr);
- va_end(arg_ptr);
-
- if ((fp = fopen(logfile_name, "a")) != NULL) {
- fputs(log_header, fp);
- fputs(msg, fp);
- fclose(fp);
- }
-}
-
-static void
-log_proc(int level, const char *msg) {
- FILE *fp;
-
- if (log_level < 0 || logfile_name[0] == '\0')
- return;
-
- if ((fp = fopen(logfile_name, "a")) != NULL) {
- fputs(msg, fp);
- fclose(fp);
- }
-}
-
-void
-idnLogInit(const char *title) {
- log_level = idnGetLogLevel();
- /* If log file is not stored in the registry, don't do logging. */
- if (idnGetLogFile(logfile_name, sizeof(logfile_name)) == FALSE) {
- log_level = -1;
- }
- sprintf(log_header, "%08x %-.16s: ", getpid(), title);
- idn_log_setproc(log_proc);
- idn_log_setlevel(log_level < 0 ? 0 : log_level);
-}
-
-void
-idnLogReset(void) {
- idn_log_setproc(log_proc);
-}
-
-void
-idnLogFinish(void) {
- idn_log_setproc(NULL);
- /* idn_log_setlevel(0); */
-}
+++ /dev/null
-/*
- * wrapcommon.h
- */
-
-/*
- * Copyright (c) 2000,2002 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-#ifndef _WRAPCOMMON_H
-#define _WRAPCOMMON_H
-
-#include <idn/res.h>
-#include <idn/log.h>
-#include <idn/version.h>
-
-#define WRAPPER_EXPORT extern __declspec(dllexport)
-
-extern void idnPrintf(char *fmt, ...);
-extern void idnLogPrintf(int level, char *fmt, ...);
-extern void idnLogInit(const char *title);
-extern void idnLogReset(void);
-extern void idnLogFinish(void);
-
-extern char *dumpAddr(const char FAR *addr, int len, char *buff, size_t size);
-extern char *dumpHost(const struct hostent FAR *hp, char *buff, size_t size);
-extern char *dumpName(const char *name, char *buff, size_t size);
-
-extern int idnEncodeWhere(void);
-
-#define IDN_ENCODE_ALWAYS 0
-#define IDN_ENCODE_CHECK 1
-#define IDN_ENCODE_ONLY11 2
-#define IDN_ENCODE_ONLY20 3
-
-extern BOOL idnGetPrgEncoding(char *enc, size_t len);
-extern BOOL idnGetLogFile(char *file, size_t len);
-
-extern int idnGetLogLevel(void); /* 0 : fatal */
- /* 1 : error */
- /* 2 : warning */
- /* 3 : info */
- /* 4 : trace */
- /* 5 : dump */
-extern int idnGetInstallDir(char *dir, size_t len);
-
-extern idn_resconf_t idnConvInit(void);
-extern void idnConvDone(idn_resconf_t ctx);
-
-extern BOOL idnWinsockVersion(const char *version);
-extern HINSTANCE idnWinsockHandle(void);
-extern idn_resconf_t idnGetContext(void);
-
-/*
- * Converting Request/Response
- */
-
-extern BOOL idnConvReq(idn_resconf_t ctx, const char FAR *from,
- char FAR *to, size_t tolen);
-extern BOOL idnConvRsp(idn_resconf_t ctx, const char FAR *from,
- char FAR *to, size_t tolen);
-
-/*
- * Hook for Asynchronouse Query
- */
-
-extern void idnHookInit(void);
-extern void idnHookDone(void);
-extern BOOL idnHook(HWND hWnd, u_int wMsg, char FAR *buf, idn_resconf_t ctx);
-
-#endif /* _WRAPCOMMON_H */
+++ /dev/null
-# $Id: idnconf.tcl,v 1.1 2003/06/04 00:27:42 marka Exp $
-#
-# idnconf.tcl - configure idn wrapper
-#
-
-#############################################################################
-# Copyright (c) 2000,2002 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) 2000-2002 Japan Network Information Center. All rights reserved."
-#
-# 4. The name of JPNIC may not 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.
-#############################################################################
-
-global configFile configBack
-global registryKey registryEnc registryDef
-global filesCpy filesRen filesDel
-
-# idnkit version
-set version "1.0"
-
-set configFile "idnconf.lst" ;# list of wrapped program
-set configBack "idnconf.bak" ;# backup of previous data
-
-set serverKey "HKEY_LOCAL_MACHINE\\Software\\JPNIC\\IDN"
-set serverLogLevel LogLevel
-set serverLogLevelDef -1
-set serverLogLevelNone -1
-set serverLogFile LogFile
-set serverLogFileDef {C:\idn_wrapper.log}
-set serverConfFile ConfFile
-
-set perprogKey "HKEY_LOCAL_MACHINE\\Software\\JPNIC\\IDN\\PerProg\\"
-set perprogEnc Encoding
-set perprogDef Default
-
-set logFileNameDef idn_wrapper.log
-set confFileNameDef idn.conf
-
-set filesCpy11 { "wsock32.dll" }
-set filesCpy20 { "wsock32.dll" "ws2_32.dll" }
-set filesDel11 { "wsock32.dll" }
-set filesDel20 { "wsock32.dll" "ws2_32.dll" }
-
-set local_dll 0
-
-########################################################################
-#
-# OS version check
-#
-
-proc get_os_version {} {
- global os_version tcl_platform
-
- if {[llength [info globals os_version]] > 0} {
- return $os_version
- }
-
- switch -- $tcl_platform(os) {
- "Windows 95" {
- switch -- $tcl_platform(osVersion) {
- 4.0 {
- set os_version {Windows 95}
- }
- 4.10 {
- set os_version {Windows 98}
- }
- 4.90 {
- set os_version {Windows Me}
- }
- }
- }
- "Windows NT" {
- switch -- $tcl_platform(osVersion) {
- 3.51 -
- 4.0 {
- set os_version {Windows NT}
- }
- 5.0 {
- set os_version {Windows 2000}
- }
- default {
- # XP or .NET
- set os_version {Windows XP}
- }
- }
- }
- "Win32s" {
- error "idn wrapper does not support Windows 3.1"
- }
- default {
- set os_version "Unknown"
- }
- }
- set os_version
-}
-
-proc support_dll_redirection {} {
- global dll_redirection
-
- if {[llength [info globals dll_redirection]] > 0} {
- return $dll_redirection
- }
-
- switch -- [get_os_version] {
- {Windows 95} -
- {Windows NT} {
- # cannot force local DLL reference by .local file.
- set dll_redirection 0
- }
- default {
- set dll_redirection 1
- }
- }
- set dll_redirection
-}
-
-########################################################################
-#
-# handling pathname
-#
-
-proc getExeName { prg } {
- set elem [file split $prg]
- set leng [expr {[llength $elem] - 1}]
- set name [lindex $elem $leng]
- set exe [file rootname $name]
- return $exe
-}
-
-proc getDirName { prg } {
- file dirname $prg
-}
-
-proc getSystemDir {} {
- global env
- switch -- [get_os_version] {
- "Windows 95" -
- "Windows 98" -
- "Windows Me" {
- set sysDir $env(windir)/system
- }
- default {
- set sysDir $env(SystemRoot)/system32
- }
- }
- return $sysDir
-}
-
-########################################################################
-#
-# loadList / saveList
-#
-# loadList - load list of wrapped executables from $configFile
-# saveList - save list of wrapped executables into $configFile
-#
-
-proc loadList {} {
-
- global configFile configBack
-
- if { [file exists $configFile] } {
- file copy -force $configFile $configBack
- }
-
- set aList {}
- set fd [open $configFile {CREAT RDONLY}]
- while { ! [eof $fd]} {
- set line [gets $fd]
- if { [string length $line] > 0} {
- lappend aList "$line"
- }
- }
- close $fd
- return $aList
-}
-
-proc saveList { aList } {
- global configFile
- file delete -force $configFile
- set fd [open $configFile {CREAT WRONLY}]
- foreach e $aList {
- puts $fd $e
- }
- close $fd
-}
-
-########################################################################
-#
-# putList / getList - set/get list to/from listbox
-#
-
-proc putList { lb aList } {
- foreach e $aList {
- $lb insert end $e
- }
-}
-
-proc getList { lb } {
- $lb get 0 end
-}
-
-########################################################################
-#
-# checkList / appendList / deleteList - check / append / delete program from/to listbox
-#
-
-proc checkList { lb prg } {
- set cnt 0
- set lst [getList $lb]
-
- foreach n $lst {
- if { [string compare $prg $n] == 0 } {
- incr cnt
- }
- }
- return $cnt
-}
-
-proc appendList { lb prg } {
-
- if { [checkList $lb $prg] == 0 } {
- $lb insert end $prg
- }
-}
-
-proc deleteList { lb prg } {
- set cnt 0
- set lst [getList $lb]
-
- foreach n $lst {
- if { [string compare $n $prg] == 0 } {
- $lb delete $cnt
- }
- incr cnt
- }
-}
-
-########################################################################
-#
-# registry operations
-#
-
-proc regGetEncode { prg } {
-
- global perprogKey perprogEnc perprogDef
-
- if { [string compare $prg "" ] == 0 } {
- return $perprogDef
- }
-
- if {![isWindows]} {
- return $perprogDef
- }
- package require registry 1.0
-
- set name [getExeName $prg]
- set key $perprogKey$name
-
- if { [catch {set enc [registry get $key $perprogEnc]} err] } {
- return $perprogDef
- }
- if { [string compare $enc ""] == 0 } {
- return $perprogDef
- }
- return $enc
-}
-
-proc regSetEncode { prg enc } {
-
- global perprogKey perprogEnc perprogDef
-
- if {![isWindows]} {
- return 1
- }
-
- package require registry 1.0
-
- set name [getExeName $prg]
- set key $perprogKey$name
-
- if { [string compare $enc $perprogDef] == 0 } {
- set enc ""
- }
- if { [catch {registry set $key $perprogEnc $enc sz} ] } {
- return 2
- }
- return 0
-}
-
-proc regGetLogLevel {} {
- global serverKey serverLogLevel serverLogLevelDef
- regGetValue $serverKey $serverLogLevel $serverLogLevelDef
-}
-
-proc regSetLogLevel {level} {
- global serverKey serverLogLevel
- regSetValue $serverKey $serverLogLevel $level dword
-}
-
-proc regGetLogFile {} {
- global serverKey serverLogFile serverLogFileDef
- set file [regGetValue $serverKey $serverLogFile $serverLogFileDef]
- if {[catch {file attributes $file -longname} lfile]} {
- # Maybe $file doesn't exist (yet). Get the longname of
- # directory portion.
- set dir [file dirname $file]
- if {[catch {file attributes $dir -longname} ldir]} {
- set ldir $dir
- }
- set lfile [file join $ldir [file tail $file]]
- }
- file nativename $lfile
-}
-
-proc regSetLogFile {file} {
- global serverKey serverLogFile
- regSetValue $serverKey $serverLogFile [file nativename $file]
-}
-
-proc regGetConfFile {} {
- global serverKey serverConfFile
- set file [regGetValue $serverKey $serverConfFile {}]
- if {[string compare $file {}] == 0} {
- return {}
- }
- if {[catch {file attributes $file -longname} lfile]} {
- # Maybe $file doesn't exist (yet). Get the longname of
- # directory portion.
- set dir [file dirname $file]
- if {[catch {file attributes $dir -longname} ldir]} {
- set ldir $dir
- }
- set lfile [file join $ldir [file tail $file]]
- }
- file nativename $lfile
-}
-
-proc regSetConfFile {file} {
- global serverKey serverConfFile
- regSetValue $serverKey $serverConfFile [file nativename $file]
-}
-
-proc regGetWhere {} {
- global serverKey
- regGetValue $serverKey Where 0
-}
-
-proc regSetWhere {where} {
- global serverKey
- regSetValue $serverKey Where $where dword
-}
-
-proc regGetValue {key name default} {
- if {![isWindows]} {
- puts "--regGetValue $key $name"
- return $default
- }
- package require registry 1.0
-
- if {[catch {registry get $key $name} value]} {
- return $default
- }
- if {[string compare $value {}] == 0} {
- return $default
- }
- return $value
-}
-
-proc regSetValue {key name value {type sz}} {
- if {![isWindows]} {
- puts "--regSetValue $key $name $value"
- return 1
- }
-
- package require registry 1.0
-
- if {[catch {registry set $key $name $value $type}]} {
- return 2
- }
- return 0
-}
-
-########################################################################
-#
-# install / uninstall DLL s
-#
-
-proc fileInstall { prg } {
-
- global env
- global filesCpy11 filesCpy20
-
- if {![isWindows]} {
- return 1
- }
-
- switch -- [get_os_version] {
- "Windows 95" -
- "Windows 98" -
- "Windows Me" {
- set winDir $env(windir)
- set sysDir $winDir/system
- set filesCpy $filesCpy11
- }
- default {
- set winDir $env(SystemRoot)
- set sysDir $winDir/system32
- set filesCpy $filesCpy20
- }
- }
-
- set toDir [getDirName $prg ]
-
- foreach n $filesCpy {
- file copy -force $n $toDir
- }
- return 0
-}
-
-proc fileRemove { prg } {
-
- global filesDel11 filesDel20
-
- if {![isWindows]} {
- return 1
- }
-
- switch -- [get_os_version] {
- "Windows 95" {
- set filesDel $filesDel11
- }
- "Windows 98" -
- "Windows Me" {
- set filesDel $filesDel20
- }
- default {
- set filesDel $filesDel20
- }
- }
-
- set fromDir [getDirName $prg ]
-
- foreach n $filesDel {
- file delete -force $fromDir/$n
- }
- return 0
-}
-
-########################################################################
-#
-# Wrap/Unwrap program
-#
-
-proc execWrap { pw lb dlg prg enc } {
-
- set prgName [$prg get]
- set encName [$enc get]
-
- # Make sure the program name is not empty
- if {[string compare $prgName {}] == 0} {
- confErrorDialog $dlg "Program must be specified.\nClick \"Browse..\" button for browsing."
- return
- }
-
- # It is dangerous to wrap programs in the system directory.
- set prgdir [file nativename [getDirName $prgName]]
- set sysdir [file nativename [getSystemDir]]
- if {[string compare -nocase $prgdir $sysdir] == 0} {
- tk_messageBox -icon error -type ok -title "Directory Error" \
- -parent $dlg \
- -message "Cannot wrap applications in the system directory.\nPlease copy the EXE file to elsewhere and wrap the copied one."
- destroy $dlg
- return 1
- }
-
- # Okay, copy the wrapper DLLs.
- if { [fileInstall $prgName] } {
- tk_messageBox -icon warning -type ok \
- -title "Warning" \
- -message "Cannot install DLLs" \
- -parent $dlg
- destroy $dlg
- return 1
- }
- if { [regSetEncode $prgName $encName] } {
- tk_messageBox -icon warning -type ok \
- -title "Warning" \
- -message "Cannot set encoding" \
- -parent $dlg
- fileRemove $prgName
- destroy $dlg
- return 2
- }
-
- # if local flag is on, create $prgName.local.
- global local_dll
- if {$local_dll} {
- create_dot_local $prgName $dlg
- } else {
- remove_dot_local $prgName $dlg
- }
-
- if { [checkList $lb $prgName] == 0 } {
- appendList $lb $prgName
- }
- saveList [getList $lb]
- destroy $dlg
-}
-
-proc execUnwrap { pw lb dlg prg } {
-
- set prgName [$prg get]
-
- if {[support_dll_redirection] && [file exists $prgName.local]} {
- set ans [tk_messageBox -icon question -type yesno \
- -title "Confirmation" \
- -message "Also remove $prgName.local file?" \
- -parent $dlg]
- if {[string compare $ans yes] == 0} {
- remove_dot_local $prgName $dlg
- }
- }
-
- if { [checkList $lb $prgName] == 1 } {
- fileRemove $prgName
- }
- deleteList $lb $prgName
- saveList [getList $lb]
- destroy $dlg
-}
-
-proc create_dot_local {path {parent .}} {
- set dotlocal $path.local
- if {[file exists $dotlocal]} {
- return 0
- }
- if {[catch {open $dotlocal w} fh]} {
- tk_messageBox -icon warning -type ok -title "Warning" \
- -message "Cannot create $dotlocal" -parent $parent
- return -1
- }
- close $fh
- return 0
-}
-
-proc remove_dot_local {path {parent .}} {
- set dotlocal $path.local
- if {[file exists $dotlocal] && [catch {file delete $dotlocal}]} {
- tk_messageBox -icon warning -type ok -title "Warning" \
- -message "Cannot remove $dotlocal" -parent $parent
- return -1
- }
- return 0
-}
-
-########################################################################
-#
-# dialog for Wrap / Unwrap
-#
-
-proc syncEncode { v i op } {
- global prgName encName
- set enc [regGetEncode $prgName]
- if { [string compare $encName $enc] != 0 } {
- set encName $enc
- }
-}
-
-proc confBrowse { p ePrg eEnc } {
-
- set types {
- { "Executable" .exe }
- }
-
- set file [tk_getOpenFile -filetypes $types -parent $p ]
-
- if { [string compare $file ""] == 0 } {
- return
- }
- set enc [regGetEncode $file]
- $ePrg delete 0 end
- $ePrg insert 0 $file
-}
-
-proc confWrap { pw lb } {
-
- global prgName encName local_dll
-
- set idx [$lb curselection]
- if { [llength $idx] == 1 } {
- set prg [$lb get $idx]
- set local_dll [file exists $prg.local]
- } else {
- set prg ""
- }
-
- set top .wrap
- toplevel $top
- grab $top
- wm title $top "idn wrapper - Wrap Executable"
-
- frame $top.f1 -bd 1 -relief raised
- frame $top.f2 -bd 1 -relief raised
- pack $top.f1 -side top -fill x -expand on
- pack $top.f2 -side top -fill x -expand on
-
- frame $top.f1.f
- pack $top.f1.f -fill both -expand on -padx 4 -pady 4
-
- set w $top.f1.f
- label $w.prgtitle -text "Program:"
- label $w.enctitle -text "Encoding:"
-
- entry $w.prgname -relief sunken -width 56 -textvariable prgName
- entry $w.encname -relief sunken -width 8 -textvariable encName
- set w_prgname $w.prgname
- set w_encname $w.encname
- button $w.browse -text "Browse.." \
- -command [list confBrowse $w $w_prgname $w_encname]
-
- frame $w.rbf
- radiobutton $w.rbf.encdef -text "Default" -variable encName \
- -value "Default"
- radiobutton $w.rbf.encutf -text "UTF-8" -variable encName \
- -value "UTF-8"
- pack $w.rbf.encdef $w.rbf.encutf -side left -padx 4
-
- grid $w.prgtitle -row 0 -column 0 -sticky e
- grid $w.enctitle -row 1 -column 0 -sticky e
- grid $w.prgname -row 0 -column 1 -sticky we -pady 4 -padx 2 -columnspan 2
- grid $w.browse -row 0 -column 3 -sticky w -pady 4 -padx 4
- grid $w.encname -row 1 -column 1 -sticky we -pady 4 -padx 2
- grid $w.rbf -row 1 -column 2 -sticky w -padx 2
- if {[support_dll_redirection]} {
- checkbutton $w.local -text "Force local DLL reference" \
- -variable local_dll
- grid $w.local -row 2 -column 1 -sticky w -padx 4 -pady 4
- }
- grid columnconfig $w 1 -weight 1 -minsize 20
- grid columnconfig $w 2 -weight 2 -minsize 20
-
- trace variable prgName w syncEncode
-
- $w.prgname delete 0 end
- $w.prgname insert 0 $prg
-
- focus $w.prgname
-
- set w $top.f2
- button $w.wrap -text "Wrap" \
- -command [list execWrap $pw $lb $top $w_prgname $w_encname]
- button $w.cancel -text "Cancel" \
- -command [list destroy $top]
- pack $w.cancel -side right -fill y -padx 12 -pady 4
- pack $w.wrap -side right -fill y -padx 12 -pady 4
-
- tkwait window $top
-}
-
-proc confUnwrap { pw lb } {
-
- set idx [$lb curselection]
- if { [llength $idx] != 1 } {
- tk_messageBox -icon warning -type ok \
- -title "Warning" \
- -message "first, select unwrapping executable" \
- -parent $pw
- return 0
- }
- set prg [$lb get $idx]
- if { [string length $prg] == 0 } {
- tk_messageBox -icon warning -type ok \
- -title "Warning" \
- -message "first, select unwrapping executable" \
- -parent $pw
- return 0
- }
-
- set top .unwrap
- toplevel $top
- grab $top
- wm title $top "idn wrapper - Unwrap Executable"
-
- frame $top.f1 -bd 1 -relief raised
- frame $top.f2 -bd 1 -relief raised
- pack $top.f2 -side bottom -fill x
- pack $top.f1 -side bottom -fill x -expand on
-
- frame $top.f1.f
- pack $top.f1.f -padx 4 -pady 4 -fill both -expand on
- set w $top.f1.f
- label $w.prgtitle -text "Program:"
- entry $w.prgname -relief sunken -width 56 -textvariable prgName
- $w.prgname delete 0 end
- $w.prgname insert 0 $prg
-
- set w_prgname $w.prgname
-
- grid $w.prgtitle -row 0 -column 0 -sticky w
- grid $w.prgname -row 0 -column 1 -sticky we -pady 4
- grid columnconfig $w 1 -weight 1 -minsize 20
-
- set w $top.f2
- button $w.wrap -text "Unwrap" \
- -command [list execUnwrap $pw $lb $top $w_prgname]
- button $w.cancel -text "Cancel" \
- -command [list destroy $top]
-
- pack $w.cancel -side right -padx 12 -pady 6
- pack $w.wrap -side right -padx 12 -pady 6
-
- focus $w.wrap
- tkwait window $top
-}
-
-proc unwrapAll {pw lb} {
- set ans [tk_messageBox -type yesno -default no -icon question \
- -parent $pw -title {idn wrapper Configuration} \
- -message {Really unwrap all programs?}]
- if {[string compare $ans yes] != 0} {
- return
- }
-
- foreach prog [$lb get 0 end] {
- fileRemove $prog
- }
-
- if {[support_dll_redirection]} {
- set delete_type yes
- foreach prog [$lb get 0 end] {
- if {![file exists $prog.local]} continue
- switch -- $delete_type {
- yes -
- no {
- set delete_type [dotLocalDialog $prog $delete_type]
- }
- }
- switch -- $delete_type {
- yes -
- yesall {
- remove_dot_local $prog $pw
- }
- }
- }
- }
-
- $lb delete 0 end
- saveList {}
-}
-
-proc rewrapAll {pw lb} {
- set ans [tk_messageBox -type yesno -default yes -icon question \
- -parent $pw -title {idn wrapper Configuration} \
- -message {Really rewrap all programs?}]
- if {[string compare $ans yes] != 0} {
- return
- }
- foreach prog [$lb get 0 end] {
- fileInstall $prog
- }
-}
-
-proc confLog {pw} {
- global _logLevel _logFile
-
- set top .log
- catch {destroy $top}
- toplevel $top
- wm title $top "idn wrapper - Log Configuration"
- # wm transient $top $pw
-
- set _logLevel [regGetLogLevel]
- set _logFile [regGetLogFile]
-
- frame $top.f1 -bd 1 -relief raised
- frame $top.f2 -bd 1 -relief raised
- pack $top.f2 -side bottom -fill x
- pack $top.f1 -side top -fill both -expand on
-
- set w $top.f1
- label $w.lv_l -text "Log Level:"
- frame $w.lv_v
- global serverLogLevelNone
- set i 0
- foreach {lvl text} [list $serverLogLevelNone None \
- 0 Fatal 1 Error 2 Warning 3 Info 4 Trace] {
- radiobutton $w.lv_v.btn$i -text $text -value $lvl -variable _logLevel
- pack $w.lv_v.btn$i -side left -padx 3
- incr i
- }
- label $w.ld_l -text "Log File:"
- frame $w.ld_v
- entry $w.ld_v.e -width 40 -textvariable _logFile
- focus $w.ld_v.e
- button $w.ld_v.b -text "Browse.." -command [list selectLog $top $w.ld_v.e]
- pack $w.ld_v.b -side right -fill y -padx 6
- pack $w.ld_v.e -side left -fill both -expand yes
- #label $w.lo_l -text "Log Operation:"
- frame $w.lo_v
- button $w.lo_v.show -text "View" -command [list showLog $top]
- button $w.lo_v.delete -text "Delete" -command [list deleteLog $top]
- pack $w.lo_v.show $w.lo_v.delete -side left -padx 4
-
- grid $w.lv_l -row 0 -column 0 -sticky e -padx 4
- grid $w.ld_l -row 1 -column 0 -sticky e -padx 4
- #grid $w.lo_l -row 2 -column 0 -sticky e -padx 4
- grid $w.lv_v -row 0 -column 1 -sticky w -padx 4 -pady 4
- grid $w.ld_v -row 1 -column 1 -sticky we -padx 4 -pady 4
- grid $w.lo_v -row 2 -column 1 -sticky w -padx 4 -pady 4
-
- set w $top.f2
- button $w.ok -text "OK" -command [list configureLog $top]
- button $w.cancel -text "Cancel" -command [list destroy $top]
- pack $w.cancel -side right -padx 12 -pady 6
- pack $w.ok -side right -padx 12 -pady 6
-}
-
-proc configureLog {top} {
- global _logLevel _logFile
-
- if {$_logLevel != [regGetLogLevel] ||
- [string compare $_logFile [regGetLogFile]] != 0} {
- set dir [file dirname $_logFile]
- if {[string compare $dir {}]} {
- if {![file exists $dir]} {
- confErrorDialog $top "Directory $dir doesn't exist"
- return
- } elseif {![file isdirectory $dir]} {
- confErrorDialog $top "$dir is not a directory"
- return
- }
- }
- regSetLogLevel $_logLevel
- regSetLogFile $_logFile
- tk_messageBox -type ok -default ok -icon info -parent $top \
- -title "idn wrapper Configuration" \
- -message "Changing log level or file does not affect already running processes."
- }
- destroy $top
-}
-
-proc selectLog {top e} {
- global logFileNameDef
- set file [tk_getSaveFile -title {idn wrapper Logfile Selection} \
- -defaultextension .log \
- -filetypes {{{Log Files} .log} {{All Files} *}} \
- -initialfile $logFileNameDef \
- -parent $top]
- if {[string compare $file {}]} {
- $e delete 0 end
- $e insert insert $file
- }
-}
-
-proc showLog {top} {
- global _logFile
- if {[catch {exec notepad.exe $_logFile &} r]} {
- confErrorDialog $top "Cannot execute notepad"
- }
-}
-
-proc deleteLog {top} {
- global _logFile
- set ans [tk_messageBox -type yesno -default no -icon question \
- -parent $top -title "idn wrapper Configuration" \
- -message "Really delete $_logFile?"]
- if {[string compare $ans yes] == 0} {
- file delete $_logFile
- }
-}
-
-########################################################################
-#
-# dialog for .local deletion
-#
-
-proc dotLocalDialog {path {default yes}} {
- set parent .
- set dlg .dotlocaldlg
- catch {destroy $dlg}
- toplevel $dlg
-
- wm iconname $dlg Dialog
- wm title $dlg Confirmation
- wm transient $dlg $parent
- wm protocol $dlg WM_DELETE_WINDOW {}
-
- frame $dlg.f1 -bd 1 -relief raised
- frame $dlg.f2 -bd 1 -relief raised
- pack $dlg.f1 -side top -fill x -expand on -ipadx 2m -ipady 4m
- pack $dlg.f2 -side top -fill x -ipadx 2m
-
- label $dlg.f1.bm -bitmap question -bd 0
- label $dlg.f1.msg -text "Remove $path.local?" -wraplength 10c
- pack $dlg.f1.bm -side left -padx 3m -pady 2m
- pack $dlg.f1.msg -side left -padx 2m -pady 2m
-
- global dotlocal_selection
- foreach {btn lbl} {yes Yes no No yesall {Yes to All} noall {No to All}} {
- set bw $dlg.f2.btn$btn
- button $bw -text $lbl -default normal \
- -command [list set dotlocal_selection $btn]
- if {[string compare $default $btn] == 0} {
- $bw configure -default active
- focus $bw
- }
- bind $bw <Return> {%W flash; %W invoke}
- pack $bw -side left -padx 3m -pady 2m
- }
-
- grab $dlg
- ::tk::PlaceWindow $dlg widget $parent
-
- vwait dotlocal_selection
- destroy $dlg
- return $dotlocal_selection
-}
-
-########################################################################
-#
-# dialog for advanced configuration
-#
-
-proc advancedConf {pw} {
- set top .adv
- catch {destroy $top}
- toplevel $top
- wm title $top "idn wrapper - Advanced Configuration"
-
- global _mdnOperation _confFile
- set _mdnOperation [regGetWhere]
- set _confFile [regGetConfFile]
-
- foreach f {f1 f2 f3} {
- frame $top.$f -bd 1 -relief raised
- pack $top.$f -side top -fill x
- }
-
- set f $top.f1
- label $f.lbl -text {IDN Wrapping Mode}
- set w $f.f
- frame $w
- foreach {rb val txt} [list \
- rb1 0 {Wrap both WINSOCK 1.1 and WINSOCK 2.0} \
- rb2 2 {Wrap only WINSOCK 1.1} \
- rb3 3 {Wrap only WINSOCK 2.0} \
- rb4 1 "Wrap only WINSOCK2.0 if it exists.\nOtherwise wrap only WINSOCK1.1"] {
- radiobutton $w.$rb -text $txt -variable _mdnOperation -value $val \
- -anchor w -justify left
- pack $w.$rb -side top -fill x -pady 1
- }
- pack $f.lbl -side top -fill x -pady 4
- pack $w -side top -fill both -padx 20 -pady 10
-
- set f $top.f2
- label $f.lbl -text {IDN Configuration}
- pack $f.lbl -side top -fill x -pady 6
-
- set w $f.f
- frame $w
- pack $w -side top -fill both -padx 10 -pady 6
- label $w.l1 -text {Config File:}
- #label $w.l2 -text {Config Operation:}
- entry $w.e -width 40 -textvariable _confFile
- focus $w.e
- button $w.br -text "Browse.." -command [list selectConf $top $w.e]
- button $w.b -text Edit -command [list editConf $top]
- grid $w.l1 -row 0 -column 0 -sticky e -padx 4
- #grid $w.l2 -row 1 -column 0 -sticky e -padx 4
- grid $w.e -row 0 -column 1 -sticky we -padx 4 -pady 4
- grid $w.b -row 1 -column 1 -sticky w -padx 4 -pady 4
- grid $w.br -row 0 -column 2 -sticky w -padx 4 -pady 4
-
- set w $top.f3
- button $w.ok -text "OK" -command [list advConf $top]
- button $w.cancel -text "Cancel" -command [list destroy $top]
- pack $w.cancel -side right -padx 12 -pady 8
- pack $w.ok -side right -padx 12 -pady 8
-}
-
-proc editConf {top} {
- global _confFile
- if {[catch {exec notepad.exe $_confFile &} r]} {
- confErrorDialog $top "Cannot execute notepad"
- }
-}
-
-proc selectConf {top e} {
- global confFileNameDef
- set file [tk_getOpenFile -title {idn wrapper Config File Selection} \
- -defaultextension .conf \
- -filetypes {{{Config Files} .conf} {{All Files} *}} \
- -initialfile $confFileNameDef \
- -parent $top]
- if {[string compare $file {}]} {
- $e delete 0 end
- $e insert insert $file
- }
-}
-
-proc advConf {top} {
- global _mdnOperation _confFile
- regSetWhere $_mdnOperation
- regSetConfFile $_confFile
- destroy $top
-}
-
-########################################################################
-#
-# utility
-#
-
-proc confErrorDialog {top message} {
- tk_messageBox -default ok -icon error -parent $top -type ok \
- -title {idn wrapper Configuration Error} -message $message
-}
-
-proc isWindows {} {
- global tcl_platform
- expr {[string compare $tcl_platform(platform) "windows"] == 0}
-}
-
-########################################################################
-#
-# config program start here
-#
-
-wm title . "idn wrapper - Configuration"
-wm iconname . "idn wrapper - Configuration"
-
-
-label .title -bd 1 -relief raised -pady 5 \
- -text "idn wrapper Configuration Program version $version"
-
-frame .left -bd 1 -relief raised
-frame .right -bd 1 -relief raised
-
-frame .lst
-label .lst.title -text "Wrapped Programs" -pady 3
-listbox .lst.list -width 64 -height 16 -setgrid 1 \
- -xscrollcommand ".lst.xscroll set" \
- -yscrollcommand ".lst.yscroll set"
-scrollbar .lst.yscroll -orient vertical -command ".lst.list yview"
-scrollbar .lst.xscroll -orient horizontal -command ".lst.list xview"
-grid .lst.title -row 0 -column 0 -columnspan 2 -sticky news
-grid .lst.list -row 1 -column 0 -sticky news
-grid .lst.xscroll -row 2 -column 0 -sticky news
-grid .lst.yscroll -row 1 -column 1 -sticky news
-grid rowconfig .lst 1 -weight 1
-grid columnconfig .lst 0 -weight 1
-
-frame .btn
-button .btn.wrap -text "Wrap.." -command [list confWrap . .lst.list]
-button .btn.unwrap -text "Unwrap.." -command [list confUnwrap . .lst.list]
-button .btn.unwrapall -text "Unwrap All" -command [list unwrapAll . .lst.list]
-button .btn.rewrapall -text "Rewrap All" -command [list rewrapAll . .lst.list]
-frame .btn.spacing1 -width 1 -height 12 -bd 0
-button .btn.log -text "Log.." -command [list confLog .]
-frame .btn.spacing2 -width 1 -height 12 -bd 0
-button .btn.adv -text "Advanced.." -command [list advancedConf .]
-button .btn.exit -text Exit -command exit
-pack .btn.wrap -side top -fill x -pady 4
-pack .btn.unwrap -side top -fill x -pady 4
-pack .btn.unwrapall -side top -fill x -pady 4
-pack .btn.rewrapall -side top -fill x -pady 4
-pack .btn.spacing1 -side top
-pack .btn.log -side top -fill x -pady 4
-pack .btn.spacing2 -side top
-pack .btn.adv -side top -fill x -pady 4
-pack .btn.exit -side bottom -fill x -pady 4
-
-pack .lst -in .left -padx 4 -pady 4 -fill both -expand on
-pack .btn -in .right -padx 6 -pady 4 -fill both -expand on
-
-pack .title -side top -fill x
-pack .right -side right -fill y
-pack .left -side left -fill y -expand on
-
-#
-# then set current list into listbox
-#
-
-set theList [loadList]
-#saveList $theList
-putList .lst.list $theList
-
-#
-########################################################################
+++ /dev/null
-#
-# Makefile for building mDNS Wrapper Configuration Tool
-#
-
-# 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, 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) 2000-2002 Japan Network Information Center. All rights reserved."
-#
-# 4. The name of JPNIC may not 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.
-
-TARGETS = idnconf.exe
-
-all : $(TARGETS)
-
-idnconf.exe : idnconf.tcl
- freewrap idnconf.tcl
-
-install : $(TARGETS)
- copy idnconf.exe ..\bin
-
-clean : force
- -del idnconf.exe
-
-force :
+++ /dev/null
-#
-# Top Level Makefile for building WINSOCK idn wrapper
-#
-
-# 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, 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) 2000-2002 Japan Network Information Center. All rights reserved."
-#
-# 4. The name of JPNIC may not 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.
-
-all : force
- cd common
- $(MAKE) -f make.wnt all
- cd ..
- cd wsock11
- $(MAKE) -f make.wnt all
- cd ..
- cd wsock20
- $(MAKE) -f make.wnt all
- cd ..
- cd config
- $(MAKE) -f make.wnt all
- cd ..
-
-install : force
- copy ..\win\iconv.dll bin
- copy ..\lib\idnkit.dll bin
- copy ..\lib\idnkitlite.dll bin
- copy ..\map\jp.map bin
- cd common
- $(MAKE) -f make.wnt install
- cd ..
- cd wsock11
- $(MAKE) -f make.wnt install
- cd ..
- cd wsock20
- $(MAKE) -f make.wnt install
- cd ..
- cd config
- $(MAKE) -f make.wnt install
- cd ..
-
-setup : force
- cd bin
- iscc idn_wrapper.iss
- cd ..
-
-clean : force
- cd common
- $(MAKE) -f make.wnt clean
- cd ..
- cd wsock11
- $(MAKE) -f make.wnt clean
- cd ..
- cd wsock20
- $(MAKE) -f make.wnt clean
- cd ..
- cd config
- $(MAKE) -f make.wnt clean
- cd ..
-
-force :
-
+++ /dev/null
-/*
- * dlldef.h
- */
-
-/*
- * 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, 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-#ifndef _DLLDEF_H
-#define _DLLDEF_H
-
-#include "../common/wrapcommon.h"
-
-/*
- * Execution Tracing
- */
-
-extern int procPid;
-
-#ifdef DEBUG
-#define TRACE idnPrintf
-#define FATAL idnPrintf
-#else
-#define TRACE
-#define FATAL idnPrintf
-#endif
-
-/*
- * Stub functions for calling original version.
- */
-extern int PASCAL
-_org_gethostname(char FAR * name, int namelen);
-
-extern struct hostent FAR * PASCAL
-_org_gethostbyname(const char FAR * name);
-
-extern struct hostent FAR * PASCAL
-_org_gethostbyaddr(const char FAR * addr, int len, int type);
-
-extern HANDLE PASCAL
-_org_WSAAsyncGetHostByName(HWND hWnd, u_int wMsg, const char FAR * name,
- char FAR * buf, int buflen);
-extern HANDLE PASCAL
-_org_WSAAsyncGetHostByAddr(HWND hWnd, u_int wMsg, const char FAR * addr,
- int len, int type, char FAR * buf, int buflen);
-
-
-#endif /* _DLLDEF_H */
+++ /dev/null
-/*
- * dllfunc.c - wrapper functions
- */
-
-/*
- * 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, 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-#include <windows.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <process.h>
-
-#include "dlldef.h"
-
-WRAPPER_EXPORT int PASCAL FAR
-gethostname(char FAR * name, int namelen) {
- int ret;
-
- TRACE("ENTER gethostname\n");
- ret = _org_gethostname(name, namelen);
- TRACE("LEAVE gethostname %d <%-.100s>\n", ret, name);
-
- return (ret);
-}
-
-WRAPPER_EXPORT struct hostent FAR * PASCAL FAR
-gethostbyname(const char FAR * name) {
- struct hostent FAR *ret;
- char nbuff[256];
- char hbuff[256];
- BOOL stat;
- idn_resconf_t encodeCtx;
-
- TRACE("ENTER gethostbyname <%-.100s>\n",
- (name != NULL ? name : "NULL"));
-
- encodeCtx = idnGetContext();
-
- if (encodeCtx == NULL) {
- TRACE("gethostbyname: not encode here\n");
- ret = _org_gethostbyname(name);
- } else if (name == NULL) {
- TRACE("gethostbyname: name is NULL\n");
- ret = _org_gethostbyname(name);
- } else {
- stat = idnConvReq(encodeCtx, name, nbuff, sizeof(nbuff));
- if (stat == FALSE) {
- TRACE("idnConvReq failed\n");
- ret = NULL;
- } else {
- TRACE("Converted Name <%s>\n",
- dumpName(nbuff, hbuff, sizeof(hbuff)));
- ret = _org_gethostbyname(nbuff);
- }
- }
-
- if (ret != NULL && encodeCtx != NULL) {
- TRACE("Resulting Name <%s>\n",
- dumpName(ret->h_name, hbuff, sizeof(hbuff)));
- stat = idnConvRsp(encodeCtx, ret->h_name, nbuff,
- sizeof(nbuff));
- if (stat == FALSE) {
- TRACE("Decoding failed - return the name verbatim\n");
- } else {
- TRACE("Converted Back <%s>\n",
- dumpName(nbuff, hbuff, sizeof(hbuff)));
- strcpy(ret->h_name, nbuff);
- }
- }
-
- if (ret == NULL) {
- TRACE("LEAVE gethostbyname NULL\n");
- } else {
- TRACE("LEAVE gethostbyname <%s>\n",
- dumpHost(ret, hbuff, sizeof(hbuff)));
- }
- return (ret);
-}
-
-WRAPPER_EXPORT struct hostent FAR * PASCAL FAR
-gethostbyaddr(const char FAR * addr, int len, int type) {
- struct hostent FAR *ret;
- char nbuff[256];
- char abuff[256];
- char hbuff[256];
- BOOL stat;
- idn_resconf_t encodeCtx;
-
- TRACE("ENTER gethostbyaddr <%s>\n",
- dumpAddr(addr, len, abuff, sizeof(abuff)));
-
- encodeCtx = idnGetContext();
-
- ret = _org_gethostbyaddr(addr, len, type);
-
- if (ret != NULL && encodeCtx != NULL) {
- TRACE("Resulting Name <%s>\n",
- dumpName(ret->h_name, hbuff, sizeof(hbuff)));
- stat = idnConvRsp(encodeCtx, ret->h_name,
- nbuff, sizeof(nbuff));
- if (stat == FALSE) {
- TRACE("Decoding failed - return the name verbatim\n");
- } else {
- TRACE("Converted Back <%s>\n",
- dumpName(nbuff, hbuff, sizeof(hbuff)));
- strcpy(ret->h_name, nbuff);
- }
- }
-
- if (ret == NULL) {
- TRACE("LEAVE gethostbyaddr NULL\n") ;
- } else {
- TRACE("LEAVE gethostbyaddr <%s>\n",
- dumpHost(ret, hbuff, sizeof(hbuff)));
- }
- return (ret);
-}
-
-WRAPPER_EXPORT HANDLE PASCAL FAR
-WSAAsyncGetHostByName(HWND hWnd, u_int wMsg,
- const char FAR * name, char FAR * buf, int buflen)
-{
- HANDLE ret;
- char nbuff[256];
- char hbuff[256];
- idn_resconf_t encodeCtx;
-
- TRACE("ENTER WSAAsyncGetHostByName <%-.100s>\n", name);
-
- encodeCtx = idnGetContext();
-
- if (encodeCtx == NULL || name == NULL) {
- ret = _org_WSAAsyncGetHostByName(hWnd, wMsg, name,
- buf, buflen);
- } else {
- idnHook(hWnd, wMsg, buf, encodeCtx);
- idnConvReq(encodeCtx, name, nbuff, sizeof(nbuff));
- TRACE("Converted Name <%s>\n",
- dumpName(nbuff, hbuff, sizeof(hbuff)));
- ret = _org_WSAAsyncGetHostByName(hWnd, wMsg, nbuff,
- buf, buflen);
- }
-
- TRACE("LEAVE WSAAsyncGetHostByName HANDLE %08x\n", ret);
-
- return (ret);
-}
-
-WRAPPER_EXPORT HANDLE PASCAL FAR
-WSAAsyncGetHostByAddr(HWND hWnd, u_int wMsg, const char FAR * addr,
- int len, int type, char FAR * buf, int buflen)
-{
- HANDLE ret;
- char abuff[256];
- idn_resconf_t encodeCtx;
-
- encodeCtx = idnGetContext();
-
- if (encodeCtx != NULL) {
- idnHook(hWnd, wMsg, buf, encodeCtx);
- }
-
- TRACE("ENTER WSAAsyncGetHostByAddr <%s>\n",
- dumpAddr(addr, len, abuff, sizeof(abuff)));
- ret = _org_WSAAsyncGetHostByAddr(hWnd, wMsg, addr, len, type,
- buf, buflen);
- TRACE("LEAVE WSAAsyncGetHostByAddr HANDLE %08x\n", ret);
-
- return (ret);
-}
-
-
+++ /dev/null
-/*
- * dllload.c - load original entries
- */
-
-/*
- * 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, 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-#include <windows.h>
-#include <winsock.h>
-#include <nspapi.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <process.h>
-
-#include "dlldef.h"
-
-/*
- * Manages original DLL
- */
-
-#define DLLHANDLE idnWinsockHandle()
-
-#include "dllstub.c"
+++ /dev/null
-/*
- * dllmain.c - entry for DLL
- */
-
-/*
- * 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, 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-#include <windows.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <process.h>
-
-#include "dlldef.h"
-
-/*
- * Control Variables
- */
-
-int procPid = 0;
-
-static char procExe[256];
-
-/*
- * DLL Entry
- */
-
-BOOL APIENTRY
-DllMain(HMODULE hmod, DWORD reason, LPVOID *resv) {
- switch (reason) {
-
- case DLL_PROCESS_ATTACH:
- procPid = getpid();
- GetModuleFileName(NULL, procExe, 256);
-
- idnLogInit("ws11");
- idnHookInit();
-
- TRACE("Attached to Process <%s>\n", procExe);
- return (idnWinsockVersion("1.1"));
-
- case DLL_PROCESS_DETACH:
- idnConvDone(idnGetContext());
- idnHookDone();
- TRACE("Detached from Process\n");
- idnLogFinish();
- break;
-
- case DLL_THREAD_ATTACH:
- break;
- case DLL_THREAD_DETACH:
- break;
- }
-
- return (TRUE);
-}
-
+++ /dev/null
-/* $Id: dllstub.c,v 1.1 2003/06/04 00:27:45 marka Exp $ */
-
-SOCKET PASCAL
-accept(SOCKET a0, struct sockaddr* a1, int* a2)
-{
- static SOCKET (PASCAL *fp)(SOCKET a0, struct sockaddr* a1, int* a2);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub accept() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "accept")) == NULL) {
- FATAL("cannot find entry accept (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1, a2);
-}
-
-int PASCAL
-bind(SOCKET a0, const struct sockaddr* a1, int a2)
-{
- static int (PASCAL *fp)(SOCKET a0, const struct sockaddr* a1, int a2);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub bind() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "bind")) == NULL) {
- FATAL("cannot find entry bind (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1, a2);
-}
-
-int PASCAL
-closesocket(SOCKET a0)
-{
- static int (PASCAL *fp)(SOCKET a0);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub closesocket() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "closesocket")) == NULL) {
- FATAL("cannot find entry closesocket (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0);
-}
-
-int PASCAL
-connect(SOCKET a0, const struct sockaddr* a1, int a2)
-{
- static int (PASCAL *fp)(SOCKET a0, const struct sockaddr* a1, int a2);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub connect() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "connect")) == NULL) {
- FATAL("cannot find entry connect (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1, a2);
-}
-
-int PASCAL
-getpeername(SOCKET a0, struct sockaddr* a1, int* a2)
-{
- static int (PASCAL *fp)(SOCKET a0, struct sockaddr* a1, int* a2);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub getpeername() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "getpeername")) == NULL) {
- FATAL("cannot find entry getpeername (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1, a2);
-}
-
-int PASCAL
-getsockname(SOCKET a0, struct sockaddr* a1, int* a2)
-{
- static int (PASCAL *fp)(SOCKET a0, struct sockaddr* a1, int* a2);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub getsockname() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "getsockname")) == NULL) {
- FATAL("cannot find entry getsockname (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1, a2);
-}
-
-int PASCAL
-getsockopt(SOCKET a0, int a1, int a2, char* a3, int* a4)
-{
- static int (PASCAL *fp)(SOCKET a0, int a1, int a2, char* a3, int* a4);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub getsockopt() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "getsockopt")) == NULL) {
- FATAL("cannot find entry getsockopt (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1, a2, a3, a4);
-}
-
-u_long PASCAL
-htonl(u_long a0)
-{
- static u_long (PASCAL *fp)(u_long a0);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub htonl() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "htonl")) == NULL) {
- FATAL("cannot find entry htonl (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0);
-}
-
-u_short PASCAL
-htons(u_short a0)
-{
- static u_short (PASCAL *fp)(u_short a0);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub htons() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "htons")) == NULL) {
- FATAL("cannot find entry htons (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0);
-}
-
-unsigned long PASCAL
-inet_addr(const char* a0)
-{
- static unsigned long (PASCAL *fp)(const char* a0);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub inet_addr() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "inet_addr")) == NULL) {
- FATAL("cannot find entry inet_addr (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0);
-}
-
- char * PASCAL
-inet_ntoa(struct in_addr a0)
-{
- static char * (PASCAL *fp)(struct in_addr a0);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub inet_ntoa() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "inet_ntoa")) == NULL) {
- FATAL("cannot find entry inet_ntoa (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0);
-}
-
-int PASCAL
-ioctlsocket(SOCKET a0, long a1, u_long * a2)
-{
- static int (PASCAL *fp)(SOCKET a0, long a1, u_long * a2);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub ioctlsocket() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "ioctlsocket")) == NULL) {
- FATAL("cannot find entry ioctlsocket (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1, a2);
-}
-
-int PASCAL
-listen(SOCKET a0, int a1)
-{
- static int (PASCAL *fp)(SOCKET a0, int a1);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub listen() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "listen")) == NULL) {
- FATAL("cannot find entry listen (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1);
-}
-
-u_long PASCAL
-ntohl(u_long a0)
-{
- static u_long (PASCAL *fp)(u_long a0);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub ntohl() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "ntohl")) == NULL) {
- FATAL("cannot find entry ntohl (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0);
-}
-
-u_short PASCAL
-ntohs(u_short a0)
-{
- static u_short (PASCAL *fp)(u_short a0);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub ntohs() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "ntohs")) == NULL) {
- FATAL("cannot find entry ntohs (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0);
-}
-
-int PASCAL
-recv(SOCKET a0, char* a1, int a2, int a3)
-{
- static int (PASCAL *fp)(SOCKET a0, char* a1, int a2, int a3);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub recv() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "recv")) == NULL) {
- FATAL("cannot find entry recv (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1, a2, a3);
-}
-
-int PASCAL
-recvfrom(SOCKET a0, char* a1, int a2, int a3, struct sockaddr* a4, int* a5)
-{
- static int (PASCAL *fp)(SOCKET a0, char* a1, int a2, int a3, struct sockaddr* a4, int* a5);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub recvfrom() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "recvfrom")) == NULL) {
- FATAL("cannot find entry recvfrom (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1, a2, a3, a4, a5);
-}
-
-int PASCAL
-select(int a0, fd_set* a1, fd_set* a2, fd_set* a3, const struct timeval* a4)
-{
- static int (PASCAL *fp)(int a0, fd_set* a1, fd_set* a2, fd_set* a3, const struct timeval* a4);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub select() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "select")) == NULL) {
- FATAL("cannot find entry select (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1, a2, a3, a4);
-}
-
-int PASCAL
-send(SOCKET a0, const char* a1, int a2, int a3)
-{
- static int (PASCAL *fp)(SOCKET a0, const char* a1, int a2, int a3);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub send() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "send")) == NULL) {
- FATAL("cannot find entry send (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1, a2, a3);
-}
-
-int PASCAL
-sendto(SOCKET a0, const char* a1, int a2, int a3, const struct sockaddr* a4, int a5)
-{
- static int (PASCAL *fp)(SOCKET a0, const char* a1, int a2, int a3, const struct sockaddr* a4, int a5);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub sendto() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "sendto")) == NULL) {
- FATAL("cannot find entry sendto (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1, a2, a3, a4, a5);
-}
-
-int PASCAL
-setsockopt(SOCKET a0, int a1, int a2, const char* a3, int a4)
-{
- static int (PASCAL *fp)(SOCKET a0, int a1, int a2, const char* a3, int a4);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub setsockopt() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "setsockopt")) == NULL) {
- FATAL("cannot find entry setsockopt (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1, a2, a3, a4);
-}
-
-int PASCAL
-shutdown(SOCKET a0, int a1)
-{
- static int (PASCAL *fp)(SOCKET a0, int a1);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub shutdown() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "shutdown")) == NULL) {
- FATAL("cannot find entry shutdown (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1);
-}
-
-SOCKET PASCAL
-socket(int a0, int a1, int a2)
-{
- static SOCKET (PASCAL *fp)(int a0, int a1, int a2);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub socket() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "socket")) == NULL) {
- FATAL("cannot find entry socket (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1, a2);
-}
-
-int PASCAL
-MigrateWinsockConfiguration(int a0, int a1, int a2)
-{
- static int (PASCAL *fp)(int a0, int a1, int a2);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub MigrateWinsockConfiguration() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "MigrateWinsockConfiguration")) == NULL) {
- FATAL("cannot find entry MigrateWinsockConfiguration (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1, a2);
-}
-
- struct hostent * PASCAL
-_org_gethostbyaddr(const char* a0, int a1, int a2)
-{
- static struct hostent * (PASCAL *fp)(const char* a0, int a1, int a2);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub _org_gethostbyaddr() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "gethostbyaddr")) == NULL) {
- FATAL("cannot find entry gethostbyaddr (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1, a2);
-}
-
- struct hostent * PASCAL
-_org_gethostbyname(const char* a0)
-{
- static struct hostent * (PASCAL *fp)(const char* a0);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub _org_gethostbyname() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "gethostbyname")) == NULL) {
- FATAL("cannot find entry gethostbyname (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0);
-}
-
- struct protoent * PASCAL
-getprotobyname(const char* a0)
-{
- static struct protoent * (PASCAL *fp)(const char* a0);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub getprotobyname() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "getprotobyname")) == NULL) {
- FATAL("cannot find entry getprotobyname (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0);
-}
-
- struct protoent * PASCAL
-getprotobynumber(int a0)
-{
- static struct protoent * (PASCAL *fp)(int a0);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub getprotobynumber() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "getprotobynumber")) == NULL) {
- FATAL("cannot find entry getprotobynumber (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0);
-}
-
- struct servent * PASCAL
-getservbyname(const char* a0, const char* a1)
-{
- static struct servent * (PASCAL *fp)(const char* a0, const char* a1);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub getservbyname() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "getservbyname")) == NULL) {
- FATAL("cannot find entry getservbyname (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1);
-}
-
- struct servent * PASCAL
-getservbyport(int a0, const char* a1)
-{
- static struct servent * (PASCAL *fp)(int a0, const char* a1);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub getservbyport() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "getservbyport")) == NULL) {
- FATAL("cannot find entry getservbyport (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1);
-}
-
-int PASCAL
-_org_gethostname(char* a0, int a1)
-{
- static int (PASCAL *fp)(char* a0, int a1);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub _org_gethostname() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "gethostname")) == NULL) {
- FATAL("cannot find entry gethostname (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1);
-}
-
-int PASCAL
-WSAAsyncSelect(SOCKET a0, HWND a1, u_int a2, long a3)
-{
- static int (PASCAL *fp)(SOCKET a0, HWND a1, u_int a2, long a3);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub WSAAsyncSelect() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "WSAAsyncSelect")) == NULL) {
- FATAL("cannot find entry WSAAsyncSelect (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1, a2, a3);
-}
-
-HANDLE PASCAL
-_org_WSAAsyncGetHostByAddr(HWND a0, u_int a1, const char* a2, int a3, int a4, char* a5, int a6)
-{
- static HANDLE (PASCAL *fp)(HWND a0, u_int a1, const char* a2, int a3, int a4, char* a5, int a6);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub _org_WSAAsyncGetHostByAddr() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "WSAAsyncGetHostByAddr")) == NULL) {
- FATAL("cannot find entry WSAAsyncGetHostByAddr (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1, a2, a3, a4, a5, a6);
-}
-
-HANDLE PASCAL
-_org_WSAAsyncGetHostByName(HWND a0, u_int a1, const char* a2, char* a3, int a4)
-{
- static HANDLE (PASCAL *fp)(HWND a0, u_int a1, const char* a2, char* a3, int a4);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub _org_WSAAsyncGetHostByName() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "WSAAsyncGetHostByName")) == NULL) {
- FATAL("cannot find entry WSAAsyncGetHostByName (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1, a2, a3, a4);
-}
-
-HANDLE PASCAL
-WSAAsyncGetProtoByNumber(HWND a0, u_int a1, int a2, char* a3, int a4)
-{
- static HANDLE (PASCAL *fp)(HWND a0, u_int a1, int a2, char* a3, int a4);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub WSAAsyncGetProtoByNumber() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "WSAAsyncGetProtoByNumber")) == NULL) {
- FATAL("cannot find entry WSAAsyncGetProtoByNumber (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1, a2, a3, a4);
-}
-
-HANDLE PASCAL
-WSAAsyncGetProtoByName(HWND a0, u_int a1, const char* a2, char* a3, int a4)
-{
- static HANDLE (PASCAL *fp)(HWND a0, u_int a1, const char* a2, char* a3, int a4);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub WSAAsyncGetProtoByName() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "WSAAsyncGetProtoByName")) == NULL) {
- FATAL("cannot find entry WSAAsyncGetProtoByName (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1, a2, a3, a4);
-}
-
-HANDLE PASCAL
-WSAAsyncGetServByPort(HWND a0, u_int a1, int a2, const char* a3, char* a4, int a5)
-{
- static HANDLE (PASCAL *fp)(HWND a0, u_int a1, int a2, const char* a3, char* a4, int a5);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub WSAAsyncGetServByPort() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "WSAAsyncGetServByPort")) == NULL) {
- FATAL("cannot find entry WSAAsyncGetServByPort (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1, a2, a3, a4, a5);
-}
-
-HANDLE PASCAL
-WSAAsyncGetServByName(HWND a0, u_int a1, const char* a2, const char* a3, char* a4, int a5)
-{
- static HANDLE (PASCAL *fp)(HWND a0, u_int a1, const char* a2, const char* a3, char* a4, int a5);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub WSAAsyncGetServByName() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "WSAAsyncGetServByName")) == NULL) {
- FATAL("cannot find entry WSAAsyncGetServByName (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1, a2, a3, a4, a5);
-}
-
-int PASCAL
-WSACancelAsyncRequest(HANDLE a0)
-{
- static int (PASCAL *fp)(HANDLE a0);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub WSACancelAsyncRequest() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "WSACancelAsyncRequest")) == NULL) {
- FATAL("cannot find entry WSACancelAsyncRequest (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0);
-}
-
-FARPROC PASCAL
-WSASetBlockingHook(FARPROC a0)
-{
- static FARPROC (PASCAL *fp)(FARPROC a0);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub WSASetBlockingHook() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "WSASetBlockingHook")) == NULL) {
- FATAL("cannot find entry WSASetBlockingHook (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0);
-}
-
-int PASCAL
-WSAUnhookBlockingHook(void)
-{
- static int (PASCAL *fp)(void);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub WSAUnhookBlockingHook() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "WSAUnhookBlockingHook")) == NULL) {
- FATAL("cannot find entry WSAUnhookBlockingHook (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)();
-}
-
-int PASCAL
-WSAGetLastError(void)
-{
- static int (PASCAL *fp)(void);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub WSAGetLastError() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "WSAGetLastError")) == NULL) {
- FATAL("cannot find entry WSAGetLastError (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)();
-}
-
-void PASCAL
-WSASetLastError(int a0)
-{
- static void (PASCAL *fp)(int a0);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub WSASetLastError() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "WSASetLastError")) == NULL) {
- FATAL("cannot find entry WSASetLastError (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- (*fp)(a0);
-}
-
-int PASCAL
-WSACancelBlockingCall(void)
-{
- static int (PASCAL *fp)(void);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub WSACancelBlockingCall() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "WSACancelBlockingCall")) == NULL) {
- FATAL("cannot find entry WSACancelBlockingCall (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)();
-}
-
-BOOL PASCAL
-WSAIsBlocking(void)
-{
- static BOOL (PASCAL *fp)(void);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub WSAIsBlocking() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "WSAIsBlocking")) == NULL) {
- FATAL("cannot find entry WSAIsBlocking (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)();
-}
-
-int PASCAL
-WSAStartup(WORD a0, LPWSADATA a1)
-{
- static int (PASCAL *fp)(WORD a0, LPWSADATA a1);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub WSAStartup() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "WSAStartup")) == NULL) {
- FATAL("cannot find entry WSAStartup (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1);
-}
-
-int PASCAL
-WSACleanup(void)
-{
- static int (PASCAL *fp)(void);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub WSACleanup() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "WSACleanup")) == NULL) {
- FATAL("cannot find entry WSACleanup (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)();
-}
-
-int PASCAL
-__WSAFDIsSet(SOCKET a0, fd_set* a1)
-{
- static int (PASCAL *fp)(SOCKET a0, fd_set* a1);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub __WSAFDIsSet() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "__WSAFDIsSet")) == NULL) {
- FATAL("cannot find entry __WSAFDIsSet (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1);
-}
-
-int PASCAL
-WEP(void)
-{
- static int (PASCAL *fp)(void);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub WEP() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "WEP")) == NULL) {
- FATAL("cannot find entry WEP (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)();
-}
-
-int PASCAL
-WSApSetPostRoutine(int a0)
-{
- static int (PASCAL *fp)(int a0);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub WSApSetPostRoutine() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "WSApSetPostRoutine")) == NULL) {
- FATAL("cannot find entry WSApSetPostRoutine (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0);
-}
-
-int PASCAL
-WsControl(int a0, int a1, int a2, int a3, int a4, int a5)
-{
- static int (PASCAL *fp)(int a0, int a1, int a2, int a3, int a4, int a5);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub WsControl() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "WsControl")) == NULL) {
- FATAL("cannot find entry WsControl (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1, a2, a3, a4, a5);
-}
-
-int PASCAL
-closesockinfo(int a0)
-{
- static int (PASCAL *fp)(int a0);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub closesockinfo() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "closesockinfo")) == NULL) {
- FATAL("cannot find entry closesockinfo (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0);
-}
-
-int PASCAL
-Arecv(int a0, int a1, int a2, int a3)
-{
- static int (PASCAL *fp)(int a0, int a1, int a2, int a3);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub Arecv() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "Arecv")) == NULL) {
- FATAL("cannot find entry Arecv (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1, a2, a3);
-}
-
-int PASCAL
-Asend(int a0, int a1, int a2, int a3)
-{
- static int (PASCAL *fp)(int a0, int a1, int a2, int a3);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub Asend() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "Asend")) == NULL) {
- FATAL("cannot find entry Asend (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1, a2, a3);
-}
-
-int PASCAL
-WSHEnumProtocols(void)
-{
- static int (PASCAL *fp)(void);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub WSHEnumProtocols() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "WSHEnumProtocols")) == NULL) {
- FATAL("cannot find entry WSHEnumProtocols (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)();
-}
-
-int PASCAL
-inet_network(int a0)
-{
- static int (PASCAL *fp)(int a0);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub inet_network() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "inet_network")) == NULL) {
- FATAL("cannot find entry inet_network (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0);
-}
-
-int PASCAL
-getnetbyname(int a0)
-{
- static int (PASCAL *fp)(int a0);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub getnetbyname() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "getnetbyname")) == NULL) {
- FATAL("cannot find entry getnetbyname (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0);
-}
-
-int PASCAL
-rcmd(int a0, int a1, int a2, int a3, int a4, int a5)
-{
- static int (PASCAL *fp)(int a0, int a1, int a2, int a3, int a4, int a5);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub rcmd() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "rcmd")) == NULL) {
- FATAL("cannot find entry rcmd (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1, a2, a3, a4, a5);
-}
-
-int PASCAL
-rexec(int a0, int a1, int a2, int a3, int a4, int a5)
-{
- static int (PASCAL *fp)(int a0, int a1, int a2, int a3, int a4, int a5);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub rexec() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "rexec")) == NULL) {
- FATAL("cannot find entry rexec (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1, a2, a3, a4, a5);
-}
-
-int PASCAL
-rresvport(int a0)
-{
- static int (PASCAL *fp)(int a0);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub rresvport() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "rresvport")) == NULL) {
- FATAL("cannot find entry rresvport (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0);
-}
-
-int PASCAL
-sethostname(int a0, int a1)
-{
- static int (PASCAL *fp)(int a0, int a1);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub sethostname() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "sethostname")) == NULL) {
- FATAL("cannot find entry sethostname (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1);
-}
-
-int PASCAL
-dn_expand(int a0, int a1, int a2, int a3, int a4)
-{
- static int (PASCAL *fp)(int a0, int a1, int a2, int a3, int a4);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub dn_expand() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "dn_expand")) == NULL) {
- FATAL("cannot find entry dn_expand (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1, a2, a3, a4);
-}
-
-int PASCAL
-WSARecvEx(SOCKET a0, char* a1, int a2, int* a3)
-{
- static int (PASCAL *fp)(SOCKET a0, char* a1, int a2, int* a3);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub WSARecvEx() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "WSARecvEx")) == NULL) {
- FATAL("cannot find entry WSARecvEx (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1, a2, a3);
-}
-
-int PASCAL
-s_perror(int a0, int a1)
-{
- static int (PASCAL *fp)(int a0, int a1);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub s_perror() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "s_perror")) == NULL) {
- FATAL("cannot find entry s_perror (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1);
-}
-
-INT PASCAL
-GetAddressByNameA(DWORD a0, LPGUID a1, LPSTR a2, LPINT a3, DWORD a4, LPSERVICE_ASYNC_INFO a5, LPVOID a6, LPDWORD a7, LPSTR a8, LPDWORD a9)
-{
- static INT (PASCAL *fp)(DWORD a0, LPGUID a1, LPSTR a2, LPINT a3, DWORD a4, LPSERVICE_ASYNC_INFO a5, LPVOID a6, LPDWORD a7, LPSTR a8, LPDWORD a9);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub GetAddressByNameA() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "GetAddressByNameA")) == NULL) {
- FATAL("cannot find entry GetAddressByNameA (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9);
-}
-
-INT PASCAL
-GetAddressByNameW(DWORD a0, LPGUID a1, LPWSTR a2, LPINT a3, DWORD a4, LPSERVICE_ASYNC_INFO a5, LPVOID a6, LPDWORD a7, LPWSTR a8, LPDWORD a9)
-{
- static INT (PASCAL *fp)(DWORD a0, LPGUID a1, LPWSTR a2, LPINT a3, DWORD a4, LPSERVICE_ASYNC_INFO a5, LPVOID a6, LPDWORD a7, LPWSTR a8, LPDWORD a9);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub GetAddressByNameW() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "GetAddressByNameW")) == NULL) {
- FATAL("cannot find entry GetAddressByNameW (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9);
-}
-
-INT PASCAL
-EnumProtocolsA(LPINT a0, LPVOID a1, LPDWORD a2)
-{
- static INT (PASCAL *fp)(LPINT a0, LPVOID a1, LPDWORD a2);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub EnumProtocolsA() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "EnumProtocolsA")) == NULL) {
- FATAL("cannot find entry EnumProtocolsA (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1, a2);
-}
-
-INT PASCAL
-EnumProtocolsW(LPINT a0, LPVOID a1, LPDWORD a2)
-{
- static INT (PASCAL *fp)(LPINT a0, LPVOID a1, LPDWORD a2);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub EnumProtocolsW() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "EnumProtocolsW")) == NULL) {
- FATAL("cannot find entry EnumProtocolsW (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1, a2);
-}
-
-INT PASCAL
-GetTypeByNameA(LPSTR a0, LPGUID a1)
-{
- static INT (PASCAL *fp)(LPSTR a0, LPGUID a1);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub GetTypeByNameA() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "GetTypeByNameA")) == NULL) {
- FATAL("cannot find entry GetTypeByNameA (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1);
-}
-
-INT PASCAL
-GetTypeByNameW(LPWSTR a0, LPGUID a1)
-{
- static INT (PASCAL *fp)(LPWSTR a0, LPGUID a1);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub GetTypeByNameW() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "GetTypeByNameW")) == NULL) {
- FATAL("cannot find entry GetTypeByNameW (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1);
-}
-
-INT PASCAL
-GetNameByTypeA(LPGUID a0, LPSTR a1, DWORD a2)
-{
- static INT (PASCAL *fp)(LPGUID a0, LPSTR a1, DWORD a2);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub GetNameByTypeA() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "GetNameByTypeA")) == NULL) {
- FATAL("cannot find entry GetNameByTypeA (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1, a2);
-}
-
-INT PASCAL
-GetNameByTypeW(LPGUID a0, LPWSTR a1, DWORD a2)
-{
- static INT (PASCAL *fp)(LPGUID a0, LPWSTR a1, DWORD a2);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub GetNameByTypeW() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "GetNameByTypeW")) == NULL) {
- FATAL("cannot find entry GetNameByTypeW (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1, a2);
-}
-
-INT PASCAL
-SetServiceA(DWORD a0, DWORD a1, DWORD a2, LPSERVICE_INFOA a3, LPSERVICE_ASYNC_INFO a4, LPDWORD a5)
-{
- static INT (PASCAL *fp)(DWORD a0, DWORD a1, DWORD a2, LPSERVICE_INFOA a3, LPSERVICE_ASYNC_INFO a4, LPDWORD a5);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub SetServiceA() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "SetServiceA")) == NULL) {
- FATAL("cannot find entry SetServiceA (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1, a2, a3, a4, a5);
-}
-
-INT PASCAL
-SetServiceW(DWORD a0, DWORD a1, DWORD a2, LPSERVICE_INFOW a3, LPSERVICE_ASYNC_INFO a4, LPDWORD a5)
-{
- static INT (PASCAL *fp)(DWORD a0, DWORD a1, DWORD a2, LPSERVICE_INFOW a3, LPSERVICE_ASYNC_INFO a4, LPDWORD a5);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub SetServiceW() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "SetServiceW")) == NULL) {
- FATAL("cannot find entry SetServiceW (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1, a2, a3, a4, a5);
-}
-
-INT PASCAL
-GetServiceA(DWORD a0, LPGUID a1, LPSTR a2, DWORD a3, LPVOID a4, LPDWORD a5, LPSERVICE_ASYNC_INFO a6)
-{
- static INT (PASCAL *fp)(DWORD a0, LPGUID a1, LPSTR a2, DWORD a3, LPVOID a4, LPDWORD a5, LPSERVICE_ASYNC_INFO a6);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub GetServiceA() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "GetServiceA")) == NULL) {
- FATAL("cannot find entry GetServiceA (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1, a2, a3, a4, a5, a6);
-}
-
-INT PASCAL
-GetServiceW(DWORD a0, LPGUID a1, LPWSTR a2, DWORD a3, LPVOID a4, LPDWORD a5, LPSERVICE_ASYNC_INFO a6)
-{
- static INT (PASCAL *fp)(DWORD a0, LPGUID a1, LPWSTR a2, DWORD a3, LPVOID a4, LPDWORD a5, LPSERVICE_ASYNC_INFO a6);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub GetServiceW() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "GetServiceW")) == NULL) {
- FATAL("cannot find entry GetServiceW (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1, a2, a3, a4, a5, a6);
-}
-
-int PASCAL
-NPLoadNameSpaces(int a0, int a1, int a2)
-{
- static int (PASCAL *fp)(int a0, int a1, int a2);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub NPLoadNameSpaces() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "NPLoadNameSpaces")) == NULL) {
- FATAL("cannot find entry NPLoadNameSpaces (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1, a2);
-}
-
-int PASCAL
-NSPStartup(int a0, int a1)
-{
- static int (PASCAL *fp)(int a0, int a1);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub NSPStartup() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "NSPStartup")) == NULL) {
- FATAL("cannot find entry NSPStartup (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1);
-}
-
-BOOL PASCAL
-TransmitFile(SOCKET a0, HANDLE a1, DWORD a2, DWORD a3, LPOVERLAPPED a4, LPTRANSMIT_FILE_BUFFERS a5, DWORD a6)
-{
- static BOOL (PASCAL *fp)(SOCKET a0, HANDLE a1, DWORD a2, DWORD a3, LPOVERLAPPED a4, LPTRANSMIT_FILE_BUFFERS a5, DWORD a6);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub TransmitFile() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "TransmitFile")) == NULL) {
- FATAL("cannot find entry TransmitFile (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1, a2, a3, a4, a5, a6);
-}
-
-BOOL PASCAL
-AcceptEx(SOCKET a0, SOCKET a1, PVOID a2, DWORD a3, DWORD a4, DWORD a5, LPDWORD a6, LPOVERLAPPED a7)
-{
- static BOOL (PASCAL *fp)(SOCKET a0, SOCKET a1, PVOID a2, DWORD a3, DWORD a4, DWORD a5, LPDWORD a6, LPOVERLAPPED a7);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub AcceptEx() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "AcceptEx")) == NULL) {
- FATAL("cannot find entry AcceptEx (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1, a2, a3, a4, a5, a6, a7);
-}
-
-VOID PASCAL
-GetAcceptExSockaddrs(PVOID a0, DWORD a1, DWORD a2, DWORD a3, struct sockaddr** a4, LPINT a5, struct sockaddr** a6, LPINT a7)
-{
- static VOID (PASCAL *fp)(PVOID a0, DWORD a1, DWORD a2, DWORD a3, struct sockaddr** a4, LPINT a5, struct sockaddr** a6, LPINT a7);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub GetAcceptExSockaddrs() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "GetAcceptExSockaddrs")) == NULL) {
- FATAL("cannot find entry GetAcceptExSockaddrs (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- (*fp)(a0, a1, a2, a3, a4, a5, a6, a7);
-}
-
+++ /dev/null
-#
-# Makefile for WinSock Wrapper (for WinSock 1.1)
-#
-
-# 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, 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) 2000-2002 Japan Network Information Center. All rights reserved."
-#
-# 4. The name of JPNIC may not 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.
-
-!include <win32.mak>
-
-SYSLIBS = $(libcdll) kernel32.lib advapi32.lib user32.lib
-
-#
-# Files to use
-#
-
-HDRS = dlldef.h ..\common\wrapcommon.h
-SRCS = dllmain.c dllload.c dllfunc.c dllstub.c
-OBJS = dllmain.obj dllload.obj dllfunc.obj
-LIBS = ..\common\wrapcommon.lib ..\..\lib\idnkit.lib ..\..\win\iconv.lib
-
-cflags = $(cflags) -I..\..\include
-
-#
-# Targets to Build
-#
-
-TARGETS = wsock32.dll
-
-all : $(TARGETS)
-
-wsock32.dll : wsock32.def $(OBJS) $(LIBS)
- $(link) $(dlllflags) /OUT:wsock32.dll /DEF:wsock32.def $(OBJS) $(LIBS) $(SYSLIBS)
-
-install : $(TARGETS)
- copy wsock32.dll ..\bin
-
-clean : force
- -del *.obj
- -del *.lib
- -del *.dll
- -del *.exp
-
-#
-# Dependencies
-#
-
-dllmain.obj : dllmain.c $(HDRS)
- $(cc) $(cflags) $(cvarsdll) -DDEBUG $*.c
-
-dllload.obj : dllload.c dllstub.c $(HDRS)
- $(cc) $(cflags) $(cvarsdll) -DDEBUG $*.c
-
-
-dllfunc.obj : dllfunc.c $(HDRS)
- $(cc) $(cflags) $(cvarsdll) -DDEBUG $*.c
-
-wsock32o.lib : wsock32o.def
- LIB /DEF:wsock32o.def /MACHINE:IX86
-
-force :
-
+++ /dev/null
-;
-; Library Defition for idn wrapper's wrapper DLL
-;
-LIBRARY wsock32
-DESCRIPTION "JPNIC idn wrapper DLL for WSOCK32"
-EXPORTS
- accept @1
- bind @2
- closesocket @3
- connect @4
- getpeername @5
- getsockname @6
- getsockopt @7
- htonl @8
- htons @9
- inet_addr @10
- inet_ntoa @11
- ioctlsocket @12
- listen @13
- ntohl @14
- ntohs @15
- recv @16
- recvfrom @17
- select @18
- send @19
- sendto @20
- setsockopt @21
- shutdown @22
- socket @23
- MigrateWinsockConfiguration @24
- gethostbyaddr @51
- gethostbyname @52
- getprotobyname @53
- getprotobynumber @54
- getservbyname @55
- getservbyport @56
- gethostname @57
- WSAAsyncSelect @101
- WSAAsyncGetHostByAddr @102
- WSAAsyncGetHostByName @103
- WSAAsyncGetProtoByNumber @104
- WSAAsyncGetProtoByName @105
- WSAAsyncGetServByPort @106
- WSAAsyncGetServByName @107
- WSACancelAsyncRequest @108
- WSASetBlockingHook @109
- WSAUnhookBlockingHook @110
- WSAGetLastError @111
- WSASetLastError @112
- WSACancelBlockingCall @113
- WSAIsBlocking @114
- WSAStartup @115
- WSACleanup @116
- __WSAFDIsSet @151
- WEP @500
- WSApSetPostRoutine @1000
- WsControl @1001
- closesockinfo @1002
- Arecv @1003
- Asend @1004
- WSHEnumProtocols @1005
- inet_network @1100
- getnetbyname @1101
- rcmd @1102
- rexec @1103
- rresvport @1104
- sethostname @1105
- dn_expand @1106
- WSARecvEx @1107
- s_perror @1108
- GetAddressByNameA @1109
- GetAddressByNameW @1110
- EnumProtocolsA @1111
- EnumProtocolsW @1112
- GetTypeByNameA @1113
- GetTypeByNameW @1114
- GetNameByTypeA @1115
- GetNameByTypeW @1116
- SetServiceA @1117
- SetServiceW @1118
- GetServiceA @1119
- GetServiceW @1120
- NPLoadNameSpaces @1130
- NSPStartup @1131
- TransmitFile @1140
- AcceptEx @1141
- GetAcceptExSockaddrs @1142
+++ /dev/null
-/*
- * dlldef.h
- */
-
-/*
- * 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, 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-#ifndef _DLLDEF_H
-#define _DLLDEF_H
-
-#include "../common/wrapcommon.h"
-
-/*
- * Execution Tracing
- */
-
-extern int procPid;
-
-#ifdef DEBUG
-#define TRACE idnPrintf
-#define FATAL idnPrintf
-#else
-#define TRACE
-#define FATAL idnPrintf
-#endif
-
-/*
- * entry points to wrap
- */
-
-extern int WSAAPI
-_org_gethostname(char FAR * name, int namelen);
-
-extern struct hostent FAR * WSAAPI
-_org_gethostbyaddr(const char FAR * addr, int len, int type);
-
-extern struct hostent FAR * WSAAPI
-_org_gethostbyname(const char FAR * name);
-
-extern HANDLE WSAAPI
-_org_WSAAsyncGetHostByName(HWND hWnd, u_int wMsg, const char FAR * name,
- char FAR * buf,int buflen);
-
-extern HANDLE WSAAPI
-_org_WSAAsyncGetHostByAddr(HWND hWnd, u_int wMsg, const char FAR * addr,
- int len, int type, char FAR * buf, int buflen);
-
-extern INT WSAAPI
-_org_WSALookupServiceBeginA(LPWSAQUERYSETA lpqsRestrictions,
- DWORD dwControlFlags,
- LPHANDLE lphLookup);
-
-extern INT WSAAPI
-_org_WSALookupServiceBeginW(LPWSAQUERYSETW lpqsRestrictions,
- DWORD dwControlFlags,
- LPHANDLE lphLookup);
-
-extern INT WSAAPI
-_org_WSALookupServiceNextA(HANDLE hLookup,
- DWORD dwControlFlags,
- LPDWORD lpdwBufferLength,
- LPWSAQUERYSETA lpqsResults);
-
-extern INT WSAAPI
-_org_WSALookupServiceNextW(HANDLE hLookup,
- DWORD dwControlFlags,
- LPDWORD lpdwBufferLength,
- LPWSAQUERYSETW lpqsResults);
-
-extern INT WSAAPI
-_org_WSALookupServiceEnd(HANDLE hLookup);
-
-extern int WSAAPI
-_org_getaddrinfo(const char *nodename, const char *servname,
- LPVOID hints, LPVOID res);
-
-extern void WSAAPI
-_org_freeaddrinfo(LPVOID aip);
-
-extern int WSAAPI
-_org_getnameinfo(LPVOID sa, DWORD salen, char* host, DWORD hostlen,
- char* serv, DWORD servlen, int flags);
-
-#endif /* _DLLDEF_H */
+++ /dev/null
-/*
- * dllfunc.c - wrapper functions
- */
-
-/*
- * Copyright (c) 2000,2002 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-#include <windows.h>
-#include <svcguid.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <process.h>
-
-#include "dlldef.h"
-
-#ifndef EAI_MEMORY
-#define EAI_MEMORY WSA_NOT_ENOUGH_MEMORY
-#endif
-#ifndef EAI_FAIL
-#define EAI_FAIL WSANO_RECOVERY
-#endif
-
-static GUID guid_habn = SVCID_INET_HOSTADDRBYNAME;
-static GUID guid_habis = SVCID_INET_HOSTADDRBYINETSTRING;
-
-#define SVCID_IS_HABN(p) (memcmp(p, &guid_habn, sizeof(GUID)) == 0)
-#define SVCID_IS_HABIS(p) (memcmp(p, &guid_habis, sizeof(GUID)) == 0)
-
-/*
- * Rename addrinfo to my_addrinfo for avoiding possible name conflict.
- */
-struct my_addrinfo {
- int ai_flags;
- int ai_family;
- int ai_socktype;
- int ai_protocol;
- size_t ai_addrlen;
- char *ai_canonname;
- struct sockaddr *ai_addr;
- struct my_addrinfo *ai_next;
-};
-
-typedef struct obj_lock {
- void *key;
- struct obj_lock *next;
-} obj_lock_t;
-
-#define OBJLOCKHASH_SIZE 127
-static obj_lock_t *obj_lock_hash[OBJLOCKHASH_SIZE];
-
-static int obj_hash(void *key);
-static int obj_islocked(void *key);
-static void obj_lock(void *key);
-static void obj_unlock(void *key);
-static char *decode_name_dynamic(const char *name, idn_resconf_t idnctx);
-static struct my_addrinfo
- *copy_decode_addrinfo_dynamic(struct my_addrinfo *aip,
- idn_resconf_t idnctx);
-static void free_copied_addrinfo(struct my_addrinfo *aip);
-
-WRAPPER_EXPORT int WSAAPI
-gethostname(char FAR * name, int namelen) {
- int ret;
-
- TRACE("ENTER gethostname\n");
- ret = _org_gethostname(name, namelen);
- TRACE("LEAVE gethostname %d <%-.100s>\n", ret, name);
-
- return (ret);
-}
-
-WRAPPER_EXPORT struct hostent FAR * WSAAPI
-gethostbyname(const char FAR * name) {
- struct hostent FAR *ret;
- char nbuff[256];
- char hbuff[256];
- BOOL stat;
- idn_resconf_t encodeCtx;
-
- TRACE("ENTER gethostbyname <%-.100s>\n",
- (name != NULL ? name : "NULL"));
-
- encodeCtx = idnGetContext();
-
- if (encodeCtx == NULL || name == NULL) {
- ret = _org_gethostbyname(name);
- } else {
- stat = idnConvReq(encodeCtx, name, nbuff, sizeof(nbuff));
- if (stat == FALSE) {
- TRACE("idnConvReq failed\n");
- ret = NULL;
- } else {
- TRACE("Converted Name <%s>\n",
- dumpName(nbuff, hbuff, sizeof(hbuff)));
- ret = _org_gethostbyname(nbuff);
- }
- }
-
- if (ret != NULL && encodeCtx != NULL) {
- TRACE("Resulting Name <%s>\n",
- dumpName(ret->h_name, hbuff, sizeof(hbuff)));
- stat = idnConvRsp(encodeCtx, ret->h_name,
- nbuff, sizeof(nbuff));
- if (stat == FALSE) {
- TRACE("Decoding failed - return the name verbatim\n");
- } else {
- TRACE("Converted Back <%s>\n",
- dumpName(nbuff, hbuff, sizeof(hbuff)));
- strcpy(ret->h_name, nbuff);
- }
- }
-
- if (ret == NULL) {
- TRACE("LEAVE gethostbyname NULL\n");
- } else {
- TRACE("LEAVE gethostbyname <%s>\n",
- dumpHost(ret, hbuff, sizeof(hbuff)));
- }
- return (ret);
-}
-
-WRAPPER_EXPORT struct hostent FAR * WSAAPI
-gethostbyaddr(const char FAR * addr, int len, int type) {
- struct hostent FAR *ret;
- char nbuff[256];
- char abuff[256];
- char hbuff[256];
- BOOL stat;
- idn_resconf_t encodeCtx;
-
- TRACE("ENTER gethostbyaddr <%s>\n",
- dumpAddr(addr, len, abuff, sizeof(abuff)));
-
- encodeCtx = idnGetContext();
-
- ret = _org_gethostbyaddr(addr, len, type);
-
- if (ret != NULL && encodeCtx != NULL) {
- TRACE("Resulting Name <%s>\n",
- dumpName(ret->h_name, hbuff, sizeof(hbuff)));
- stat = idnConvRsp(encodeCtx, ret->h_name,
- nbuff, sizeof(nbuff));
- if (stat == FALSE) {
- TRACE("Decoding failed - return the name verbatim\n");
- } else {
- TRACE("Converted Back <%s>\n",
- dumpName(nbuff, hbuff, sizeof(hbuff)));
- strcpy(ret->h_name, nbuff);
- }
- }
-
- if (ret == NULL) {
- TRACE("LEAVE gethostbyaddr NULL\n");
- } else {
- TRACE("LEAVE gethostbyaddr <%s>\n",
- dumpHost(ret, hbuff, sizeof(hbuff)));
- }
- return (ret);
-}
-
-WRAPPER_EXPORT HANDLE WSAAPI
-WSAAsyncGetHostByName(HWND hWnd, u_int wMsg,
- const char FAR * name, char FAR * buf, int buflen)
-{
- HANDLE ret;
- char nbuff[256];
- char hbuff[256];
- idn_resconf_t encodeCtx;
-
- TRACE("ENTER WSAAsyncGetHostByName <%-.100s>\n", name);
-
- encodeCtx = idnGetContext();
-
- if (encodeCtx == NULL || name == NULL) {
- ret = _org_WSAAsyncGetHostByName(hWnd, wMsg,
- name, buf, buflen);
- } else {
- idnHook(hWnd, wMsg, buf, encodeCtx);
- idnConvReq(encodeCtx, name, nbuff, sizeof(nbuff));
- TRACE("Converted Name <%s>\n",
- dumpName(nbuff, hbuff, sizeof(hbuff)));
- ret = _org_WSAAsyncGetHostByName(hWnd, wMsg, nbuff,
- buf, buflen);
- }
-
- TRACE("LEAVE WSAAsyncGetHostByName HANDLE %08x\n", ret);
-
- return (ret);
-}
-
-WRAPPER_EXPORT HANDLE WSAAPI
-WSAAsyncGetHostByAddr(HWND hWnd, u_int wMsg, const char FAR * addr,
- int len, int type, char FAR * buf, int buflen)
-{
- HANDLE ret;
- char abuff[256];
- idn_resconf_t encodeCtx;
-
- encodeCtx = idnGetContext();
-
- if (encodeCtx != NULL) {
- idnHook(hWnd, wMsg, buf, encodeCtx);
- }
-
- TRACE("ENTER WSAAsyncGetHostByAddr <%s>\n",
- dumpAddr(addr, len, abuff, sizeof(abuff)));
- ret = _org_WSAAsyncGetHostByAddr(hWnd, wMsg, addr, len, type,
- buf, buflen);
- TRACE("LEAVE WSAAsyncGetHostByAddr HANDLE %08x\n", ret);
-
- return (ret);
-}
-
-WRAPPER_EXPORT INT WSAAPI
-WSALookupServiceBeginA(LPWSAQUERYSETA lpqsRestrictions,
- DWORD dwControlFlags, LPHANDLE lphLookup)
-{
- INT ret;
- char nbuff[256];
- char hbuff[256];
- LPSTR name = lpqsRestrictions->lpszServiceInstanceName;
- LPGUID class = lpqsRestrictions->lpServiceClassId;
- idn_resconf_t encodeCtx;
-
- TRACE("ENTER WSALookupServiceBeginA <%-.100s>\n",
- name == NULL ? "<NULL>" : name);
-
- encodeCtx = idnGetContext();
-
- if (name != NULL && encodeCtx != NULL && SVCID_IS_HABN(class) == 0) {
- idnConvReq(encodeCtx, name, nbuff, sizeof(nbuff));
- TRACE("Converted Name <%s>\n",
- dumpName(nbuff, hbuff, sizeof(hbuff)));
- /* strcpy(lpqsRestrictions->lpszQueryString, nbuff); */
- lpqsRestrictions->lpszServiceInstanceName = nbuff;
- }
- ret = _org_WSALookupServiceBeginA(lpqsRestrictions,
- dwControlFlags, lphLookup);
- TRACE("LEAVE WSALookupServiceBeginA %d\n", ret);
-
- return (ret);
-}
-
-WRAPPER_EXPORT INT WSAAPI
-WSALookupServiceNextA(HANDLE hLookup, DWORD dwControlFlags,
- LPDWORD lpdwBufferLength, LPWSAQUERYSETA lpqsResults)
-{
- INT ret;
- char nbuff[256];
- char hbuff[256];
- LPGUID class;
- idn_resconf_t encodeCtx;
-
- TRACE("ENTER WSALookupServiceNextA\n");
-
- encodeCtx = idnGetContext();
-
- ret = _org_WSALookupServiceNextA(hLookup, dwControlFlags,
- lpdwBufferLength, lpqsResults);
- class = lpqsResults->lpServiceClassId;
-
- if (ret == 0 &&
- encodeCtx != NULL &&
- (dwControlFlags & LUP_RETURN_NAME) &&
- (SVCID_IS_HABN(class) || SVCID_IS_HABIS(class))) {
- TRACE("Resulting Name <%s>\n",
- dumpName(lpqsResults->lpszServiceInstanceName,
- hbuff, sizeof(hbuff)));
- if (idnConvRsp(encodeCtx,
- lpqsResults->lpszServiceInstanceName,
- nbuff, sizeof(nbuff)) == FALSE) {
- TRACE("Decoding failed - return the name verbatim\n");
- } else {
- TRACE("Converted Back <%s>\n",
- dumpName(nbuff, hbuff, sizeof(hbuff)));
- strcpy(lpqsResults->lpszServiceInstanceName, nbuff);
- }
- }
- TRACE("LEAVE WSALookupServiceNextA %d <%s>\n", ret, nbuff);
-
- return (ret);
-}
-
-WRAPPER_EXPORT INT WSAAPI
-WSALookupServiceBeginW(LPWSAQUERYSETW lpqsRestrictions,
- DWORD dwControlFlags, LPHANDLE lphLookup)
-{
- INT ret;
-
- TRACE("ENTER WSALookupServiceBeginW\n");
- ret = _org_WSALookupServiceBeginW(lpqsRestrictions,
- dwControlFlags,lphLookup);
- TRACE("LEAVE WSALookupServiceBeginW %d\n", ret);
-
- return (ret);
-}
-
-WRAPPER_EXPORT INT WSAAPI
-WSALookupServiceNextW(HANDLE hLookup, DWORD dwControlFlags,
- LPDWORD lpdwBufferLength, LPWSAQUERYSETW lpqsResults)
-{
- INT ret;
-
- TRACE("ENTER WSALookupServiceNextW\n");
- ret = _org_WSALookupServiceNextW(hLookup, dwControlFlags,
- lpdwBufferLength, lpqsResults);
- TRACE("LEAVE WSALookupServiceNextW %d\n", ret);
-
- return (ret);
-}
-
-WRAPPER_EXPORT INT WSAAPI
-WSALookupServiceEnd(HANDLE hLookup) {
- INT ret;
-
- TRACE("ENTER WSALookupServiceEnd\n");
- ret = _org_WSALookupServiceEnd(hLookup);
- TRACE("LEAVE WSALookupServiceEnd %d\n", ret);
-
- return (ret);
-}
-
-static int
-obj_hash(void *key) {
- /*
- * Hash function for obj_*.
- * 'key' is supposed to be an address.
- */
- unsigned long v = (unsigned long)key;
-
- return ((v >> 3) % OBJLOCKHASH_SIZE);
-}
-
-static int
-obj_islocked(void *key)
-{
- /*
- * Check if the object specified by 'key' is locked.
- * Return 1 if so, 0 otherwise.
- */
- int h = obj_hash(key);
- obj_lock_t *olp = obj_lock_hash[h];
-
- while (olp != NULL) {
- if (olp->key == key)
- return (1);
- olp = olp->next;
- }
- return (0);
-}
-
-static void
-obj_lock(void *key)
-{
- /*
- * Lock an object specified by 'key'.
- */
- int h = obj_hash(key);
- obj_lock_t *olp;
-
- olp = malloc(sizeof(obj_lock_t));
- if (olp != NULL) {
- olp->key = key;
- olp->next = obj_lock_hash[h];
- obj_lock_hash[h] = olp;
- }
-}
-
-static void
-obj_unlock(void *key)
-{
- /*
- * Unlock an object specified by 'key'.
- */
- int h = obj_hash(key);
- obj_lock_t *olp, *olp0;
-
- olp = obj_lock_hash[h];
- olp0 = NULL;
- while (olp != NULL) {
- if (olp->key == key) {
- if (olp0 == NULL)
- obj_lock_hash[h] = olp->next;
- else
- olp0->next = olp->next;
- free(olp);
- return;
- }
- olp0 = olp;
- olp = olp->next;
- }
-}
-
-static char *
-decode_name_dynamic(const char *name, idn_resconf_t idnctx) {
- BOOL stat;
- char buf[256], tmp[256];
- char *s;
-
- if (idnConvRsp(idnctx, name, buf, sizeof(buf)) == TRUE) {
- TRACE("Converted Back <%s>\n",
- dumpName(buf, tmp, sizeof(tmp)));
- name = buf;
- } else {
- TRACE("Decoding failed - return the name verbatim\n");
- }
- s = malloc(strlen(name) + 1);
- if (s == NULL)
- return (NULL);
- else
- return (strcpy(s, name));
-}
-
-static struct my_addrinfo *
-copy_decode_addrinfo_dynamic(struct my_addrinfo *aip, idn_resconf_t idnctx)
-{
- struct my_addrinfo *newaip;
-
- if (aip == NULL)
- return (NULL);
-
- newaip = malloc(sizeof(struct my_addrinfo) + aip->ai_addrlen);
- if (newaip == NULL)
- return (NULL);
-
- *newaip = *aip;
- newaip->ai_addr = (struct sockaddr *)(newaip + 1);
- memcpy(newaip->ai_addr, aip->ai_addr, aip->ai_addrlen);
-
- if (newaip->ai_canonname != NULL)
- newaip->ai_canonname = decode_name_dynamic(aip->ai_canonname,
- idnctx);
-
- newaip->ai_next = copy_decode_addrinfo_dynamic(aip->ai_next, idnctx);
- return (newaip);
-}
-
-static void
-free_copied_addrinfo(struct my_addrinfo *aip) {
- while (aip != NULL) {
- struct my_addrinfo *next = aip->ai_next;
-
- if (aip->ai_canonname != NULL)
- free(aip->ai_canonname);
- free(aip);
- aip = next;
- }
-}
-
-WRAPPER_EXPORT int WSAAPI
-getaddrinfo(const char *nodename, const char *servname,
- const struct my_addrinfo *hints, struct my_addrinfo **res)
-{
- char namebuf[256];
- BOOL stat;
- struct my_addrinfo *aip;
- int err;
- idn_resconf_t encodeCtx;
-
- TRACE("ENTER getaddrinfo <%-.100s>\n", nodename ? nodename : "NULL");
-
- encodeCtx = idnGetContext();
-
- if (nodename == NULL || encodeCtx == NULL) {
- TRACE("conversion unnecessary\n");
- err = _org_getaddrinfo(nodename, servname, hints, res);
- } else {
- stat = idnConvReq(encodeCtx, nodename,
- namebuf, sizeof(namebuf));
- if (stat == TRUE) {
- nodename = namebuf;
- TRACE("Converted Name <%-.100s>\n", namebuf);
- }
-
- err = _org_getaddrinfo(nodename, servname, hints, &aip);
- if (err == 0 && aip != NULL) {
- *res = copy_decode_addrinfo_dynamic(aip, encodeCtx);
- if (*res == NULL)
- err = EAI_FAIL;
- else
- obj_lock(*res);
- if (aip != NULL)
- _org_freeaddrinfo(aip);
- }
- }
-
- TRACE("LEAVE getaddrinfo %d\n", err);
- return (err);
-}
-
-WRAPPER_EXPORT void WSAAPI
-freeaddrinfo(struct my_addrinfo *aip) {
- TRACE("ENTER freeaddrinfo aip=%p\n", (void *)aip);
-
- if (obj_islocked(aip)) {
- /*
- * We allocated the data.
- */
- obj_unlock(aip);
- free_copied_addrinfo(aip);
- } else {
- /*
- * It was allocated the original getaddrinfo().
- */
- TRACE("Not allocated by the wrapper\n");
- _org_freeaddrinfo(aip);
- }
- TRACE("LEAVE freeaddrinfo\n");
-}
-
-WRAPPER_EXPORT int WSAAPI
-getnameinfo(const struct sockaddr *sa, DWORD salen,
- char *host, DWORD hostlen, char *serv,
- DWORD servlen, int flags)
-{
- char name[256];
- size_t namelen = sizeof(name);
- int code;
- BOOL stat;
- idn_resconf_t encodeCtx;
-
- TRACE("ENTER getnameinfo\n");
-
- encodeCtx = idnGetContext();
-
- if (host == NULL || hostlen == 0 || encodeCtx == NULL) {
- TRACE("conversion unnecessary\n");
- code = _org_getnameinfo(sa, salen, host, hostlen,
- serv, servlen, flags);
- } else {
- code = _org_getnameinfo(sa, salen, name, namelen,
- serv, servlen, flags);
- if (code == 0 && name[0] != '\0') {
- stat = idnConvRsp(encodeCtx, name, host, hostlen);
- if (stat == FALSE) {
- TRACE("Decoding failed - return the name verbatim\n");
- if (strlen(name) >= hostlen) {
- code = EAI_FAIL;
- } else {
- strcpy(host, name);
- }
- } else {
- TRACE("Converted Back <%s>\n",
- dumpName(host, name, sizeof(name)));
- }
- }
- }
-
- TRACE("LEAVE getnameinfo %d\n", code);
- return (code);
-}
+++ /dev/null
-/*
- * dllload.c - load original entries
- */
-
-/*
- * 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, 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-#include <windows.h>
-#include <winsock2.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <process.h>
-
-#include "dlldef.h"
-
-/*
- * Manages original DLL
- */
-
-#define DLLHANDLE idnWinsockHandle()
-
-#include "dllstub.c"
+++ /dev/null
-/*
- * dllmain.c - entry for DLL
- */
-
-/*
- * 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, 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) 2000-2002 Japan Network Information Center. All rights reserved."
- *
- * 4. The name of JPNIC may not 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.
- */
-
-#include <windows.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <process.h>
-
-#include "dlldef.h"
-
-/*
- * Control Variables
- */
-
-int procPid = 0;
-
-static char procExe[256];
-
-/*
- * DLL Entry
- */
-
-BOOL APIENTRY
-DllMain(HMODULE hmod, DWORD reason, LPVOID *resv) {
- switch (reason) {
- case DLL_PROCESS_ATTACH:
- procPid = getpid();
- GetModuleFileName(NULL, procExe, 256);
-
- idnLogInit("ws20");
- idnHookInit();
-
- TRACE("Attached to Process <%s>\n", procExe);
- return (idnWinsockVersion("2.0"));
-
- case DLL_PROCESS_DETACH:
- idnConvDone(idnGetContext());
- idnHookDone();
- TRACE("Detached from Process\n");
- idnLogFinish();
- break;
-
- case DLL_THREAD_ATTACH:
- break;
- case DLL_THREAD_DETACH:
- break;
- }
-
- return (TRUE);
-}
+++ /dev/null
-/* $Id: dllstub.c,v 1.1 2003/06/04 00:27:51 marka Exp $ */
-
-SOCKET PASCAL
-accept(SOCKET a0, struct sockaddr* a1, int* a2)
-{
- static SOCKET (PASCAL *fp)(SOCKET a0, struct sockaddr* a1, int* a2);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub accept() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "accept")) == NULL) {
- FATAL("cannot find entry accept (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1, a2);
-}
-
-int PASCAL
-bind(SOCKET a0, const struct sockaddr* a1, int a2)
-{
- static int (PASCAL *fp)(SOCKET a0, const struct sockaddr* a1, int a2);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub bind() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "bind")) == NULL) {
- FATAL("cannot find entry bind (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1, a2);
-}
-
-int PASCAL
-closesocket(SOCKET a0)
-{
- static int (PASCAL *fp)(SOCKET a0);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub closesocket() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "closesocket")) == NULL) {
- FATAL("cannot find entry closesocket (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0);
-}
-
-int PASCAL
-connect(SOCKET a0, const struct sockaddr* a1, int a2)
-{
- static int (PASCAL *fp)(SOCKET a0, const struct sockaddr* a1, int a2);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub connect() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "connect")) == NULL) {
- FATAL("cannot find entry connect (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1, a2);
-}
-
-int PASCAL
-getpeername(SOCKET a0, struct sockaddr* a1, int* a2)
-{
- static int (PASCAL *fp)(SOCKET a0, struct sockaddr* a1, int* a2);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub getpeername() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "getpeername")) == NULL) {
- FATAL("cannot find entry getpeername (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1, a2);
-}
-
-int PASCAL
-getsockname(SOCKET a0, struct sockaddr* a1, int* a2)
-{
- static int (PASCAL *fp)(SOCKET a0, struct sockaddr* a1, int* a2);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub getsockname() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "getsockname")) == NULL) {
- FATAL("cannot find entry getsockname (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1, a2);
-}
-
-int PASCAL
-getsockopt(SOCKET a0, int a1, int a2, char* a3, int* a4)
-{
- static int (PASCAL *fp)(SOCKET a0, int a1, int a2, char* a3, int* a4);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub getsockopt() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "getsockopt")) == NULL) {
- FATAL("cannot find entry getsockopt (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1, a2, a3, a4);
-}
-
-u_long PASCAL
-htonl(u_long a0)
-{
- static u_long (PASCAL *fp)(u_long a0);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub htonl() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "htonl")) == NULL) {
- FATAL("cannot find entry htonl (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0);
-}
-
-u_short PASCAL
-htons(u_short a0)
-{
- static u_short (PASCAL *fp)(u_short a0);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub htons() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "htons")) == NULL) {
- FATAL("cannot find entry htons (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0);
-}
-
-int PASCAL
-ioctlsocket(SOCKET a0, long a1, u_long * a2)
-{
- static int (PASCAL *fp)(SOCKET a0, long a1, u_long * a2);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub ioctlsocket() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "ioctlsocket")) == NULL) {
- FATAL("cannot find entry ioctlsocket (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1, a2);
-}
-
-unsigned long PASCAL
-inet_addr(const char* a0)
-{
- static unsigned long (PASCAL *fp)(const char* a0);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub inet_addr() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "inet_addr")) == NULL) {
- FATAL("cannot find entry inet_addr (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0);
-}
-
- char * PASCAL
-inet_ntoa(struct in_addr a0)
-{
- static char * (PASCAL *fp)(struct in_addr a0);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub inet_ntoa() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "inet_ntoa")) == NULL) {
- FATAL("cannot find entry inet_ntoa (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0);
-}
-
-int PASCAL
-listen(SOCKET a0, int a1)
-{
- static int (PASCAL *fp)(SOCKET a0, int a1);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub listen() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "listen")) == NULL) {
- FATAL("cannot find entry listen (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1);
-}
-
-u_long PASCAL
-ntohl(u_long a0)
-{
- static u_long (PASCAL *fp)(u_long a0);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub ntohl() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "ntohl")) == NULL) {
- FATAL("cannot find entry ntohl (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0);
-}
-
-u_short PASCAL
-ntohs(u_short a0)
-{
- static u_short (PASCAL *fp)(u_short a0);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub ntohs() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "ntohs")) == NULL) {
- FATAL("cannot find entry ntohs (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0);
-}
-
-int PASCAL
-recv(SOCKET a0, char* a1, int a2, int a3)
-{
- static int (PASCAL *fp)(SOCKET a0, char* a1, int a2, int a3);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub recv() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "recv")) == NULL) {
- FATAL("cannot find entry recv (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1, a2, a3);
-}
-
-int PASCAL
-recvfrom(SOCKET a0, char* a1, int a2, int a3, struct sockaddr* a4, int* a5)
-{
- static int (PASCAL *fp)(SOCKET a0, char* a1, int a2, int a3, struct sockaddr* a4, int* a5);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub recvfrom() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "recvfrom")) == NULL) {
- FATAL("cannot find entry recvfrom (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1, a2, a3, a4, a5);
-}
-
-int PASCAL
-select(int a0, fd_set* a1, fd_set* a2, fd_set* a3, const struct timeval* a4)
-{
- static int (PASCAL *fp)(int a0, fd_set* a1, fd_set* a2, fd_set* a3, const struct timeval* a4);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub select() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "select")) == NULL) {
- FATAL("cannot find entry select (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1, a2, a3, a4);
-}
-
-int PASCAL
-send(SOCKET a0, const char* a1, int a2, int a3)
-{
- static int (PASCAL *fp)(SOCKET a0, const char* a1, int a2, int a3);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub send() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "send")) == NULL) {
- FATAL("cannot find entry send (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1, a2, a3);
-}
-
-int PASCAL
-sendto(SOCKET a0, const char* a1, int a2, int a3, const struct sockaddr* a4, int a5)
-{
- static int (PASCAL *fp)(SOCKET a0, const char* a1, int a2, int a3, const struct sockaddr* a4, int a5);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub sendto() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "sendto")) == NULL) {
- FATAL("cannot find entry sendto (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1, a2, a3, a4, a5);
-}
-
-int PASCAL
-setsockopt(SOCKET a0, int a1, int a2, const char* a3, int a4)
-{
- static int (PASCAL *fp)(SOCKET a0, int a1, int a2, const char* a3, int a4);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub setsockopt() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "setsockopt")) == NULL) {
- FATAL("cannot find entry setsockopt (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1, a2, a3, a4);
-}
-
-int PASCAL
-shutdown(SOCKET a0, int a1)
-{
- static int (PASCAL *fp)(SOCKET a0, int a1);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub shutdown() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "shutdown")) == NULL) {
- FATAL("cannot find entry shutdown (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1);
-}
-
-SOCKET PASCAL
-socket(int a0, int a1, int a2)
-{
- static SOCKET (PASCAL *fp)(int a0, int a1, int a2);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub socket() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "socket")) == NULL) {
- FATAL("cannot find entry socket (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1, a2);
-}
-
-int PASCAL
-WSApSetPostRoutine(int a0)
-{
- static int (PASCAL *fp)(int a0);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub WSApSetPostRoutine() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "WSApSetPostRoutine")) == NULL) {
- FATAL("cannot find entry WSApSetPostRoutine (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0);
-}
-
-WSAEVENT WSAAPI
-WPUCompleteOverlappedRequest(SOCKET a0, LPWSAOVERLAPPED a1, DWORD a2, DWORD a3, LPINT a4)
-{
- static WSAEVENT (WSAAPI *fp)(SOCKET a0, LPWSAOVERLAPPED a1, DWORD a2, DWORD a3, LPINT a4);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub WPUCompleteOverlappedRequest() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "WPUCompleteOverlappedRequest")) == NULL) {
- FATAL("cannot find entry WPUCompleteOverlappedRequest (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1, a2, a3, a4);
-}
-
-SOCKET WINAPI
-WSAAccept(SOCKET a0, struct sockaddr * a1, LPINT a2, LPCONDITIONPROC a3, DWORD a4)
-{
- static SOCKET (WINAPI *fp)(SOCKET a0, struct sockaddr * a1, LPINT a2, LPCONDITIONPROC a3, DWORD a4);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub WSAAccept() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "WSAAccept")) == NULL) {
- FATAL("cannot find entry WSAAccept (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1, a2, a3, a4);
-}
-
-INT WINAPI
-WSAAddressToStringA(LPSOCKADDR a0, DWORD a1, LPWSAPROTOCOL_INFOA a2, LPSTR a3, LPDWORD a4)
-{
- static INT (WINAPI *fp)(LPSOCKADDR a0, DWORD a1, LPWSAPROTOCOL_INFOA a2, LPSTR a3, LPDWORD a4);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub WSAAddressToStringA() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "WSAAddressToStringA")) == NULL) {
- FATAL("cannot find entry WSAAddressToStringA (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1, a2, a3, a4);
-}
-
-INT WINAPI
-WSAAddressToStringW(LPSOCKADDR a0, DWORD a1, LPWSAPROTOCOL_INFOW a2, LPWSTR a3, LPDWORD a4)
-{
- static INT (WINAPI *fp)(LPSOCKADDR a0, DWORD a1, LPWSAPROTOCOL_INFOW a2, LPWSTR a3, LPDWORD a4);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub WSAAddressToStringW() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "WSAAddressToStringW")) == NULL) {
- FATAL("cannot find entry WSAAddressToStringW (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1, a2, a3, a4);
-}
-
-BOOL WINAPI
-WSACloseEvent(WSAEVENT a0)
-{
- static BOOL (WINAPI *fp)(WSAEVENT a0);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub WSACloseEvent() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "WSACloseEvent")) == NULL) {
- FATAL("cannot find entry WSACloseEvent (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0);
-}
-
-int WINAPI
-WSAConnect(SOCKET a0, const struct sockaddr * a1, int a2, LPWSABUF a3, LPWSABUF a4, LPQOS a5, LPQOS a6)
-{
- static int (WINAPI *fp)(SOCKET a0, const struct sockaddr * a1, int a2, LPWSABUF a3, LPWSABUF a4, LPQOS a5, LPQOS a6);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub WSAConnect() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "WSAConnect")) == NULL) {
- FATAL("cannot find entry WSAConnect (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1, a2, a3, a4, a5, a6);
-}
-
-WSAEVENT WINAPI
-WSACreateEvent(void)
-{
- static WSAEVENT (WINAPI *fp)(void);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub WSACreateEvent() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "WSACreateEvent")) == NULL) {
- FATAL("cannot find entry WSACreateEvent (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)();
-}
-
-int WINAPI
-WSADuplicateSocketA(SOCKET a0, DWORD a1, LPWSAPROTOCOL_INFOA a2)
-{
- static int (WINAPI *fp)(SOCKET a0, DWORD a1, LPWSAPROTOCOL_INFOA a2);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub WSADuplicateSocketA() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "WSADuplicateSocketA")) == NULL) {
- FATAL("cannot find entry WSADuplicateSocketA (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1, a2);
-}
-
-int WINAPI
-WSADuplicateSocketW(SOCKET a0, DWORD a1, LPWSAPROTOCOL_INFOW a2)
-{
- static int (WINAPI *fp)(SOCKET a0, DWORD a1, LPWSAPROTOCOL_INFOW a2);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub WSADuplicateSocketW() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "WSADuplicateSocketW")) == NULL) {
- FATAL("cannot find entry WSADuplicateSocketW (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1, a2);
-}
-
-INT WINAPI
-WSAEnumNameSpaceProvidersA(LPDWORD a0, LPWSANAMESPACE_INFOA a1)
-{
- static INT (WINAPI *fp)(LPDWORD a0, LPWSANAMESPACE_INFOA a1);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub WSAEnumNameSpaceProvidersA() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "WSAEnumNameSpaceProvidersA")) == NULL) {
- FATAL("cannot find entry WSAEnumNameSpaceProvidersA (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1);
-}
-
-INT WINAPI
-WSAEnumNameSpaceProvidersW(LPDWORD a0, LPWSANAMESPACE_INFOW a1)
-{
- static INT (WINAPI *fp)(LPDWORD a0, LPWSANAMESPACE_INFOW a1);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub WSAEnumNameSpaceProvidersW() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "WSAEnumNameSpaceProvidersW")) == NULL) {
- FATAL("cannot find entry WSAEnumNameSpaceProvidersW (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1);
-}
-
-int WINAPI
-WSAEnumNetworkEvents(SOCKET a0, WSAEVENT a1, LPWSANETWORKEVENTS a2)
-{
- static int (WINAPI *fp)(SOCKET a0, WSAEVENT a1, LPWSANETWORKEVENTS a2);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub WSAEnumNetworkEvents() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "WSAEnumNetworkEvents")) == NULL) {
- FATAL("cannot find entry WSAEnumNetworkEvents (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1, a2);
-}
-
-int WINAPI
-WSAEnumProtocolsA(LPINT a0, LPWSAPROTOCOL_INFOA a1, LPDWORD a2)
-{
- static int (WINAPI *fp)(LPINT a0, LPWSAPROTOCOL_INFOA a1, LPDWORD a2);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub WSAEnumProtocolsA() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "WSAEnumProtocolsA")) == NULL) {
- FATAL("cannot find entry WSAEnumProtocolsA (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1, a2);
-}
-
-int WINAPI
-WSAEnumProtocolsW(LPINT a0, LPWSAPROTOCOL_INFOW a1, LPDWORD a2)
-{
- static int (WINAPI *fp)(LPINT a0, LPWSAPROTOCOL_INFOW a1, LPDWORD a2);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub WSAEnumProtocolsW() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "WSAEnumProtocolsW")) == NULL) {
- FATAL("cannot find entry WSAEnumProtocolsW (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1, a2);
-}
-
-int WINAPI
-WSAEventSelect(SOCKET a0, WSAEVENT a1, long a2)
-{
- static int (WINAPI *fp)(SOCKET a0, WSAEVENT a1, long a2);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub WSAEventSelect() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "WSAEventSelect")) == NULL) {
- FATAL("cannot find entry WSAEventSelect (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1, a2);
-}
-
-BOOL WINAPI
-WSAGetOverlappedResult(SOCKET a0, LPWSAOVERLAPPED a1, LPDWORD a2, BOOL a3, LPDWORD a4)
-{
- static BOOL (WINAPI *fp)(SOCKET a0, LPWSAOVERLAPPED a1, LPDWORD a2, BOOL a3, LPDWORD a4);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub WSAGetOverlappedResult() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "WSAGetOverlappedResult")) == NULL) {
- FATAL("cannot find entry WSAGetOverlappedResult (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1, a2, a3, a4);
-}
-
-BOOL WINAPI
-WSAGetQOSByName(SOCKET a0, LPWSABUF a1, LPQOS a2)
-{
- static BOOL (WINAPI *fp)(SOCKET a0, LPWSABUF a1, LPQOS a2);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub WSAGetQOSByName() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "WSAGetQOSByName")) == NULL) {
- FATAL("cannot find entry WSAGetQOSByName (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1, a2);
-}
-
-INT WINAPI
-WSAGetServiceClassInfoA(LPGUID a0, LPGUID a1, LPDWORD a2, LPWSASERVICECLASSINFOA a3)
-{
- static INT (WINAPI *fp)(LPGUID a0, LPGUID a1, LPDWORD a2, LPWSASERVICECLASSINFOA a3);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub WSAGetServiceClassInfoA() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "WSAGetServiceClassInfoA")) == NULL) {
- FATAL("cannot find entry WSAGetServiceClassInfoA (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1, a2, a3);
-}
-
-INT WINAPI
-WSAGetServiceClassInfoW(LPGUID a0, LPGUID a1, LPDWORD a2, LPWSASERVICECLASSINFOW a3)
-{
- static INT (WINAPI *fp)(LPGUID a0, LPGUID a1, LPDWORD a2, LPWSASERVICECLASSINFOW a3);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub WSAGetServiceClassInfoW() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "WSAGetServiceClassInfoW")) == NULL) {
- FATAL("cannot find entry WSAGetServiceClassInfoW (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1, a2, a3);
-}
-
-INT WINAPI
-WSAGetServiceClassNameByClassIdA(LPGUID a0, LPSTR a1, LPDWORD a2)
-{
- static INT (WINAPI *fp)(LPGUID a0, LPSTR a1, LPDWORD a2);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub WSAGetServiceClassNameByClassIdA() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "WSAGetServiceClassNameByClassIdA")) == NULL) {
- FATAL("cannot find entry WSAGetServiceClassNameByClassIdA (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1, a2);
-}
-
-INT WINAPI
-WSAGetServiceClassNameByClassIdW(LPGUID a0, LPWSTR a1, LPDWORD a2)
-{
- static INT (WINAPI *fp)(LPGUID a0, LPWSTR a1, LPDWORD a2);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub WSAGetServiceClassNameByClassIdW() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "WSAGetServiceClassNameByClassIdW")) == NULL) {
- FATAL("cannot find entry WSAGetServiceClassNameByClassIdW (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1, a2);
-}
-
-int WINAPI
-WSAHtonl(SOCKET a0, unsigned long a1, unsigned long * a2)
-{
- static int (WINAPI *fp)(SOCKET a0, unsigned long a1, unsigned long * a2);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub WSAHtonl() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "WSAHtonl")) == NULL) {
- FATAL("cannot find entry WSAHtonl (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1, a2);
-}
-
-int WINAPI
-WSAHtons(SOCKET a0, unsigned short a1, unsigned short * a2)
-{
- static int (WINAPI *fp)(SOCKET a0, unsigned short a1, unsigned short * a2);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub WSAHtons() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "WSAHtons")) == NULL) {
- FATAL("cannot find entry WSAHtons (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1, a2);
-}
-
-INT WINAPI
-WSAInstallServiceClassA(LPWSASERVICECLASSINFOA a0)
-{
- static INT (WINAPI *fp)(LPWSASERVICECLASSINFOA a0);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub WSAInstallServiceClassA() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "WSAInstallServiceClassA")) == NULL) {
- FATAL("cannot find entry WSAInstallServiceClassA (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0);
-}
-
-INT WINAPI
-WSAInstallServiceClassW(LPWSASERVICECLASSINFOW a0)
-{
- static INT (WINAPI *fp)(LPWSASERVICECLASSINFOW a0);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub WSAInstallServiceClassW() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "WSAInstallServiceClassW")) == NULL) {
- FATAL("cannot find entry WSAInstallServiceClassW (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0);
-}
-
-int WINAPI
-WSAIoctl(SOCKET a0, DWORD a1, LPVOID a2, DWORD a3, LPVOID a4, DWORD a5, LPDWORD a6, LPWSAOVERLAPPED a7, LPWSAOVERLAPPED_COMPLETION_ROUTINE a8)
-{
- static int (WINAPI *fp)(SOCKET a0, DWORD a1, LPVOID a2, DWORD a3, LPVOID a4, DWORD a5, LPDWORD a6, LPWSAOVERLAPPED a7, LPWSAOVERLAPPED_COMPLETION_ROUTINE a8);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub WSAIoctl() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "WSAIoctl")) == NULL) {
- FATAL("cannot find entry WSAIoctl (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1, a2, a3, a4, a5, a6, a7, a8);
-}
-
- struct hostent * PASCAL
-_org_gethostbyaddr(const char* a0, int a1, int a2)
-{
- static struct hostent * (PASCAL *fp)(const char* a0, int a1, int a2);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub _org_gethostbyaddr() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "gethostbyaddr")) == NULL) {
- FATAL("cannot find entry gethostbyaddr (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1, a2);
-}
-
- struct hostent * PASCAL
-_org_gethostbyname(const char* a0)
-{
- static struct hostent * (PASCAL *fp)(const char* a0);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub _org_gethostbyname() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "gethostbyname")) == NULL) {
- FATAL("cannot find entry gethostbyname (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0);
-}
-
- struct protoent * PASCAL
-getprotobyname(const char* a0)
-{
- static struct protoent * (PASCAL *fp)(const char* a0);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub getprotobyname() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "getprotobyname")) == NULL) {
- FATAL("cannot find entry getprotobyname (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0);
-}
-
- struct protoent * PASCAL
-getprotobynumber(int a0)
-{
- static struct protoent * (PASCAL *fp)(int a0);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub getprotobynumber() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "getprotobynumber")) == NULL) {
- FATAL("cannot find entry getprotobynumber (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0);
-}
-
- struct servent * PASCAL
-getservbyname(const char* a0, const char* a1)
-{
- static struct servent * (PASCAL *fp)(const char* a0, const char* a1);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub getservbyname() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "getservbyname")) == NULL) {
- FATAL("cannot find entry getservbyname (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1);
-}
-
- struct servent * PASCAL
-getservbyport(int a0, const char* a1)
-{
- static struct servent * (PASCAL *fp)(int a0, const char* a1);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub getservbyport() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "getservbyport")) == NULL) {
- FATAL("cannot find entry getservbyport (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1);
-}
-
-int PASCAL
-_org_gethostname(char* a0, int a1)
-{
- static int (PASCAL *fp)(char* a0, int a1);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub _org_gethostname() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "gethostname")) == NULL) {
- FATAL("cannot find entry gethostname (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1);
-}
-
-SOCKET WINAPI
-WSAJoinLeaf(SOCKET a0, const struct sockaddr * a1, int a2, LPWSABUF a3, LPWSABUF a4, LPQOS a5, LPQOS a6, DWORD a7)
-{
- static SOCKET (WINAPI *fp)(SOCKET a0, const struct sockaddr * a1, int a2, LPWSABUF a3, LPWSABUF a4, LPQOS a5, LPQOS a6, DWORD a7);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub WSAJoinLeaf() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "WSAJoinLeaf")) == NULL) {
- FATAL("cannot find entry WSAJoinLeaf (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1, a2, a3, a4, a5, a6, a7);
-}
-
-INT WINAPI
-_org_WSALookupServiceBeginA(LPWSAQUERYSETA a0, DWORD a1, LPHANDLE a2)
-{
- static INT (WINAPI *fp)(LPWSAQUERYSETA a0, DWORD a1, LPHANDLE a2);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub _org_WSALookupServiceBeginA() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "WSALookupServiceBeginA")) == NULL) {
- FATAL("cannot find entry WSALookupServiceBeginA (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1, a2);
-}
-
-INT WINAPI
-_org_WSALookupServiceBeginW(LPWSAQUERYSETW a0, DWORD a1, LPHANDLE a2)
-{
- static INT (WINAPI *fp)(LPWSAQUERYSETW a0, DWORD a1, LPHANDLE a2);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub _org_WSALookupServiceBeginW() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "WSALookupServiceBeginW")) == NULL) {
- FATAL("cannot find entry WSALookupServiceBeginW (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1, a2);
-}
-
-INT WINAPI
-_org_WSALookupServiceEnd(HANDLE a0)
-{
- static INT (WINAPI *fp)(HANDLE a0);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub _org_WSALookupServiceEnd() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "WSALookupServiceEnd")) == NULL) {
- FATAL("cannot find entry WSALookupServiceEnd (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0);
-}
-
-INT WINAPI
-_org_WSALookupServiceNextA(HANDLE a0, DWORD a1, LPDWORD a2, LPWSAQUERYSETA a3)
-{
- static INT (WINAPI *fp)(HANDLE a0, DWORD a1, LPDWORD a2, LPWSAQUERYSETA a3);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub _org_WSALookupServiceNextA() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "WSALookupServiceNextA")) == NULL) {
- FATAL("cannot find entry WSALookupServiceNextA (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1, a2, a3);
-}
-
-INT WINAPI
-_org_WSALookupServiceNextW(HANDLE a0, DWORD a1, LPDWORD a2, LPWSAQUERYSETW a3)
-{
- static INT (WINAPI *fp)(HANDLE a0, DWORD a1, LPDWORD a2, LPWSAQUERYSETW a3);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub _org_WSALookupServiceNextW() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "WSALookupServiceNextW")) == NULL) {
- FATAL("cannot find entry WSALookupServiceNextW (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1, a2, a3);
-}
-
-int WINAPI
-WSANtohl(SOCKET a0, unsigned long a1, unsigned long * a2)
-{
- static int (WINAPI *fp)(SOCKET a0, unsigned long a1, unsigned long * a2);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub WSANtohl() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "WSANtohl")) == NULL) {
- FATAL("cannot find entry WSANtohl (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1, a2);
-}
-
-int WINAPI
-WSANtohs(SOCKET a0, unsigned short a1, unsigned short * a2)
-{
- static int (WINAPI *fp)(SOCKET a0, unsigned short a1, unsigned short * a2);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub WSANtohs() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "WSANtohs")) == NULL) {
- FATAL("cannot find entry WSANtohs (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1, a2);
-}
-
-int WSAAPI
-WSAProviderConfigChange(LPHANDLE a0, LPWSAOVERLAPPED a1, LPWSAOVERLAPPED_COMPLETION_ROUTINE a2)
-{
- static int (WSAAPI *fp)(LPHANDLE a0, LPWSAOVERLAPPED a1, LPWSAOVERLAPPED_COMPLETION_ROUTINE a2);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub WSAProviderConfigChange() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "WSAProviderConfigChange")) == NULL) {
- FATAL("cannot find entry WSAProviderConfigChange (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1, a2);
-}
-
-int WINAPI
-WSARecv(SOCKET a0, LPWSABUF a1, DWORD a2, LPDWORD a3, LPDWORD a4, LPWSAOVERLAPPED a5, LPWSAOVERLAPPED_COMPLETION_ROUTINE a6)
-{
- static int (WINAPI *fp)(SOCKET a0, LPWSABUF a1, DWORD a2, LPDWORD a3, LPDWORD a4, LPWSAOVERLAPPED a5, LPWSAOVERLAPPED_COMPLETION_ROUTINE a6);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub WSARecv() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "WSARecv")) == NULL) {
- FATAL("cannot find entry WSARecv (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1, a2, a3, a4, a5, a6);
-}
-
-int WINAPI
-WSARecvDisconnect(SOCKET a0, LPWSABUF a1)
-{
- static int (WINAPI *fp)(SOCKET a0, LPWSABUF a1);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub WSARecvDisconnect() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "WSARecvDisconnect")) == NULL) {
- FATAL("cannot find entry WSARecvDisconnect (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1);
-}
-
-int WINAPI
-WSARecvFrom(SOCKET a0, LPWSABUF a1, DWORD a2, LPDWORD a3, LPDWORD a4, struct sockaddr * a5, LPINT a6, LPWSAOVERLAPPED a7, LPWSAOVERLAPPED_COMPLETION_ROUTINE a8)
-{
- static int (WINAPI *fp)(SOCKET a0, LPWSABUF a1, DWORD a2, LPDWORD a3, LPDWORD a4, struct sockaddr * a5, LPINT a6, LPWSAOVERLAPPED a7, LPWSAOVERLAPPED_COMPLETION_ROUTINE a8);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub WSARecvFrom() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "WSARecvFrom")) == NULL) {
- FATAL("cannot find entry WSARecvFrom (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1, a2, a3, a4, a5, a6, a7, a8);
-}
-
-INT WINAPI
-WSARemoveServiceClass(LPGUID a0)
-{
- static INT (WINAPI *fp)(LPGUID a0);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub WSARemoveServiceClass() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "WSARemoveServiceClass")) == NULL) {
- FATAL("cannot find entry WSARemoveServiceClass (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0);
-}
-
-BOOL WINAPI
-WSAResetEvent(WSAEVENT a0)
-{
- static BOOL (WINAPI *fp)(WSAEVENT a0);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub WSAResetEvent() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "WSAResetEvent")) == NULL) {
- FATAL("cannot find entry WSAResetEvent (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0);
-}
-
-int WINAPI
-WSASend(SOCKET a0, LPWSABUF a1, DWORD a2, LPDWORD a3, DWORD a4, LPWSAOVERLAPPED a5, LPWSAOVERLAPPED_COMPLETION_ROUTINE a6)
-{
- static int (WINAPI *fp)(SOCKET a0, LPWSABUF a1, DWORD a2, LPDWORD a3, DWORD a4, LPWSAOVERLAPPED a5, LPWSAOVERLAPPED_COMPLETION_ROUTINE a6);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub WSASend() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "WSASend")) == NULL) {
- FATAL("cannot find entry WSASend (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1, a2, a3, a4, a5, a6);
-}
-
-int WINAPI
-WSASendDisconnect(SOCKET a0, LPWSABUF a1)
-{
- static int (WINAPI *fp)(SOCKET a0, LPWSABUF a1);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub WSASendDisconnect() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "WSASendDisconnect")) == NULL) {
- FATAL("cannot find entry WSASendDisconnect (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1);
-}
-
-int WINAPI
-WSASendTo(SOCKET a0, LPWSABUF a1, DWORD a2, LPDWORD a3, DWORD a4, const struct sockaddr * a5, int a6, LPWSAOVERLAPPED a7, LPWSAOVERLAPPED_COMPLETION_ROUTINE a8)
-{
- static int (WINAPI *fp)(SOCKET a0, LPWSABUF a1, DWORD a2, LPDWORD a3, DWORD a4, const struct sockaddr * a5, int a6, LPWSAOVERLAPPED a7, LPWSAOVERLAPPED_COMPLETION_ROUTINE a8);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub WSASendTo() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "WSASendTo")) == NULL) {
- FATAL("cannot find entry WSASendTo (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1, a2, a3, a4, a5, a6, a7, a8);
-}
-
-BOOL WINAPI
-WSASetEvent(WSAEVENT a0)
-{
- static BOOL (WINAPI *fp)(WSAEVENT a0);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub WSASetEvent() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "WSASetEvent")) == NULL) {
- FATAL("cannot find entry WSASetEvent (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0);
-}
-
-INT WSAAPI
-WSASetServiceA(LPWSAQUERYSETA a0, WSAESETSERVICEOP a1, DWORD a2)
-{
- static INT (WSAAPI *fp)(LPWSAQUERYSETA a0, WSAESETSERVICEOP a1, DWORD a2);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub WSASetServiceA() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "WSASetServiceA")) == NULL) {
- FATAL("cannot find entry WSASetServiceA (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1, a2);
-}
-
-INT WINAPI
-WSASetServiceW(LPWSAQUERYSETW a0, WSAESETSERVICEOP a1, DWORD a2)
-{
- static INT (WINAPI *fp)(LPWSAQUERYSETW a0, WSAESETSERVICEOP a1, DWORD a2);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub WSASetServiceW() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "WSASetServiceW")) == NULL) {
- FATAL("cannot find entry WSASetServiceW (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1, a2);
-}
-
-SOCKET WINAPI
-WSASocketA(int a0, int a1, int a2, LPWSAPROTOCOL_INFOA a3, GROUP a4, DWORD a5)
-{
- static SOCKET (WINAPI *fp)(int a0, int a1, int a2, LPWSAPROTOCOL_INFOA a3, GROUP a4, DWORD a5);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub WSASocketA() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "WSASocketA")) == NULL) {
- FATAL("cannot find entry WSASocketA (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1, a2, a3, a4, a5);
-}
-
-SOCKET WINAPI
-WSASocketW(int a0, int a1, int a2, LPWSAPROTOCOL_INFOW a3, GROUP a4, DWORD a5)
-{
- static SOCKET (WINAPI *fp)(int a0, int a1, int a2, LPWSAPROTOCOL_INFOW a3, GROUP a4, DWORD a5);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub WSASocketW() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "WSASocketW")) == NULL) {
- FATAL("cannot find entry WSASocketW (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1, a2, a3, a4, a5);
-}
-
-INT WINAPI
-WSAStringToAddressA(LPSTR a0, INT a1, LPWSAPROTOCOL_INFOA a2, LPSOCKADDR a3, LPINT a4)
-{
- static INT (WINAPI *fp)(LPSTR a0, INT a1, LPWSAPROTOCOL_INFOA a2, LPSOCKADDR a3, LPINT a4);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub WSAStringToAddressA() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "WSAStringToAddressA")) == NULL) {
- FATAL("cannot find entry WSAStringToAddressA (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1, a2, a3, a4);
-}
-
-INT WINAPI
-WSAStringToAddressW(LPWSTR a0, INT a1, LPWSAPROTOCOL_INFOW a2, LPSOCKADDR a3, LPINT a4)
-{
- static INT (WINAPI *fp)(LPWSTR a0, INT a1, LPWSAPROTOCOL_INFOW a2, LPSOCKADDR a3, LPINT a4);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub WSAStringToAddressW() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "WSAStringToAddressW")) == NULL) {
- FATAL("cannot find entry WSAStringToAddressW (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1, a2, a3, a4);
-}
-
-DWORD WINAPI
-WSAWaitForMultipleEvents(DWORD a0, const WSAEVENT * a1, BOOL a2, DWORD a3, BOOL a4)
-{
- static DWORD (WINAPI *fp)(DWORD a0, const WSAEVENT * a1, BOOL a2, DWORD a3, BOOL a4);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub WSAWaitForMultipleEvents() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "WSAWaitForMultipleEvents")) == NULL) {
- FATAL("cannot find entry WSAWaitForMultipleEvents (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1, a2, a3, a4);
-}
-
-int WINAPI
-WSCDeinstallProvider(LPGUID a0, LPINT a1)
-{
- static int (WINAPI *fp)(LPGUID a0, LPINT a1);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub WSCDeinstallProvider() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "WSCDeinstallProvider")) == NULL) {
- FATAL("cannot find entry WSCDeinstallProvider (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1);
-}
-
-int WINAPI
-WSCEnableNSProvider(LPGUID a0, BOOL a1)
-{
- static int (WINAPI *fp)(LPGUID a0, BOOL a1);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub WSCEnableNSProvider() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "WSCEnableNSProvider")) == NULL) {
- FATAL("cannot find entry WSCEnableNSProvider (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1);
-}
-
-int WINAPI
-WSCEnumProtocols(LPINT a0, LPWSAPROTOCOL_INFOW a1, LPDWORD a2, LPINT a3)
-{
- static int (WINAPI *fp)(LPINT a0, LPWSAPROTOCOL_INFOW a1, LPDWORD a2, LPINT a3);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub WSCEnumProtocols() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "WSCEnumProtocols")) == NULL) {
- FATAL("cannot find entry WSCEnumProtocols (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1, a2, a3);
-}
-
-int WINAPI
-WSCGetProviderPath(LPGUID a0, LPWSTR a1, LPINT a2, LPINT a3)
-{
- static int (WINAPI *fp)(LPGUID a0, LPWSTR a1, LPINT a2, LPINT a3);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub WSCGetProviderPath() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "WSCGetProviderPath")) == NULL) {
- FATAL("cannot find entry WSCGetProviderPath (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1, a2, a3);
-}
-
-int WINAPI
-WSCInstallNameSpace(LPWSTR a0, LPWSTR a1, DWORD a2, DWORD a3, LPGUID a4)
-{
- static int (WINAPI *fp)(LPWSTR a0, LPWSTR a1, DWORD a2, DWORD a3, LPGUID a4);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub WSCInstallNameSpace() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "WSCInstallNameSpace")) == NULL) {
- FATAL("cannot find entry WSCInstallNameSpace (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1, a2, a3, a4);
-}
-
-int WINAPI
-WSCInstallProvider(const LPGUID a0, const LPWSTR a1, const LPWSAPROTOCOL_INFOW a2, DWORD a3, LPINT a4)
-{
- static int (WINAPI *fp)(const LPGUID a0, const LPWSTR a1, const LPWSAPROTOCOL_INFOW a2, DWORD a3, LPINT a4);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub WSCInstallProvider() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "WSCInstallProvider")) == NULL) {
- FATAL("cannot find entry WSCInstallProvider (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1, a2, a3, a4);
-}
-
-int WINAPI
-WSCUnInstallNameSpace(LPGUID a0)
-{
- static int (WINAPI *fp)(LPGUID a0);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub WSCUnInstallNameSpace() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "WSCUnInstallNameSpace")) == NULL) {
- FATAL("cannot find entry WSCUnInstallNameSpace (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0);
-}
-
-int PASCAL
-WSAAsyncSelect(SOCKET a0, HWND a1, u_int a2, long a3)
-{
- static int (PASCAL *fp)(SOCKET a0, HWND a1, u_int a2, long a3);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub WSAAsyncSelect() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "WSAAsyncSelect")) == NULL) {
- FATAL("cannot find entry WSAAsyncSelect (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1, a2, a3);
-}
-
-HANDLE PASCAL
-_org_WSAAsyncGetHostByAddr(HWND a0, u_int a1, const char* a2, int a3, int a4, char* a5, int a6)
-{
- static HANDLE (PASCAL *fp)(HWND a0, u_int a1, const char* a2, int a3, int a4, char* a5, int a6);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub _org_WSAAsyncGetHostByAddr() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "WSAAsyncGetHostByAddr")) == NULL) {
- FATAL("cannot find entry WSAAsyncGetHostByAddr (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1, a2, a3, a4, a5, a6);
-}
-
-HANDLE PASCAL
-_org_WSAAsyncGetHostByName(HWND a0, u_int a1, const char* a2, char* a3, int a4)
-{
- static HANDLE (PASCAL *fp)(HWND a0, u_int a1, const char* a2, char* a3, int a4);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub _org_WSAAsyncGetHostByName() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "WSAAsyncGetHostByName")) == NULL) {
- FATAL("cannot find entry WSAAsyncGetHostByName (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1, a2, a3, a4);
-}
-
-HANDLE PASCAL
-WSAAsyncGetProtoByNumber(HWND a0, u_int a1, int a2, char* a3, int a4)
-{
- static HANDLE (PASCAL *fp)(HWND a0, u_int a1, int a2, char* a3, int a4);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub WSAAsyncGetProtoByNumber() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "WSAAsyncGetProtoByNumber")) == NULL) {
- FATAL("cannot find entry WSAAsyncGetProtoByNumber (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1, a2, a3, a4);
-}
-
-HANDLE PASCAL
-WSAAsyncGetProtoByName(HWND a0, u_int a1, const char* a2, char* a3, int a4)
-{
- static HANDLE (PASCAL *fp)(HWND a0, u_int a1, const char* a2, char* a3, int a4);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub WSAAsyncGetProtoByName() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "WSAAsyncGetProtoByName")) == NULL) {
- FATAL("cannot find entry WSAAsyncGetProtoByName (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1, a2, a3, a4);
-}
-
-HANDLE PASCAL
-WSAAsyncGetServByPort(HWND a0, u_int a1, int a2, const char* a3, char* a4, int a5)
-{
- static HANDLE (PASCAL *fp)(HWND a0, u_int a1, int a2, const char* a3, char* a4, int a5);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub WSAAsyncGetServByPort() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "WSAAsyncGetServByPort")) == NULL) {
- FATAL("cannot find entry WSAAsyncGetServByPort (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1, a2, a3, a4, a5);
-}
-
-HANDLE PASCAL
-WSAAsyncGetServByName(HWND a0, u_int a1, const char* a2, const char* a3, char* a4, int a5)
-{
- static HANDLE (PASCAL *fp)(HWND a0, u_int a1, const char* a2, const char* a3, char* a4, int a5);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub WSAAsyncGetServByName() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "WSAAsyncGetServByName")) == NULL) {
- FATAL("cannot find entry WSAAsyncGetServByName (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1, a2, a3, a4, a5);
-}
-
-int PASCAL
-WSACancelAsyncRequest(HANDLE a0)
-{
- static int (PASCAL *fp)(HANDLE a0);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub WSACancelAsyncRequest() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "WSACancelAsyncRequest")) == NULL) {
- FATAL("cannot find entry WSACancelAsyncRequest (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0);
-}
-
-FARPROC PASCAL
-WSASetBlockingHook(FARPROC a0)
-{
- static FARPROC (PASCAL *fp)(FARPROC a0);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub WSASetBlockingHook() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "WSASetBlockingHook")) == NULL) {
- FATAL("cannot find entry WSASetBlockingHook (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0);
-}
-
-int PASCAL
-WSAUnhookBlockingHook(void)
-{
- static int (PASCAL *fp)(void);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub WSAUnhookBlockingHook() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "WSAUnhookBlockingHook")) == NULL) {
- FATAL("cannot find entry WSAUnhookBlockingHook (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)();
-}
-
-int PASCAL
-WSAGetLastError(void)
-{
- static int (PASCAL *fp)(void);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub WSAGetLastError() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "WSAGetLastError")) == NULL) {
- FATAL("cannot find entry WSAGetLastError (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)();
-}
-
-void PASCAL
-WSASetLastError(int a0)
-{
- static void (PASCAL *fp)(int a0);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub WSASetLastError() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "WSASetLastError")) == NULL) {
- FATAL("cannot find entry WSASetLastError (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- (*fp)(a0);
-}
-
-int PASCAL
-WSACancelBlockingCall(void)
-{
- static int (PASCAL *fp)(void);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub WSACancelBlockingCall() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "WSACancelBlockingCall")) == NULL) {
- FATAL("cannot find entry WSACancelBlockingCall (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)();
-}
-
-BOOL PASCAL
-WSAIsBlocking(void)
-{
- static BOOL (PASCAL *fp)(void);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub WSAIsBlocking() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "WSAIsBlocking")) == NULL) {
- FATAL("cannot find entry WSAIsBlocking (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)();
-}
-
-int PASCAL
-WSAStartup(WORD a0, LPWSADATA a1)
-{
- static int (PASCAL *fp)(WORD a0, LPWSADATA a1);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub WSAStartup() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "WSAStartup")) == NULL) {
- FATAL("cannot find entry WSAStartup (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1);
-}
-
-int PASCAL
-WSACleanup(void)
-{
- static int (PASCAL *fp)(void);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub WSACleanup() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "WSACleanup")) == NULL) {
- FATAL("cannot find entry WSACleanup (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)();
-}
-
-int PASCAL
-__WSAFDIsSet(SOCKET a0, fd_set* a1)
-{
- static int (PASCAL *fp)(SOCKET a0, fd_set* a1);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub __WSAFDIsSet() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "__WSAFDIsSet")) == NULL) {
- FATAL("cannot find entry __WSAFDIsSet (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1);
-}
-
-int PASCAL
-WEP(void)
-{
- static int (PASCAL *fp)(void);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub WEP() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "WEP")) == NULL) {
- FATAL("cannot find entry WEP (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)();
-}
-
-int PASCAL
-WSCWriteNameSpaceOrder(int a0, int a1)
-{
- static int (PASCAL *fp)(int a0, int a1);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub WSCWriteNameSpaceOrder() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "WSCWriteNameSpaceOrder")) == NULL) {
- FATAL("cannot find entry WSCWriteNameSpaceOrder (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1);
-}
-
-int PASCAL
-WSCWriteProviderOrder(LPDWORD a0, DWORD a1)
-{
- static int (PASCAL *fp)(LPDWORD a0, DWORD a1);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub WSCWriteProviderOrder() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "WSCWriteProviderOrder")) == NULL) {
- FATAL("cannot find entry WSCWriteProviderOrder (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1);
-}
-
-int PASCAL
-WSANSPIoctl(HANDLE a0, DWORD a1, LPVOID a2, DWORD a3, LPVOID a4, DWORD a5, LPDWORD a6, LPVOID a7)
-{
- static int (PASCAL *fp)(HANDLE a0, DWORD a1, LPVOID a2, DWORD a3, LPVOID a4, DWORD a5, LPDWORD a6, LPVOID a7);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub WSANSPIoctl() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "WSANSPIoctl")) == NULL) {
- FATAL("cannot find entry WSANSPIoctl (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1, a2, a3, a4, a5, a6, a7);
-}
-
-int PASCAL
-WSCUpdateProvider(LPGUID a0, const WCHAR FAR* a1, const LPVOID a2, DWORD a3, LPINT a4)
-{
- static int (PASCAL *fp)(LPGUID a0, const WCHAR FAR* a1, const LPVOID a2, DWORD a3, LPINT a4);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub WSCUpdateProvider() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "WSCUpdateProvider")) == NULL) {
- FATAL("cannot find entry WSCUpdateProvider (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1, a2, a3, a4);
-}
-
-int PASCAL
-_org_getaddrinfo(const char* a0, const char* a1, LPVOID a2, LPVOID a3)
-{
- static int (PASCAL *fp)(const char* a0, const char* a1, LPVOID a2, LPVOID a3);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub _org_getaddrinfo() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "getaddrinfo")) == NULL) {
- FATAL("cannot find entry getaddrinfo (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1, a2, a3);
-}
-
-void PASCAL
-_org_freeaddrinfo(LPVOID a0)
-{
- static void (PASCAL *fp)(LPVOID a0);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub _org_freeaddrinfo() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "freeaddrinfo")) == NULL) {
- FATAL("cannot find entry freeaddrinfo (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- (*fp)(a0);
-}
-
-int PASCAL
-_org_getnameinfo(LPVOID a0, DWORD a1, char* a2, DWORD a3, char* a4, DWORD a5, int a6)
-{
- static int (PASCAL *fp)(LPVOID a0, DWORD a1, char* a2, DWORD a3, char* a4, DWORD a5, int a6);
-
-#ifdef DEBUG_STUB
- idnLogPrintf(idn_log_level_trace, "stub _org_getnameinfo() called\n");
-#endif
- if (fp == NULL) {
- void *p;
- if ((p = GetProcAddress(DLLHANDLE, "getnameinfo")) == NULL) {
- FATAL("cannot find entry getnameinfo (%d)\n", GetLastError());
- abort();
- }
- fp = p;
- }
- return (*fp)(a0, a1, a2, a3, a4, a5, a6);
-}
-
+++ /dev/null
-#
-# Makefile for WinSock Wrapper (for WinSock 2.0)
-#
-
-# 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, 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) 2000-2002 Japan Network Information Center. All rights reserved."
-#
-# 4. The name of JPNIC may not 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.
-
-!include <win32.mak>
-
-SYSLIBS = $(libcdll) kernel32.lib advapi32.lib user32.lib
-
-#
-# Files to use
-#
-
-HDRS = dlldef.h ..\common\wrapcommon.h
-SRCS = dllmain.c dllload.obj dllfunc.c dllstub.c
-OBJS = dllmain.obj dllload.obj dllfunc.obj
-LIBS = ..\common\wrapcommon.lib ..\..\lib\idnkit.lib ..\..\win\iconv.lib
-
-cflags = $(cflags) -I..\..\include
-
-#
-# Targets to Build
-#
-
-TARGETS = ws2_32.dll
-
-all : $(TARGETS)
-
-ws2_32.dll : ws2_32.def $(OBJS) $(LIBS)
- $(link) $(dlllflags) /OUT:ws2_32.dll /DEF:ws2_32.def $(OBJS) $(LIBS) $(SYSLIBS)
-
-install : $(TARGETS)
- copy ws2_32.dll ..\bin
-
-clean : force
- -del *.obj
- -del *.lib
- -del *.dll
- -del *.exp
-
-#
-# Dependencies
-#
-
-dllmain.obj : dllmain.c $(HDRS)
- $(cc) $(cflags) $(cvarsdll) -DDEBUG $*.c
-
-dllload.obj : dllload.c $(HDRS)
- $(cc) $(cflags) $(cvarsdll) -DDEBUG $*.c
-
-dllfunc.obj : dllfunc.c dllstub.c $(HDRS)
- $(cc) $(cflags) $(cvarsdll) -DDEBUG $*.c
-
-ws2_32o.lib : ws2_32o.def
- LIB /DEF:ws2_32o.def /MACHINE:IX86
-
-force:
-
+++ /dev/null
-;
-; Library Defition for idn wrapper's wrapper DLL
-;
-LIBRARY ws2_32
-DESCRIPTION "JPNIC idn warpper DLL for WS2_32"
-EXPORTS
- accept @1
- bind @2
- closesocket @3
- connect @4
- getpeername @5
- getsockname @6
- getsockopt @7
- htonl @8
- htons @9
- ioctlsocket @10
- inet_addr @11
- inet_ntoa @12
- listen @13
- ntohl @14
- ntohs @15
- recv @16
- recvfrom @17
- select @18
- send @19
- sendto @20
- setsockopt @21
- shutdown @22
- socket @23
- WSApSetPostRoutine @24
- WPUCompleteOverlappedRequest @25
- WSAAccept @26
- WSAAddressToStringA @27
- WSAAddressToStringW @28
- WSACloseEvent @29
- WSAConnect @30
- WSACreateEvent @31
- WSADuplicateSocketA @32
- WSADuplicateSocketW @33
- WSAEnumNameSpaceProvidersA @34
- WSAEnumNameSpaceProvidersW @35
- WSAEnumNetworkEvents @36
- WSAEnumProtocolsA @37
- WSAEnumProtocolsW @38
- WSAEventSelect @39
- WSAGetOverlappedResult @40
- WSAGetQOSByName @41
- WSAGetServiceClassInfoA @42
- WSAGetServiceClassInfoW @43
- WSAGetServiceClassNameByClassIdA @44
- WSAGetServiceClassNameByClassIdW @45
- WSAHtonl @46
- WSAHtons @47
- WSAInstallServiceClassA @48
- WSAInstallServiceClassW @49
- WSAIoctl @50
- gethostbyaddr @51
- gethostbyname @52
- getprotobyname @53
- getprotobynumber @54
- getservbyname @55
- getservbyport @56
- gethostname @57
- WSAJoinLeaf @58
- WSALookupServiceBeginA @59
- WSALookupServiceBeginW @60
- WSALookupServiceEnd @61
- WSALookupServiceNextA @62
- WSALookupServiceNextW @63
- WSANtohl @64
- WSANtohs @65
- WSAProviderConfigChange @66
- WSARecv @67
- WSARecvDisconnect @68
- WSARecvFrom @69
- WSARemoveServiceClass @70
- WSAResetEvent @71
- WSASend @72
- WSASendDisconnect @73
- WSASendTo @74
- WSASetEvent @75
- WSASetServiceA @76
- WSASetServiceW @77
- WSASocketA @78
- WSASocketW @79
- WSAStringToAddressA @80
- WSAStringToAddressW @81
- WSAWaitForMultipleEvents @82
- WSCDeinstallProvider @83
- WSCEnableNSProvider @84
- WSCEnumProtocols @85
- WSCGetProviderPath @86
- WSCInstallNameSpace @87
- WSCInstallProvider @88
- WSCUnInstallNameSpace @89
- WSCWriteNameSpaceOrder @90
- WSCWriteProviderOrder @91
- freeaddrinfo @94
- getaddrinfo @95
- getnameinfo @96
- WSAAsyncSelect @101
- WSAAsyncGetHostByAddr @102
- WSAAsyncGetHostByName @103
- WSAAsyncGetProtoByNumber @104
- WSAAsyncGetProtoByName @105
- WSAAsyncGetServByPort @106
- WSAAsyncGetServByName @107
- WSACancelAsyncRequest @108
- WSASetBlockingHook @109
- WSAUnhookBlockingHook @110
- WSAGetLastError @111
- WSASetLastError @112
- WSACancelBlockingCall @113
- WSAIsBlocking @114
- WSAStartup @115
- WSACleanup @116
- __WSAFDIsSet @151
- WEP @500
- WSANSPIoctl @600
- WSCUpdateProvider @601
find lib -name '*.h' -print | xargs perl util/check-includes.pl
- - Ensure that the JPNIC patch applies cleanly (9.2 and 9.3):
-
- If you don't have the "iconv" library, you need to get it from
- http://clisp.cons.org/~haible/packages-libiconv.html and install it.
-
- If you're reading this part of these instructions in order to generate
- a version of the patch for a new release, you'll need to pick a
- version of the patch from some prior release to use as a starting
- point. In general, the patch corresponding to the most recent
- prior release will be the best starting point.
-
- $ patch -p0 < contrib/idn/idnkit-1.0-src/patch/bind9/bind-9.x.y-patch \
- > patch.out 2>&1
- $ egrep Hunk patch.out
-
- All hunks should have applied successfully with no offset or fuzz.
- If all succeeded but some were offset or had fuzz, the patch will be
- regenerated at the end of this stage.
-
- Note that two of the files which the patch attempts to update
- (configure and config.h.in) are generated automatically. When
- generating a new patch, the old version of the patch may not apply
- correctly to these files, but that's ok so long as the patch does
- apply correctly to the source files from which these files are
- generated. The steps below will regenerate these files.
-
- $ cd contrib/idn/idnkit-1.0-src
-
- [ Sample on netbsd ... ]
- $ CFLAGS=-I/usr/local/include ./configure '--with-iconv=-L/usr/local/lib -liconv'
-
- [ Sample on freebsd -- formerly used giconv, now uses iconv ]
- ./configure --with-iconv-include=/usr/local/include \
- '--with-iconv=-L/usr/local/lib -liconv'
-
- $ make
- $ cd ../../.. ; : cd back to top level
- $ autoheader ; : regenerate config.h.in
- $ autoconf ; : regenerate configure
- $ ./configure
- $ make
- ... should cleanly compile
- $ (cd bin/dig ; rm host.1 dig.1 ; make host.1 dig.1 ; cvs update host.1 dig.1 )
- $ make distclean
- $ rm -rf /tmp/idn
- $ mkdir -p /tmp/idn/lib /tmp/idn/include
- $ idn=contrib/idn/idnkit-1.0-src
- $ cp $idn/lib/.libs/libidnkit.so* /tmp/idn/lib
- $ cp -r $idn/include/mdn $idn/include/idn /tmp/idn/include
- $ ./configure --with-idn=/tmp/idn --with-iconv="-L/usr/local/lib -liconv"
- $ LD_LIBRARY_PATH=/usr/local/lib:/tmp/idn/lib:/usr/lib make
- ... should cleanly compile
-
- [ Some tests will be added to bin/tests/system to validate operation. ]
-
- Generate a fresh copy of the diffs:
-
- $ patchd=$idn/patch/bind9
- $ old_patch=bind-9.x.y-patch
- $ new_patch=bind-9.x.z-patch
- $ files=`awk '/^Index:/ && NF == 2 {print $2}' $patchd/$old_patch`
- $ missing=`cvs status $files | awk '/Status: Unknown/ { print $2; }'`
- $ sed '/^Index:/,$d' $patchd/$old_patch > $patchd/$new_patch
- $ for i in $missing; \
- do echo Index: $i; diff -u /dev/null $i; done >> $patchd/$new_patch
- $ cvs -f diff -U 2 -N $files >> $patchd/$new_patch
-
- $ cvs add -ko $patchd/$new_patch
- $ cvs ci $patchd/$new_patch
-
- $ cvs update -C
- $ rm README.idnkit
- $ make distclean
-
- Add a marker line like " --- 9.0.0rc10 released ---"
to the CHANGES file.
./contrib/dnspriv/README.md MKD 2017,2018
./contrib/dnspriv/named.conf CONF-C 2017,2018
./contrib/dnspriv/nginx.conf SH 2017,2018
-./contrib/idn/README.idnkit X 2005,2009,2018
-./contrib/idn/idnkit-1.0-src/.gitignore X 2014,2018
-./contrib/idn/idnkit-1.0-src/ChangeLog X 2003,2018
-./contrib/idn/idnkit-1.0-src/DISTFILES X 2003,2018
-./contrib/idn/idnkit-1.0-src/INSTALL X 2003,2018
-./contrib/idn/idnkit-1.0-src/INSTALL.ja X 2003,2018
-./contrib/idn/idnkit-1.0-src/LICENSE.txt X 2003,2018
-./contrib/idn/idnkit-1.0-src/Makefile.in X 2003,2004,2018
-./contrib/idn/idnkit-1.0-src/NEWS X 2003,2018
-./contrib/idn/idnkit-1.0-src/README X 2003,2018
-./contrib/idn/idnkit-1.0-src/README.ja X 2003,2018
-./contrib/idn/idnkit-1.0-src/acconfig.h X 2003,2018
-./contrib/idn/idnkit-1.0-src/aclocal.m4 X 2003,2018
-./contrib/idn/idnkit-1.0-src/config.guess X 2003,2018
-./contrib/idn/idnkit-1.0-src/config.sub X 2003,2018
-./contrib/idn/idnkit-1.0-src/configure X 2003,2018
-./contrib/idn/idnkit-1.0-src/configure.in X 2003,2018
-./contrib/idn/idnkit-1.0-src/include/Makefile.in X 2003,2018
-./contrib/idn/idnkit-1.0-src/include/config.h.in X 2003,2018
-./contrib/idn/idnkit-1.0-src/include/config.h.win X 2003,2018
-./contrib/idn/idnkit-1.0-src/include/idn/Makefile.in X 2003,2018
-./contrib/idn/idnkit-1.0-src/include/idn/aliaslist.h X 2003,2018
-./contrib/idn/idnkit-1.0-src/include/idn/api.h X 2003,2018
-./contrib/idn/idnkit-1.0-src/include/idn/assert.h X 2003,2018
-./contrib/idn/idnkit-1.0-src/include/idn/checker.h X 2003,2018
-./contrib/idn/idnkit-1.0-src/include/idn/converter.h X 2003,2018
-./contrib/idn/idnkit-1.0-src/include/idn/debug.h X 2003,2018
-./contrib/idn/idnkit-1.0-src/include/idn/delimitermap.h X 2003,2018
-./contrib/idn/idnkit-1.0-src/include/idn/export.h X 2003,2018
-./contrib/idn/idnkit-1.0-src/include/idn/filechecker.h X 2003,2018
-./contrib/idn/idnkit-1.0-src/include/idn/filemapper.h X 2003,2018
-./contrib/idn/idnkit-1.0-src/include/idn/localencoding.h X 2003,2018
-./contrib/idn/idnkit-1.0-src/include/idn/log.h X 2003,2018
-./contrib/idn/idnkit-1.0-src/include/idn/logmacro.h X 2003,2018
-./contrib/idn/idnkit-1.0-src/include/idn/mapper.h X 2003,2018
-./contrib/idn/idnkit-1.0-src/include/idn/mapselector.h X 2003,2018
-./contrib/idn/idnkit-1.0-src/include/idn/nameprep.h X 2003,2018
-./contrib/idn/idnkit-1.0-src/include/idn/normalizer.h X 2003,2018
-./contrib/idn/idnkit-1.0-src/include/idn/punycode.h X 2003,2018
-./contrib/idn/idnkit-1.0-src/include/idn/race.h X 2003,2018
-./contrib/idn/idnkit-1.0-src/include/idn/res.h X 2003,2018
-./contrib/idn/idnkit-1.0-src/include/idn/resconf.h X 2003,2018
-./contrib/idn/idnkit-1.0-src/include/idn/result.h X 2003,2018
-./contrib/idn/idnkit-1.0-src/include/idn/strhash.h X 2003,2018
-./contrib/idn/idnkit-1.0-src/include/idn/ucs4.h X 2003,2018
-./contrib/idn/idnkit-1.0-src/include/idn/ucsmap.h X 2003,2018
-./contrib/idn/idnkit-1.0-src/include/idn/ucsset.h X 2003,2018
-./contrib/idn/idnkit-1.0-src/include/idn/unicode.h X 2003,2018
-./contrib/idn/idnkit-1.0-src/include/idn/unormalize.h X 2003,2018
-./contrib/idn/idnkit-1.0-src/include/idn/utf8.h X 2003,2018
-./contrib/idn/idnkit-1.0-src/include/idn/util.h X 2003,2018
-./contrib/idn/idnkit-1.0-src/include/idn/version.h X 2003,2018
-./contrib/idn/idnkit-1.0-src/include/mdn/Makefile.in X 2003,2018
-./contrib/idn/idnkit-1.0-src/include/mdn/api.h X 2003,2018
-./contrib/idn/idnkit-1.0-src/include/mdn/localencoding.h X 2003,2018
-./contrib/idn/idnkit-1.0-src/include/mdn/log.h X 2003,2018
-./contrib/idn/idnkit-1.0-src/include/mdn/res.h X 2003,2018
-./contrib/idn/idnkit-1.0-src/include/mdn/resconf.h X 2003,2018
-./contrib/idn/idnkit-1.0-src/include/mdn/result.h X 2003,2018
-./contrib/idn/idnkit-1.0-src/include/mdn/utf8.h X 2003,2018
-./contrib/idn/idnkit-1.0-src/include/mdn/version.h X 2003,2018
-./contrib/idn/idnkit-1.0-src/install-sh X 2003,2018
-./contrib/idn/idnkit-1.0-src/lib/Makefile.in X 2003,2004,2018
-./contrib/idn/idnkit-1.0-src/lib/aliaslist.c X 2003,2018
-./contrib/idn/idnkit-1.0-src/lib/aliaslist.sh X 2003,2018
-./contrib/idn/idnkit-1.0-src/lib/api.c X 2003,2018
-./contrib/idn/idnkit-1.0-src/lib/checker.c X 2003,2018
-./contrib/idn/idnkit-1.0-src/lib/converter.c X 2003,2018
-./contrib/idn/idnkit-1.0-src/lib/debug.c X 2003,2018
-./contrib/idn/idnkit-1.0-src/lib/delimitermap.c X 2003,2018
-./contrib/idn/idnkit-1.0-src/lib/filechecker.c X 2003,2018
-./contrib/idn/idnkit-1.0-src/lib/filemapper.c X 2003,2018
-./contrib/idn/idnkit-1.0-src/lib/idn.conf.sample.in X 2003,2018
-./contrib/idn/idnkit-1.0-src/lib/localencoding.c X 2003,2018
-./contrib/idn/idnkit-1.0-src/lib/log.c X 2003,2018
-./contrib/idn/idnkit-1.0-src/lib/make.wnt X 2003,2018
-./contrib/idn/idnkit-1.0-src/lib/mapper.c X 2003,2018
-./contrib/idn/idnkit-1.0-src/lib/mapselector.c X 2003,2018
-./contrib/idn/idnkit-1.0-src/lib/nameprep.c X 2003,2018
-./contrib/idn/idnkit-1.0-src/lib/nameprep_template.c X 2003,2018
-./contrib/idn/idnkit-1.0-src/lib/nameprepdata.c X 2003,2018
-./contrib/idn/idnkit-1.0-src/lib/normalizer.c X 2003,2018
-./contrib/idn/idnkit-1.0-src/lib/punycode.c X 2003,2018
-./contrib/idn/idnkit-1.0-src/lib/race.c X 2003,2018
-./contrib/idn/idnkit-1.0-src/lib/res.c X 2003,2018
-./contrib/idn/idnkit-1.0-src/lib/resconf.c X 2003,2018
-./contrib/idn/idnkit-1.0-src/lib/result.c X 2003,2018
-./contrib/idn/idnkit-1.0-src/lib/strhash.c X 2003,2018
-./contrib/idn/idnkit-1.0-src/lib/tests/Makefile.in X 2003,2004,2018
-./contrib/idn/idnkit-1.0-src/lib/tests/api-init1.tsy X 2003,2018
-./contrib/idn/idnkit-1.0-src/lib/tests/api-init2.tsy X 2003,2018
-./contrib/idn/idnkit-1.0-src/lib/tests/api-init3.tsy X 2003,2018
-./contrib/idn/idnkit-1.0-src/lib/tests/api-init4-1.tsy X 2003,2018
-./contrib/idn/idnkit-1.0-src/lib/tests/api-init4-2.tsy X 2003,2018
-./contrib/idn/idnkit-1.0-src/lib/tests/api-init4-3.tsy X 2003,2018
-./contrib/idn/idnkit-1.0-src/lib/tests/api-init5-1.tsy X 2003,2018
-./contrib/idn/idnkit-1.0-src/lib/tests/api-init5-2.tsy X 2003,2018
-./contrib/idn/idnkit-1.0-src/lib/tests/api-init5-3.tsy X 2003,2018
-./contrib/idn/idnkit-1.0-src/lib/tests/api.tsy X 2003,2018
-./contrib/idn/idnkit-1.0-src/lib/tests/checker.tsy X 2003,2018
-./contrib/idn/idnkit-1.0-src/lib/tests/codeset.h X 2003,2018
-./contrib/idn/idnkit-1.0-src/lib/tests/converter.tsy X 2003,2018
-./contrib/idn/idnkit-1.0-src/lib/tests/delimitermap.tsy X 2003,2018
-./contrib/idn/idnkit-1.0-src/lib/tests/iconvchk.c X 2003,2018
-./contrib/idn/idnkit-1.0-src/lib/tests/mapper.tsy X 2003,2018
-./contrib/idn/idnkit-1.0-src/lib/tests/mapselector.tsy X 2003,2018
-./contrib/idn/idnkit-1.0-src/lib/tests/nameprep.tsy X 2003,2018
-./contrib/idn/idnkit-1.0-src/lib/tests/normalizer.tsy X 2003,2018
-./contrib/idn/idnkit-1.0-src/lib/tests/res.tsy X 2003,2018
-./contrib/idn/idnkit-1.0-src/lib/tests/resconf.tsy X 2003,2018
-./contrib/idn/idnkit-1.0-src/lib/tests/setenv.c X 2003,2018
-./contrib/idn/idnkit-1.0-src/lib/tests/setenv.h X 2003,2018
-./contrib/idn/idnkit-1.0-src/lib/tests/testsuite.c X 2003,2018
-./contrib/idn/idnkit-1.0-src/lib/tests/testsuite.h X 2003,2018
-./contrib/idn/idnkit-1.0-src/lib/tests/testutil.c X 2003,2018
-./contrib/idn/idnkit-1.0-src/lib/tests/testutil.h X 2003,2018
-./contrib/idn/idnkit-1.0-src/lib/tests/testygen X 2003,2018
-./contrib/idn/idnkit-1.0-src/lib/tests/ucs4.tsy X 2003,2018
-./contrib/idn/idnkit-1.0-src/lib/tests/utffilter X 2003,2018
-./contrib/idn/idnkit-1.0-src/lib/ucs4.c X 2003,2018
-./contrib/idn/idnkit-1.0-src/lib/ucsmap.c X 2003,2018
-./contrib/idn/idnkit-1.0-src/lib/ucsset.c X 2003,2018
-./contrib/idn/idnkit-1.0-src/lib/unicode.c X 2003,2018
-./contrib/idn/idnkit-1.0-src/lib/unicode_template.c X 2003,2018
-./contrib/idn/idnkit-1.0-src/lib/unicodedata_320.c X 2003,2018
-./contrib/idn/idnkit-1.0-src/lib/unormalize.c X 2003,2018
-./contrib/idn/idnkit-1.0-src/lib/utf8.c X 2003,2018
-./contrib/idn/idnkit-1.0-src/lib/util.c X 2003,2018
-./contrib/idn/idnkit-1.0-src/lib/version.c X 2003,2018
-./contrib/idn/idnkit-1.0-src/ltconfig X 2003,2018
-./contrib/idn/idnkit-1.0-src/ltmain.sh X 2003,2018
-./contrib/idn/idnkit-1.0-src/make.wnt X 2003,2018
-./contrib/idn/idnkit-1.0-src/man/Makefile.in X 2003,2018
-./contrib/idn/idnkit-1.0-src/man/idn.conf.5.in X 2003,2018
-./contrib/idn/idnkit-1.0-src/man/libidnkit.3.in X 2003,2018
-./contrib/idn/idnkit-1.0-src/map/Makefile.in X 2003,2018
-./contrib/idn/idnkit-1.0-src/map/jp.map X 2003,2018
-./contrib/idn/idnkit-1.0-src/mkinstalldirs X 2003,2018
-./contrib/idn/idnkit-1.0-src/patch/bind9/bind-9.2.1-patch X 2003,2018
-./contrib/idn/idnkit-1.0-src/patch/bind9/bind-9.2.2-patch X 2003,2018
-./contrib/idn/idnkit-1.0-src/tools/Makefile.in X 2003,2018
-./contrib/idn/idnkit-1.0-src/tools/idnconv/Makefile.in X 2003,2018
-./contrib/idn/idnkit-1.0-src/tools/idnconv/idnconv.1 X 2003,2018
-./contrib/idn/idnkit-1.0-src/tools/idnconv/idnconv.c X 2003,2018
-./contrib/idn/idnkit-1.0-src/tools/idnconv/idnslookup.in X 2003,2018
-./contrib/idn/idnkit-1.0-src/tools/idnconv/make.wnt X 2003,2018
-./contrib/idn/idnkit-1.0-src/tools/idnconv/selectiveencode.c X 2003,2018
-./contrib/idn/idnkit-1.0-src/tools/idnconv/selectiveencode.h X 2003,2009,2018
-./contrib/idn/idnkit-1.0-src/tools/idnconv/util.c X 2003,2018
-./contrib/idn/idnkit-1.0-src/tools/idnconv/util.h X 2003,2018
-./contrib/idn/idnkit-1.0-src/tools/make.wnt X 2003,2018
-./contrib/idn/idnkit-1.0-src/tools/rpm/idnkit.spec X 2003,2018
-./contrib/idn/idnkit-1.0-src/tools/runidn/Makefile.in X 2003,2018
-./contrib/idn/idnkit-1.0-src/tools/runidn/resolver.c X 2003,2018
-./contrib/idn/idnkit-1.0-src/tools/runidn/resolver.h X 2003,2018
-./contrib/idn/idnkit-1.0-src/tools/runidn/runidn.1 X 2003,2018
-./contrib/idn/idnkit-1.0-src/tools/runidn/runidn.in X 2003,2018
-./contrib/idn/idnkit-1.0-src/tools/runidn/stub.c X 2003,2018
-./contrib/idn/idnkit-1.0-src/tools/runidn/stub.h X 2003,2018
-./contrib/idn/idnkit-1.0-src/util/.gitignore X 2014,2018
-./contrib/idn/idnkit-1.0-src/util/Makefile X 2003,2018
-./contrib/idn/idnkit-1.0-src/util/SparseMap.pm X 2003,2018
-./contrib/idn/idnkit-1.0-src/util/UCD.pm X 2003,2018
-./contrib/idn/idnkit-1.0-src/util/generate_nameprep_data.pl X 2003,2018
-./contrib/idn/idnkit-1.0-src/util/generate_normalize_data.pl X 2003,2018
-./contrib/idn/idnkit-1.0-src/win/README.WIN X 2003,2018
-./contrib/idn/idnkit-1.0-src/wsock/README.txt X 2003,2018
-./contrib/idn/idnkit-1.0-src/wsock/README_j.txt X 2003,2018
-./contrib/idn/idnkit-1.0-src/wsock/common/checkdll.c X 2003,2018
-./contrib/idn/idnkit-1.0-src/wsock/common/convert.c X 2003,2018
-./contrib/idn/idnkit-1.0-src/wsock/common/dump.c X 2003,2018
-./contrib/idn/idnkit-1.0-src/wsock/common/encoding.c X 2003,2018
-./contrib/idn/idnkit-1.0-src/wsock/common/hook.c X 2003,2018
-./contrib/idn/idnkit-1.0-src/wsock/common/make.wnt X 2003,2018
-./contrib/idn/idnkit-1.0-src/wsock/common/printf.c X 2003,2018
-./contrib/idn/idnkit-1.0-src/wsock/common/wrapcommon.h X 2003,2018
-./contrib/idn/idnkit-1.0-src/wsock/config/idnconf.tcl X 2003,2018
-./contrib/idn/idnkit-1.0-src/wsock/config/make.wnt X 2003,2018
-./contrib/idn/idnkit-1.0-src/wsock/make.wnt X 2003,2018
-./contrib/idn/idnkit-1.0-src/wsock/wsock11/dlldef.h X 2003,2018
-./contrib/idn/idnkit-1.0-src/wsock/wsock11/dllfunc.c X 2003,2018
-./contrib/idn/idnkit-1.0-src/wsock/wsock11/dllload.c X 2003,2018
-./contrib/idn/idnkit-1.0-src/wsock/wsock11/dllmain.c X 2003,2018
-./contrib/idn/idnkit-1.0-src/wsock/wsock11/dllstub.c X 2003,2018
-./contrib/idn/idnkit-1.0-src/wsock/wsock11/make.wnt X 2003,2018
-./contrib/idn/idnkit-1.0-src/wsock/wsock11/wsock32.def X 2003,2018
-./contrib/idn/idnkit-1.0-src/wsock/wsock20/dlldef.h X 2003,2018
-./contrib/idn/idnkit-1.0-src/wsock/wsock20/dllfunc.c X 2003,2018
-./contrib/idn/idnkit-1.0-src/wsock/wsock20/dllload.c X 2003,2018
-./contrib/idn/idnkit-1.0-src/wsock/wsock20/dllmain.c X 2003,2018
-./contrib/idn/idnkit-1.0-src/wsock/wsock20/dllstub.c X 2003,2018
-./contrib/idn/idnkit-1.0-src/wsock/wsock20/make.wnt X 2003,2018
-./contrib/idn/idnkit-1.0-src/wsock/wsock20/ws2_32.def X 2003,2018
./contrib/kasp/README X 2016,2018
./contrib/kasp/kasp.xml X 2016,2018
./contrib/kasp/kasp2policy.py X 2016,2018